use of org.hibernate.boot.jaxb.mapping.spi.JaxbEntityMappings in project hibernate-orm by hibernate.
the class MappingBinder method doBind.
@Override
protected Binding<?> doBind(XMLEventReader staxEventReader, StartElement rootElementStartEvent, Origin origin) {
final String rootElementLocalName = rootElementStartEvent.getName().getLocalPart();
if ("hibernate-mapping".equals(rootElementLocalName)) {
if (log.isDebugEnabled()) {
log.debugf("Performing JAXB binding of hbm.xml document : %s", origin.toString());
}
XMLEventReader hbmReader = new HbmEventReader(staxEventReader, xmlEventFactory);
JaxbHbmHibernateMapping hbmBindings = jaxb(hbmReader, MappingXsdSupport.INSTANCE.hbmXsd().getSchema(), hbmJaxbContext(), origin);
return new Binding<>(hbmBindings, origin);
} else {
try {
log.debugf("Performing JAXB binding of orm.xml document : %s", origin.toString());
XMLEventReader reader = new JpaOrmXmlEventReader(staxEventReader, xmlEventFactory);
JaxbEntityMappings bindingRoot = jaxb(reader, MappingXsdSupport.INSTANCE.latestJpaDescriptor().getSchema(), entityMappingsJaxbContext(), origin);
return new Binding<>(bindingRoot, origin);
} catch (JpaOrmXmlEventReader.BadVersionException e) {
throw new UnsupportedOrmXsdVersionException(e.getRequestedVersion(), origin);
}
}
}
use of org.hibernate.boot.jaxb.mapping.spi.JaxbEntityMappings in project hibernate-orm by hibernate.
the class XMLContextTest method testAll.
@Test
public void testAll() throws Exception {
XMLMappingHelper xmlHelper = new XMLMappingHelper();
final XMLContext context = new XMLContext(bootstrapContext);
JaxbEntityMappings mappings = xmlHelper.readOrmXmlMappings("org/hibernate/orm/test/annotations/reflection/orm.xml");
context.addDocument(mappings);
}
use of org.hibernate.boot.jaxb.mapping.spi.JaxbEntityMappings in project hibernate-orm by hibernate.
the class XMLMappingHelper method readOrmXmlMappings.
public JaxbEntityMappings readOrmXmlMappings(InputStream is, String name) {
try {
Assert.assertNotNull("Resource not found: " + name, is);
Binding<?> binding = binder.bind(is, new Origin(SourceType.JAR, name));
return (JaxbEntityMappings) binding.getRoot();
} catch (RuntimeException e) {
throw new IllegalStateException("Could not parse orm.xml mapping '" + name + "': " + e.getMessage(), e);
}
}
use of org.hibernate.boot.jaxb.mapping.spi.JaxbEntityMappings in project hibernate-orm by hibernate.
the class JPAXMLOverriddenMetadataProvider method getDefaults.
@Override
public Map<Object, Object> getDefaults() {
if (!xmlMappingEnabled) {
return Collections.emptyMap();
} else {
if (defaults == null) {
defaults = new HashMap<>();
XMLContext.Default xmlDefaults = xmlContext.getDefaultWithGlobalCatalogAndSchema();
defaults.put("schema", xmlDefaults.getSchema());
defaults.put("catalog", xmlDefaults.getCatalog());
defaults.put("delimited-identifier", xmlDefaults.getDelimitedIdentifier());
defaults.put("cascade-persist", xmlDefaults.getCascadePersist());
List<Class> entityListeners = new ArrayList<Class>();
for (String className : xmlContext.getDefaultEntityListeners()) {
try {
entityListeners.add(classLoaderAccess.classForName(className));
} catch (ClassLoadingException e) {
throw new IllegalStateException("Default entity listener class not found: " + className);
}
}
defaults.put(EntityListeners.class, entityListeners);
for (JaxbEntityMappings entityMappings : xmlContext.getAllDocuments()) {
List<JaxbSequenceGenerator> jaxbSequenceGenerators = entityMappings.getSequenceGenerator();
List<SequenceGenerator> sequenceGenerators = (List<SequenceGenerator>) defaults.get(SequenceGenerator.class);
if (sequenceGenerators == null) {
sequenceGenerators = new ArrayList<>();
defaults.put(SequenceGenerator.class, sequenceGenerators);
}
for (JaxbSequenceGenerator element : jaxbSequenceGenerators) {
sequenceGenerators.add(JPAXMLOverriddenAnnotationReader.buildSequenceGeneratorAnnotation(element));
}
List<JaxbTableGenerator> jaxbTableGenerators = entityMappings.getTableGenerator();
List<TableGenerator> tableGenerators = (List<TableGenerator>) defaults.get(TableGenerator.class);
if (tableGenerators == null) {
tableGenerators = new ArrayList<>();
defaults.put(TableGenerator.class, tableGenerators);
}
for (JaxbTableGenerator element : jaxbTableGenerators) {
tableGenerators.add(JPAXMLOverriddenAnnotationReader.buildTableGeneratorAnnotation(element, xmlDefaults));
}
List<NamedQuery> namedQueries = (List<NamedQuery>) defaults.get(NamedQuery.class);
if (namedQueries == null) {
namedQueries = new ArrayList<>();
defaults.put(NamedQuery.class, namedQueries);
}
List<NamedQuery> currentNamedQueries = JPAXMLOverriddenAnnotationReader.buildNamedQueries(entityMappings.getNamedQuery(), xmlDefaults, classLoaderAccess);
namedQueries.addAll(currentNamedQueries);
List<NamedNativeQuery> namedNativeQueries = (List<NamedNativeQuery>) defaults.get(NamedNativeQuery.class);
if (namedNativeQueries == null) {
namedNativeQueries = new ArrayList<>();
defaults.put(NamedNativeQuery.class, namedNativeQueries);
}
List<NamedNativeQuery> currentNamedNativeQueries = JPAXMLOverriddenAnnotationReader.buildNamedNativeQueries(entityMappings.getNamedNativeQuery(), xmlDefaults, classLoaderAccess);
namedNativeQueries.addAll(currentNamedNativeQueries);
List<SqlResultSetMapping> sqlResultSetMappings = (List<SqlResultSetMapping>) defaults.get(SqlResultSetMapping.class);
if (sqlResultSetMappings == null) {
sqlResultSetMappings = new ArrayList<>();
defaults.put(SqlResultSetMapping.class, sqlResultSetMappings);
}
List<SqlResultSetMapping> currentSqlResultSetMappings = JPAXMLOverriddenAnnotationReader.buildSqlResultsetMappings(entityMappings.getSqlResultSetMapping(), xmlDefaults, classLoaderAccess);
sqlResultSetMappings.addAll(currentSqlResultSetMappings);
List<NamedStoredProcedureQuery> namedStoredProcedureQueries = (List<NamedStoredProcedureQuery>) defaults.get(NamedStoredProcedureQuery.class);
if (namedStoredProcedureQueries == null) {
namedStoredProcedureQueries = new ArrayList<>();
defaults.put(NamedStoredProcedureQuery.class, namedStoredProcedureQueries);
}
List<NamedStoredProcedureQuery> currentNamedStoredProcedureQueries = JPAXMLOverriddenAnnotationReader.buildNamedStoreProcedureQueries(entityMappings.getNamedStoredProcedureQuery(), xmlDefaults, classLoaderAccess);
namedStoredProcedureQueries.addAll(currentNamedStoredProcedureQueries);
}
}
return defaults;
}
}
use of org.hibernate.boot.jaxb.mapping.spi.JaxbEntityMappings in project hibernate-orm by hibernate.
the class JakartaXmlSmokeTests method testLoadingOrmXml.
@Test
public void testLoadingOrmXml(ServiceRegistryScope scope) {
final ClassLoaderService cls = scope.getRegistry().getService(ClassLoaderService.class);
final MappingBinder mappingBinder = new MappingBinder(cls, true);
final InputStream inputStream = cls.locateResourceStream("xml/jakarta/simple/orm.xml");
try {
final Binding<JaxbEntityMappings> binding = mappingBinder.bind(new StreamSource(inputStream), new Origin(SourceType.RESOURCE, "xml/jakarta/simple/orm.xml"));
assertThat(binding.getRoot().getEntity().stream().map(JaxbEntity::getClazz)).containsOnly("Lighter", "ApplicationServer");
final JaxbPersistenceUnitMetadata puMetadata = binding.getRoot().getPersistenceUnitMetadata();
final JaxbPersistenceUnitDefaults puDefaults = puMetadata.getPersistenceUnitDefaults();
final Stream<String> listenerNames = puDefaults.getEntityListeners().getEntityListener().stream().map(JaxbEntityListener::getClazz);
assertThat(listenerNames).containsOnly("org.hibernate.jpa.test.pack.defaultpar.IncrementListener");
} finally {
try {
inputStream.close();
} catch (IOException ignore) {
}
}
}
Aggregations