private void bindFilterDefinitions() { if (hibernateMapping.getFilterDef() == null) { return; } for (XMLHibernateMapping.XMLFilterDef filterDefinition : hibernateMapping.getFilterDef()) { final String name = filterDefinition.getName(); final Map<String, Type> parameters = new HashMap<String, Type>(); String condition = null; for (Object o : filterDefinition.getContent()) { if (o instanceof String) { // represents the condition if (condition != null) { // log? } condition = (String) o; } else if (o instanceof XMLHibernateMapping.XMLFilterDef.XMLFilterParam) { final XMLHibernateMapping.XMLFilterDef.XMLFilterParam paramElement = (XMLHibernateMapping.XMLFilterDef.XMLFilterParam) o; // todo : should really delay this resolution until later to allow typedef names parameters.put( paramElement.getName(), metadata.getTypeResolver().heuristicType(paramElement.getType())); } else { throw new MappingException("Unrecognized nested filter content", jaxbRoot.getOrigin()); } } if (condition == null) { condition = filterDefinition.getCondition(); } metadata.addFilterDefinition(new FilterDefinition(name, condition, parameters)); } }
private void bindDatabaseObjectDefinitions() { if (hibernateMapping.getDatabaseObject() == null) { return; } for (XMLHibernateMapping.XMLDatabaseObject databaseObjectElement : hibernateMapping.getDatabaseObject()) { final AuxiliaryDatabaseObject auxiliaryDatabaseObject; if (databaseObjectElement.getDefinition() != null) { final String className = databaseObjectElement.getDefinition().getClazz(); try { auxiliaryDatabaseObject = (AuxiliaryDatabaseObject) classLoaderService().classForName(className).newInstance(); } catch (ClassLoadingException e) { throw e; } catch (Exception e) { throw new MappingException( "could not instantiate custom database object class [" + className + "]", jaxbRoot.getOrigin()); } } else { Set<String> dialectScopes = new HashSet<String>(); if (databaseObjectElement.getDialectScope() != null) { for (XMLHibernateMapping.XMLDatabaseObject.XMLDialectScope dialectScope : databaseObjectElement.getDialectScope()) { dialectScopes.add(dialectScope.getName()); } } auxiliaryDatabaseObject = new BasicAuxiliaryDatabaseObjectImpl( databaseObjectElement.getCreate(), databaseObjectElement.getDrop(), dialectScopes); } metadata.addAuxiliaryDatabaseObject(auxiliaryDatabaseObject); } }
private void bindIdentifierGenerators() { if (hibernateMapping.getIdentifierGenerator() == null) { return; } for (XMLHibernateMapping.XMLIdentifierGenerator identifierGeneratorElement : hibernateMapping.getIdentifierGenerator()) { metadata.registerIdentifierGenerator( identifierGeneratorElement.getName(), identifierGeneratorElement.getClazz()); } }
private void bindImports() { if (hibernateMapping.getImport() == null) { return; } for (XMLHibernateMapping.XMLImport importValue : hibernateMapping.getImport()) { String className = getClassName(importValue.getClazz()); String rename = importValue.getRename(); rename = (rename == null) ? StringHelper.unqualify(className) : rename; metadata.addImport(className, rename); } }
private void bindTypeDefinitions() { if (hibernateMapping.getTypedef() == null) { return; } for (XMLHibernateMapping.XMLTypedef typedef : hibernateMapping.getTypedef()) { final Map<String, String> parameters = new HashMap<String, String>(); for (XMLParamElement paramElement : typedef.getParam()) { parameters.put(paramElement.getName(), paramElement.getValue()); } metadata.addTypeDefinition(new TypeDef(typedef.getName(), typedef.getClazz(), parameters)); } }
public void bindFetchProfiles( List<XMLFetchProfileElement> fetchProfiles, String containingEntityName) { for (XMLFetchProfileElement fetchProfile : fetchProfiles) { String profileName = fetchProfile.getName(); Set<FetchProfile.Fetch> fetches = new HashSet<FetchProfile.Fetch>(); for (XMLFetchProfileElement.XMLFetch fetch : fetchProfile.getFetch()) { String entityName = fetch.getEntity() == null ? containingEntityName : fetch.getEntity(); if (entityName == null) { throw new MappingException( "could not determine entity for fetch-profile fetch [" + profileName + "]:[" + fetch.getAssociation() + "]", jaxbRoot.getOrigin()); } fetches.add(new FetchProfile.Fetch(entityName, fetch.getAssociation(), fetch.getStyle())); } metadata.addFetchProfile(new FetchProfile(profileName, fetches)); } }
public HibernateMappingProcessor( MetadataImplementor metadata, JaxbRoot<XMLHibernateMapping> jaxbRoot) { this.metadata = metadata; this.jaxbRoot = jaxbRoot; this.hibernateMapping = jaxbRoot.getRoot(); this.mappingDefaults = new OverriddenMappingDefaults( metadata.getMappingDefaults(), hibernateMapping.getPackage(), hibernateMapping.getSchema(), hibernateMapping.getCatalog(), null, null, hibernateMapping.getDefaultCascade(), hibernateMapping.getDefaultAccess(), hibernateMapping.isDefaultLazy()); autoImport = hibernateMapping.isAutoImport(); metaAttributeContext = extractMetaAttributes(); }
private static void bind( String name, String typeClass, Map<String, String> prms, MetadataImplementor metadata) { LOG.debugf("Binding type definition: %s", name); metadata.addTypeDefinition(new TypeDef(name, typeClass, prms)); }
private ClassLoaderService classLoaderService() { if (classLoaderService == null) { classLoaderService = metadata.getServiceRegistry().getService(ClassLoaderService.class); } return classLoaderService; }
@Override public JavaType makeJavaType(String className) { return metadata.makeJavaType(className); }
@Override public <T> Class<T> locateClassByName(String name) { return metadata.locateClassByName(name); }
@Override public boolean isGloballyQuotedIdentifiers() { return metadata.isGloballyQuotedIdentifiers(); }
@Override public NamingStrategy getNamingStrategy() { return metadata.getOptions().getNamingStrategy(); }
@Override public ServiceRegistry getServiceRegistry() { return metadata.getServiceRegistry(); }
private MetaAttributeContext extractMetaAttributes() { return hibernateMapping.getMeta() == null ? new MetaAttributeContext(metadata.getMetaAttributeContext()) : HbmHelper.extractMetaAttributeContext( hibernateMapping.getMeta(), true, metadata.getMetaAttributeContext()); }