You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2011/09/20 19:28:45 UTC
svn commit: r1173268 - in /incubator/isis/trunk/framework:
tck/tck-fixture/src/main/java/org/apache/isis/tck/fixture/simples/
tck/tck-objstore-dflt/src/main/java/org/apache/isis/tck/objstore/dflt/simples/
viewer/json/json-applib/src/main/java/org/apach...
Author: danhaywood
Date: Tue Sep 20 17:28:45 2011
New Revision: 1173268
URL: http://svn.apache.org/viewvc?rev=1173268&view=rev
Log:
ISIS-109: working on the domain object representation, scalar value representation, domain object list representation, domain type representations
Added:
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/ScalarRepBuilder.java
Modified:
incubator/isis/trunk/framework/tck/tck-fixture/src/main/java/org/apache/isis/tck/fixture/simples/SimpleEntityFixture.java
incubator/isis/trunk/framework/tck/tck-objstore-dflt/src/main/java/org/apache/isis/tck/objstore/dflt/simples/SimpleEntityRepositoryDefault.java
incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/domaintypes/DomainTypeResource.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/representations/AbstractRepresentationBuilder.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/ResourceAbstract.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/ActionSemantics.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainObjectListRepBuilder.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainObjectRepBuilder.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainObjectResourceServerside.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainResourceAbstract.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainServiceResourceServerside.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/ObjectActionRepBuilder.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/ObjectPropertyRepBuilder.java
incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/DomainTypeResourceServerside.java
Modified: incubator/isis/trunk/framework/tck/tck-fixture/src/main/java/org/apache/isis/tck/fixture/simples/SimpleEntityFixture.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/tck/tck-fixture/src/main/java/org/apache/isis/tck/fixture/simples/SimpleEntityFixture.java?rev=1173268&r1=1173267&r2=1173268&view=diff
==============================================================================
--- incubator/isis/trunk/framework/tck/tck-fixture/src/main/java/org/apache/isis/tck/fixture/simples/SimpleEntityFixture.java (original)
+++ incubator/isis/trunk/framework/tck/tck-fixture/src/main/java/org/apache/isis/tck/fixture/simples/SimpleEntityFixture.java Tue Sep 20 17:28:45 2011
@@ -16,18 +16,13 @@
* specific language governing permissions and limitations
* under the License.
*/
-
-
package org.apache.isis.tck.fixture.simples;
import org.apache.isis.applib.fixtures.AbstractFixture;
-import org.apache.isis.tck.dom.scalars.WrapperValuedEntity;
-import org.apache.isis.tck.dom.scalars.WrapperValuedEntityRepository;
import org.apache.isis.tck.dom.simples.SimpleEntity;
import org.apache.isis.tck.dom.simples.SimpleEntityRepository;
-
public class SimpleEntityFixture extends AbstractFixture {
@Override
Modified: incubator/isis/trunk/framework/tck/tck-objstore-dflt/src/main/java/org/apache/isis/tck/objstore/dflt/simples/SimpleEntityRepositoryDefault.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/tck/tck-objstore-dflt/src/main/java/org/apache/isis/tck/objstore/dflt/simples/SimpleEntityRepositoryDefault.java?rev=1173268&r1=1173267&r2=1173268&view=diff
==============================================================================
--- incubator/isis/trunk/framework/tck/tck-objstore-dflt/src/main/java/org/apache/isis/tck/objstore/dflt/simples/SimpleEntityRepositoryDefault.java (original)
+++ incubator/isis/trunk/framework/tck/tck-objstore-dflt/src/main/java/org/apache/isis/tck/objstore/dflt/simples/SimpleEntityRepositoryDefault.java Tue Sep 20 17:28:45 2011
@@ -44,6 +44,7 @@ public class SimpleEntityRepositoryDefau
SimpleEntity entity = newTransientEntity();
entity.setName(name);
entity.setFlag(flag);
+ getContainer().persist(entity);
return entity;
}
Modified: incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/domaintypes/DomainTypeResource.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/domaintypes/DomainTypeResource.java?rev=1173268&r1=1173267&r2=1173268&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/domaintypes/DomainTypeResource.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/domaintypes/DomainTypeResource.java Tue Sep 20 17:28:45 2011
@@ -68,6 +68,6 @@ public interface DomainTypeResource {
@Produces({ MediaType.APPLICATION_JSON })
@ClientResponseType(entityType=String.class)
public abstract Response typeActionParam(@PathParam("domainType") final String domainType,
- @PathParam("actionId") final String actionId, @PathParam("paramNum") final int paramNum);
+ @PathParam("actionId") final String actionId, @PathParam("paramNum") final String paramName);
}
\ No newline at end of file
Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/representations/AbstractRepresentationBuilder.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/representations/AbstractRepresentationBuilder.java?rev=1173268&r1=1173267&r2=1173268&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/representations/AbstractRepresentationBuilder.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/representations/AbstractRepresentationBuilder.java Tue Sep 20 17:28:45 2011
@@ -28,10 +28,15 @@ import org.apache.isis.viewer.json.viewe
public abstract class AbstractRepresentationBuilder<T extends AbstractRepresentationBuilder<T>> implements RepBuilder {
protected final ResourceContext resourceContext;
- protected final JsonRepresentation representation = JsonRepresentation.newMap();
+ protected final JsonRepresentation representation;
public AbstractRepresentationBuilder(ResourceContext resourceContext) {
+ this(resourceContext, JsonRepresentation.newMap());
+ }
+
+ public AbstractRepresentationBuilder(ResourceContext resourceContext, JsonRepresentation representation) {
this.resourceContext = resourceContext;
+ this.representation = representation;
}
Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/ResourceAbstract.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/ResourceAbstract.java?rev=1173268&r1=1173267&r2=1173268&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/ResourceAbstract.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/ResourceAbstract.java Tue Sep 20 17:28:45 2011
@@ -58,6 +58,7 @@ import org.apache.isis.viewer.json.viewe
import org.apache.isis.viewer.json.viewer.representations.AbstractRepresentationBuilder;
import org.apache.isis.viewer.json.viewer.representations.RepBuilder;
import org.apache.isis.viewer.json.viewer.resources.ResourceAbstract.Caching;
+import org.apache.isis.viewer.json.viewer.resources.domainobjects.DomainObjectListRepBuilder;
import org.apache.isis.viewer.json.viewer.resources.domainobjects.DomainObjectRepBuilder;
import org.apache.isis.viewer.json.viewer.util.OidUtils;
import org.apache.isis.viewer.json.viewer.util.UrlDecoderUtils;
@@ -162,6 +163,8 @@ public abstract class ResourceAbstract {
protected String jsonFor(
final Collection<ObjectAdapter> collectionAdapters) {
+
+
return jsonFor(Lists.newArrayList(
Collections2.transform(collectionAdapters, toObjectSelfRepresentation())));
}
@@ -259,7 +262,6 @@ public abstract class ResourceAbstract {
return responseOfOk(representationType, representationBuilder.build(), caching);
}
-
// //////////////////////////////////////////////////////////////
@@ -270,7 +272,7 @@ public abstract class ResourceAbstract {
return IsisContext.getAuthenticationSession();
}
- private SpecificationLoader getSpecificationLoader() {
+ protected SpecificationLoader getSpecificationLoader() {
return IsisContext.getSpecificationLoader();
}
Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/ActionSemantics.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/ActionSemantics.java?rev=1173268&r1=1173267&r2=1173268&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/ActionSemantics.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/ActionSemantics.java Tue Sep 20 17:28:45 2011
@@ -6,7 +6,7 @@ import org.apache.isis.viewer.json.viewe
public enum ActionSemantics {
QUERY_ONLY("invokeQueryOnly"),
- IDEMPOTENT("invokeQueryOnly"),
+ IDEMPOTENT("invokeIdempotent"),
SIDE_EFFECTS("invoke");
private final String invokeKey;
@@ -23,13 +23,13 @@ public enum ActionSemantics {
return this == QUERY_ONLY;
}
- public boolean isIdempotent() {
- return this == IDEMPOTENT;
+ public boolean isQueryOnlyOrIdempotent() {
+ return isQueryOnly() || this == IDEMPOTENT;
}
public static ActionSemantics determine(ResourceContext resourceContext, ObjectAction action) {
// TODO
- return ActionSemantics.SIDE_EFFECTS;
+ return ActionSemantics.QUERY_ONLY;
}
Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainObjectListRepBuilder.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainObjectListRepBuilder.java?rev=1173268&r1=1173267&r2=1173268&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainObjectListRepBuilder.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainObjectListRepBuilder.java Tue Sep 20 17:28:45 2011
@@ -16,6 +16,7 @@
*/
package org.apache.isis.viewer.json.viewer.resources.domainobjects;
+import java.util.Collection;
import java.util.List;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
@@ -26,13 +27,17 @@ import org.apache.isis.viewer.json.viewe
public class DomainObjectListRepBuilder extends AbstractRepresentationBuilder<DomainObjectListRepBuilder> {
private ObjectAdapterLinkToBuilder objectAdapterLinkToBuilder;
-
+
+ public static DomainObjectListRepBuilder newBuilder(ResourceContext resourceContext, JsonRepresentation representation) {
+ return new DomainObjectListRepBuilder(resourceContext, representation);
+ }
+
public static DomainObjectListRepBuilder newBuilder(ResourceContext resourceContext) {
- return new DomainObjectListRepBuilder(resourceContext);
+ return new DomainObjectListRepBuilder(resourceContext, JsonRepresentation.newMap());
}
- private DomainObjectListRepBuilder(ResourceContext resourceContext) {
- super(resourceContext);
+ private DomainObjectListRepBuilder(ResourceContext resourceContext, JsonRepresentation representation) {
+ super(resourceContext, representation);
usingLinkToBuilder(new DomainObjectLinkToBuilder());
}
@@ -41,7 +46,7 @@ public class DomainObjectListRepBuilder
return this;
}
- public DomainObjectListRepBuilder withAdapters(List<ObjectAdapter> objectAdapters) {
+ public DomainObjectListRepBuilder withAdapters(Collection<ObjectAdapter> objectAdapters) {
JsonRepresentation list = JsonRepresentation.newArray();
for(ObjectAdapter adapter: objectAdapters) {
JsonRepresentation linkToObject = objectAdapterLinkToBuilder.with(adapter).linkToAdapter().build();
Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainObjectRepBuilder.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainObjectRepBuilder.java?rev=1173268&r1=1173267&r2=1173268&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainObjectRepBuilder.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainObjectRepBuilder.java Tue Sep 20 17:28:45 2011
@@ -40,8 +40,8 @@ import com.google.common.base.Function;
public class DomainObjectRepBuilder extends AbstractRepresentationBuilder<DomainObjectRepBuilder> {
- public static DomainObjectRepBuilder newBuilder(ResourceContext representationContext) {
- return new DomainObjectRepBuilder(representationContext);
+ public static DomainObjectRepBuilder newBuilder(ResourceContext resourceContext) {
+ return new DomainObjectRepBuilder(resourceContext);
}
public static LinkToBuilder newLinkToBuilder(ResourceContext resourceContext, String rel, ObjectAdapter elementAdapter) {
Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainObjectResourceServerside.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainObjectResourceServerside.java?rev=1173268&r1=1173267&r2=1173268&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainObjectResourceServerside.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainObjectResourceServerside.java Tue Sep 20 17:28:45 2011
@@ -43,6 +43,8 @@ import org.apache.isis.viewer.json.appli
import org.apache.isis.viewer.json.applib.domainobjects.DomainObjectResource;
import org.apache.isis.viewer.json.viewer.JsonApplicationException;
import org.apache.isis.viewer.json.viewer.ResourceContext;
+import org.apache.isis.viewer.json.viewer.resources.ResourceAbstract.Caching;
+import org.apache.isis.viewer.json.viewer.resources.domainobjects.DomainResourceAbstract.Intent;
@Path("/objects")
public class DomainObjectResourceServerside extends DomainResourceAbstract implements
@@ -61,7 +63,7 @@ public class DomainObjectResourceServers
final ObjectAdapter objectAdapter = getObjectAdapter(oidStr);
- return responseWithRepresentationOf(objectAdapter);
+ return object(objectAdapter);
}
@PUT
@@ -287,14 +289,7 @@ public class DomainObjectResourceServers
init();
final ObjectAdapter objectAdapter = getObjectAdapter(oidStr);
- final ObjectAction action = getObjectActionThatIsVisibleAndUsable(
- objectAdapter, actionId, Intent.ACCESS);
-
- ObjectActionRepBuilder repBuilder = ObjectActionRepBuilder.newBuilder(
- getResourceContext(), objectAdapter, action);
-
- return responseOfOk(RepresentationType.OBJECT_ACTION, repBuilder, Caching.NONE)
- .build();
+ return actionPrompt(actionId, objectAdapter);
}
Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainResourceAbstract.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainResourceAbstract.java?rev=1173268&r1=1173267&r2=1173268&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainResourceAbstract.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainResourceAbstract.java Tue Sep 20 17:28:45 2011
@@ -46,7 +46,9 @@ import org.apache.isis.viewer.json.appli
import org.apache.isis.viewer.json.viewer.JsonApplicationException;
import org.apache.isis.viewer.json.viewer.ResourceContext;
import org.apache.isis.viewer.json.viewer.representations.AbstractRepresentationBuilder;
+import org.apache.isis.viewer.json.viewer.representations.LinkToBuilder;
import org.apache.isis.viewer.json.viewer.resources.ResourceAbstract;
+import org.apache.isis.viewer.json.viewer.resources.ResourceAbstract.Caching;
import org.apache.isis.viewer.json.viewer.util.OidUtils;
import org.apache.isis.viewer.json.viewer.util.UrlDecoderUtils;
import org.apache.isis.viewer.json.viewer.util.UrlParserUtils;
@@ -60,6 +62,199 @@ import com.google.common.io.ByteStreams;
public abstract class DomainResourceAbstract extends ResourceAbstract {
// //////////////////////////////////////////////////////////////
+ // object
+ // //////////////////////////////////////////////////////////////
+
+ protected Response object(final ObjectAdapter objectAdapter) {
+ ResourceContext resourceContext = getResourceContext();
+ final AbstractRepresentationBuilder<?> repBuilder =
+ DomainObjectRepBuilder.newBuilder(resourceContext)
+ .withAdapter(objectAdapter);
+
+ ResponseBuilder respBuilder =
+ responseOfOk(RepresentationType.DOMAIN_OBJECT, repBuilder, Caching.NONE);
+
+ Version version = objectAdapter.getVersion();
+ if (version != null && version.getTime() != null) {
+ respBuilder.lastModified(version.getTime());
+ }
+ return respBuilder.build();
+ }
+
+
+
+ // //////////////////////////////////////////////////////////////
+ // action Prompt
+ // //////////////////////////////////////////////////////////////
+
+ protected Response actionPrompt(final String actionId, final ObjectAdapter serviceAdapter) {
+ final ObjectAction action = getObjectActionThatIsVisibleAndUsable(
+ serviceAdapter, actionId, Intent.ACCESS);
+
+ ObjectActionRepBuilder repBuilder =
+ ObjectActionRepBuilder.newBuilder(getResourceContext(), serviceAdapter, action)
+ .withDetailsLink()
+ .withMutatorsIfEnabled();
+
+ return responseOfOk(RepresentationType.OBJECT_ACTION, repBuilder, Caching.NONE)
+ .build();
+ }
+
+
+ // //////////////////////////////////////////////////////////////
+ // invoke action
+ // //////////////////////////////////////////////////////////////
+
+ enum Intent {
+ ACCESS, MUTATE;
+
+ public boolean isMutate() {
+ return this == MUTATE;
+ }
+ }
+
+ protected Response invokeActionQueryOnly(final ObjectAdapter objectAdapter, final String actionId, final String arguments) {
+ final ObjectAction action = getObjectActionThatIsVisibleAndUsable(
+ objectAdapter, actionId, Intent.ACCESS);
+
+ final ActionSemantics actionSemantics = ActionSemantics.determine(getResourceContext(), action);
+ if(!actionSemantics.isQueryOnly()) {
+ // TODO: reinstate
+// throw JsonApplicationException.create(HttpStatusCode.METHOD_NOT_ALLOWED,
+// "Method not allowed; action '%s' is not query only", action.getId());
+ }
+
+ List<ObjectAdapter> argumentAdapters;
+ try {
+ argumentAdapters = argumentAdaptersFor(action, arguments);
+ } catch (IOException e) {
+ throw JsonApplicationException.create(HttpStatusCode.BAD_REQUEST,
+ "Action '%s' has query arguments that cannot be parsed as JSON", e, action.getId());
+ }
+
+ int numParameters = action.getParameterCount();
+ int argSize = argumentAdapters.size();
+ if (argSize != numParameters) {
+ throw JsonApplicationException.create(
+ HttpStatusCode.BAD_REQUEST,
+ "Action '%s' has %d parameters but received %d arguments",
+ numParameters, argSize, action.getId());
+ }
+
+ JsonRepresentation representationWithSelf = representationWithSelfFor(objectAdapter, action);
+ // TODO: append action args to 'self'
+
+ return invokeActionUsingAdapters(objectAdapter, action, argumentAdapters, representationWithSelf);
+ }
+
+ protected Response invokeActionIdempotent(final ObjectAdapter objectAdapter, final String actionId, final InputStream arguments) {
+ final ObjectAction action = getObjectActionThatIsVisibleAndUsable(
+ objectAdapter, actionId, Intent.MUTATE);
+
+ final ActionSemantics actionSemantics = ActionSemantics.determine(getResourceContext(), action);
+ if(actionSemantics.isQueryOnlyOrIdempotent()) {
+ // TODO: reinstate
+// throw JsonApplicationException.create(
+// HttpStatusCode.METHOD_NOT_ALLOWED,
+// "Method not allowed; action '%s' is not idempotent", action.getId());
+ }
+
+ List<ObjectAdapter> argumentAdapters = parseBody(action, arguments);
+ JsonRepresentation representationWithSelf = representationWithSelfFor(objectAdapter, action);
+ // TODO: append action args to 'self'
+
+ return invokeActionUsingAdapters(objectAdapter, action,
+ argumentAdapters, representationWithSelf);
+ }
+
+ protected Response invokeAction(final ObjectAdapter objectAdapter, final String actionId, final InputStream body) {
+ final ObjectAction action = getObjectActionThatIsVisibleAndUsable(
+ objectAdapter, actionId, Intent.MUTATE);
+
+ List<ObjectAdapter> argumentAdapters = parseBody(action, body);
+ JsonRepresentation representationWithSelf = representationWithSelfFor(objectAdapter, action);
+ // TODO: append action args to 'self'
+
+ return invokeActionUsingAdapters(objectAdapter, action,
+ argumentAdapters, representationWithSelf);
+ }
+
+ protected Response invokeActionUsingAdapters(
+ final ObjectAdapter objectAdapter,
+ final ObjectAction action,
+ final List<ObjectAdapter> argAdapters, JsonRepresentation representationWithSelf) {
+
+ // validate
+ List<ObjectActionParameter> parameters = action.getParameters();
+ for (int i = 0; i < parameters.size(); i++) {
+ ObjectActionParameter parameter = parameters.get(i);
+ ObjectAdapter paramAdapter = argAdapters.get(i);
+ if (paramAdapter.getSpecification().containsFacet(ValueFacet.class)) {
+ Object arg = paramAdapter.getObject();
+ String reasonNotValid = parameter.isValid(objectAdapter, arg);
+ if (reasonNotValid != null) {
+ throw JsonApplicationException.create(HttpStatusCode.NOT_ACCEPTABLE, reasonNotValid);
+ }
+ }
+ }
+ ObjectAdapter[] argArray = argAdapters.toArray(new ObjectAdapter[0]);
+ Consent consent = action.isProposedArgumentSetValid(objectAdapter,
+ argArray);
+ if (consent.isVetoed()) {
+ throw JsonApplicationException.create(HttpStatusCode.NOT_ACCEPTABLE, consent.getReason());
+ }
+
+ // invoke
+ final ObjectAdapter returnedAdapter = action.execute(objectAdapter, argArray);
+
+ // response
+ if (returnedAdapter == null) {
+ return responseOfNoContent(objectAdapter.getVersion()).build();
+ }
+
+ final CollectionFacet collectionFacet = returnedAdapter.getSpecification().getFacet(CollectionFacet.class);
+ if (collectionFacet != null) {
+ final Collection<ObjectAdapter> collectionAdapters = collectionFacet
+ .collection(returnedAdapter);
+ DomainObjectListRepBuilder repBuilder = DomainObjectListRepBuilder.newBuilder(getResourceContext(), representationWithSelf).withAdapters(collectionAdapters);
+ return responseOfOk(RepresentationType.LIST, repBuilder, Caching.NONE).build();
+ }
+
+ final EncodableFacet encodableFacet = returnedAdapter.getSpecification().getFacet(EncodableFacet.class);
+ if(encodableFacet != null) {
+ ScalarRepBuilder repBuilder = ScalarRepBuilder.newBuilder(getResourceContext(), representationWithSelf).withAdapter(objectAdapter);
+ return responseOfOk(RepresentationType.SCALAR_VALUE, repBuilder, Caching.NONE).build();
+ }
+
+ return object(returnedAdapter);
+ }
+
+
+ private JsonRepresentation representationWithSelfFor(final ObjectAdapter objectAdapter, final ObjectAction action) {
+ JsonRepresentation representation = JsonRepresentation.newMap();
+ String oid = getOidStr(objectAdapter);
+ representation.mapPut("self", LinkToBuilder.newBuilder(getResourceContext(), "self", "objects/%s/actions/%s/invoke", oid, action.getId()).build());
+ return representation;
+ }
+
+
+ private List<ObjectAdapter> argumentAdaptersFor(ObjectAction action,
+ String arguments) throws JsonParseException, JsonMappingException, IOException {
+
+ List<ObjectAdapter> argumentAdapters = Lists.newArrayList();
+ // List<ObjectActionParameter> parameters = action.getParameters();
+ // for (int i = 0; i < parameters.size(); i++) {
+ // ObjectActionParameter parameter = parameters.get(i);
+ // ObjectSpecification paramSpc = parameter.getSpecification();
+ // String argument = arguments.get(i);
+ // argumentAdapters.add(objectAdapterFor(paramSpc, argument));
+ // }
+ //
+ return argumentAdapters;
+ }
+
+
+ // //////////////////////////////////////////////////////////////
// objectAdapterFor
// //////////////////////////////////////////////////////////////
@@ -246,135 +441,7 @@ public abstract class DomainResourceAbst
- // //////////////////////////////////////////////////////////////
- // invoke action
- // //////////////////////////////////////////////////////////////
-
- enum Intent {
- ACCESS, MUTATE;
-
- public boolean isMutate() {
- return this == MUTATE;
- }
- }
-
- protected Response invokeActionQueryOnly(final ObjectAdapter objectAdapter, final String actionId, final String arguments) {
- final ObjectAction action = getObjectActionThatIsVisibleAndUsable(
- objectAdapter, actionId, Intent.ACCESS);
-
- final ActionSemantics actionSemantics = ActionSemantics.determine(getResourceContext(), action);
- if(!actionSemantics.isQueryOnly()) {
- // TODO: reinstate
-// throw JsonApplicationException.create(HttpStatusCode.METHOD_NOT_ALLOWED,
-// "Method not allowed; action '%s' is not query only", action.getId());
- }
-
- List<ObjectAdapter> argumentAdapters;
- try {
- argumentAdapters = argumentAdaptersFor(action, arguments);
- } catch (IOException e) {
- throw JsonApplicationException.create(HttpStatusCode.BAD_REQUEST,
- "Action '%s' has query arguments that cannot be parsed as JSON", e, action.getId());
- }
-
- int numParameters = action.getParameterCount();
- int argSize = argumentAdapters.size();
- if (argSize != numParameters) {
- throw JsonApplicationException.create(
- HttpStatusCode.BAD_REQUEST,
- "Action '%s' has %d parameters but received %d arguments",
- numParameters, argSize, action.getId());
- }
-
- return invokeActionUsingAdapters(action, objectAdapter, argumentAdapters);
- }
-
- protected Response invokeActionIdempotent(final ObjectAdapter objectAdapter, final String actionId, final InputStream arguments) {
- final ObjectAction action = getObjectActionThatIsVisibleAndUsable(
- objectAdapter, actionId, Intent.MUTATE);
-
- final ActionSemantics actionSemantics = ActionSemantics.determine(getResourceContext(), action);
- if(actionSemantics.isIdempotent()) {
- // TODO: reinstate
-// throw JsonApplicationException.create(
-// HttpStatusCode.METHOD_NOT_ALLOWED,
-// "Method not allowed; action '%s' is not idempotent", action.getId());
- }
-
- List<ObjectAdapter> argumentAdapters = parseBody(action, arguments);
- return invokeActionUsingAdapters(action, objectAdapter,
- argumentAdapters);
- }
-
- protected Response invokeAction(final ObjectAdapter objectAdapter, final String actionId, final InputStream body) {
- final ObjectAction action = getObjectActionThatIsVisibleAndUsable(
- objectAdapter, actionId, Intent.MUTATE);
-
- List<ObjectAdapter> argumentAdapters = parseBody(action, body);
- return invokeActionUsingAdapters(action, objectAdapter,
- argumentAdapters);
- }
-
- protected Response invokeActionUsingAdapters(
- final ObjectAction action,
- final ObjectAdapter objectAdapter,
- final List<ObjectAdapter> argAdapters) {
-
- // validate
- List<ObjectActionParameter> parameters = action.getParameters();
- for (int i = 0; i < parameters.size(); i++) {
- ObjectActionParameter parameter = parameters.get(i);
- ObjectAdapter paramAdapter = argAdapters.get(i);
- if (paramAdapter.getSpecification().containsFacet(ValueFacet.class)) {
- Object arg = paramAdapter.getObject();
- String reasonNotValid = parameter.isValid(objectAdapter, arg);
- if (reasonNotValid != null) {
- throw JsonApplicationException.create(HttpStatusCode.NOT_ACCEPTABLE, reasonNotValid);
- }
- }
- }
- ObjectAdapter[] argArray = argAdapters.toArray(new ObjectAdapter[0]);
- Consent consent = action.isProposedArgumentSetValid(objectAdapter,
- argArray);
- if (consent.isVetoed()) {
- throw JsonApplicationException.create(HttpStatusCode.NOT_ACCEPTABLE, consent.getReason());
- }
-
- // invoke
- final ObjectAdapter returnedAdapter = action.execute(objectAdapter, argArray);
-
- // response
- if (returnedAdapter == null) {
- return responseOfNoContent(objectAdapter.getVersion()).build();
- }
-
- final CollectionFacet facet = returnedAdapter.getSpecification().getFacet(CollectionFacet.class);
- if (facet != null) {
- final Collection<ObjectAdapter> collectionAdapters = facet
- .collection(returnedAdapter);
- String json = jsonFor(collectionAdapters);
- return responseOfOk(RepresentationType.LIST, json, Caching.NONE).build();
- }
-
- return responseWithRepresentationOf(returnedAdapter);
- }
-
-
- private List<ObjectAdapter> argumentAdaptersFor(ObjectAction action,
- String arguments) throws JsonParseException, JsonMappingException, IOException {
-
- List<ObjectAdapter> argumentAdapters = Lists.newArrayList();
- // List<ObjectActionParameter> parameters = action.getParameters();
- // for (int i = 0; i < parameters.size(); i++) {
- // ObjectActionParameter parameter = parameters.get(i);
- // ObjectSpecification paramSpc = parameter.getSpecification();
- // String argument = arguments.get(i);
- // argumentAdapters.add(objectAdapterFor(paramSpc, argument));
- // }
- //
- return argumentAdapters;
- }
-
+
// ///////////////////////////////////////////////////////////////////
// parseBody
// ///////////////////////////////////////////////////////////////////
@@ -439,26 +506,6 @@ public abstract class DomainResourceAbst
}
// //////////////////////////////////////////////////////////////
- // responses
- // //////////////////////////////////////////////////////////////
-
- protected Response responseWithRepresentationOf(final ObjectAdapter objectAdapter) {
- ResourceContext resourceContext = getResourceContext();
- final AbstractRepresentationBuilder<?> repBuilder =
- DomainObjectRepBuilder.newBuilder(resourceContext)
- .withAdapter(objectAdapter);
-
- ResponseBuilder respBuilder = responseOfOk(RepresentationType.DOMAIN_OBJECT, repBuilder, Caching.NONE);
-
- Version version = objectAdapter.getVersion();
- if (version != null && version.getTime() != null) {
- respBuilder.lastModified(version.getTime());
- }
- return respBuilder.build();
- }
-
-
- // //////////////////////////////////////////////////////////////
// misc
// //////////////////////////////////////////////////////////////
Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainServiceResourceServerside.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainServiceResourceServerside.java?rev=1173268&r1=1173267&r2=1173268&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainServiceResourceServerside.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainServiceResourceServerside.java Tue Sep 20 17:28:45 2011
@@ -127,14 +127,8 @@ public class DomainServiceResourceServer
init();
final ObjectAdapter serviceAdapter = getServiceAdapter(serviceId);
- final ObjectAction action = getObjectActionThatIsVisibleAndUsable(
- serviceAdapter, actionId, Intent.ACCESS);
- ObjectActionRepBuilder repBuilder = ObjectActionRepBuilder.newBuilder(
- getResourceContext(), serviceAdapter, action);
-
- return responseOfOk(RepresentationType.OBJECT_ACTION, repBuilder, Caching.NONE)
- .build();
+ return actionPrompt(actionId, serviceAdapter);
}
Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/ObjectActionRepBuilder.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/ObjectActionRepBuilder.java?rev=1173268&r1=1173267&r2=1173268&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/ObjectActionRepBuilder.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/ObjectActionRepBuilder.java Tue Sep 20 17:28:45 2011
@@ -48,7 +48,6 @@ public class ObjectActionRepBuilder exte
public JsonRepresentation build() {
putDisabledReasonIfDisabled();
- withMutatorsIfEnabled();
JsonRepresentation extensions = JsonRepresentation.newMap();
putExtensionsIsisProprietary(extensions);
Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/ObjectPropertyRepBuilder.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/ObjectPropertyRepBuilder.java?rev=1173268&r1=1173267&r2=1173268&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/ObjectPropertyRepBuilder.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/ObjectPropertyRepBuilder.java Tue Sep 20 17:28:45 2011
@@ -38,11 +38,10 @@ public class ObjectPropertyRepBuilder ex
putId();
putMemberType();
+ withValue();
}
-
-
public JsonRepresentation build() {
putDisabledReasonIfDisabled();
Added: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/ScalarRepBuilder.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/ScalarRepBuilder.java?rev=1173268&view=auto
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/ScalarRepBuilder.java (added)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/ScalarRepBuilder.java Tue Sep 20 17:28:45 2011
@@ -0,0 +1,80 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.isis.viewer.json.viewer.resources.domainobjects;
+
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.facets.object.encodeable.EncodableFacet;
+import org.apache.isis.viewer.json.applib.JsonRepresentation;
+import org.apache.isis.viewer.json.applib.RestfulResponse.HttpStatusCode;
+import org.apache.isis.viewer.json.viewer.JsonApplicationException;
+import org.apache.isis.viewer.json.viewer.ResourceContext;
+import org.apache.isis.viewer.json.viewer.representations.AbstractRepresentationBuilder;
+
+public class ScalarRepBuilder extends AbstractRepresentationBuilder<ScalarRepBuilder> {
+
+ public static ScalarRepBuilder newBuilder(final ResourceContext resourceContext) {
+ return new ScalarRepBuilder(resourceContext, JsonRepresentation.newMap());
+ }
+
+ public static ScalarRepBuilder newBuilder(ResourceContext resourceContext, JsonRepresentation representation) {
+ return new ScalarRepBuilder(resourceContext, representation);
+ }
+
+ private ScalarRepBuilder(final ResourceContext resourceContext, JsonRepresentation representation) {
+ super(resourceContext, representation);
+ }
+
+ public ScalarRepBuilder withAdapter(final ObjectAdapter objectAdapter) {
+ final EncodableFacet facet = objectAdapter.getSpecification().getFacet(EncodableFacet.class);
+ if(facet == null) {
+ throw JsonApplicationException.create(HttpStatusCode.INTERNAL_SERVER_ERROR, "Not an (encodable) value", objectAdapter.titleString());
+ }
+ final String encodedString = facet.toEncodedString(objectAdapter);
+ representation.mapPut("value", encodedString);
+ return this;
+ }
+
+ @Override
+ public JsonRepresentation build() {
+
+ JsonRepresentation extensions = JsonRepresentation.newMap();
+ putExtensionsIsisProprietary(extensions);
+ withExtensions(extensions );
+
+ JsonRepresentation links = JsonRepresentation.newArray();
+ addLinksFormalDomainModel(links, resourceContext);
+ addLinksIsisProprietary(links, resourceContext);
+ withLinks(links);
+
+ return representation;
+ }
+
+ /////////////////////////////////////////////////////
+ // extensions and links
+ /////////////////////////////////////////////////////
+
+ private void putExtensionsIsisProprietary(JsonRepresentation extensions) {
+ }
+
+ private void addLinksFormalDomainModel(JsonRepresentation links, ResourceContext resourceContext) {
+ }
+
+ private void addLinksIsisProprietary(JsonRepresentation links, ResourceContext resourceContext) {
+ }
+
+
+}
\ No newline at end of file
Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/DomainTypeResourceServerside.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/DomainTypeResourceServerside.java?rev=1173268&r1=1173267&r2=1173268&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/DomainTypeResourceServerside.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/DomainTypeResourceServerside.java Tue Sep 20 17:28:45 2011
@@ -18,6 +18,8 @@
*/
package org.apache.isis.viewer.json.viewer.resources.domaintypes;
+import java.util.Collection;
+
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
@@ -25,6 +27,7 @@ import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
+import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.viewer.json.applib.JsonRepresentation;
import org.apache.isis.viewer.json.applib.RepresentationType;
import org.apache.isis.viewer.json.applib.domaintypes.DomainTypeResource;
@@ -40,64 +43,94 @@ public class DomainTypeResourceServersid
@GET
- @Path("/{domainTypeName}")
- @Produces(MediaType.APPLICATION_JSON)
- public Response representationType(@PathParam("domainTypeName") final String representationTypeName) {
+ @Path("/")
+ @Produces({ MediaType.APPLICATION_JSON })
+ public Response domainTypes() {
init();
JsonRepresentation representation = JsonRepresentation.newMap();
- representation.mapPut("representationType", LinkToBuilder.newBuilder(getResourceContext(), "representationType", "representationTypes/representationType").build());
- representation.mapPut("self", LinkToBuilder.newBuilder(getResourceContext(), "self", "representationType/" + representationTypeName).build());
+ representation.mapPut("self", LinkToBuilder.newBuilder(getResourceContext(), "self", "domainTypes").build());
+
+ JsonRepresentation specList = JsonRepresentation.newArray();
+ final Collection<ObjectSpecification> allSpecifications = getSpecificationLoader().allSpecifications();
+ for (ObjectSpecification objectSpec : allSpecifications) {
+ final LinkToBuilder linkBuilder = LinkToBuilder.newBuilder(getResourceContext(), "domainType", "domainTypes/%s", objectSpec.getFullIdentifier());
+ specList.arrayAdd(linkBuilder.build());
+ }
+
+ representation.mapPut("domainTypes", specList);
return responseOfOk(RepresentationType.DOMAIN_TYPE, representation, Caching.ONE_DAY).build();
}
-
- @GET
- @Path("/")
- @Produces({ MediaType.APPLICATION_JSON })
- public Response domainTypes() {
- return null;
- }
-
+
@GET
@Path("/{domainType}")
@Produces({ MediaType.APPLICATION_JSON })
public Response domainType(@PathParam("domainType") final String domainType){
- return null;
+ init();
+
+ JsonRepresentation representation = JsonRepresentation.newMap();
+ representation.mapPut("self", LinkToBuilder.newBuilder(getResourceContext(), "self", "domainTypes/%s", domainType).build());
+
+ return responseOfOk(RepresentationType.DOMAIN_TYPE, representation, Caching.ONE_DAY).build();
}
@GET
@Path("/{domainType}/properties/{propertyId}")
@Produces({ MediaType.APPLICATION_JSON })
- public Response typeProperty(@PathParam("domainType") final String domainType,
- @PathParam("propertyId") final String propertyId){
- return null;
+ public Response typeProperty(
+ @PathParam("domainType") final String domainType,
+ @PathParam("propertyId") final String propertyId){
+ init();
+
+ JsonRepresentation representation = JsonRepresentation.newMap();
+ representation.mapPut("self", LinkToBuilder.newBuilder(getResourceContext(), "self", "domainTypes/%s/properties/%s", domainType, propertyId).build());
+
+ return responseOfOk(RepresentationType.DOMAIN_TYPE_PROPERTY, representation, Caching.ONE_DAY).build();
}
@GET
@Path("/{domainType}/collections/{collectionId}")
@Produces({ MediaType.APPLICATION_JSON })
- public Response typeCollection(@PathParam("domainType") final String domainType,
- @PathParam("collectionId") final String collectionId){
- return null;
+ public Response typeCollection(
+ @PathParam("domainType") final String domainType,
+ @PathParam("collectionId") final String collectionId){
+ init();
+
+ JsonRepresentation representation = JsonRepresentation.newMap();
+ representation.mapPut("self", LinkToBuilder.newBuilder(getResourceContext(), "self", "domainType/%s/collections/%s", domainType, collectionId).build());
+
+ return responseOfOk(RepresentationType.DOMAIN_TYPE_COLLECTION, representation, Caching.ONE_DAY).build();
}
@GET
@Path("/{domainType}/actions/{actionId}")
@Produces({ MediaType.APPLICATION_JSON })
- public Response typeAction(@PathParam("domainType") final String domainType,
- @PathParam("actionId") final String actionId){
- return null;
+ public Response typeAction(
+ @PathParam("domainType") final String domainType,
+ @PathParam("actionId") final String actionId){
+ init();
+
+ JsonRepresentation representation = JsonRepresentation.newMap();
+ representation.mapPut("self", LinkToBuilder.newBuilder(getResourceContext(), "self", "domainTypes/%s/actions/%s", domainType, actionId).build());
+
+ return responseOfOk(RepresentationType.DOMAIN_TYPE_ACTION, representation, Caching.ONE_DAY).build();
}
@GET
- @Path("/{domainType}/actions/{actionId}/params/{paramNum}")
+ @Path("/{domainType}/actions/{actionId}/params/{paramName}")
@Produces({ MediaType.APPLICATION_JSON })
- public Response typeActionParam(@PathParam("domainType") final String domainType,
- @PathParam("actionId") final String actionId, @PathParam("paramNum") final int paramNum){
- return null;
- }
+ public Response typeActionParam(
+ @PathParam("domainType") final String domainType,
+ @PathParam("actionId") final String actionId,
+ @PathParam("paramName") final String paramName){
+ init();
+ JsonRepresentation representation = JsonRepresentation.newMap();
+ representation.mapPut("self", LinkToBuilder.newBuilder(getResourceContext(), "self", "domainTypes/%s/actions/%s/params/%s", domainType, actionId, paramName).build());
+
+ return responseOfOk(RepresentationType.DOMAIN_TYPE_COLLECTION, representation, Caching.ONE_DAY).build();
+ }
}
\ No newline at end of file