Search in sources :

Example 1 with JaxbHbmFilterDefinitionType

use of org.hibernate.boot.jaxb.hbm.spi.JaxbHbmFilterDefinitionType in project hibernate-orm by hibernate.

the class FilterDefinitionBinder method processFilterDefinition.

/**
	 * Handling for a {@code <filter-def/>} declaration.
	 *
	 * @param context Access to information relative to the mapping document containing this binding
	 * @param jaxbFilterDefinitionMapping The {@code <filter-def/>} JAXB mapping
	 */
@SuppressWarnings("unchecked")
public static void processFilterDefinition(HbmLocalMetadataBuildingContext context, JaxbHbmFilterDefinitionType jaxbFilterDefinitionMapping) {
    Map<String, Type> parameterMap = null;
    String condition = jaxbFilterDefinitionMapping.getCondition();
    for (Serializable content : jaxbFilterDefinitionMapping.getContent()) {
        if (String.class.isInstance(content)) {
            final String contentString = content.toString().trim();
            if (StringHelper.isNotEmpty(contentString)) {
                if (condition != null) {
                    log.debugf("filter-def [name=%s, origin=%s] defined multiple conditions, accepting arbitrary one", jaxbFilterDefinitionMapping.getName(), context.getOrigin().toString());
                }
            }
        } else {
            final JaxbHbmFilterParameterType jaxbParameterMapping;
            if (JaxbHbmFilterParameterType.class.isInstance(content)) {
                jaxbParameterMapping = (JaxbHbmFilterParameterType) content;
            } else if (JAXBElement.class.isInstance(content)) {
                final JAXBElement<JaxbHbmFilterParameterType> jaxbElement = (JAXBElement<JaxbHbmFilterParameterType>) content;
                jaxbParameterMapping = jaxbElement.getValue();
            } else {
                throw new MappingException("Unable to decipher filter-def content type [" + content.getClass().getName() + "]", context.getOrigin());
            }
            if (parameterMap == null) {
                parameterMap = new HashMap<String, Type>();
            }
            parameterMap.put(jaxbParameterMapping.getParameterName(), context.getMetadataCollector().getTypeResolver().heuristicType(jaxbParameterMapping.getParameterValueTypeName()));
        }
    }
    context.getMetadataCollector().addFilterDefinition(new FilterDefinition(jaxbFilterDefinitionMapping.getName(), condition, parameterMap));
    log.debugf("Processed filter definition : %s", jaxbFilterDefinitionMapping.getName());
}
Also used : FilterDefinition(org.hibernate.engine.spi.FilterDefinition) JaxbHbmFilterParameterType(org.hibernate.boot.jaxb.hbm.spi.JaxbHbmFilterParameterType) JaxbHbmFilterDefinitionType(org.hibernate.boot.jaxb.hbm.spi.JaxbHbmFilterDefinitionType) Type(org.hibernate.type.Type) Serializable(java.io.Serializable) JaxbHbmFilterParameterType(org.hibernate.boot.jaxb.hbm.spi.JaxbHbmFilterParameterType) JAXBElement(javax.xml.bind.JAXBElement) MappingException(org.hibernate.boot.MappingException)

Aggregations

Serializable (java.io.Serializable)1 JAXBElement (javax.xml.bind.JAXBElement)1 MappingException (org.hibernate.boot.MappingException)1 JaxbHbmFilterDefinitionType (org.hibernate.boot.jaxb.hbm.spi.JaxbHbmFilterDefinitionType)1 JaxbHbmFilterParameterType (org.hibernate.boot.jaxb.hbm.spi.JaxbHbmFilterParameterType)1 FilterDefinition (org.hibernate.engine.spi.FilterDefinition)1 Type (org.hibernate.type.Type)1