Example usage for org.hibernate.internal TypeLocatorImpl TypeLocatorImpl

List of usage examples for org.hibernate.internal TypeLocatorImpl TypeLocatorImpl

Introduction

In this page you can find the example usage for org.hibernate.internal TypeLocatorImpl TypeLocatorImpl.

Prototype

public TypeLocatorImpl(TypeResolver typeResolver) 

Source Link

Usage

From source file:com.formkiq.core.dao.EnumCustomType.java

License:Apache License

/**
 * Transform to Enum.//  w ww  . j  av a 2  s  .  c om
 * @param clazzEnum {@link Class}
 * @return {@link Type}
 */
public static Type transform(final Class<?> clazzEnum) {
    Properties params = new Properties();
    // type 12 represents enum value
    params.put("type", "12");
    params.put("enumClass", clazzEnum.getName());
    return new TypeLocatorImpl(new TypeResolver()).custom(EnumType.class, params);
}

From source file:org.broadleafcommerce.openadmin.server.dao.provider.metadata.MapFieldsFieldMetadataProvider.java

License:Apache License

@Override
public FieldProviderResponse addMetadataFromFieldType(
        AddMetadataFromFieldTypeRequest addMetadataFromFieldTypeRequest, Map<String, FieldMetadata> metadata) {
    if (!canHandleFieldForTypeMetadata(addMetadataFromFieldTypeRequest, metadata)) {
        return FieldProviderResponse.NOT_HANDLED;
    }//from w w  w  . j  a v a 2  s.c  o m
    //look for any map field metadata that was previously added for the requested field
    for (Map.Entry<String, FieldMetadata> entry : addMetadataFromFieldTypeRequest.getPresentationAttributes()
            .entrySet()) {
        if (entry.getKey().startsWith(
                addMetadataFromFieldTypeRequest.getRequestedPropertyName() + FieldManager.MAPFIELDSEPARATOR)) {
            TypeLocatorImpl typeLocator = new TypeLocatorImpl(new TypeResolver());

            Type myType = null;
            //first, check if an explicit type was declared
            String valueClass = ((BasicFieldMetadata) entry.getValue()).getMapFieldValueClass();
            if (valueClass != null) {
                myType = typeLocator.entity(valueClass);
            }
            if (myType == null) {
                SupportedFieldType fieldType = ((BasicFieldMetadata) entry.getValue()).getExplicitFieldType();
                Class<?> basicJavaType = getBasicJavaType(fieldType);
                if (basicJavaType != null) {
                    myType = typeLocator.basic(basicJavaType);
                }
            }
            if (myType == null) {
                java.lang.reflect.Type genericType = addMetadataFromFieldTypeRequest.getRequestedField()
                        .getGenericType();
                if (genericType instanceof ParameterizedType) {
                    ParameterizedType pType = (ParameterizedType) genericType;
                    Class<?> clazz = (Class<?>) pType.getActualTypeArguments()[1];
                    Class<?>[] entities = addMetadataFromFieldTypeRequest.getDynamicEntityDao()
                            .getAllPolymorphicEntitiesFromCeiling(clazz);
                    if (!ArrayUtils.isEmpty(entities)) {
                        myType = typeLocator.entity(entities[entities.length - 1]);
                    }
                }
            }
            if (myType == null) {
                throw new IllegalArgumentException(
                        "Unable to establish the type for the property (" + entry.getKey() + ")");
            }
            //add property for this map field as if it was a normal field
            super.addMetadataFromFieldType(
                    new AddMetadataFromFieldTypeRequest(addMetadataFromFieldTypeRequest.getRequestedField(),
                            addMetadataFromFieldTypeRequest.getTargetClass(),
                            addMetadataFromFieldTypeRequest.getForeignField(),
                            addMetadataFromFieldTypeRequest.getAdditionalForeignFields(),
                            addMetadataFromFieldTypeRequest.getMergedPropertyType(),
                            addMetadataFromFieldTypeRequest.getComponentProperties(),
                            addMetadataFromFieldTypeRequest.getIdProperty(),
                            addMetadataFromFieldTypeRequest.getPrefix(), entry.getKey(), myType,
                            addMetadataFromFieldTypeRequest.isPropertyForeignKey(),
                            addMetadataFromFieldTypeRequest.getAdditionalForeignKeyIndexPosition(),
                            addMetadataFromFieldTypeRequest.getPresentationAttributes(), entry.getValue(),
                            ((BasicFieldMetadata) entry.getValue()).getExplicitFieldType(),
                            myType.getReturnedClass(), addMetadataFromFieldTypeRequest.getDynamicEntityDao()),
                    metadata);
        }
    }
    return FieldProviderResponse.HANDLED;
}