/** * INTERNAL: * Return the value of an attribute which this mapping represents for an object. */ public Object getAttributeValueFromObject(Object object) throws DescriptorException { try { // PERF: direct-access. return this.attributeAccessor.getAttributeValueFromObject(object); } catch (DescriptorException exception) { exception.setMapping(this); throw exception; } }
/** * INTERNAL: * Return the value of an attribute which this mapping represents for an object. */ @Override public Object getAttributeValueFromObject(Object object) throws DescriptorException { try { // PERF: direct-access. return this.attributeAccessor.getAttributeValueFromObject(object); } catch (DescriptorException exception) { exception.setMapping(this); throw exception; } }
/** * INTERNAL: * Return the value of an attribute which this mapping represents for an object. */ @Override public Object getAttributeValueFromObject(Object object) throws DescriptorException { try { // PERF: direct-access. return this.attributeAccessor.getAttributeValueFromObject(object); } catch (DescriptorException exception) { exception.setMapping(this); throw exception; } }
public Object getAttributeValueFromObject(Object object) { if(isValueHolderProperty) { ValueHolderInterface vh = (ValueHolderInterface)ormAccessor.getAttributeValueFromObject(object); if(vh != null && !vh.isInstantiated()) { Object value = vh.getValue(); oxmAccessor.setAttributeValueInObject(object, value); if(vh instanceof WeavedAttributeValueHolderInterface) { ((WeavedAttributeValueHolderInterface)vh).setIsCoordinatedWithProperty(true); } } } return oxmAccessor.getAttributeValueFromObject(object); }
/** * INTERNAL: * Return the value of an attribute which this mapping represents for an object. */ public Object getAttributeValueFromObject(Object object) throws DescriptorException { try { Object attributeValue = getAttributeAccessor().getAttributeValueFromObject(object); if (attributeValue == null) { return null; } return attributeValue; } catch (DescriptorException exception) { exception.setMapping(this); throw exception; } }
public XPathFragment getXPathFragmentForValue(Object obj, NamespaceResolver nr, boolean isNamespaceAware, char namespaceSep) { Object value = getVariableAttributeAccessor().getAttributeValueFromObject(obj); String returnString; String uri = null; if(value instanceof QName){ returnString = ((QName)value).getLocalPart(); uri = ((QName)value).getNamespaceURI(); }else{ returnString = (String)value; } XPathFragment frag = new XPathFragment(); if(isNamespaceAware && uri != null && uri.length() >0){ String prefix = nr.resolveNamespaceURI(uri); if(prefix == null){ prefix = nr.generatePrefix(); //marshalRecord.namespaceDeclaration(prefix, uri); frag.setGeneratedPrefix(true); } if(prefix != null && prefix.length() >0){ frag.setPrefix(prefix); returnString = prefix + namespaceSep + returnString; } } frag.setXPath(returnString); frag.setNamespaceURI(uri); return frag; }
public Object getAttributeValueFromObject(Object object) { if(isValueHolderProperty) { ValueHolderInterface vh = (ValueHolderInterface)ormAccessor.getAttributeValueFromObject(object); if(vh != null && !vh.isInstantiated()) { Object value = vh.getValue(); oxmAccessor.setAttributeValueInObject(object, value); if(vh instanceof WeavedAttributeValueHolderInterface) { ((WeavedAttributeValueHolderInterface)vh).setIsCoordinatedWithProperty(true); } } } return oxmAccessor.getAttributeValueFromObject(object); }
public Object getAttributeValueFromObject(Object object) { if(isValueHolderProperty) { ValueHolderInterface vh = (ValueHolderInterface)ormAccessor.getAttributeValueFromObject(object); if(vh != null && !vh.isInstantiated()) { Object value = vh.getValue(); oxmAccessor.setAttributeValueInObject(object, value); if(vh instanceof WeavedAttributeValueHolderInterface) { ((WeavedAttributeValueHolderInterface)vh).setIsCoordinatedWithProperty(true); } } } return oxmAccessor.getAttributeValueFromObject(object); }
public void setAttributeValueInObject(Object object, Object value) { if(isChangeTracking) { Object oldValue = getAttributeValueFromObject(object); PropertyChangeListener listener = ((ChangeTracker)object)._persistence_getPropertyChangeListener(); if(listener != null) { listener.propertyChange(new PropertyChangeEvent(object, oxmAccessor.getAttributeName(), value, oldValue)); } } if(isValueHolderProperty) { ValueHolderInterface vh = (ValueHolderInterface)ormAccessor.getAttributeValueFromObject(object); if(vh == null) { vh = new ValueHolder(); ((ValueHolder)vh).setIsNewlyWeavedValueHolder(true); } vh.setValue(value); ormAccessor.setAttributeValueInObject(object, vh); } oxmAccessor.setAttributeValueInObject(object, value); }
public void setAttributeValueInObject(Object object, Object value) { if(isChangeTracking) { Object oldValue = getAttributeValueFromObject(object); PropertyChangeListener listener = ((ChangeTracker)object)._persistence_getPropertyChangeListener(); if(listener != null) { listener.propertyChange(new PropertyChangeEvent(object, oxmAccessor.getAttributeName(), value, oldValue)); } } if(isValueHolderProperty) { ValueHolderInterface vh = (ValueHolderInterface)ormAccessor.getAttributeValueFromObject(object); if(vh == null) { vh = new ValueHolder(); ((ValueHolder)vh).setIsNewlyWeavedValueHolder(true); } vh.setValue(value); ormAccessor.setAttributeValueInObject(object, vh); } oxmAccessor.setAttributeValueInObject(object, value); }
public void setAttributeValueInObject(Object object, Object value) { if(isChangeTracking) { Object oldValue = getAttributeValueFromObject(object); PropertyChangeListener listener = ((ChangeTracker)object)._persistence_getPropertyChangeListener(); if(listener != null) { listener.propertyChange(new PropertyChangeEvent(object, oxmAccessor.getAttributeName(), value, oldValue)); } } if(isValueHolderProperty) { ValueHolderInterface vh = (ValueHolderInterface)ormAccessor.getAttributeValueFromObject(object); if(vh == null) { vh = new ValueHolder(); ((ValueHolder)vh).setIsNewlyWeavedValueHolder(true); } vh.setValue(value); ormAccessor.setAttributeValueInObject(object, vh); } oxmAccessor.setAttributeValueInObject(object, value); }
/** * INTERNAL: * Extract the primary key values from the row, then create an * org.eclipse.persistence.internal.oxm.Reference instance and stored it * on the session's org.eclipse.persistence.internal.oxm.ReferenceResolver. */ public Object readFromRowIntoObject(AbstractRecord databaseRow, JoinedAttributeManager joinManager, Object targetObject, CacheKey parentCacheKey, ObjectBuildingQuery sourceQuery, AbstractSession executionSession, boolean isTargetProtected) throws DatabaseException { ContainerPolicy cp = getContainerPolicy(); Object container = null; if (reuseContainer) { Object currentObject = ((XMLRecord) databaseRow).getCurrentObject(); container = getAttributeAccessor().getAttributeValueFromObject(currentObject); } if(container == null){ container = cp.containerInstance(); } return readFromRowIntoObject(databaseRow, joinManager, targetObject, parentCacheKey, sourceQuery, executionSession, isTargetProtected, container); }
/** * INTERNAL: * Extract the primary key values from the row, then create an * org.eclipse.persistence.internal.oxm.Reference instance and stored it * on the session's org.eclipse.persistence.internal.oxm.ReferenceResolver. */ public Object readFromRowIntoObject(AbstractRecord databaseRow, JoinedAttributeManager joinManager, Object targetObject, CacheKey parentCacheKey, ObjectBuildingQuery sourceQuery, AbstractSession executionSession, boolean isTargetProtected) throws DatabaseException { ContainerPolicy cp = getContainerPolicy(); Object container = null; if (reuseContainer) { Object currentObject = ((XMLRecord) databaseRow).getCurrentObject(); container = getAttributeAccessor().getAttributeValueFromObject(currentObject); } if(container == null){ container = cp.containerInstance(); } return readFromRowIntoObject(databaseRow, joinManager, targetObject, parentCacheKey, sourceQuery, executionSession, isTargetProtected, container); }
/** * This method maintains idempotence on PUT by disallowing sequencing. * * @param descriptor descriptor of the entity passed in 'entity' parameter. * @param entity entity to process. * @return true if check is passed (no sequencing) */ private boolean checkIdempotence(ClassDescriptor descriptor, Object entity) { final AbstractDirectMapping sequenceMapping = descriptor.getObjectBuilder().getSequenceMapping(); if (sequenceMapping != null) { final Object value = sequenceMapping.getAttributeAccessor().getAttributeValueFromObject(entity); if (descriptor.getObjectBuilder().isPrimaryKeyComponentInvalid(value, descriptor.getPrimaryKeyFields().indexOf(descriptor.getSequenceNumberField())) || descriptor.getSequence().shouldAlwaysOverrideExistingValue()) { return false; } } return true; }
/** * This method maintains idempotence on PUT by disallowing sequencing. * * @param descriptor descriptor of the entity passed in 'entity' parameter. * @param entity entity to process. * @return true if check is passed (no sequencing) */ private boolean checkIdempotence(ClassDescriptor descriptor, Object entity) { final AbstractDirectMapping sequenceMapping = descriptor.getObjectBuilder().getSequenceMapping(); if (sequenceMapping != null) { final Object value = sequenceMapping.getAttributeAccessor().getAttributeValueFromObject(entity); if (descriptor.getObjectBuilder().isPrimaryKeyComponentInvalid(value, descriptor.getPrimaryKeyFields().indexOf(descriptor.getSequenceNumberField())) || descriptor.getSequence().shouldAlwaysOverrideExistingValue()) { return false; } } return true; }
/** * @return false for any lazily loaded property of root object being validated */ public boolean isReachable(Object traversableObject, Path.Node traversableProperty, Class<?> rootBeanType, Path pathToTraversableObject, ElementType elementType) { boolean reachable = true; String attributeName = null; if (isRootObjectPath(pathToTraversableObject)) { attributeName = traversableProperty.getName(); //Refer to section 4.2 of Bean Validation spec for more details about Path.Node DatabaseMapping mapping = getMappingForAttributeName(attributeName); if(mapping != null) { if(mapping.isForeignReferenceMapping()) { // For lazy relationships check whether it is instantiated if(mapping.isLazy()) { Object attributeValue = mapping.getAttributeAccessor().getAttributeValueFromObject(traversableObject); reachable = ((ForeignReferenceMapping)mapping).getIndirectionPolicy().objectIsInstantiatedOrChanged(attributeValue); } } else { // For lazy non relationship attributes, check whether it is fetched FetchGroupManager fetchGroupManager = descriptor.getFetchGroupManager(); if (fetchGroupManager != null) { reachable = fetchGroupManager.isAttributeFetched(traversableObject, attributeName); } } } } return reachable; }
public boolean marshal(XPathFragment xPathFragment, MarshalRecord marshalRecord, Object object, AbstractSession session, NamespaceResolver namespaceResolver) { if (xmlCompositeCollectionMapping.isReadOnly()) { return false; } ContainerPolicy cp = getContainerPolicy(); Object collection = xmlCompositeCollectionMapping.getAttributeAccessor().getAttributeValueFromObject(object); if (null == collection) { return false; } Object iterator = cp.iteratorFor(collection); if (cp.hasNext(iterator)) { XPathFragment groupingFragment = marshalRecord.openStartGroupingElements(namespaceResolver); marshalRecord.closeStartGroupingElements(groupingFragment); } else { return false; } Object objectValue; while (cp.hasNext(iterator)) { objectValue = cp.next(iterator, session); marshalSingleValue(xPathFragment, marshalRecord, object, objectValue, session, namespaceResolver, ObjectMarshalContext.getInstance()); } return true; }
/** * Delete all the reference objects with a single query. */ protected void deleteAll(DeleteObjectQuery query) throws DatabaseException { Object attribute = getAttributeAccessor().getAttributeValueFromObject(query.getObject()); if(usesIndirection()) { if(attribute == null || !getIndirectionPolicy().objectIsInstantiated(attribute)) { // An empty Vector indicates to DeleteAllQuery that no objects should be removed from cache ((DeleteAllQuery)getDeleteAllQuery()).executeDeleteAll(query.getSession().getSessionForClass(getReferenceClass()), query.getTranslationRow(), new Vector(0)); return; } } Object referenceObjects = this.getRealCollectionAttributeValueFromObject(query.getObject(), query.getSession()); ((DeleteAllQuery)getDeleteAllQuery()).executeDeleteAll(query.getSession().getSessionForClass(getReferenceClass()), query.getTranslationRow(), getContainerPolicy().vectorFor(referenceObjects, query.getSession())); }
@Override public boolean marshal(XPathFragment xPathFragment, MarshalRecord marshalRecord, Object object, AbstractSession session, NamespaceResolver namespaceResolver) { if (xmlCollectionReferenceMapping.isReadOnly()) { return false; } Object collection = xmlCollectionReferenceMapping.getAttributeAccessor().getAttributeValueFromObject(object); if (null == collection) { return false; } ContainerPolicy cp = getContainerPolicy(); Object iterator = cp.iteratorFor(collection); if (cp.hasNext(iterator)) { XPathFragment groupingFragment = marshalRecord.openStartGroupingElements(namespaceResolver); marshalRecord.closeStartGroupingElements(groupingFragment); } else { return false; } if(xPathFragment != XPathFragment.SELF_FRAGMENT) { marshalRecord.openStartElement(xPathFragment, namespaceResolver); } while (cp.hasNext(iterator)) { Object objectValue = cp.next(iterator, session); marshalSingleValue(xPathFragment, marshalRecord, object, objectValue, session, namespaceResolver, ObjectMarshalContext.getInstance()); } if(xPathFragment != XPathFragment.SELF_FRAGMENT) { marshalRecord.endElement(xPathFragment, namespaceResolver); } return true; }
public boolean marshal(XPathFragment xPathFragment, MarshalRecord marshalRecord, Object object, AbstractSession session, NamespaceResolver namespaceResolver) { if (xmlAnyCollectionMapping.isReadOnly()) { return false; } ContainerPolicy cp = xmlAnyCollectionMapping.getContainerPolicy(); Object collection = xmlAnyCollectionMapping.getAttributeAccessor().getAttributeValueFromObject(object); if (null == collection) { return false; } Object iterator = cp.iteratorFor(collection); if (cp.hasNext(iterator)) { XPathFragment groupingFragment = marshalRecord.openStartGroupingElements(namespaceResolver); marshalRecord.closeStartGroupingElements(groupingFragment); } else { return false; } Object objectValue; while (cp.hasNext(iterator)) { objectValue = cp.next(iterator, session); if(xmlAnyCollectionMapping.getConverter() != null) { objectValue = xmlAnyCollectionMapping.getConverter().convertObjectValueToDataValue(objectValue, session, marshalRecord.getMarshaller()); } marshalSingleValue(xPathFragment, marshalRecord, object, objectValue, session, namespaceResolver, ObjectMarshalContext.getInstance()); } return true; }