@Override public synchronized List<ObjectSpecification> getParameterTypes() { final List<ObjectSpecification> parameterTypes = Lists.newArrayList(); final List<ObjectActionParameter> parameters = getParameters(); for (final ObjectActionParameter parameter : parameters) { parameterTypes.add(parameter.getSpecification()); } return parameterTypes; }
@Override public boolean accept(final ObjectActionParameter parameter) { return parameter.getSpecification().isNotCollection(); } };
/** * Convenience. */ public ObjectSpecification getSpecification() { return getActionParameter().getSpecification(); }
/** * Convenience. * @param specificationLoader */ public ObjectSpecification getSpecification(final SpecificationLoader specificationLoader) { return getActionParameter(specificationLoader).getSpecification(); }
/** * Convenience. * @param specificationLoader */ public ObjectSpecification getSpecification(final SpecificationLoader specificationLoader) { return getActionParameter(specificationLoader).getSpecification(); }
private Object choicesFor(final ObjectActionParameter param) { final ObjectAdapter[] choiceAdapters = param.getChoices(objectAdapter); if (choiceAdapters == null || choiceAdapters.length == 0) { return null; } final List<Object> list = Lists.newArrayList(); for (final ObjectAdapter choiceAdapter : choiceAdapters) { final ObjectSpecification objectSpec = param.getSpecification(); list.add(DomainObjectReprRenderer.valueOrRef(resourceContext, choiceAdapter, objectSpec)); } return list; }
private Object defaultFor(final ObjectActionParameter param) { final ObjectAdapter defaultAdapter = param.getDefault(objectAdapter); if (defaultAdapter == null) { return null; } final ObjectSpecification objectSpec = param.getSpecification(); return DomainObjectReprRenderer.valueOrRef(resourceContext, defaultAdapter, objectSpec); }
@Override public boolean accept(final ObjectActionParameter t) { return equalsShortIdentifier(t.getSpecification(), getSpecification()); }
private boolean matchesParameterOf(final ObjectAction serviceAction) { final List<ObjectActionParameter> params = serviceAction.getParameters(); for (final ObjectActionParameter param : params) { if (isOfType(param.getSpecification())) { return true; } } return false; }
@Override public boolean accept(final ObjectActionParameter t) { return equalsShortIdentifier(t.getSpecification(), getSpecification()); }
public static boolean compatibleWith(final ObjectAdapter contextAdapter, final ObjectActionParameter actionParam) { return contextAdapter != null && contextAdapter.getSpecification().isOfType(actionParam.getSpecification()); }
@Override protected void addLinksSpecificToFeature() { final LinkBuilder linkBuilder = DomainTypeReprRenderer.newLinkToBuilder(resourceContext, Rel.RETURN_TYPE, objectFeature.getSpecification()); getLinks().arrayAdd(linkBuilder.build()); }
public static List<ObjectAdapter> parseArguments(final ResourceContext resourceContext, final ObjectAction action, final JsonRepresentation arguments) { final List<JsonRepresentation> argList = argListFor(action, arguments); final List<ObjectAdapter> argAdapters = Lists.newArrayList(); final List<ObjectActionParameter> parameters = action.getParameters(); for (int i = 0; i < argList.size(); i++) { final String paramName = parameters.get(i).getName(); final JsonRepresentation arg = argList.get(i); final ObjectSpecification paramSpec = parameters.get(i).getSpecification(); try { final ObjectAdapter objectAdapter = objectAdapterFor(resourceContext, paramSpec, arg); argAdapters.add(objectAdapter); } catch (final ExpectedStringRepresentingValueException e) { throw RestfulObjectsApplicationException.create(HttpStatusCode.BAD_REQUEST, "Action '%s', argument %s should be a URL encoded string representing a value of type %s", action.getId(), paramName, resourceFor(paramSpec)); } catch (final ExpectedMapRepresentingLinkException e) { throw RestfulObjectsApplicationException.create(HttpStatusCode.BAD_REQUEST, "Action '%s', argument %s should be a map representing a link to reference of type %s", action.getId(), paramName, resourceFor(paramSpec)); } } return argAdapters; }
@Override protected void addLinksSpecificToFeature() { final LinkBuilder linkBuilder = DomainTypeReprRenderer.newLinkToBuilder(rendererContext, Rel.RETURN_TYPE, objectFeature.getSpecification()); getLinks().arrayAdd(linkBuilder.build()); }
@Override protected void addLinksSpecificToFeature() { final LinkBuilder linkBuilder = DomainTypeReprRenderer.newLinkToBuilder(rendererContext, Rel.RETURN_TYPE, objectFeature.getSpecification()); getLinks().arrayAdd(linkBuilder.build()); }
@Override public String parseAndValidate(final ScalarModel scalarModel, final String proposedPojoAsStr) { final ObjectActionParameter parameter = scalarModel.getParameterMemento().getActionParameter(); ParseableFacet parseableFacet = parameter.getFacet(ParseableFacet.class); if (parseableFacet == null) { parseableFacet = parameter.getSpecification().getFacet(ParseableFacet.class); } try { final ObjectAdapter parentAdapter = scalarModel.parentObjectAdapterMemento.getObjectAdapter(); final String invalidReasonIfAny = parameter.isValid(parentAdapter, proposedPojoAsStr); return invalidReasonIfAny; } catch (final Exception ex) { return ex.getLocalizedMessage(); } }
public ObjectAdapter[] getParameters(final Request request) { final ObjectAdapter[] params = new ObjectAdapter[parameters.length]; final List<ObjectActionParameter> pars = action.getParameters(); for (int i = 0; i < parameters.length; i++) { final ObjectSpecification typ = pars.get(i).getSpecification(); if (typ.getFacet(ParseableFacet.class) != null) { final ParseableFacet facet = typ.getFacet(ParseableFacet.class); params[i] = facet.parseTextEntry(null, parameters[i]); } else { params[i] = request.getContext().getMappedObject(parameters[i]); } } return params; }
private Object argValueFor(final int i) { if (objectMember.isContributed()) { final ObjectActionParameter actionParameter = objectMember.getParameters().get(i); if (actionParameter.getSpecification().isOfType(objectAdapter.getSpecification())) { return DomainObjectReprRenderer.newLinkToBuilder(resourceContext, Rel.OBJECT, objectAdapter).build(); } } // force a null into the map return NullNode.getInstance(); }
@Override public boolean promptForParameters(final ObjectAdapter target) { final List<ObjectActionParameter> parameters = getParameters(); if (isContributed() && !target.getSpecification().isService()) { return getParameterCount() > 1 || !target.getSpecification().isOfType(parameters.get(0).getSpecification()); } else { return getParameterCount() > 0; } }
@Before public void setUp() throws Exception { context.checking(new Expectations() { { allowing(stubSpecForString).getSingularName(); will(returnValue("string")); allowing(stubObjectActionParameterString).getSpecification(); will(returnValue(stubSpecForString)); allowing(stubObjectActionParameterString2).getSpecification(); will(returnValue(stubSpecForString)); } }); }