Search in sources :

Example 6 with AnyType

use of org.hibernate.type.AnyType in project jbosstools-hibernate by jbosstools.

the class TypeFacadeTest method testIsAnyType.

@Test
public void testIsAnyType() {
    IType typeFacade = null;
    ClassType classType = new ClassType();
    typeFacade = FACADE_FACTORY.createType(classType);
    Assert.assertFalse(typeFacade.isAnyType());
    AnyType anyType = new AnyType();
    typeFacade = FACADE_FACTORY.createType(anyType);
    Assert.assertTrue(typeFacade.isAnyType());
}
Also used : ClassType(org.hibernate.type.ClassType) AnyType(org.hibernate.type.AnyType) IType(org.jboss.tools.hibernate.runtime.spi.IType) Test(org.junit.Test)

Example 7 with AnyType

use of org.hibernate.type.AnyType in project jbosstools-hibernate by jbosstools.

the class TypeFacadeTest method testIsAnyType.

@Test
public void testIsAnyType() {
    IType typeFacade = null;
    // first try type that is not a any type
    ClassType classType = new ClassType();
    typeFacade = new TypeFacadeImpl(FACADE_FACTORY, classType) {
    };
    assertFalse(typeFacade.isAnyType());
    // next try a any type
    AnyType anyType = new AnyType(null, null, null, true);
    typeFacade = new TypeFacadeImpl(FACADE_FACTORY, anyType) {
    };
    assertTrue(typeFacade.isAnyType());
}
Also used : ClassType(org.jboss.tools.hibernate.runtime.v_6_0.internal.legacy.ClassType) AnyType(org.hibernate.type.AnyType) IType(org.jboss.tools.hibernate.runtime.spi.IType) Test(org.junit.jupiter.api.Test)

Example 8 with AnyType

use of org.hibernate.type.AnyType in project jbosstools-hibernate by jbosstools.

the class TypeFacadeTest method testIsAnyType.

@Test
public void testIsAnyType() {
    IType typeFacade = null;
    ClassType classType = new ClassType();
    typeFacade = FACADE_FACTORY.createType(classType);
    assertFalse(typeFacade.isAnyType());
    AnyType anyType = new AnyType(null, null, null);
    typeFacade = FACADE_FACTORY.createType(anyType);
    assertTrue(typeFacade.isAnyType());
}
Also used : ClassType(org.hibernate.type.ClassType) AnyType(org.hibernate.type.AnyType) IType(org.jboss.tools.hibernate.runtime.spi.IType) Test(org.junit.jupiter.api.Test)

Example 9 with AnyType

use of org.hibernate.type.AnyType in project hibernate-orm by hibernate.

the class StandardAnyTypeDefinition method interpretDiscriminatorMappings.

private static List<DiscriminatorMapping> interpretDiscriminatorMappings(AnyType anyType) {
    final Type discriminatorType = anyType.getDiscriminatorType();
    if (!MetaType.class.isInstance(discriminatorType)) {
        return Collections.emptyList();
    }
    final MetaType metaType = (MetaType) discriminatorType;
    final List<DiscriminatorMapping> discriminatorMappings = new ArrayList<DiscriminatorMapping>();
    for (final Map.Entry<Object, String> entry : metaType.getDiscriminatorValuesToEntityNameMap().entrySet()) {
        discriminatorMappings.add(new DiscriminatorMapping() {

            private final Object discriminatorValue = entry.getKey();

            private final String entityName = entry.getValue();

            @Override
            public Object getDiscriminatorValue() {
                return discriminatorValue;
            }

            @Override
            public String getEntityName() {
                return entityName;
            }
        });
    }
    return discriminatorMappings;
}
Also used : AnyType(org.hibernate.type.AnyType) MetaType(org.hibernate.type.MetaType) Type(org.hibernate.type.Type) ArrayList(java.util.ArrayList) Map(java.util.Map) MetaType(org.hibernate.type.MetaType)

