From 49cfc08ad15049760ab23c099fdb6623a2667ff8 Mon Sep 17 00:00:00 2001 From: Koen Aers Date: Wed, 28 Feb 2024 18:20:27 +0100 Subject: [PATCH] HBX-2739: Create Interface for ClassMetadataWrapper - Create new initial test class 'org.hibernate.tool.orm.jbt.api.ClassMetadataWrapperTest' - Create new initial interface class 'org.hibernate.tool.orm.jbt.api.ClassMetadataWrapper' - Create new factory class 'org.hibernate.tool.orm.jbt.internal.factory.ClassMetadataWrapperFactory' Signed-off-by: Koen Aers --- .../orm/jbt/api/ClassMetadataWrapper.java | 7 ++ .../factory/ClassMetadataWrapperFactory.java | 14 ++++ .../orm/jbt/api/ClassMetadataWrapperTest.java | 78 +++++++++++++++++++ 3 files changed, 99 insertions(+) create mode 100644 jbt/src/main/java/org/hibernate/tool/orm/jbt/api/ClassMetadataWrapper.java create mode 100644 jbt/src/main/java/org/hibernate/tool/orm/jbt/internal/factory/ClassMetadataWrapperFactory.java create mode 100644 jbt/src/test/java/org/hibernate/tool/orm/jbt/api/ClassMetadataWrapperTest.java diff --git a/jbt/src/main/java/org/hibernate/tool/orm/jbt/api/ClassMetadataWrapper.java b/jbt/src/main/java/org/hibernate/tool/orm/jbt/api/ClassMetadataWrapper.java new file mode 100644 index 0000000000..e51033d64f --- /dev/null +++ b/jbt/src/main/java/org/hibernate/tool/orm/jbt/api/ClassMetadataWrapper.java @@ -0,0 +1,7 @@ +package org.hibernate.tool.orm.jbt.api; + +import org.hibernate.tool.orm.jbt.wrp.Wrapper; + +public interface ClassMetadataWrapper extends Wrapper { + +} diff --git a/jbt/src/main/java/org/hibernate/tool/orm/jbt/internal/factory/ClassMetadataWrapperFactory.java b/jbt/src/main/java/org/hibernate/tool/orm/jbt/internal/factory/ClassMetadataWrapperFactory.java new file mode 100644 index 0000000000..8c9c32bcb6 --- /dev/null +++ b/jbt/src/main/java/org/hibernate/tool/orm/jbt/internal/factory/ClassMetadataWrapperFactory.java @@ -0,0 +1,14 @@ +package org.hibernate.tool.orm.jbt.internal.factory; + +import org.hibernate.persister.entity.EntityPersister; +import org.hibernate.tool.orm.jbt.api.ClassMetadataWrapper; + +public class ClassMetadataWrapperFactory { + + public static ClassMetadataWrapper createClassMetadataWrapper(final EntityPersister entityPersister) { + return new ClassMetadataWrapper() { + @Override public EntityPersister getWrappedObject() { return entityPersister; } + }; + } + +} diff --git a/jbt/src/test/java/org/hibernate/tool/orm/jbt/api/ClassMetadataWrapperTest.java b/jbt/src/test/java/org/hibernate/tool/orm/jbt/api/ClassMetadataWrapperTest.java new file mode 100644 index 0000000000..316798f414 --- /dev/null +++ b/jbt/src/test/java/org/hibernate/tool/orm/jbt/api/ClassMetadataWrapperTest.java @@ -0,0 +1,78 @@ +package org.hibernate.tool.orm.jbt.api; + +import static org.junit.jupiter.api.Assertions.assertNotNull; + +import java.io.File; +import java.io.FileWriter; +import java.nio.file.Files; +import java.util.HashSet; +import java.util.Set; + +import org.hibernate.cfg.AvailableSettings; +import org.hibernate.cfg.Configuration; +import org.hibernate.engine.spi.SessionFactoryImplementor; +import org.hibernate.persister.entity.EntityPersister; +import org.hibernate.tool.orm.jbt.internal.factory.ClassMetadataWrapperFactory; +import org.hibernate.tool.orm.jbt.util.MockConnectionProvider; +import org.hibernate.tool.orm.jbt.util.MockDialect; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; + +public class ClassMetadataWrapperTest { + + private static final String TEST_CFG_XML_STRING = + "" + + " " + + " " + MockDialect.class.getName() + "" + + " " + MockConnectionProvider.class.getName() + "" + + " " + + ""; + + private static final String TEST_HBM_XML_STRING = + "" + + " " + + " " + + " " + + " " + + " " + + " " + + " " + + ""; + + public static class Foo { + public String id; + public Set bars = new HashSet(); + } + + @TempDir + public File tempDir; + + private ClassMetadataWrapper classMetadataWrapper = null; + + @BeforeEach + public void beforeEach() throws Exception { + tempDir = Files.createTempDirectory("temp").toFile(); + File cfgXmlFile = new File(tempDir, "hibernate.cfg.xml"); + FileWriter fileWriter = new FileWriter(cfgXmlFile); + fileWriter.write(TEST_CFG_XML_STRING); + fileWriter.close(); + File hbmXmlFile = new File(tempDir, "Foo.hbm.xml"); + fileWriter = new FileWriter(hbmXmlFile); + fileWriter.write(TEST_HBM_XML_STRING); + fileWriter.close(); + Configuration configuration = new Configuration(); + configuration.addFile(hbmXmlFile); + configuration.configure(cfgXmlFile); + SessionFactoryImplementor sessionFactory = (SessionFactoryImplementor)configuration.buildSessionFactory(); + EntityPersister entityPersister = sessionFactory + .getMappingMetamodel().getEntityDescriptor(Foo.class.getName()); + classMetadataWrapper = ClassMetadataWrapperFactory.createClassMetadataWrapper(entityPersister); + } + + @Test + public void testConstruction() { + assertNotNull(classMetadataWrapper); + } + +}