@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 protected void addPropertiesSpecificToFeature() { representation.mapPut("name", getObjectFeature().getName()); representation.mapPut("number", getObjectFeature().getNumber()); representation.mapPut("optional", getObjectFeature().isOptional()); final MaxLengthFacet maxLength = getObjectFeature().getFacet(MaxLengthFacet.class); if (maxLength != null && !maxLength.isNoop()) { representation.mapPut("maxLength", maxLength.value()); } }
private Object paramDetails(final ObjectActionParameter param) { final JsonRepresentation paramRep = JsonRepresentation.newMap(); paramRep.mapPut("num", param.getNumber()); paramRep.mapPut("id", param.getId()); paramRep.mapPut("name", param.getName()); paramRep.mapPut("description", param.getDescription()); final Object paramChoices = choicesFor(param); if (paramChoices != null) { paramRep.mapPut("choices", paramChoices); } final Object paramDefault = defaultFor(param); if (paramDefault != null) { paramRep.mapPut("default", paramDefault); } return paramRep; }
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); }
final List<ObjectActionParameter> p = objectAction.getParameters(); for (int j = 0; j < parameters.size(); j++) { debugBuilder.append(p.get(j).getName()); debugBuilder.append(" ("); debugBuilder.append(parameters.get(j).getSpecification().getFullIdentifier()); debugBuilder.appendln(")"); debugBuilder.indent(); final Class<? extends Facet>[] parameterFacets = p.get(j).getFacetTypes(); for (final Class<? extends Facet> parameterFacet : parameterFacets) { debugBuilder.appendln(p.get(j).getFacet(parameterFacet).toString());
final ObjectSpecification spec = parameters2.get(i).getSpecification(); if (spec.isOfType(IsisContext.getSpecificationLoader().loadSpecification(boolean.class)) || spec.isOfType(IsisContext.getSpecificationLoader().loadSpecification(Boolean.class))) { newEntry = FALSE; Consent consent = null; if (!parameters2.get(i).isOptional() && newEntry.equals("")) { consent = new Veto(parameters2.get(i).getName() + " required"); formState.setError("Not all fields have been set"); } else if (parameters2.get(i).getSpecification().getFacet(ParseableFacet.class) != null) { try { final ParseableFacet facet = parameters2.get(i).getSpecification().getFacet(ParseableFacet.class); final String message = parameters2.get(i).isValid(object, newEntry); if (message != null) { consent = new Veto(message);
@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 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; }
if (parameterDefaultPojos[i] != null) { final ObjectSpecification componentSpec = getSpecificationLookup().loadSpecification(parameterDefaultPojos[i].getClass()); final ObjectSpecification parameterSpec = parameters.get(i).getSpecification(); if (!componentSpec.isOfType(parameterSpec)) { throw new DomainModelException("Defaults type incompatible with parameter " + (i + 1) + " type; expected " + parameterSpec.getFullIdentifier() + ", but was " + componentSpec.getFullIdentifier()); final ActionParameterDefaultsFacet paramFacet = parameters.get(i).getFacet(ActionParameterDefaultsFacet.class); if (paramFacet != null && !paramFacet.isNoop()) { parameterDefaultPojos[i] = paramFacet.getDefault(realTarget); if (target.getSpecification().isOfType(parameters.get(i).getSpecification())) { parameterDefaultAdapters[i] = target;
for (int i = 0; i < argList.size(); i++) { final JsonRepresentation argRepr = argList.get(i); final ObjectSpecification paramSpec = parameters.get(i).getSpecification(); try { final ObjectAdapter argAdapter = objectAdapterFor(resourceContext, paramSpec, argRepr); final String reasonNotValid = parameter.isValid(objectAdapter, argPojo, null); if (reasonNotValid != null) { argRepr.mapPut("invalidReason", reasonNotValid);
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; }
@Override public String getFileAccept(ScalarModel scalarModel) { final ActionParameterMemento parameterMemento = scalarModel.getParameterMemento(); final ObjectActionParameter actionParameter = parameterMemento.getActionParameter(scalarModel.getSpecificationLoader()); final FileAcceptFacet facet = actionParameter.getFacet(FileAcceptFacet.class); return facet != null? facet.value(): null; }
private static List<JsonRepresentation> argListFor(final ObjectAction action, final JsonRepresentation arguments) { final List<JsonRepresentation> argList = Lists.newArrayList(); // ensure that we have no arguments that are not parameters for (final Entry<String, JsonRepresentation> arg : arguments.mapIterable()) { final String argName = arg.getKey(); if (action.getParameterById(argName) == null) { String reason = String.format("Argument '%s' found but no such parameter", argName); arguments.mapPut("x-ro-invalidReason", reason); throw RestfulObjectsApplicationException.createWithBody(HttpStatusCode.BAD_REQUEST, arguments, reason); } } // ensure that an argument value has been provided for all non-optional // parameters final List<ObjectActionParameter> parameters = action.getParameters(); for (final ObjectActionParameter param : parameters) { final String paramId = param.getId(); final JsonRepresentation argRepr = arguments.getRepresentation(paramId); if (argRepr == null && !param.isOptional()) { String reason = String.format("No argument found for (mandatory) parameter '%s'", paramId); arguments.mapPut("x-ro-invalidReason", reason); throw RestfulObjectsApplicationException.createWithBody(HttpStatusCode.BAD_REQUEST, arguments, reason); } argList.add(argRepr); } return argList; }
@Override public ObjectActionParameter getParameterByName(final String paramName) { final List<ObjectActionParameter> allParameters = getParameters(); for (int i = 0; i < allParameters.size(); i++) { final ObjectActionParameter param = allParameters.get(i); if (Objects.equal(paramName, param.getName())) { return param; } } return null; }
@Override public ObjectActionParameter getParameterById(final String paramId) { final List<ObjectActionParameter> allParameters = getParameters(); for (int i = 0; i < allParameters.size(); i++) { final ObjectActionParameter param = allParameters.get(i); if (Objects.equal(paramId, param.getId())) { return param; } } return null; }
@Override public String parseAndValidate(final ScalarModel scalarModel, final String proposedPojoAsStr) { final ObjectActionParameter parameter = scalarModel.getParameterMemento().getActionParameter( scalarModel.getSpecificationLoader()); try { final ObjectAdapter parentAdapter = scalarModel.getParentEntityModel().load(); final String invalidReasonIfAny = parameter.isValid(parentAdapter, proposedPojoAsStr, InteractionInitiatedBy.USER ); return invalidReasonIfAny; } catch (final Exception ex) { return ex.getLocalizedMessage(); } }
@Override public String getCssClass(final ScalarModel scalarModel) { final ObjectAdapterMemento adapterMemento = scalarModel.getObjectAdapterMemento(); if (adapterMemento == null) { // shouldn't happen return null; } final ObjectActionParameter actionParameter = scalarModel.getParameterMemento() .getActionParameter(scalarModel.getSpecificationLoader()); final ObjectAction action = actionParameter.getAction(); final String objectSpecId = action.getOnType().getSpecId().asString().replace(".", "-"); final String parmId = actionParameter.getId(); return "isis-" + objectSpecId + "-" + action.getId() + "-" + parmId; }
private Object defaultFor(final ObjectActionParameter param) { final ObjectAdapter defaultAdapter = param.getDefault(objectAdapter); if (defaultAdapter == null) { return null; } // REVIEW: previously was using the spec of the parameter, but think instead it should be the spec of the adapter itself // final ObjectSpecification defaultSpec = param.getSpecification(); final ObjectSpecification defaultSpec = defaultAdapter.getSpecification(); return DomainObjectReprRenderer.valueOrRef(rendererContext, defaultAdapter, defaultSpec); }