@Override public ObjectSpecification getSpecification() { return ObjectMemberAbstract.getSpecification(getSpecificationLookup(), peer.getType()); }
@Override public Object[] getChoices(final ObjectAdapter adapter) { final FacetHolder facetHolder = getFacetHolder(); final TypedHolder paramPeer = (TypedHolder) facetHolder; final ObjectSpecification noSpec = getSpecification(paramPeer.getType()); final ChoicesFacet choicesFacet = noSpec.getFacet(ChoicesFacet.class); if (choicesFacet == null) { return new Object[0]; } return choicesFacet.getChoices(adapter); }
/** * Build lazily by {@link #getParameters()}. * * <p> * Although this is lazily loaded, the method is also <tt>synchronized</tt> * so there shouldn't be any thread race conditions. */ @Override public synchronized List<ObjectActionParameter> getParameters() { if (this.parameters == null) { final int parameterCount = getParameterCount(); final List<ObjectActionParameter> parameters = Lists.newArrayList(); final List<FacetedMethodParameter> paramPeers = getFacetedMethod().getParameters(); for (int i = 0; i < parameterCount; i++) { final TypedHolder paramPeer = paramPeers.get(i); final ObjectSpecification specification = ObjectMemberAbstract.getSpecification(getSpecificationLookup(), paramPeer.getType()); if (specification.isParseable()) { parameters.add(new ObjectActionParameterParseable(i, this, paramPeer)); } else if (specification.isNotCollection()) { parameters.add(new OneToOneActionParameterImpl(i, this, paramPeer)); } else if (specification.isCollection()) { throw new UnknownTypeException("collections not supported as parameters: " + getIdentifier()); } else { throw new UnknownTypeException(specification); } } this.parameters = parameters; } return parameters; }