@Override public void doHandle(final PerformContext performContext) { final ObjectAdapter onAdapter = performContext.getOnAdapter(); final ObjectMember nakedObjectMember = performContext.getObjectMember(); final OneToManyAssociation otma = (OneToManyAssociation) nakedObjectMember; result = otma.get(onAdapter); }
final ObjectAdapter currentReferencedAdapter = collection.get(targetAdapter, interactionInitiatedBy);
private void addValue() { final ObjectAdapter valueAdapter = objectMember.get(objectAdapter); if (valueAdapter == null) { return; } final RenderFacet renderFacet = objectMember.getFacet(RenderFacet.class); boolean eagerlyRender = renderFacet != null && renderFacet.value() == Type.EAGERLY && rendererContext.canEagerlyRender(valueAdapter); final CollectionFacet facet = CollectionFacetUtils.getCollectionFacetFromSpec(valueAdapter); final List<JsonRepresentation> list = Lists.newArrayList(); for (final ObjectAdapter elementAdapter : facet.iterable(valueAdapter)) { final LinkBuilder valueLinkBuilder = DomainObjectReprRenderer.newLinkToBuilder(rendererContext, Rel.VALUE, elementAdapter); if(eagerlyRender) { final DomainObjectReprRenderer renderer = new DomainObjectReprRenderer(getRendererContext(), getLinkFollowSpecs(), JsonRepresentation.newMap()); renderer.with(elementAdapter); if(mode.isEventSerialization()) { renderer.asEventSerialization(); } valueLinkBuilder.withValue(renderer.render()); } list.add(valueLinkBuilder.build()); } representation.mapPut("value", list); }
collection = oneToManyAssociation.get(object); final ObjectSpecification referencedTypeNos = oneToManyAssociation.getSpecification(); final String fullyQualifiedClassName = referencedTypeNos.getFullIdentifier();
@Override List<ObjectAdapter> load(final EntityCollectionModel entityCollectionModel) { final ObjectAdapter adapter = entityCollectionModel.parentObjectAdapterMemento.getObjectAdapter(); final OneToManyAssociation collection = entityCollectionModel.collectionMemento.getCollection(); final ObjectAdapter collectionAsAdapter = collection.get(adapter); final Iterable<Object> objectList = asIterable(collectionAsAdapter); final Iterable<ObjectAdapter> adapterIterable = Iterables.transform(objectList, ObjectAdapters.fromPojo()); final List<ObjectAdapter> adapterList = Lists.newArrayList(adapterIterable); return adapterList; }
private void addValue() { final ObjectAdapter valueAdapter = objectMember.get(objectAdapter); if (valueAdapter == null) { return; } final CollectionFacet facet = CollectionFacetUtils.getCollectionFacetFromSpec(valueAdapter); final List<JsonRepresentation> list = Lists.newArrayList(); for (final ObjectAdapter elementAdapter : facet.iterable(valueAdapter)) { final LinkBuilder newBuilder = DomainObjectReprRenderer.newLinkToBuilder(resourceContext, Rel.OBJECT, elementAdapter); list.add(newBuilder.build()); } representation.mapPut("value", list); }
private void appendCollectionTo( final RepresentationService.Context2 rendererContext, final ObjectAdapter objectAdapter, final OneToManyAssociation collection, final JsonRepresentation representation) { final InteractionInitiatedBy interactionInitiatedBy = determineInteractionInitiatedByFrom(rendererContext); final ObjectAdapter valueAdapter = collection.get(objectAdapter, interactionInitiatedBy); if (valueAdapter == null) { return; } final CollectionFacet facet = CollectionFacetUtils.getCollectionFacetFromSpec(valueAdapter); final Iterable<ObjectAdapter> iterable = facet.iterable(valueAdapter); appendIterableTo(rendererContext, iterable, representation); }
private void updateOneToManyAssociation(final ObjectAdapter objectAdapter, final OneToManyAssociation otma, final CollectionData collectionData) { final ObjectAdapter collection = otma.get(objectAdapter, InteractionInitiatedBy.FRAMEWORK); final CollectionFacet facet = CollectionFacetUtils.getCollectionFacetFromSpec(collection); final List<ObjectAdapter> original = Lists.newArrayList(); for (final ObjectAdapter adapter : facet.iterable(collection)) { original.add(adapter); } final Data[] elements = collectionData.elements; for (final Data data : elements) { final ObjectAdapter elementAdapter = recreateReference(data); if (!facet.contains(collection, elementAdapter)) { if (LOG.isDebugEnabled()) { LOG.debug(" association {} changed, added {}", otma, elementAdapter.getOid()); } otma.addElement(objectAdapter, elementAdapter, InteractionInitiatedBy.FRAMEWORK); } else { otma.removeElement(objectAdapter, elementAdapter, InteractionInitiatedBy.FRAMEWORK); } } for (final ObjectAdapter element : original) { if (LOG.isDebugEnabled()) { LOG.debug(" association {} changed, removed {}", otma, element.getOid()); } otma.removeElement(objectAdapter, element, InteractionInitiatedBy.FRAMEWORK); } }
private void updateOneToManyAssociation(final ObjectAdapter object, final OneToManyAssociation field, final CollectionData collectionData) { final ObjectAdapter collection = field.get(object); final CollectionFacet facet = CollectionFacetUtils.getCollectionFacetFromSpec(collection); final List<ObjectAdapter> original = Lists.newArrayList(); for (final ObjectAdapter adapter : facet.iterable(collection)) { original.add(adapter); } final Data[] elements = collectionData.elements; for (final Data data : elements) { final ObjectAdapter element = recreateReference(data); if (!facet.contains(collection, element)) { if (LOG.isDebugEnabled()) { LOG.debug(" association " + field + " changed, added " + element.getOid()); } field.addElement(object, element); } else { field.removeElement(object, element); } } for (final ObjectAdapter element : original) { if (LOG.isDebugEnabled()) { LOG.debug(" association " + field + " changed, removed " + element.getOid()); } field.removeElement(object, element); } }
@Override public ObjectAdapter that(final PerformContext performContext) throws ScenarioBoundValueException { final ObjectAdapter onAdapter = performContext.getOnAdapter(); final OneToManyAssociation otma = (OneToManyAssociation) performContext.getObjectMember(); final ObjectAdapter nakedObjectRepresentingCollection = otma.get(onAdapter); final CollectionFacet collectionFacet = nakedObjectRepresentingCollection.getSpecification().getFacet(CollectionFacet.class); doThat(performContext, collectionFacet.iterable(nakedObjectRepresentingCollection)); return nakedObjectRepresentingCollection; // can alias if wish }
final ObjectAdapter collection = oneToManyAssociation.get(fieldPlace.getObject()); final CollectionFacet facet = collection.getSpecification().getFacet(CollectionFacet.class);
private void setUpCollectionFieldForEntireContents(final ObjectAdapter adapter, final ObjectAssociation field, final CollectionData collectionContentData, final KnownObjectsRequest knownObjects) { final int size = collectionContentData.getElements().length; final ObjectAdapter[] elements = new ObjectAdapter[size]; for (int j = 0; j < elements.length; j++) { elements[j] = deserializeObject(collectionContentData.getElements()[j], knownObjects); if (LOG.isDebugEnabled()) { LOG.debug("adding element to " + field.getId() + ": " + elements[j]); } } final ObjectAdapter col = field.get(adapter); final ResolveState initialState = col.getResolveState(); final ResolveState state = nextState(initialState, collectionContentData.hasAllElements()); if (state != null) { PersistorUtil.start(col, state); final ObjectAdapter collection = ((OneToManyAssociation) field).get(adapter); final CollectionFacet facet = CollectionFacetUtils.getCollectionFacetFromSpec(collection); facet.init(collection, elements); PersistorUtil.end(col); } else { LOG.warn("not initialising collection " + col + " due to current state " + initialState); } }
@Override List<ObjectAdapter> load(final EntityCollectionModel entityCollectionModel) { final ObjectAdapter adapter = entityCollectionModel.getParentObjectAdapterMemento().getObjectAdapter( ConcurrencyChecking.NO_CHECK, entityCollectionModel.getPersistenceSession(), entityCollectionModel.getSpecificationLoader()); final OneToManyAssociation collection = entityCollectionModel.collectionMemento.getCollection( entityCollectionModel.getSpecificationLoader()); final ObjectAdapter collectionAsAdapter = collection.get(adapter, InteractionInitiatedBy.USER); final List<Object> objectList = asIterable(collectionAsAdapter); final Class<? extends Comparator<?>> sortedBy = entityCollectionModel.sortedBy; if(sortedBy != null) { @SuppressWarnings("unchecked") final Comparator<Object> comparator = (Comparator<Object>) InstanceUtil.createInstance(sortedBy); entityCollectionModel.getIsisSessionFactory().getServicesInjector().injectServicesInto(comparator); Collections.sort(objectList, comparator); } final Iterable<ObjectAdapter> adapterIterable = Iterables.transform(objectList, ObjectAdapter.Functions.adapterForUsing( entityCollectionModel.getPersistenceSession())); final List<ObjectAdapter> adapterList = Lists.newArrayList(adapterIterable); return adapterList; }
@Override List<ObjectAdapter> load(final EntityCollectionModel entityCollectionModel) { final ObjectAdapter adapter = entityCollectionModel.getParentObjectAdapterMemento().getObjectAdapter( ConcurrencyChecking.NO_CHECK, entityCollectionModel.getPersistenceSession(), entityCollectionModel.getSpecificationLoader()); final OneToManyAssociation collection = entityCollectionModel.collectionMemento.getCollection( entityCollectionModel.getSpecificationLoader()); final ObjectAdapter collectionAsAdapter = collection.get(adapter, InteractionInitiatedBy.USER); final List<Object> objectList = asIterable(collectionAsAdapter); final Class<? extends Comparator<?>> sortedBy = entityCollectionModel.sortedBy; if(sortedBy != null) { @SuppressWarnings("unchecked") final Comparator<Object> comparator = (Comparator<Object>) InstanceUtil.createInstance(sortedBy); entityCollectionModel.getIsisSessionFactory().getServicesInjector().injectServicesInto(comparator); Collections.sort(objectList, comparator); } final Iterable<ObjectAdapter> adapterIterable = Iterables.transform(objectList, ObjectAdapter.Functions.adapterForUsing( entityCollectionModel.getPersistenceSession())); final List<ObjectAdapter> adapterList = Lists.newArrayList(adapterIterable); return adapterList; }
private void addValue(final LinkFollowSpecs linkFollower) { final ObjectAdapter valueAdapter = objectMember.get(objectAdapter, getInteractionInitiatedBy()); if (valueAdapter == null) { return; } final LinkFollowSpecs followHref = linkFollower.follow("href"); boolean eagerlyRender = rendererContext.honorUiHints() && renderEagerly(valueAdapter) || !followHref.isTerminated(); final CollectionFacet facet = CollectionFacetUtils.getCollectionFacetFromSpec(valueAdapter); final List<JsonRepresentation> list = Lists.newArrayList(); for (final ObjectAdapter elementAdapter : facet.iterable(valueAdapter)) { final LinkBuilder valueLinkBuilder = DomainObjectReprRenderer.newLinkToBuilder(rendererContext, Rel.VALUE, elementAdapter); if(eagerlyRender) { final DomainObjectReprRenderer renderer = new DomainObjectReprRenderer(getRendererContext(), followHref, JsonRepresentation.newMap() ); renderer.with(elementAdapter); if(mode.isEventSerialization()) { renderer.asEventSerialization(); } valueLinkBuilder.withValue(renderer.render()); } list.add(valueLinkBuilder.build()); } representation.mapPut("value", list); }