private static void sortAssociations( final DeweyOrderSet orderSet, final List<ObjectAssociation> associationsToAppendTo) { for (final Object element : orderSet) { if (element instanceof OneToManyAssociation) { associationsToAppendTo.add((ObjectAssociation) element); } else if (element instanceof OneToOneAssociation) { associationsToAppendTo.add((ObjectAssociation) element); } else if (element instanceof DeweyOrderSet) { // just flatten. DeweyOrderSet childOrderSet = (DeweyOrderSet) element; sortAssociations(childOrderSet, associationsToAppendTo); } else { throw new UnknownTypeException(element); } } }
private void addContributeeActionsIfAny( final ObjectAdapter serviceAdapter, final List<ObjectAction> contributeeActionsToAppendTo) { final ObjectSpecification specification = serviceAdapter.getSpecification(); if (specification == this) { return; } final List<ObjectAction> contributeeActions = Lists.newArrayList(); final List<ObjectAction> serviceActions = specification.getObjectActions( ActionType.ALL, Contributed.INCLUDED, Filters.<ObjectAction>any()); for (final ObjectAction serviceAction : serviceActions) { if (isAlwaysHidden(serviceAction)) { continue; } final NotContributedFacet notContributed = serviceAction.getFacet(NotContributedFacet.class); if (notContributed != null && notContributed.toActions()) { continue; } if (!(serviceAction instanceof ObjectActionImpl)) { continue; } final ObjectActionImpl contributedAction = (ObjectActionImpl) serviceAction; // see if qualifies by inspecting all parameters final int contributeeParam = contributeeParameterMatchOf(contributedAction); if (contributeeParam != -1) { ObjectActionContributee contributeeAction = new ObjectActionContributee( serviceAdapter, contributedAction, contributeeParam, this, objectMemberContext); facetProcessor.processMemberOrder(metadataProperties, contributeeAction); contributeeActions.add(contributeeAction); } } contributeeActionsToAppendTo.addAll(contributeeActions); }
private void addIfReturnsSubtype( final ObjectAction serviceAction, final ObjectSpecification actionType, final List<ObjectAction> matchingActionsToAppendTo) { if (actionType.isOfType(this)) { matchingActionsToAppendTo.add(serviceAction); } }
private static void sortActions( final DeweyOrderSet orderSet, final List<ObjectAction> actionsToAppendTo) { for (final Object element : orderSet) { if (element instanceof ObjectAction) { final ObjectAction objectAction = (ObjectAction) element; actionsToAppendTo.add(objectAction); } else if (element instanceof DeweyOrderSet) { final DeweyOrderSet set = ((DeweyOrderSet) element); final List<ObjectAction> actions = Lists.newArrayList(); sortActions(set, actions); actionsToAppendTo.addAll(actions); } else { throw new UnknownTypeException(element); } } }
/** * Synthesises {@link ObjectAssociation}s from matching {@link ObjectAction}s of any of the * services that accept one parameter */ private List<ObjectAssociation> createContributeeAssociations( final ObjectAdapter serviceAdapter) { final ObjectSpecification specification = serviceAdapter.getSpecification(); final List<ObjectAction> serviceActions = specification.getObjectActions( ActionType.USER, Contributed.INCLUDED, Filters.<ObjectAction>any()); final List<ObjectActionImpl> contributedActions = Lists.newArrayList(); for (final ObjectAction serviceAction : serviceActions) { if (isAlwaysHidden(serviceAction)) { continue; } final NotContributedFacet notContributed = serviceAction.getFacet(NotContributedFacet.class); if (notContributed != null && notContributed.toAssociations()) { continue; } if (!serviceAction.hasReturn()) { continue; } if (serviceAction.getParameterCount() != 1 || contributeeParameterMatchOf(serviceAction) == -1) { continue; } if (!(serviceAction instanceof ObjectActionImpl)) { continue; } if (!serviceAction.getSemantics().isSafeInNature()) { continue; } contributedActions.add((ObjectActionImpl) serviceAction); } return Lists.newArrayList( Iterables.transform( contributedActions, createContributeeAssociationFunctor(serviceAdapter, this))); }
public void addSubclass(final ObjectSpecification subclass) { if (classes.contains(subclass)) { return; } classes.add(subclass); }