Example 10 with AnyType

use of org.hibernate.type.AnyType in project hibernate-orm by hibernate.

the class CompositionSingularSubAttributesHelper method getSingularSubAttributes.

private static Iterable<AttributeDefinition> getSingularSubAttributes(final AttributeSource source, final OuterJoinLoadable ownerEntityPersister, final CompositeType compositeType, final String lhsTableName, final String[] lhsColumns) {
    return new Iterable<AttributeDefinition>() {

        @Override
        public Iterator<AttributeDefinition> iterator() {
            return new Iterator<AttributeDefinition>() {

                private final int numberOfAttributes = compositeType.getSubtypes().length;

                private int currentSubAttributeNumber;

                private int currentColumnPosition;

                @Override
                public boolean hasNext() {
                    return currentSubAttributeNumber < numberOfAttributes;
                }

                @Override
                public AttributeDefinition next() {
                    final int subAttributeNumber = currentSubAttributeNumber;
                    currentSubAttributeNumber++;
                    final String name = compositeType.getPropertyNames()[subAttributeNumber];
                    final Type type = compositeType.getSubtypes()[subAttributeNumber];
                    final int columnPosition = currentColumnPosition;
                    final int columnSpan = type.getColumnSpan(ownerEntityPersister.getFactory());
                    final String[] subAttributeLhsColumns = ArrayHelper.slice(lhsColumns, columnPosition, columnSpan);
                    final boolean[] propertyNullability = compositeType.getPropertyNullability();
                    final boolean nullable = propertyNullability == null || propertyNullability[subAttributeNumber];
                    currentColumnPosition += columnSpan;
                    if (type.isAssociationType()) {
                        final AssociationType aType = (AssociationType) type;
                        return new AssociationAttributeDefinition() {

                            @Override
                            public AssociationKey getAssociationKey() {
                                return new AssociationKey(lhsTableName, subAttributeLhsColumns);
                            }

                            @Override
                            public AssociationNature getAssociationNature() {
                                if (type.isAnyType()) {
                                    return AssociationNature.ANY;
                                } else {
                                    // cannot be a collection
                                    return AssociationNature.ENTITY;
                                }
                            }

                            @Override
                            public EntityDefinition toEntityDefinition() {
                                if (getAssociationNature() != AssociationNature.ENTITY) {
                                    throw new WalkingException("Cannot build EntityDefinition from non-entity-typed attribute");
                                }
                                return (EntityPersister) aType.getAssociatedJoinable(ownerEntityPersister.getFactory());
                            }

                            @Override
                            public AnyMappingDefinition toAnyDefinition() {
                                if (getAssociationNature() != AssociationNature.ANY) {
                                    throw new WalkingException("Cannot build AnyMappingDefinition from non-any-typed attribute");
                                }
                                // todo : not sure how lazy is propogated into the component for a subattribute of type any
                                return new StandardAnyTypeDefinition((AnyType) aType, false);
                            }

                            @Override
                            public CollectionDefinition toCollectionDefinition() {
                                throw new WalkingException("A collection cannot be mapped to a composite ID sub-attribute.");
                            }

                            @Override
                            public FetchStrategy determineFetchPlan(LoadQueryInfluencers loadQueryInfluencers, PropertyPath propertyPath) {
                                return new FetchStrategy(FetchTiming.IMMEDIATE, FetchStyle.JOIN);
                            }

                            @Override
                            public CascadeStyle determineCascadeStyle() {
                                return CascadeStyles.NONE;
                            }

                            @Override
                            public HydratedCompoundValueHandler getHydratedCompoundValueExtractor() {
                                return null;
                            }

                            @Override
                            public String getName() {
                                return name;
                            }

                            @Override
                            public AssociationType getType() {
                                return aType;
                            }

                            @Override
                            public boolean isNullable() {
                                return nullable;
                            }

                            @Override
                            public AttributeSource getSource() {
                                return source;
                            }
                        };
                    } else if (type.isComponentType()) {
                        return new CompositionDefinition() {

                            @Override
                            public String getName() {
                                return name;
                            }

                            @Override
                            public CompositeType getType() {
                                return (CompositeType) type;
                            }

                            @Override
                            public boolean isNullable() {
                                return nullable;
                            }

                            @Override
                            public AttributeSource getSource() {
                                return source;
                            }

                            @Override
                            public Iterable<AttributeDefinition> getAttributes() {
                                return CompositionSingularSubAttributesHelper.getSingularSubAttributes(this, ownerEntityPersister, (CompositeType) type, lhsTableName, subAttributeLhsColumns);
                            }
                        };
                    } else {
                        return new AttributeDefinition() {

                            @Override
                            public String getName() {
                                return name;
                            }

                            @Override
                            public Type getType() {
                                return type;
                            }

                            @Override
                            public boolean isNullable() {
                                return nullable;
                            }

                            @Override
                            public AttributeSource getSource() {
                                return source;
                            }
                        };
                    }
                }

                @Override
                public void remove() {
                    throw new UnsupportedOperationException("Remove operation not supported here");
                }
            };
        }
    };
}
Also used : EntityPersister(org.hibernate.persister.entity.EntityPersister) AbstractEntityPersister(org.hibernate.persister.entity.AbstractEntityPersister) AssociationKey(org.hibernate.persister.walking.spi.AssociationKey) AttributeSource(org.hibernate.persister.walking.spi.AttributeSource) FetchStrategy(org.hibernate.engine.FetchStrategy) AssociationAttributeDefinition(org.hibernate.persister.walking.spi.AssociationAttributeDefinition) AttributeDefinition(org.hibernate.persister.walking.spi.AttributeDefinition) WalkingException(org.hibernate.persister.walking.spi.WalkingException) LoadQueryInfluencers(org.hibernate.engine.spi.LoadQueryInfluencers) AnyType(org.hibernate.type.AnyType) CompositeType(org.hibernate.type.CompositeType) AssociationType(org.hibernate.type.AssociationType) Type(org.hibernate.type.Type) AssociationType(org.hibernate.type.AssociationType) Iterator(java.util.Iterator) PropertyPath(org.hibernate.loader.PropertyPath) AssociationAttributeDefinition(org.hibernate.persister.walking.spi.AssociationAttributeDefinition) CompositionDefinition(org.hibernate.persister.walking.spi.CompositionDefinition) CompositeType(org.hibernate.type.CompositeType)

