private void specificationMembers(final DebugBuilder view, final String label, final List<? extends ObjectMember> members) { final StringBuffer buffer = new StringBuffer(); if (members.size() == 0) { buffer.append("none"); } else { for (int i = 0; i < members.size(); i++) { final ObjectMember member = members.get(i); buffer.append("<a href=\"#" + members.get(i).getId() + "\">" + member.getId() + "</a> <small>"); buffer.append(member.isAlwaysHidden() ? "" : "Visible "); if (member.isPropertyOrCollection()) { buffer.append(((ObjectAssociation) member).isNotPersisted() ? "Not-Persisted " : " "); buffer.append(((ObjectAssociation) member).isMandatory() ? "Mandatory " : ""); } buffer.append("</small></a><br>"); } } view.appendln(label, buffer.toString()); }
private ObjectData createObjectData(final ObjectAdapter adapter) { final Oid adapterOid = clone(adapter.getOid()); transientObjects.add(adapterOid); final ObjectSpecification cls = adapter.getSpecification(); final List<ObjectAssociation> associations = cls.getAssociations(Contributed.EXCLUDED); final ObjectData data = new ObjectData(adapterOid, cls.getFullIdentifier()); for (int i = 0; i < associations.size(); i++) { if (associations.get(i).isNotPersisted()) { if (associations.get(i).isOneToManyAssociation()) { continue; } if (associations.get(i).containsFacet(PropertyOrCollectionAccessorFacet.class) && !associations.get(i).containsFacet(PropertySetterFacet.class)) { LOG.debug("ignoring not-settable field {}", associations.get(i).getName()); continue; } } createAssociationData(adapter, data, associations.get(i)); } return data; }
private ObjectData createObjectData(final ObjectAdapter adapter) { transientObjects.add(adapter.getOid()); final ObjectSpecification cls = adapter.getSpecification(); final List<ObjectAssociation> fields = cls.getAssociations(); final ObjectData data = new ObjectData(adapter.getOid(), adapter.getResolveState().name(), cls.getFullIdentifier()); for (int i = 0; i < fields.size(); i++) { if (fields.get(i).isNotPersisted()) { if (fields.get(i).isOneToManyAssociation()) { continue; } if (fields.get(i).containsFacet(PropertyOrCollectionAccessorFacet.class) && !fields.get(i).containsFacet(PropertySetterFacet.class)) { LOG.debug("ignoring not-settable field " + fields.get(i).getName()); continue; } } createFieldData(adapter, data, fields.get(i)); } return data; }
private void updateFields(final ObjectAdapter object, final Data state) { final ObjectData od = (ObjectData) state; final List<ObjectAssociation> fields = object.getSpecification().getAssociations(); for (final ObjectAssociation field : fields) { if (field.isNotPersisted()) { if (field.isOneToManyAssociation()) { continue; } if (field.containsFacet(PropertyOrCollectionAccessorFacet.class) && !field.containsFacet(PropertySetterFacet.class)) { LOG.debug("ignoring not-settable field " + field.getName()); continue; } } updateField(object, od, field); } }
private void updateFields(final ObjectAdapter object, final Data state) { final ObjectData od = (ObjectData) state; final List<ObjectAssociation> fields = object.getSpecification().getAssociations(Contributed.EXCLUDED); for (final ObjectAssociation field : fields) { if (field.isNotPersisted()) { if (field.isOneToManyAssociation()) { continue; } if (field.containsFacet(PropertyOrCollectionAccessorFacet.class) && !field.containsFacet(PropertySetterFacet.class)) { LOG.debug("ignoring not-settable field {}", field.getName()); continue; } } updateField(object, od, field); } }
/** * Auditing and publishing support: for object stores to enlist an object that has just been created, * capturing a dummy value <tt>'[NEW]'</tt> for the pre-modification value. * * <p> * The post-modification values are captured when the transaction commits. * * <p> * Supported by the JDO object store; check documentation for support in other objectstores. */ @Programmatic public void enlistCreated(final ObjectAdapter adapter) { if(shouldIgnore(adapter)) { return; } enlistForPublishing(adapter, PublishedObject.ChangeKind.CREATE); for (ObjectAssociation property : adapter.getSpecification().getAssociations(Contributed.EXCLUDED, ObjectAssociation.Filters.PROPERTIES)) { final AdapterAndProperty aap = AdapterAndProperty.of(adapter, property); if(property.isNotPersisted()) { continue; } if(enlistedObjectProperties.containsKey(aap)) { // already enlisted, so ignore continue; } PreAndPostValues papv = PreAndPostValues.pre(IsisTransaction.Placeholder.NEW); enlistedObjectProperties.put(aap, papv); } }
if(property.isNotPersisted()) { continue;
if (fld.isNotPersisted()) { continue;
/** * Auditing and publishing support: for object stores to enlist an object that is about to be updated, * capturing the pre-modification values of the properties of the {@link ObjectAdapter}. * * <p> * The post-modification values are captured when the transaction commits. * * <p> * Supported by the JDO object store; check documentation for support in other objectstores. */ @Programmatic public void enlistUpdating(final ObjectAdapter adapter) { if(shouldIgnore(adapter)) { return; } enlistForPublishing(adapter, PublishedObject.ChangeKind.UPDATE); for (ObjectAssociation property : adapter.getSpecification().getAssociations(Contributed.EXCLUDED, ObjectAssociation.Filters.PROPERTIES)) { final AdapterAndProperty aap = AdapterAndProperty.of(adapter, property); if(property.isNotPersisted()) { continue; } if(enlistedObjectProperties.containsKey(aap)) { // already enlisted, so ignore continue; } PreAndPostValues papv = PreAndPostValues.pre(aap.getPropertyValue()); enlistedObjectProperties.put(aap, papv); } }
if (fld.isNotPersisted()) { continue;
if (field.isNotPersisted()) { continue; } else if (field instanceof OneToManyAssociation) {
final List<ObjectAssociation> associations = adapterSpec.getAssociations(Contributed.EXCLUDED); for (final ObjectAssociation association : associations) { if (association.isNotPersisted()) { continue;
final List<ObjectAssociation> associations = adapterSpec.getAssociations(); for (final ObjectAssociation association : associations) { if (association.isNotPersisted()) { continue;
private void addObjectAndAssociates(final ObjectAdapter adapter) { if (objects.contains(adapter.getObject())) { return; } objects.add(adapter.getObject()); final ObjectSpecification adapterSpec = adapter.getSpecification(); final List<ObjectAssociation> associations = adapterSpec.getAssociations(); for (final ObjectAssociation association : associations) { if (association.isNotPersisted()) { continue; } final ObjectAdapter associatedObject = association.get(adapter); final boolean isEmpty = association.isEmpty(adapter); if (isEmpty) { continue; } if (association.isOneToManyAssociation()) { final CollectionFacet facet = associatedObject.getSpecification().getFacet(CollectionFacet.class); for (final ObjectAdapter element : facet.iterable(associatedObject)) { addObjectAndAssociates(element); } } else if (association.isOneToOneAssociation() && !association.getSpecification().isParseable()) { addObjectAndAssociates(associatedObject); } } }
@Override public void resolveField(final ObjectAdapter objectAdapter, final ObjectAssociation field) { if (field.isNotPersisted() || field.isOneToManyAssociation() || field.getSpecification().isCollectionOrIsAggregated()) { return; } final ObjectAdapter referenceAdapter = field.get(objectAdapter); if (referenceAdapter == null || referenceAdapter.getResolveState().isResolved()) { return; } if (!referenceAdapter.isPersistent()) { return; } if (LOG.isInfoEnabled()) { // don't log object - it's toString() may use the unresolved field // or unresolved collection LOG.info("resolve field " + objectAdapter.getSpecification().getShortIdentifier() + "." + field.getId() + ": " + referenceAdapter.getSpecification().getShortIdentifier() + " " + referenceAdapter.getResolveState().code() + " " + referenceAdapter.getOid()); } resolveFieldFromPersistenceLayer(objectAdapter, field); }
private void setUpFields(final ObjectAdapter adapter, final ObjectData adapterData, final KnownObjectsRequest knownObjects) { final Data[] fieldContent = adapterData.getFieldContent(); if (fieldContent != null && fieldContent.length > 0) { final ObjectAssociation[] fields = fieldOrderCache.getFields(adapter.getSpecification()); if (fields.length != fieldContent.length) { throw new IsisRemoteException("Data received for different number of fields; expected " + fields.length + ", but was " + fieldContent.length); } for (int i = 0; i < fields.length; i++) { final ObjectAssociation field = fields[i]; final Data fieldData = fieldContent[i]; if (fieldData == null || field.isNotPersisted()) { LOG.debug("no data for field " + field.getId()); continue; } if (field.isOneToManyAssociation()) { setUpCollectionField(adapter, adapterData, field, (CollectionData) fieldData, knownObjects); } else if (field.getSpecification().isEncodeable()) { setUpEncodedField(adapter, (OneToOneAssociation) field, fieldData); } else { setUpReferenceField(adapter, (OneToOneAssociation) field, fieldData, knownObjects); } } } }
if (field.isNotPersisted()) { continue;
protected ObjectData createObjectData(final ObjectAdapter adapter, final boolean ensurePersistent) { if (LOG.isDebugEnabled()) { LOG.debug("compiling object data for " + adapter); } final ObjectSpecification adapterSpec = adapter.getSpecification(); final ObjectData data = new ObjectData(adapterSpec, (SerialOid) adapter.getOid(), (FileVersion) adapter.getVersion()); final List<ObjectAssociation> associations = adapterSpec.getAssociations(); for (final ObjectAssociation association : associations) { if (association.isNotPersisted()) { continue; } final ObjectAdapter associatedObject = association.get(adapter); final boolean isEmpty = association.isEmpty(adapter); final String associationId = association.getId(); if (association.isOneToManyAssociation()) { saveCollection(associationId, data, associatedObject, ensurePersistent); } else if (association.getSpecification().isEncodeable()) { saveEncoded(data, associationId, associatedObject, isEmpty); } else if (association.isOneToOneAssociation()) { saveReference(data, associationId, associatedObject, ensurePersistent); } } return data; }
private void addObjectAndAssociates(final ObjectAdapter adapter) { if (objects.contains(adapter.getObject())) { return; } objects.add(adapter.getObject()); final ObjectSpecification adapterSpec = adapter.getSpecification(); final List<ObjectAssociation> associations = adapterSpec.getAssociations(Contributed.EXCLUDED); for (final ObjectAssociation association : associations) { if (association.isNotPersisted()) { continue; } final ObjectAdapter associatedObject = association.get(adapter, InteractionInitiatedBy.FRAMEWORK); final boolean isEmpty = association.isEmpty(adapter, InteractionInitiatedBy.FRAMEWORK); if (isEmpty) { continue; } if (association.isOneToManyAssociation()) { final CollectionFacet facet = associatedObject.getSpecification().getFacet(CollectionFacet.class); for (final ObjectAdapter element : facet.iterable(associatedObject)) { addObjectAndAssociates(element); } } else if (association.isOneToOneAssociation() && !association.getSpecification().isParseable()) { addObjectAndAssociates(associatedObject); } } }
for (int i = 0; i < fields.size(); i++) { final ObjectAssociation field = fields.get(i); if (field.isNotPersisted()) { continue;