public static JPAModelProperty of(String role) { int lastDotIndex = role.lastIndexOf('.'); String className = role.substring(0, lastDotIndex); String propertyName = role.substring(lastDotIndex +1); Class<?> javaType; try { javaType = Class.forName(className); } catch (ClassNotFoundException ex) { throw new AssertionError("Internal bug", ex); } return (JPAModelProperty)ModelClass.of(javaType).getProperties().get(propertyName); }
@Override public boolean isInitialized(String field) { ModelProperty modelProperty = this.defaultObjectModel.getModelClass().getProperties().get(field); return this.defaultObjectModel.isLoaded(modelProperty.getId()); }
private static ModelProperty getModelProperty(ModelClass modelClass, Attribute<?, ?> attribute) { String attributeName = attribute.getName(); ModelProperty modelProperty = modelClass.getProperties().get(attributeName); if (modelProperty == null) { throw new IllegalArgumentException( noAttribute(modelClass.getJavaType(), attribute.getName()) ); } return modelProperty; }
public static void disableAll(Object entity) { validateArgument("entity", entity); ModelClass modelClass = JPAModelClass.of(entity.getClass()); if (modelClass.getType() != ModelType.REFERENCE) { throw new IllegalArgumentException( mustBeReferenceModel( "entity", ModelType.REFERENCE ) ); } ObjectModel objectModel = ((ObjectModelProvider)entity).objectModel(); for (ModelProperty modelProperty : modelClass.getProperties().values()) { objectModel.disable(modelProperty.getId()); } }
private void parepareLoadScalars(Object entity, EntityPersister entityPersister, Set<String> propertyNames) { FieldInterceptor fieldInterceptor = FieldInterceptionHelper.extractFieldInterceptor(entity); if (fieldInterceptor instanceof HibernateScalarLoader) { HibernateScalarLoader hibernateObjectModelScalarLoader = (HibernateScalarLoader)fieldInterceptor; ObjectModel objectModel = hibernateObjectModelScalarLoader.getObjectModel(); ModelClass modelClass = objectModel.getModelClass(); int[] scalarPropertyIds = new int[propertyNames.size()]; int index = 0; for (String propertyName : propertyNames) { scalarPropertyIds[index++] = modelClass.getProperties().get(propertyName).getId(); } this.scalarBatchLoadingExecutor.prepareLoad(objectModel, scalarPropertyIds); } else { throw new IllegalProgramException( scalarFetchCanOnlyBeAppliedOnJAPObjectModel( entityPersister.getEntityName() ) ); } }
@SuppressWarnings("unchecked") public HibernateScalarLoader(ObjectModel objectModel, FieldHandler handler) { Arguments.mustNotBeNull("objectModel", objectModel); Arguments.mustBeInstanceOfValue("handler", handler, AbstractFieldInterceptor.class); this.defaultObjectModel = objectModel; AbstractFieldInterceptor abstractFieldInterceptor = (AbstractFieldInterceptor)handler; this.session = abstractFieldInterceptor.getSession(); Set<String> uninitializedFields = abstractFieldInterceptor.getUninitializedFields(); if (!Nulls.isNullOrEmpty(uninitializedFields)) { Map<String, ModelProperty> properties = this.defaultObjectModel.getModelClass().getProperties(); for (String uninitializedField : uninitializedFields) { this.defaultObjectModel.unload(properties.get(uninitializedField).getId()); } } }
public Getter getGetter(Class theClass, String propertyName) throws PropertyNotFoundException { ModelClass modelClass= ModelClass.of(theClass); JPAModelProperty property = (JPAModelProperty)modelClass.getProperties().get(propertyName); switch (property.getPropertyType()) { case CONTRAVARIANCE:
public Setter getSetter(Class theClass, String propertyName) throws PropertyNotFoundException { ModelClass modelClass= ModelClass.of(theClass); JPAModelProperty property = (JPAModelProperty)modelClass.getProperties().get(propertyName); switch (property.getPropertyType()) { case CONTRAVARIANCE:
@Override public Object[] getPropertyValues(Object entity) throws HibernateException { Object[] arr = super.getPropertyValues(entity); FieldInterceptor fieldInterceptor = FieldInterceptionHelper.extractFieldInterceptor(entity); if (fieldInterceptor instanceof HibernateScalarLoader) { HibernateScalarLoader hibernateScalarLoader = (HibernateScalarLoader)fieldInterceptor; ObjectModel objectModel = hibernateScalarLoader.getObjectModel(); ModelClass modelClass = objectModel.getModelClass(); NonIdentifierAttribute[] attributes = this.getEntityMetamodel().getProperties(); for (int i = attributes.length - 1; i >= 0; i--) { if (arr[i] == LazyPropertyInitializer.UNFETCHED_PROPERTY) { ModelProperty modelProperty = modelClass.getProperties().get(attributes[i].getName()); int propertyId = modelProperty.getId(); if (modelProperty.getPropertyType() == PropertyType.SCALAR && objectModel.isEnabed(propertyId) && objectModel.isLoaded(propertyId)) { arr[i] = objectModel.get(propertyId); } } } } return arr; } }