Aggregations

AnyType (org.hibernate.type.AnyType)15 IType (org.jboss.tools.hibernate.runtime.spi.IType)12 ClassType (org.hibernate.type.ClassType)11 Test (org.junit.jupiter.api.Test)11 Type (org.hibernate.type.Type)3 AssociationType (org.hibernate.type.AssociationType)2 CompositeType (org.hibernate.type.CompositeType)2 ArrayList (java.util.ArrayList)1 Iterator (java.util.Iterator)1 Map (java.util.Map)1 MetadataImplementor (org.hibernate.boot.spi.MetadataImplementor)1 FetchStrategy (org.hibernate.engine.FetchStrategy)1 LoadQueryInfluencers (org.hibernate.engine.spi.LoadQueryInfluencers)1 PropertyPath (org.hibernate.loader.PropertyPath)1 Collection (org.hibernate.mapping.Collection)1 AbstractEntityPersister (org.hibernate.persister.entity.AbstractEntityPersister)1 EntityPersister (org.hibernate.persister.entity.EntityPersister)1 AssociationAttributeDefinition (org.hibernate.persister.walking.spi.AssociationAttributeDefinition)1 AssociationKey (org.hibernate.persister.walking.spi.AssociationKey)1 AttributeDefinition (org.hibernate.persister.walking.spi.AttributeDefinition)1