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/05 02:38:23 UTC
svn commit: r1165139 [2/3] - in /incubator/isis/trunk/framework:
core/commons/src/main/java/org/apache/isis/core/commons/lang/
runtimes/dflt/webserver/src/main/java/org/apache/isis/runtimes/dflt/webserver/
viewer/json/json-applib/src/main/java/org/apac...
Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/representations/LinkRepBuilder.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/LinkRepBuilder.java?rev=1165139&r1=1165138&r2=1165139&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/representations/LinkRepBuilder.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/representations/LinkRepBuilder.java Mon Sep 5 00:38:21 2011
@@ -16,38 +16,24 @@
*/
package org.apache.isis.viewer.json.viewer.representations;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.oid.stringable.OidStringifier;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.viewer.json.applib.JsonRepresentation;
-import org.apache.isis.viewer.json.viewer.RepContext;
-import org.apache.isis.viewer.json.viewer.resources.objects.DomainObjectRepBuilder;
+import org.apache.isis.viewer.json.viewer.ResourceContext;
-public class LinkRepBuilder extends RepresentationBuilder {
+public class LinkRepBuilder extends RepresentationBuilder<LinkRepBuilder> {
- public static LinkRepBuilder newBuilder(RepContext repContext, String rel, String href) {
- return new LinkRepBuilder(repContext, rel, href);
+ public static LinkRepBuilder newBuilder(ResourceContext resourceContext, String rel, String href) {
+ return new LinkRepBuilder(resourceContext, rel, href);
}
- public static LinkRepBuilder newObjectBuilder(RepContext repContext, ObjectAdapter elementAdapter, OidStringifier oidStringifier) {
- String url = DomainObjectRepBuilder.urlFor(elementAdapter, oidStringifier);
- return LinkRepBuilder.newBuilder(repContext, "object", url);
- }
-
- public static LinkRepBuilder newTypeBuilder(RepContext repContext, ObjectSpecification objectSpec) {
- String url = "types/" + WellKnownType.canonical(objectSpec.getFullIdentifier());
- return LinkRepBuilder.newBuilder(repContext, "type", url);
- }
-
- private final String rel;
+ private final String rel;
private final String href;
private HttpMethod method = HttpMethod.GET;
private String title;
private JsonRepresentation arguments;
- public LinkRepBuilder(RepContext repContext, String rel, String href) {
- super(repContext);
+ public LinkRepBuilder(ResourceContext resourceContext, String rel, String href) {
+ super(resourceContext);
this.rel = rel;
this.href = href;
}
@@ -65,7 +51,7 @@ public class LinkRepBuilder extends Repr
}
public JsonRepresentation build() {
representation.put("rel", rel);
- representation.put("href", repContext.urlFor(href));
+ representation.put("href", resourceContext.urlFor(href));
representation.put("method", method);
representation.put("title", title);
representation.put("arguments", arguments);
Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/representations/RepresentationBuilder.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/RepresentationBuilder.java?rev=1165139&r1=1165138&r2=1165139&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/representations/RepresentationBuilder.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/representations/RepresentationBuilder.java Mon Sep 5 00:38:21 2011
@@ -23,15 +23,52 @@ import org.apache.isis.runtimes.dflt.run
import org.apache.isis.runtimes.dflt.runtime.system.persistence.OidGenerator;
import org.apache.isis.runtimes.dflt.runtime.system.persistence.PersistenceSession;
import org.apache.isis.viewer.json.applib.JsonRepresentation;
-import org.apache.isis.viewer.json.viewer.RepContext;
+import org.apache.isis.viewer.json.viewer.ResourceContext;
-public abstract class RepresentationBuilder {
+public abstract class RepresentationBuilder<T extends RepresentationBuilder<T>> {
- protected final RepContext repContext;
+ protected final ResourceContext resourceContext;
protected final JsonRepresentation representation = JsonRepresentation.newMap();
- public RepresentationBuilder(RepContext repContext) {
- this.repContext = repContext;
+ public RepresentationBuilder(ResourceContext resourceContext) {
+ this.resourceContext = resourceContext;
+ }
+
+ public T withRepresentationType(String representationTypeName) {
+ String href = "representationTypes/" + representationTypeName;
+ JsonRepresentation linkToRepresentationType =
+ LinkRepBuilder.newBuilder(resourceContext, "representationType", href).build();
+ representation.put("representationType", linkToRepresentationType);
+ return (T) this;
+ }
+
+ public T withSelf(String href) {
+ representation.put("self", LinkRepBuilder.newBuilder(resourceContext, "self", href).build());
+ return (T) this;
+ }
+
+ public RepresentationBuilder<T> withLinks() {
+ return withLinks(JsonRepresentation.newArray());
+ }
+
+ public T withLinks(JsonRepresentation links) {
+ if(!links.isArray()) {
+ throw new IllegalArgumentException("links must be a list");
+ }
+ representation.put("links", links);
+ return (T) this;
+ }
+
+ public T withMetadata() {
+ return withMetadata(JsonRepresentation.newMap());
+ }
+
+ public T withMetadata(JsonRepresentation metadata) {
+ if(!metadata.isMap()) {
+ throw new IllegalArgumentException("metadata must be a map");
+ }
+ representation.put("metadata", metadata);
+ return (T) this;
}
public abstract JsonRepresentation build();
@@ -56,5 +93,4 @@ public abstract class RepresentationBuil
return IsisContext.getLocalization();
}
-
}
\ No newline at end of file
Added: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/RepresentationType.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/RepresentationType.java?rev=1165139&view=auto
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/RepresentationType.java (added)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/RepresentationType.java Mon Sep 5 00:38:21 2011
@@ -0,0 +1,33 @@
+package org.apache.isis.viewer.json.viewer.resources;
+
+public enum RepresentationType {
+
+ HOME_PAGE,
+ USER,
+ LIST,
+ SCALAR_VALUE,
+ OBJECT,
+ OBJECT_PROPERTY,
+ OBJECT_COLLECTION,
+ OBJECT_ACTION,
+ DOMAIN_TYPE,
+ DOMAIN_PROPERTY,
+ DOMAIN_COLLECTION,
+ DOMAIN_ACTION,
+ DOMAIN_ACTION_PARAMETER;
+
+ public String getName() {
+ StringBuilder builder = new StringBuilder();
+ boolean nextUpper = false;
+ for(char c: name().toCharArray()) {
+ if(c == '_') {
+ nextUpper = true;
+ } else {
+ builder.append(nextUpper?c:Character.toLowerCase(c));
+ nextUpper = false;
+ }
+ }
+ return builder.toString();
+ }
+
+}
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=1165139&r1=1165138&r2=1165139&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 Mon Sep 5 00:38:21 2011
@@ -20,6 +20,7 @@ package org.apache.isis.viewer.json.view
import java.io.IOException;
import java.util.Collection;
+import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -47,13 +48,13 @@ import org.apache.isis.runtimes.dflt.run
import org.apache.isis.runtimes.dflt.runtime.system.persistence.AdapterManager;
import org.apache.isis.runtimes.dflt.runtime.system.persistence.OidGenerator;
import org.apache.isis.runtimes.dflt.runtime.system.persistence.PersistenceSession;
+import org.apache.isis.viewer.json.applib.HttpStatusCode;
import org.apache.isis.viewer.json.applib.JsonRepresentation;
+import org.apache.isis.viewer.json.applib.RestfulResponse;
import org.apache.isis.viewer.json.applib.util.JsonMapper;
-import org.apache.isis.viewer.json.applib.util.JsonResponse;
-import org.apache.isis.viewer.json.viewer.RepContext;
import org.apache.isis.viewer.json.viewer.ResourceContext;
-import org.apache.isis.viewer.json.viewer.representations.LinkRepBuilder;
import org.apache.isis.viewer.json.viewer.representations.RepresentationBuilder;
+import org.apache.isis.viewer.json.viewer.resources.ResourceAbstract.ExceptionPojo;
import org.apache.isis.viewer.json.viewer.resources.objects.DomainObjectRepBuilder;
import org.apache.isis.viewer.json.viewer.util.OidUtils;
import org.apache.isis.viewer.json.viewer.util.UrlDecoderUtils;
@@ -140,7 +141,7 @@ public abstract class ResourceAbstract {
}
private Function<ObjectAdapter, JsonRepresentation> toObjectSelfRepresentation() {
- final RepContext representationContext = getResourceContext().repContext();
+ final ResourceContext representationContext = getResourceContext();
Function<ObjectAdapter, JsonRepresentation> objectSelfRepresentation =
Functions.compose(
@@ -165,7 +166,7 @@ public abstract class ResourceAbstract {
if (objectAdapter == null) {
final String oidStr = UrlDecoderUtils.urlDecode(oidEncodedStr);
- throw new WebApplicationException(responseOfNotFound("could not determine adapter for OID: '" + oidStr + "'"));
+ throw new WebApplicationException(responseOf(HttpStatusCode.NOT_FOUND, "could not determine adapter for OID: '%s'", oidStr));
}
return objectAdapter;
}
@@ -213,7 +214,6 @@ public abstract class ResourceAbstract {
// reference
try {
- @SuppressWarnings("unchecked")
JsonRepresentation argLink = (JsonRepresentation) node;
String oidFromHref = UrlParserUtils.oidFromHref(argLink);
@@ -232,67 +232,94 @@ public abstract class ResourceAbstract {
// Responses
// //////////////////////////////////////////////////////////////
- protected static Response responseOfOk() {
- return Response.ok().build();
- }
-
+ /**
+ * Common case.
+ */
public static Response responseOfOk(String jsonEntity) {
return Response.ok().entity(jsonEntity).type(MediaType.APPLICATION_JSON_TYPE).build();
}
- protected static Response responseOfGone(final String reason, final Object... args) {
- return Response.status(Status.GONE).header(JsonResponse.HEADER_X_RESTFUL_OBJECTS_REASON, String.format(reason, args)).build();
+ /**
+ * Common case.
+ */
+ protected static Response responseOfNoContent() {
+ return Response.status(HttpStatusCode.NO_CONTENT.getJaxrsStatusType()).build();
}
- protected static Response responseOfBadRequest(final Consent consent) {
- return responseOfBadRequest(consent.getReason());
+ /**
+ * Common case.
+ */
+ protected static Response responseOfUnauthorized(final Consent consent) {
+ return responseOf(HttpStatusCode.UNAUTHORIZED, consent.getReason());
}
- protected static Response responseOfNoContent(final String reason, final Object... args) {
- return Response.status(Status.NO_CONTENT).header(JsonResponse.HEADER_X_RESTFUL_OBJECTS_REASON, String.format(reason, args)).build();
+
+ protected static Response responseOf(HttpStatusCode httpStatusCode, final String reason, final Object... args) {
+ return Response.status(httpStatusCode.getJaxrsStatusType()).header(RestfulResponse.Header.WARNING.getName(), String.format(reason, args)).build();
}
- protected static Response responseOfBadRequest(final String reason, final Object... args) {
- return Response.status(Status.BAD_REQUEST).header(JsonResponse.HEADER_X_RESTFUL_OBJECTS_REASON, String.format(reason, args)).build();
+ protected static Response responseOf(HttpStatusCode httpStatusCode, final Exception ex) {
+ ResponseBuilder builder = Response.status(httpStatusCode.getJaxrsStatusType()).header(RestfulResponse.Header.WARNING.getName(), ex.getMessage());
+ return withStackTrace(builder, ex).build();
}
- protected static Response responseOfBadRequest(final String reason, Exception ex, final Object... args) {
- ResponseBuilder builder = Response.status(Status.BAD_REQUEST).header(JsonResponse.HEADER_X_RESTFUL_OBJECTS_REASON, String.format(reason, args));
- return withStackTraceAndMediaType(builder,ex).build();
+ protected static Response responseOf(HttpStatusCode httpStatusCode, final String reason, Exception ex, final Object... args) {
+ ResponseBuilder builder = Response.status(Status.BAD_REQUEST).header(RestfulResponse.Header.WARNING.getName(), String.format(reason, args));
+ return withStackTrace(builder,ex).build();
}
- protected static Response responseOfBadRequest(final Exception ex) {
- ResponseBuilder builder = Response.status(Status.BAD_REQUEST).header(JsonResponse.HEADER_X_RESTFUL_OBJECTS_REASON, ex.getMessage());
- return withStackTraceAndMediaType(builder,ex).build();
+
+ private static ResponseBuilder withStackTrace(ResponseBuilder builder, final Exception ex) {
+ return builder.type(MediaType.APPLICATION_JSON_TYPE).entity(jsonFor(ex));
}
- protected static Response responseOfNotFound(final IllegalArgumentException e) {
- return responseOfNotFound(e.getMessage());
- }
- protected static Response responseOfNotFound(final String reason, Object... args) {
- return Response.status(Status.NOT_FOUND).header(JsonResponse.HEADER_X_RESTFUL_OBJECTS_REASON, String.format(reason, args)).build();
- }
+ static class ExceptionPojo {
- protected static Response responseOfPreconditionFailed(final String reason, final Object... args) {
- return Response.status(StatusTypes.PRECONDITION_FAILED).header(JsonResponse.HEADER_X_RESTFUL_OBJECTS_REASON, String.format(reason, args)).build();
- }
+ public static ExceptionPojo create(Exception ex) {
+ return new ExceptionPojo(ex);
+ }
- protected static Response responseOfMethodNotAllowed(final String reason, final Object... args) {
- return Response.status(StatusTypes.METHOD_NOT_ALLOWED).header(JsonResponse.HEADER_X_RESTFUL_OBJECTS_REASON, String.format(reason, args)).build();
- }
+ private static String format(StackTraceElement stackTraceElement) {
+ return stackTraceElement.toString();
+ }
- protected static Response responseOfInternalServerError(final Exception ex) {
- ResponseBuilder builder = Response.status(Status.INTERNAL_SERVER_ERROR).header(JsonResponse.HEADER_X_RESTFUL_OBJECTS_REASON, ex.getMessage());
- return withStackTraceAndMediaType(builder, ex).build();
- }
+ private final String message;
+ private final List<String> stackTrace = Lists.newArrayList();
+ private ExceptionPojo causedBy;
+
+ public ExceptionPojo(Throwable ex) {
+ this.message = ex.getMessage();
+ StackTraceElement[] stackTraceElements = ex.getStackTrace();
+ for (StackTraceElement stackTraceElement : stackTraceElements) {
+ this.stackTrace.add(format(stackTraceElement));
+ }
+ Throwable cause = ex.getCause();
+ if(cause != null && cause != ex) {
+ this.causedBy = new ExceptionPojo(cause);
+ }
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public List<String> getStackTrace() {
+ return stackTrace;
+ }
+
+ public ExceptionPojo getCausedBy() {
+ return causedBy;
+ }
- private static ResponseBuilder withStackTraceAndMediaType(ResponseBuilder builder, final Exception ex) {
- return builder.type(MediaType.TEXT_PLAIN_TYPE).entity(ExceptionUtils.getFullStackTrace(ex));
}
-
- protected static Response responseOfInternalServerError(final String reason, final Object... args) {
- return Response.status(Status.INTERNAL_SERVER_ERROR).header(JsonResponse.HEADER_X_RESTFUL_OBJECTS_REASON, String.format(reason, args)).build();
+ static String jsonFor(Exception ex) {
+ try {
+ return JsonMapper.instance().write(ExceptionPojo.create(ex));
+ } catch (Exception e) {
+ // fallback
+ return "{ \"exception\": \"" + ExceptionUtils.getFullStackTrace(ex) + "\" }";
+ }
}
// //////////////////////////////////////////////////////////////
Copied: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/home/HomePageResourceServerside.java (from r1164046, incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/home/HomePageResourceImpl.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/home/HomePageResourceServerside.java?p2=incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/home/HomePageResourceServerside.java&p1=incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/home/HomePageResourceImpl.java&r1=1164046&r2=1165139&rev=1165139&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/home/HomePageResourceImpl.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/home/HomePageResourceServerside.java Mon Sep 5 00:38:21 2011
@@ -32,7 +32,7 @@ import org.apache.isis.viewer.json.viewe
* Implementation note: it seems to be necessary to annotate the implementation with {@link Path} rather than the
* interface (at least under RestEasy 1.0.2 and 1.1-RC2).
*/
-public class HomePageResourceImpl extends ResourceAbstract implements HomePageResource {
+public class HomePageResourceServerside extends ResourceAbstract implements HomePageResource {
@Override
@@ -41,10 +41,10 @@ public class HomePageResourceImpl extend
init();
JsonRepresentation representation = JsonRepresentation.newMap();
- representation.put("representationType", LinkRepBuilder.newBuilder(getResourceContext().repContextInline(), "representationType", "representationTypes/homePage").build());
- representation.put("self", LinkRepBuilder.newBuilder(getResourceContext().repContextInline(), "self", "").build());
- representation.put("user", LinkRepBuilder.newBuilder(getResourceContext().repContextInline(), "user", "user").build());
- representation.put("services", LinkRepBuilder.newBuilder(getResourceContext().repContextInline(), "services", "services").build());
+ representation.put("representationType", LinkRepBuilder.newBuilder(getResourceContext(), "representationType", "representationTypes/homePage").build());
+ representation.put("self", LinkRepBuilder.newBuilder(getResourceContext(), "self", "").build());
+ representation.put("user", LinkRepBuilder.newBuilder(getResourceContext(), "user", "user").build());
+ representation.put("services", LinkRepBuilder.newBuilder(getResourceContext(), "services", "services").build());
return responseOfOk(asJson(representation));
}
Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/objectlist/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/objectlist/DomainObjectListRepBuilder.java?rev=1165139&r1=1165138&r2=1165139&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/objectlist/DomainObjectListRepBuilder.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/objectlist/DomainObjectListRepBuilder.java Mon Sep 5 00:38:21 2011
@@ -21,48 +21,50 @@ import java.util.List;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.viewer.json.applib.JsonRepresentation;
-import org.apache.isis.viewer.json.viewer.RepContext;
-import org.apache.isis.viewer.json.viewer.representations.LinkRepBuilder;
+import org.apache.isis.viewer.json.viewer.ResourceContext;
import org.apache.isis.viewer.json.viewer.representations.RepresentationBuilder;
import org.apache.isis.viewer.json.viewer.representations.WellKnownType;
+import org.apache.isis.viewer.json.viewer.resources.objects.DomainObjectRepBuilder;
-public class DomainObjectListRepBuilder extends RepresentationBuilder {
+public class DomainObjectListRepBuilder extends RepresentationBuilder<DomainObjectListRepBuilder> {
- public static DomainObjectListRepBuilder newBuilder(RepContext repContext, ObjectSpecification objectSpec, List<ObjectAdapter> objectAdapters) {
- return newBuilder(repContext, WellKnownType.canonical(objectSpec.getFullIdentifier()), objectAdapters);
+ protected DomainObjectListRepBuilder(ResourceContext resourceContext, String typeName, List<ObjectAdapter> objectAdapters) {
+ this(resourceContext);
}
- public static DomainObjectListRepBuilder newBuilder(RepContext repContext, String typeName, List<ObjectAdapter> objectAdapters) {
- return new DomainObjectListRepBuilder(repContext, typeName, objectAdapters);
+ protected DomainObjectListRepBuilder(ResourceContext resourceContext) {
+ super(resourceContext);
}
- private final List<ObjectAdapter> objectAdapters;
- private String typeName;
-
- DomainObjectListRepBuilder(RepContext repContext, String typeName, List<ObjectAdapter> objectAdapters) {
- super(repContext);
- this.objectAdapters = objectAdapters;
- this.typeName = typeName;
+ public DomainObjectListRepBuilder withRepresentationTypeListOf(String typeName) {
+ return withRepresentationType("list:" + typeName);
+ }
+
+ public DomainObjectListRepBuilder withRepresentationTypeListOf(ObjectSpecification objectSpec) {
+ return withRepresentationTypeListOf(WellKnownType.canonical(objectSpec.getFullIdentifier()));
}
-
- public JsonRepresentation build() {
- JsonRepresentation linkToRepresentationType = LinkRepBuilder.newBuilder(repContext, "representationType", "representationTypes/list:" + typeName).build();
- representation.put("representationType", linkToRepresentationType);
+ public DomainObjectListRepBuilder withAdapters(List<ObjectAdapter> objectAdapters) {
JsonRepresentation list = JsonRepresentation.newArray();
for(ObjectAdapter adapter: objectAdapters) {
JsonRepresentation linkToObject = buildLinkTo(adapter);
list.add(linkToObject);
}
representation.put("value", list);
- representation.put("links", JsonRepresentation.newArray());
- representation.put("metadata", JsonRepresentation.newMap());
+ return this;
+ }
+
+
+ public JsonRepresentation build() {
+ withLinks();
+ withMetadata();
return representation;
}
+
protected JsonRepresentation buildLinkTo(ObjectAdapter adapter) {
- return LinkRepBuilder.newObjectBuilder(repContext, adapter, getOidStringifier()).build();
+ return DomainObjectRepBuilder.newLinkToBuilder(resourceContext, adapter, getOidStringifier()).build();
}
Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/objects/AbstractMemberRepBuilder.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/objects/AbstractMemberRepBuilder.java?rev=1165139&r1=1165138&r2=1165139&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/objects/AbstractMemberRepBuilder.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/objects/AbstractMemberRepBuilder.java Mon Sep 5 00:38:21 2011
@@ -16,7 +16,6 @@
*/
package org.apache.isis.viewer.json.viewer.resources.objects;
-import java.util.List;
import java.util.Map;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
@@ -26,49 +25,49 @@ import org.apache.isis.core.metamodel.fa
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
import org.apache.isis.viewer.json.applib.JsonRepresentation;
-import org.apache.isis.viewer.json.viewer.RepContext;
+import org.apache.isis.viewer.json.viewer.ResourceContext;
import org.apache.isis.viewer.json.viewer.representations.LinkRepBuilder;
import org.apache.isis.viewer.json.viewer.representations.RepresentationBuilder;
-import com.google.common.collect.Lists;
-
-public abstract class AbstractMemberRepBuilder<T extends ObjectMember> extends RepresentationBuilder {
+public abstract class AbstractMemberRepBuilder<R extends RepresentationBuilder<R>, T extends ObjectMember> extends RepresentationBuilder<R> {
protected final ObjectAdapter objectAdapter;
protected final MemberType memberType;
protected final T objectMember;
- protected final MemberRepType memberRepType;
- public AbstractMemberRepBuilder(RepContext repContext, ObjectAdapter objectAdapter, MemberType memberType, T objectMember) {
- super(repContext);
+ public AbstractMemberRepBuilder(ResourceContext resourceContext, ObjectAdapter objectAdapter, MemberType memberType, T objectMember) {
+ super(resourceContext);
this.objectAdapter = objectAdapter;
this.memberType = memberType;
this.objectMember = objectMember;
- this.memberRepType = repContext.getMemberRepType();
}
- protected void putSelfIfRequired() {
- if(memberRepType.isStandalone()) {
- JsonRepresentation selfRep = MemberSelfRepBuilder.newBuilder(repContext, objectAdapter, memberType, objectMember).build();
- representation.put("_self", selfRep);
+ protected void putSelfIfRequired(MemberRepType memberRepType) {
+ if(!memberRepType.isStandalone()) {
+ return;
}
- }
+
+ JsonRepresentation selfRep = JsonRepresentation.newMap();
+ String url = AbstractMemberRepBuilder.urlForMember(objectAdapter, memberType, objectMember, getOidStringifier());
+ JsonRepresentation memberLinkRep = LinkRepBuilder.newBuilder(resourceContext, "member", url).build();
+ selfRep.put("link", memberLinkRep);
+
+ JsonRepresentation linkTo = DomainObjectRepBuilder.newLinkToBuilder(resourceContext, objectAdapter, getOidStringifier()).build();
+ selfRep.put("object", linkTo);
- protected void putMemberTypeRep() {
- representation.put("memberType", memberType.name().toLowerCase());
+ representation.put("self", selfRep);
}
- protected void putTypeRep() {
- ObjectSpecification specFor = memberType.specFor(objectMember);
- JsonRepresentation typeRep = LinkRepBuilder.newTypeBuilder(repContext, specFor).build();
- representation.put("type", typeRep);
+ public R withMemberType() {
+ representation.put("memberType", memberType.name().toLowerCase());
+ return (R) this;
}
protected void putIdRep() {
representation.put(memberType.key(), objectMember.getId());
}
- protected void putMutatorsIfRequired() {
+ protected void putMutatorsIfRequired(MemberRepType memberRepType) {
if(!memberRepType.isStandalone() || usability().isVetoed()) {
return;
}
@@ -79,7 +78,7 @@ public abstract class AbstractMemberRepB
String urlForMember = urlForMember(mutatorSpec.suffix);
JsonRepresentation arguments = mutatorArgs(mutatorSpec);
JsonRepresentation detailsLink =
- LinkRepBuilder.newBuilder(repContext, mutator, urlForMember)
+ LinkRepBuilder.newBuilder(resourceContext, mutator, urlForMember)
.withHttpMethod(mutatorSpec.httpMethod)
.withArguments(arguments)
.build();
@@ -104,7 +103,7 @@ public abstract class AbstractMemberRepB
}
- protected void putValueIfRequired() {
+ protected void putValueIfRequired(MemberRepType memberRepType) {
if(!memberRepType.hasValueFor(memberType)) {
return;
}
@@ -119,18 +118,17 @@ public abstract class AbstractMemberRepB
return null;
}
-
protected final void putDisabledReason() {
String disabledReasonRep = usability().getReason();
representation.put("disabledReason", disabledReasonRep);
}
- protected void putDetailsIfRequired() {
+ protected void putDetailsIfRequired(MemberRepType memberRepType) {
if(!memberRepType.isInline()) {
return;
}
String urlForMember = urlForMember();
- JsonRepresentation detailsLink = LinkRepBuilder.newBuilder(repContext, memberType.name().toLowerCase(), urlForMember).build();
+ JsonRepresentation detailsLink = LinkRepBuilder.newBuilder(resourceContext, memberType.name().toLowerCase(), urlForMember).build();
representation.put("details", detailsLink);
}
@@ -188,4 +186,5 @@ public abstract class AbstractMemberRepB
return buf.toString();
}
+
}
\ 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/objects/ActionRepBuilder.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/objects/ActionRepBuilder.java?rev=1165139&r1=1165138&r2=1165139&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/objects/ActionRepBuilder.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/objects/ActionRepBuilder.java Mon Sep 5 00:38:21 2011
@@ -23,34 +23,34 @@ import org.apache.isis.core.metamodel.sp
import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
import org.apache.isis.viewer.json.applib.JsonRepresentation;
-import org.apache.isis.viewer.json.viewer.RepContext;
-import org.apache.isis.viewer.json.viewer.representations.LinkRepBuilder;
+import org.apache.isis.viewer.json.viewer.ResourceContext;
import com.google.common.collect.Lists;
-public class ActionRepBuilder extends AbstractMemberRepBuilder<ObjectAction> {
+public class ActionRepBuilder extends AbstractMemberRepBuilder<ActionRepBuilder, ObjectAction> {
- public static ActionRepBuilder newBuilder(RepContext repContext, ObjectAdapter objectAdapter, ObjectAction oa) {
- return new ActionRepBuilder(repContext, objectAdapter, oa);
+ public static ActionRepBuilder newBuilder(ResourceContext resourceContext, ObjectAdapter objectAdapter, ObjectAction objectAction) {
+ return new ActionRepBuilder(resourceContext, objectAdapter, objectAction);
}
- public ActionRepBuilder(RepContext repContext, ObjectAdapter objectAdapter, ObjectAction oa) {
- super(repContext, objectAdapter, MemberType.ACTION, oa);
- }
-
- public JsonRepresentation build() {
- putSelfIfRequired();
+ protected ActionRepBuilder(ResourceContext resourceContext, ObjectAdapter objectAdapter, ObjectAction objectAction) {
+ super(resourceContext, objectAdapter, MemberType.ACTION, objectAction);
+ MemberRepType memberRepType = MemberRepType.STANDALONE;
+ putSelfIfRequired(memberRepType);
putContributedByIfRequired();
- putTypeRep();
+
putIdRep();
- putMemberTypeRep();
+ withMemberType();
representation.put("actionType", objectMember.getType());
representation.put("numParameters", objectMember.getParameterCount());
- putParameterDetailsIfRequired();
- putValueIfRequired();
+ putParameterDetailsIfRequired(memberRepType);
+ putValueIfRequired(memberRepType);
putDisabledReason();
- putMutatorsIfRequired();
- putDetailsIfRequired();
+ putMutatorsIfRequired(memberRepType);
+ putDetailsIfRequired(memberRepType);
+ }
+
+ public JsonRepresentation build() {
return representation;
}
@@ -59,7 +59,7 @@ public class ActionRepBuilder extends Ab
return;
}
ObjectAdapter serviceAdapter = contributingServiceAdapter();
- JsonRepresentation contributedByLink = LinkRepBuilder.newObjectBuilder(repContext, serviceAdapter, getOidStringifier()).build();
+ JsonRepresentation contributedByLink = DomainObjectRepBuilder.newLinkToBuilder(resourceContext, serviceAdapter, getOidStringifier()).build();
representation.put("contributedBy", contributedByLink);
}
@@ -75,7 +75,7 @@ public class ActionRepBuilder extends Ab
throw new IllegalStateException("Unable to locate contributing service");
}
- private void putParameterDetailsIfRequired() {
+ private void putParameterDetailsIfRequired(MemberRepType memberRepType) {
if (!memberRepType.isStandalone()) {
return;
}
@@ -90,7 +90,6 @@ public class ActionRepBuilder extends Ab
private Object paramDetails(ObjectActionParameter param) {
final JsonRepresentation paramRep = JsonRepresentation.newMap();
paramRep.put("name", param.getName());
- paramRep.put("type", LinkRepBuilder.newTypeBuilder(repContext, param.getSpecification()).build());
paramRep.put("num", param.getNumber());
paramRep.put("description", param.getDescription());
Object paramChoices = choicesFor(param);
@@ -112,7 +111,7 @@ public class ActionRepBuilder extends Ab
List<Object> list = Lists.newArrayList();
for (final ObjectAdapter choiceAdapter : choiceAdapters) {
ObjectSpecification objectSpec = param.getSpecification();
- list.add(DomainObjectRepBuilder.valueOrRef(repContext, choiceAdapter, objectSpec, getOidStringifier(), getLocalization()));
+ list.add(DomainObjectRepBuilder.valueOrRef(resourceContext, choiceAdapter, objectSpec, getOidStringifier(), getLocalization()));
}
return list;
}
@@ -123,7 +122,7 @@ public class ActionRepBuilder extends Ab
return null;
}
ObjectSpecification objectSpec = param.getSpecification();
- return DomainObjectRepBuilder.valueOrRef(repContext, defaultAdapter, objectSpec, getOidStringifier(), getLocalization());
+ return DomainObjectRepBuilder.valueOrRef(resourceContext, defaultAdapter, objectSpec, getOidStringifier(), getLocalization());
}
@Override
@@ -139,7 +138,7 @@ public class ActionRepBuilder extends Ab
if(objectMember.isContributed()) {
ObjectActionParameter actionParameter = objectMember.getParameters().get(i);
if (actionParameter.getSpecification().isOfType(objectAdapter.getSpecification())) {
- return LinkRepBuilder.newObjectBuilder(repContext, objectAdapter, getOidStringifier()).build();
+ return DomainObjectRepBuilder.newLinkToBuilder(resourceContext, objectAdapter, getOidStringifier()).build();
}
}
return "{value}";
Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/objects/CollectionRepBuilder.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/objects/CollectionRepBuilder.java?rev=1165139&r1=1165138&r2=1165139&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/objects/CollectionRepBuilder.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/objects/CollectionRepBuilder.java Mon Sep 5 00:38:21 2011
@@ -23,30 +23,32 @@ import org.apache.isis.core.metamodel.fa
import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacetUtils;
import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
import org.apache.isis.viewer.json.applib.JsonRepresentation;
-import org.apache.isis.viewer.json.viewer.RepContext;
+import org.apache.isis.viewer.json.viewer.ResourceContext;
import org.apache.isis.viewer.json.viewer.representations.LinkRepBuilder;
import com.google.common.collect.Lists;
-public class CollectionRepBuilder extends AbstractMemberRepBuilder<OneToManyAssociation> {
+public class CollectionRepBuilder extends AbstractMemberRepBuilder<CollectionRepBuilder, OneToManyAssociation> {
- public static CollectionRepBuilder newBuilder(RepContext repContext, ObjectAdapter objectAdapter, OneToManyAssociation otma) {
- return new CollectionRepBuilder(repContext, objectAdapter, otma);
+ public static CollectionRepBuilder newBuilder(ResourceContext resourceContext, ObjectAdapter objectAdapter, OneToManyAssociation otma) {
+ return new CollectionRepBuilder(resourceContext, objectAdapter, otma);
}
- public CollectionRepBuilder(RepContext repContext, ObjectAdapter objectAdapter, OneToManyAssociation otma) {
- super(repContext, objectAdapter, MemberType.COLLECTION, otma);
- }
+ public CollectionRepBuilder(ResourceContext resourceContext, ObjectAdapter objectAdapter, OneToManyAssociation otma) {
+ super(resourceContext, objectAdapter, MemberType.COLLECTION, otma);
- public JsonRepresentation build() {
- putSelfIfRequired();
- putTypeRep();
+ MemberRepType memberRepType = MemberRepType.STANDALONE;
+
+ putSelfIfRequired(memberRepType);
putIdRep();
- putMemberTypeRep();
- putValueIfRequired();
+ withMemberType();
+ putValueIfRequired(memberRepType);
putDisabledReason();
- putMutatorsIfRequired();
- putDetailsIfRequired();
+ putMutatorsIfRequired(memberRepType);
+ putDetailsIfRequired(memberRepType);
+ }
+
+ public JsonRepresentation build() {
return representation;
}
@@ -60,7 +62,7 @@ public class CollectionRepBuilder extend
List<JsonRepresentation> list = Lists.newArrayList();
for (final ObjectAdapter elementAdapter : facet.iterable(valueAdapter)) {
- LinkRepBuilder newBuilder = LinkRepBuilder.newObjectBuilder(repContext, elementAdapter, getOidStringifier());
+ LinkRepBuilder newBuilder = DomainObjectRepBuilder.newLinkToBuilder(resourceContext, elementAdapter, getOidStringifier());
list.add(newBuilder.build());
}
Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/objects/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/objects/DomainObjectRepBuilder.java?rev=1165139&r1=1165138&r2=1165139&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/objects/DomainObjectRepBuilder.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/objects/DomainObjectRepBuilder.java Mon Sep 5 00:38:21 2011
@@ -17,7 +17,6 @@
package org.apache.isis.viewer.json.viewer.resources.objects;
import java.util.List;
-import java.util.Map;
import org.apache.isis.applib.profiles.Localization;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
@@ -34,50 +33,43 @@ import org.apache.isis.core.metamodel.sp
import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
import org.apache.isis.viewer.json.applib.JsonRepresentation;
-import org.apache.isis.viewer.json.viewer.RepContext;
+import org.apache.isis.viewer.json.viewer.ResourceContext;
import org.apache.isis.viewer.json.viewer.representations.LinkRepBuilder;
import org.apache.isis.viewer.json.viewer.representations.RepresentationBuilder;
+import org.apache.isis.viewer.json.viewer.representations.WellKnownType;
import org.apache.isis.viewer.json.viewer.util.OidUtils;
import com.google.common.base.Function;
-import com.google.common.collect.Maps;
-public class DomainObjectRepBuilder extends RepresentationBuilder {
+public class DomainObjectRepBuilder extends RepresentationBuilder<DomainObjectRepBuilder> {
- public static DomainObjectRepBuilder newBuilder(RepContext representationContext, ObjectAdapter objectAdapter) {
+ public static DomainObjectRepBuilder newBuilder(ResourceContext representationContext, ObjectAdapter objectAdapter) {
return new DomainObjectRepBuilder(representationContext, objectAdapter);
}
private final ObjectAdapter objectAdapter;
- private final Map<String, JsonRepresentation> members = Maps.newLinkedHashMap();
- public DomainObjectRepBuilder(RepContext repContext, ObjectAdapter objectAdapter) {
- super(repContext);
+ public DomainObjectRepBuilder(ResourceContext resourceContext, ObjectAdapter objectAdapter) {
+ super(resourceContext);
this.objectAdapter = objectAdapter;
+ withRepresentationType("object:" + WellKnownType.canonical(objectAdapter.getSpecification().getFullIdentifier()));
+ withSelf();
+ withMembers();
}
-
- public JsonRepresentation build() {
- RepContext repContext = this.repContext.underAttribute("_self");
- JsonRepresentation selfLink = LinkRepBuilder.newBuilder(repContext, "object", url()).build();
- JsonRepresentation selfType = LinkRepBuilder.newTypeBuilder(repContext, objectAdapter.getSpecification()).build();
- String title = objectAdapter.titleString();
- JsonRepresentation iconLink = LinkRepBuilder.newBuilder(repContext, "icon", icon()).build();
+
+ public DomainObjectRepBuilder withSelf() {
JsonRepresentation self = JsonRepresentation.newMap();
+ JsonRepresentation selfLink = LinkRepBuilder.newBuilder(resourceContext, "object", url()).build();
+ //JsonRepresentation selfType = LinkRepBuilder.newTypeBuilder(resourceContext, objectAdapter.getSpecification()).build();
+ String title = objectAdapter.titleString();
+ //JsonRepresentation iconLink = LinkRepBuilder.newBuilder(resourceContext, "icon", icon()).build();
self.put("link", selfLink);
- self.put("type", selfType);
self.put("oid", OidUtils.getOidStr(objectAdapter, getOidStringifier()));
self.put("title", title);
- self.put("icon", iconLink);
- representation.put("_self", self);
- withAllMembers(objectAdapter);
- if(!members.isEmpty()) {
- for(Map.Entry<String, JsonRepresentation> entry: members.entrySet()) {
- String memberId = entry.getKey();
- JsonRepresentation memberRep = entry.getValue();
- representation.put(memberId, memberRep);
- }
- }
- return representation;
+// self.put("type", selfType);
+// self.put("icon", iconLink);
+ representation.put("self", self);
+ return this;
}
private String icon() {
@@ -89,7 +81,15 @@ public class DomainObjectRepBuilder exte
return urlFor(objectAdapter, getOidStringifier());
}
- private void withAllMembers(final ObjectAdapter objectAdapter) {
+
+ public DomainObjectRepBuilder withMembers() {
+ JsonRepresentation members = JsonRepresentation.newArray();
+ addAllMembers(objectAdapter, members);
+ representation.put("members", members);
+ return this;
+ }
+
+ private void addAllMembers(final ObjectAdapter objectAdapter, JsonRepresentation members) {
List<ObjectAssociation> associations = objectAdapter.getSpecification().getAssociations();
for (ObjectAssociation assoc : associations) {
Consent visibility = assoc.isVisible(getSession(), objectAdapter);
@@ -99,22 +99,22 @@ public class DomainObjectRepBuilder exte
String id = assoc.getId();
if(assoc instanceof OneToOneAssociation) {
OneToOneAssociation property = (OneToOneAssociation)assoc;
- JsonRepresentation propertyRep = PropertyRepBuilder.newBuilder(repContext.underAttribute(id), objectAdapter, property).build();
- withMember(id, propertyRep);
+ JsonRepresentation propertyRep = PropertyRepBuilder.newBuilder(resourceContext, objectAdapter, property).build();
+ members.put(id, propertyRep);
}
if(assoc instanceof OneToManyAssociation) {
OneToManyAssociation collection = (OneToManyAssociation) assoc;
- JsonRepresentation collectionRep = CollectionRepBuilder.newBuilder(repContext.underAttribute(id), objectAdapter, collection).build();
- withMember(id, collectionRep);
+ JsonRepresentation collectionRep = CollectionRepBuilder.newBuilder(resourceContext, objectAdapter, collection).build();
+ members.put(id, collectionRep);
}
}
List<ObjectAction> actions = objectAdapter.getSpecification().getObjectActions(Contributed.INCLUDED);
- withActions(objectAdapter, actions);
+ addActions(objectAdapter, actions, members);
}
- private void withActions(final ObjectAdapter objectAdapter,
- List<ObjectAction> actions) {
+ private void addActions(final ObjectAdapter objectAdapter,
+ List<ObjectAction> actions, JsonRepresentation members) {
for (ObjectAction action : actions) {
Consent visibility = action.isVisible(getSession(), objectAdapter);
if(!visibility.isAllowed()) {
@@ -123,25 +123,31 @@ public class DomainObjectRepBuilder exte
if(action.getType().isSet()) {
ObjectActionSet objectActionSet = (ObjectActionSet) action;
List<ObjectAction> subactions = objectActionSet.getActions();
- withActions(objectAdapter, subactions);
+ addActions(objectAdapter, subactions, members);
} else {
final String id = action.getId();
- JsonRepresentation actionRep = ActionRepBuilder.newBuilder(repContext.underAttribute(id), objectAdapter, action).build();
- withMember(id, actionRep);
+ JsonRepresentation actionRep = ActionRepBuilder.newBuilder(resourceContext, objectAdapter, action).build();
+ members.put(id, actionRep);
}
}
}
- private void withMember(String id, JsonRepresentation propertyRep) {
- members.put(id, propertyRep);
+ public JsonRepresentation build() {
+ withLinks();
+ withMetadata();
+ return representation;
}
-
/////////////////////////////////////////////////////////////////////
//
/////////////////////////////////////////////////////////////////////
- public static String urlFor(ObjectAdapter objectAdapter, OidStringifier oidStringifier) {
+ public static LinkRepBuilder newLinkToBuilder(ResourceContext resourceContext, ObjectAdapter elementAdapter, OidStringifier oidStringifier) {
+ String url = urlFor(elementAdapter, oidStringifier);
+ return LinkRepBuilder.newBuilder(resourceContext, "object", url);
+ }
+
+ public static String urlFor(ObjectAdapter objectAdapter, OidStringifier oidStringifier) {
String oidStr = oidStringifier.enString(objectAdapter.getOid());
return "objects/" + oidStr;
}
@@ -151,11 +157,11 @@ public class DomainObjectRepBuilder exte
//
/////////////////////////////////////////////////////////////////////
- public static Function<ObjectAdapter, JsonRepresentation> fromAdapter(final RepContext repContext) {
+ public static Function<ObjectAdapter, JsonRepresentation> fromAdapter(final ResourceContext resourceContext) {
return new Function<ObjectAdapter, JsonRepresentation>() {
@Override
public JsonRepresentation apply(ObjectAdapter input) {
- return newBuilder(repContext, input).build();
+ return newBuilder(resourceContext, input).build();
}
};
}
@@ -174,7 +180,7 @@ public class DomainObjectRepBuilder exte
//
/////////////////////////////////////////////////////////////////////
- public static Object valueOrRef(RepContext repContext,
+ public static Object valueOrRef(ResourceContext resourceContext,
final ObjectAdapter objectAdapter, ObjectSpecification objectSpec, OidStringifier oidStringifier, Localization localization) {
ValueFacet valueFacet = objectSpec.getFacet(ValueFacet.class);
if(valueFacet != null) {
@@ -183,7 +189,7 @@ public class DomainObjectRepBuilder exte
}
TitleFacet titleFacet = objectSpec.getFacet(TitleFacet.class);
String title = titleFacet.title(objectAdapter, localization);
- return LinkRepBuilder.newObjectBuilder(repContext, objectAdapter, oidStringifier).withTitle(title).build();
+ return DomainObjectRepBuilder.newLinkToBuilder(resourceContext, objectAdapter, oidStringifier).withTitle(title).build();
}
Copied: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/objects/DomainObjectResourceServerside.java (from r1164046, incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/objects/DomainObjectResourceImpl.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/objects/DomainObjectResourceServerside.java?p2=incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/objects/DomainObjectResourceServerside.java&p1=incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/objects/DomainObjectResourceImpl.java&r1=1164046&r2=1165139&rev=1165139&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/objects/DomainObjectResourceImpl.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/objects/DomainObjectResourceServerside.java Mon Sep 5 00:38:21 2011
@@ -46,6 +46,7 @@ import org.apache.isis.core.metamodel.sp
import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
+import org.apache.isis.viewer.json.applib.HttpStatusCode;
import org.apache.isis.viewer.json.applib.domain.DomainObjectResource;
import org.apache.isis.viewer.json.viewer.resources.ResourceAbstract;
import org.apache.isis.viewer.json.viewer.util.UrlDecoderUtils;
@@ -57,7 +58,7 @@ import com.google.common.collect.Lists;
import com.google.common.io.ByteStreams;
@Path("/objects")
-public class DomainObjectResourceImpl extends ResourceAbstract implements
+public class DomainObjectResourceServerside extends ResourceAbstract implements
DomainObjectResource {
@GET
@@ -67,7 +68,7 @@ public class DomainObjectResourceImpl ex
final ObjectAdapter objectAdapter = getObjectAdapter(oidStr);
final DomainObjectRepBuilder builder = DomainObjectRepBuilder
- .newBuilder(getResourceContext().repContext(), objectAdapter);
+ .newBuilder(getResourceContext(), objectAdapter);
return responseOfOk(jsonRepresentionFrom(builder));
}
@@ -83,7 +84,7 @@ public class DomainObjectResourceImpl ex
objectAdapter, propertyId, Intent.ACCESS);
final PropertyRepBuilder builder = PropertyRepBuilder.newBuilder(
- getResourceContext().repContext(), objectAdapter, property);
+ getResourceContext(), objectAdapter, property);
return responseOfOk(jsonRepresentionFrom(builder));
}
@@ -99,7 +100,7 @@ public class DomainObjectResourceImpl ex
objectAdapter, collectionId, Intent.ACCESS);
final CollectionRepBuilder builder = CollectionRepBuilder.newBuilder(
- getResourceContext().repContext(), objectAdapter, collection);
+ getResourceContext(), objectAdapter, collection);
return responseOfOk(jsonRepresentionFrom(builder));
}
@@ -115,7 +116,7 @@ public class DomainObjectResourceImpl ex
objectAdapter, actionId, Intent.ACCESS);
ActionRepBuilder builder = ActionRepBuilder.newBuilder(
- getResourceContext().repContext(), objectAdapter, action);
+ getResourceContext(), objectAdapter, action);
return responseOfOk(jsonRepresentionFrom(builder));
}
@@ -132,25 +133,22 @@ public class DomainObjectResourceImpl ex
objectAdapter, actionId, Intent.ACCESS);
if (!isIdempotent(action)) {
- throw new WebApplicationException(
- responseOfMethodNotAllowed("Method not allowed; action '"
- + action.getId() + "' is not idempotent"));
+ return responseOf(HttpStatusCode.METHOD_NOT_ALLOWED,
+ "Method not allowed; action '%s' is not idempotent", action.getId());
}
int numParameters = action.getParameterCount();
int numArguments = arguments.size();
if (numArguments != numParameters) {
- throw new WebApplicationException(
- responseOfBadRequest("Action '" + action.getId() + "' has "
- + numParameters + " parameters but received "
- + numArguments + " arguments"));
+ return responseOf(HttpStatusCode.BAD_REQUEST,
+ "Action '%s' has %d parameters but received %d arguments", action.getId(), numParameters, numArguments);
}
List<ObjectAdapter> parameters;
try {
parameters = argumentAdaptersFor(action, arguments);
} catch (IOException e) {
- throw new WebApplicationException(
- responseOfBadRequest("Action '" + action.getId() +"' has body that cannot be parsed as JSON", e));
+ return responseOf(HttpStatusCode.BAD_REQUEST,
+ "Action '%s' has body that cannot be parsed as JSON", e, action.getId());
}
return invokeActionUsingAdapters(action, objectAdapter, parameters);
}
@@ -212,13 +210,12 @@ public class DomainObjectResourceImpl ex
Consent consent = property.isAssociationValid(objectAdapter, argAdapter);
if (consent.isVetoed()) {
- throw new WebApplicationException(
- responseOfPreconditionFailed(consent.getReason()));
+ return responseOfUnauthorized(consent);
}
property.set(objectAdapter, argAdapter);
- return responseOfOk();
+ return responseOfNoContent();
}
@PUT
@@ -234,7 +231,8 @@ public class DomainObjectResourceImpl ex
objectAdapter, collectionId, Intent.MUTATE);
if (!collection.getCollectionSemantics().isSet()) {
- throw new WebApplicationException(responseOfBadRequest("Collection '" + collectionId + "' does not have set semantics"));
+ return responseOf(HttpStatusCode.BAD_REQUEST,
+ "Collection '' does not have set semantics", collectionId);
}
ObjectSpecification collectionSpec = collection.getSpecification();
@@ -242,12 +240,12 @@ public class DomainObjectResourceImpl ex
Consent consent = collection.isValidToAdd(objectAdapter, argAdapter);
if (consent.isVetoed()) {
- throw new WebApplicationException(responseOfPreconditionFailed(consent.getReason()));
+ return responseOfUnauthorized(consent);
}
collection.addElement(objectAdapter, argAdapter);
- return responseOfOk();
+ return responseOfNoContent();
}
// /////////////////////////////////////////////////////////////////
@@ -267,13 +265,12 @@ public class DomainObjectResourceImpl ex
Consent consent = property.isAssociationValid(objectAdapter, null);
if (consent.isVetoed()) {
- throw new WebApplicationException(
- responseOfPreconditionFailed(consent.getReason()));
+ return responseOfUnauthorized(consent);
}
property.set(objectAdapter, null);
- return responseOfOk();
+ return responseOfNoContent();
}
@DELETE
@@ -293,12 +290,12 @@ public class DomainObjectResourceImpl ex
Consent consent = collection.isValidToRemove(objectAdapter, argAdapter);
if (consent.isVetoed()) {
- throw new WebApplicationException(responseOfPreconditionFailed(consent.getReason()));
+ return responseOfUnauthorized(consent);
}
collection.removeElement(objectAdapter, argAdapter);
- return responseOfOk();
+ return responseOfNoContent();
}
// /////////////////////////////////////////////////////////////////
@@ -318,7 +315,8 @@ public class DomainObjectResourceImpl ex
objectAdapter, collectionId, Intent.MUTATE);
if (!collection.getCollectionSemantics().isListOrArray()) {
- throw new WebApplicationException(responseOfBadRequest("Collection '" + collectionId + "' does not have list or array semantics"));
+ return responseOf(HttpStatusCode.METHOD_NOT_ALLOWED,
+ "Collection '%s' does not have list or array semantics", collectionId);
}
ObjectSpecification collectionSpec = collection.getSpecification();
@@ -326,12 +324,12 @@ public class DomainObjectResourceImpl ex
Consent consent = collection.isValidToAdd(objectAdapter, argAdapter);
if (consent.isVetoed()) {
- throw new WebApplicationException(responseOfPreconditionFailed(consent.getReason()));
+ return responseOfUnauthorized(consent);
}
collection.addElement(objectAdapter, argAdapter);
- return responseOfOk();
+ return responseOfNoContent();
}
@POST
@@ -360,10 +358,9 @@ public class DomainObjectResourceImpl ex
int numArguments = arguments.size();
if (numArguments != numParameters) {
throw new WebApplicationException(
- responseOfBadRequest("Action '" + action.getId()
- + "' has " + numParameters
- + " parameters but received " + numArguments
- + " arguments in body"));
+ responseOf(HttpStatusCode.BAD_REQUEST,
+ "Action '%s' has %d parameters but received %d arguments in body",
+ action.getId(), numParameters, numArguments));
}
for (int i = 0; i < numParameters; i++) {
@@ -391,20 +388,14 @@ public class DomainObjectResourceImpl ex
return objectAdapterFor(paramSpec, arg);
} catch (ExpectedStringRepresentingValueException e) {
throw new WebApplicationException(
- responseOfBadRequest("Action '"
- + action.getId()
- + "', argument "
- + i
- + " should be a URL encoded string representing a value of type "
- + resourceFor(paramSpec)));
+ responseOf(HttpStatusCode.BAD_REQUEST,
+ "Action '%s', argument %d should be a URL encoded string representing a value of type %s",
+ action.getId(), i, resourceFor(paramSpec)));
} catch (ExpectedMapRepresentingReferenceException e) {
throw new WebApplicationException(
- responseOfBadRequest("Action '"
- + action.getId()
- + "', argument "
- + i
- + " should be a map representing a link to reference of type "
- + resourceFor(paramSpec)));
+ responseOf(HttpStatusCode.BAD_REQUEST,
+ "Action '%s', argument %d should be a map representing a link to reference of type %s",
+ action.getId(), i, resourceFor(paramSpec)));
}
}
@@ -424,8 +415,7 @@ public class DomainObjectResourceImpl ex
Object arg = paramAdapter.getObject();
String reasonNotValid = parameter.isValid(objectAdapter, arg);
if (reasonNotValid != null) {
- throw new WebApplicationException(
- responseOfPreconditionFailed(reasonNotValid));
+ return responseOf(HttpStatusCode.NOT_ACCEPTABLE, reasonNotValid);
}
}
}
@@ -433,14 +423,13 @@ public class DomainObjectResourceImpl ex
Consent consent = action.isProposedArgumentSetValid(objectAdapter,
argArray);
if (consent.isVetoed()) {
- throw new WebApplicationException(
- responseOfPreconditionFailed(consent.getReason()));
+ return responseOf(HttpStatusCode.NOT_ACCEPTABLE, consent.getReason());
}
final ObjectAdapter returnedAdapter = action.execute(objectAdapter,
argArray);
if (returnedAdapter == null) {
- return responseOfOk();
+ return responseOfNoContent();
}
final CollectionFacet facet = returnedAdapter.getSpecification()
.getFacet(CollectionFacet.class);
@@ -458,7 +447,9 @@ public class DomainObjectResourceImpl ex
List<?> arguments = parseBody(body);
if (arguments.size() != 1) {
throw new WebApplicationException(
- responseOfBadRequest("Body should contain 1 argument representing a value of type '" + resourceFor(objectSpec) + "'"));
+ responseOf(HttpStatusCode.BAD_REQUEST,
+ "Body should contain 1 argument representing a value of type '%s'",
+ resourceFor(objectSpec)));
}
ObjectAdapter proposedValueAdapter = objectAdapterFor(objectSpec, arguments.get(0));
@@ -474,14 +465,13 @@ public class DomainObjectResourceImpl ex
return arguments;
} catch (JsonParseException e) {
throw new WebApplicationException(e,
- responseOfBadRequest("could not parse body"));
+ responseOf(HttpStatusCode.BAD_REQUEST, "could not parse body", e));
} catch (JsonMappingException e) {
- throw new WebApplicationException(
- e,
- responseOfBadRequest("could not map body to a Map structure"));
+ throw new WebApplicationException(e,
+ responseOf(HttpStatusCode.BAD_REQUEST, "could not map body to a Map structure", e));
} catch (IOException e) {
throw new WebApplicationException(e,
- responseOfBadRequest("could not read body"));
+ responseOf(HttpStatusCode.BAD_REQUEST, "could not read body", e));
}
}
@@ -548,20 +538,21 @@ public class DomainObjectResourceImpl ex
if (usable.isVetoed()) {
String memberTypeStr = memberType.name().toLowerCase();
throw new WebApplicationException(
- responseOfPreconditionFailed(memberTypeStr
- + " is not usable: '" + memberId + "' ("
- + usable.getReason() + ")"));
+ responseOf(HttpStatusCode.NOT_ACCEPTABLE,
+ "%s is not usable: '%s' (%s)",
+ memberTypeStr, memberId, usable.getReason()));
}
}
return objectMember;
}
- private static void throwNotFoundException(final String memberId,
- MemberType memberType) {
+ private static void throwNotFoundException(
+ final String memberId, MemberType memberType) {
String memberTypeStr = memberType.name().toLowerCase();
throw new WebApplicationException(
- responseOfNotFound(memberTypeStr + " '" + memberId
- + "' either does not exist or is not visible"));
+ responseOf(HttpStatusCode.NOT_FOUND,
+ "%s '%s' either does not exist or is not visible",
+ memberTypeStr, memberId));
}
}
Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/objects/MemberSelfRepBuilder.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/objects/MemberSelfRepBuilder.java?rev=1165139&r1=1165138&r2=1165139&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/objects/MemberSelfRepBuilder.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/objects/MemberSelfRepBuilder.java Mon Sep 5 00:38:21 2011
@@ -19,22 +19,22 @@ package org.apache.isis.viewer.json.view
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
import org.apache.isis.viewer.json.applib.JsonRepresentation;
-import org.apache.isis.viewer.json.viewer.RepContext;
+import org.apache.isis.viewer.json.viewer.ResourceContext;
import org.apache.isis.viewer.json.viewer.representations.LinkRepBuilder;
import org.apache.isis.viewer.json.viewer.representations.RepresentationBuilder;
-public class MemberSelfRepBuilder extends RepresentationBuilder {
+public class MemberSelfRepBuilder extends RepresentationBuilder<MemberSelfRepBuilder> {
- public static MemberSelfRepBuilder newBuilder(RepContext repContext, ObjectAdapter objectAdapter, MemberType memberType, ObjectMember objectMember) {
- return new MemberSelfRepBuilder(repContext, objectAdapter, memberType, objectMember);
+ public static MemberSelfRepBuilder newBuilder(ResourceContext resourceContext, ObjectAdapter objectAdapter, MemberType memberType, ObjectMember objectMember) {
+ return new MemberSelfRepBuilder(resourceContext, objectAdapter, memberType, objectMember);
}
private final ObjectAdapter objectAdapter;
private final MemberType memberType;
private final ObjectMember objectMember;
- public MemberSelfRepBuilder(RepContext repContext, ObjectAdapter objectAdapter, MemberType memberType, ObjectMember objectMember) {
- super(repContext);
+ public MemberSelfRepBuilder(ResourceContext resourceContext, ObjectAdapter objectAdapter, MemberType memberType, ObjectMember objectMember) {
+ super(resourceContext);
this.objectAdapter = objectAdapter;
this.memberType = memberType;
this.objectMember = objectMember;
@@ -48,11 +48,11 @@ public class MemberSelfRepBuilder extend
private JsonRepresentation memberLinkRep() {
String url = AbstractMemberRepBuilder.urlForMember(objectAdapter, memberType, objectMember, getOidStringifier());
- return LinkRepBuilder.newBuilder(repContext, "member", url).build();
+ return LinkRepBuilder.newBuilder(resourceContext, "member", url).build();
}
private JsonRepresentation domainObjectLinkRep() {
- return LinkRepBuilder.newObjectBuilder(repContext, objectAdapter, getOidStringifier()).build();
+ return DomainObjectRepBuilder.newLinkToBuilder(resourceContext, objectAdapter, getOidStringifier()).build();
}
}
\ 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/objects/PropertyRepBuilder.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/objects/PropertyRepBuilder.java?rev=1165139&r1=1165138&r2=1165139&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/objects/PropertyRepBuilder.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/objects/PropertyRepBuilder.java Mon Sep 5 00:38:21 2011
@@ -22,30 +22,32 @@ import org.apache.isis.core.metamodel.ad
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
import org.apache.isis.viewer.json.applib.JsonRepresentation;
-import org.apache.isis.viewer.json.viewer.RepContext;
+import org.apache.isis.viewer.json.viewer.ResourceContext;
import com.google.common.collect.Lists;
-public class PropertyRepBuilder extends AbstractMemberRepBuilder<OneToOneAssociation> {
+public class PropertyRepBuilder extends AbstractMemberRepBuilder<PropertyRepBuilder, OneToOneAssociation> {
- public static PropertyRepBuilder newBuilder(RepContext repContext, ObjectAdapter objectAdapter, OneToOneAssociation otoa) {
- return new PropertyRepBuilder(repContext, objectAdapter, otoa);
+ public static PropertyRepBuilder newBuilder(ResourceContext resourceContext, ObjectAdapter objectAdapter, OneToOneAssociation otoa) {
+ return new PropertyRepBuilder(resourceContext, objectAdapter, otoa);
}
- public PropertyRepBuilder(RepContext repContext, ObjectAdapter objectAdapter, OneToOneAssociation otoa) {
- super(repContext, objectAdapter, MemberType.PROPERTY, otoa);
- }
+ public PropertyRepBuilder(ResourceContext resourceContext, ObjectAdapter objectAdapter, OneToOneAssociation otoa) {
+ super(resourceContext, objectAdapter, MemberType.PROPERTY, otoa);
- public JsonRepresentation build() {
- putSelfIfRequired();
- putTypeRep();
+ MemberRepType memberRepType = MemberRepType.STANDALONE;
+
+ putSelfIfRequired(memberRepType);
putIdRep();
- putMemberTypeRep();
- putValueIfRequired();
+ withMemberType();
+ putValueIfRequired(memberRepType);
putDisabledReason();
putChoices();
- putMutatorsIfRequired();
- putDetailsIfRequired();
+ putMutatorsIfRequired(memberRepType);
+ putDetailsIfRequired(memberRepType);
+ }
+
+ public JsonRepresentation build() {
return representation;
}
@@ -56,7 +58,7 @@ public class PropertyRepBuilder extends
if(valueAdapter == null) {
return null;
}
- return DomainObjectRepBuilder.valueOrRef(repContext, valueAdapter, objectMember.getSpecification(), getOidStringifier(), getLocalization());
+ return DomainObjectRepBuilder.valueOrRef(resourceContext, valueAdapter, objectMember.getSpecification(), getOidStringifier(), getLocalization());
}
private void putChoices() {
@@ -74,7 +76,7 @@ public class PropertyRepBuilder extends
List<Object> list = Lists.newArrayList();
for (final ObjectAdapter choiceAdapter : choiceAdapters) {
ObjectSpecification objectSpec = objectMember.getSpecification();
- list.add(DomainObjectRepBuilder.valueOrRef(repContext, choiceAdapter, objectSpec, getOidStringifier(), getLocalization()));
+ list.add(DomainObjectRepBuilder.valueOrRef(resourceContext, choiceAdapter, objectSpec, getOidStringifier(), getLocalization()));
}
return list;
}
Copied: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/reptypes/RepresentationTypeResourceServerside.java (from r1164046, incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/reptypes/RepresentationTypeResourceImpl.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/reptypes/RepresentationTypeResourceServerside.java?p2=incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/reptypes/RepresentationTypeResourceServerside.java&p1=incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/reptypes/RepresentationTypeResourceImpl.java&r1=1164046&r2=1165139&rev=1165139&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/reptypes/RepresentationTypeResourceImpl.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/reptypes/RepresentationTypeResourceServerside.java Mon Sep 5 00:38:21 2011
@@ -35,7 +35,7 @@ import org.apache.isis.viewer.json.viewe
* interface (at least under RestEasy 1.0.2 and 1.1-RC2).
*/
@Path("/representationTypes")
-public class RepresentationTypeResourceImpl extends ResourceAbstract implements RepresentationTypeResource {
+public class RepresentationTypeResourceServerside extends ResourceAbstract implements RepresentationTypeResource {
@GET
@@ -45,8 +45,8 @@ public class RepresentationTypeResourceI
init();
JsonRepresentation representation = JsonRepresentation.newMap();
- representation.put("representationType", LinkRepBuilder.newBuilder(getResourceContext().repContextInline(), "representationType", "representationTypes/representationType").build());
- representation.put("self", LinkRepBuilder.newBuilder(getResourceContext().repContextInline(), "self", "representationType/" + representationTypeName).build());
+ representation.put("representationType", LinkRepBuilder.newBuilder(getResourceContext(), "representationType", "representationTypes/representationType").build());
+ representation.put("self", LinkRepBuilder.newBuilder(getResourceContext(), "self", "representationType/" + representationTypeName).build());
return responseOfOk(asJson(representation));
}
Copied: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/services/DomainServiceListRepBuilder.java (from r1164046, incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/objectlist/DomainServiceListRepBuilder.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/services/DomainServiceListRepBuilder.java?p2=incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/services/DomainServiceListRepBuilder.java&p1=incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/objectlist/DomainServiceListRepBuilder.java&r1=1164046&r2=1165139&rev=1165139&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/objectlist/DomainServiceListRepBuilder.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/services/DomainServiceListRepBuilder.java Mon Sep 5 00:38:21 2011
@@ -14,32 +14,30 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.isis.viewer.json.viewer.resources.objectlist;
-
-import java.util.List;
+package org.apache.isis.viewer.json.viewer.resources.services;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.services.ServiceUtil;
import org.apache.isis.viewer.json.applib.JsonRepresentation;
-import org.apache.isis.viewer.json.viewer.RepContext;
+import org.apache.isis.viewer.json.viewer.ResourceContext;
import org.apache.isis.viewer.json.viewer.representations.LinkRepBuilder;
+import org.apache.isis.viewer.json.viewer.resources.objectlist.DomainObjectListRepBuilder;
-public class DomainServiceListRepBuilder extends DomainObjectListRepBuilder {
+class DomainServiceListRepBuilder extends DomainObjectListRepBuilder {
- public static DomainServiceListRepBuilder newBuilder(RepContext repContext, List<ObjectAdapter> serviceAdapters) {
- return new DomainServiceListRepBuilder(repContext, serviceAdapters);
+ public static DomainObjectListRepBuilder newBuilder(ResourceContext resourceContext) {
+ return new DomainServiceListRepBuilder(resourceContext);
}
- private DomainServiceListRepBuilder(RepContext repContext, List<ObjectAdapter> serviceAdapters) {
- super(repContext, "object", serviceAdapters);
+ private DomainServiceListRepBuilder(ResourceContext resourceContext) {
+ super(resourceContext);
+ withRepresentationTypeListOf("object");
}
@Override
protected JsonRepresentation buildLinkTo(ObjectAdapter serviceAdapter) {
- Object servicePojo = serviceAdapter.getObject();
- String serviceId = ServiceUtil.id(servicePojo);
- JsonRepresentation linkToService = LinkRepBuilder.newBuilder(repContext, "service", "services/" + serviceId).build();
- return linkToService;
+ String serviceId = ServiceUtil.id(serviceAdapter.getObject());
+ return LinkRepBuilder.newBuilder(resourceContext, "service", "services/" + serviceId).build();
}
Copied: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/services/DomainServicesResourceServerside.java (from r1164046, incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/services/ServicesResourceImpl.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/services/DomainServicesResourceServerside.java?p2=incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/services/DomainServicesResourceServerside.java&p1=incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/services/ServicesResourceImpl.java&r1=1164046&r2=1165139&rev=1165139&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/services/ServicesResourceImpl.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/services/DomainServicesResourceServerside.java Mon Sep 5 00:38:21 2011
@@ -30,24 +30,24 @@ import javax.ws.rs.core.Response;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.services.ServiceUtil;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.viewer.json.applib.domain.ServicesResource;
-import org.apache.isis.viewer.json.viewer.RepContext;
+import org.apache.isis.viewer.json.applib.HttpStatusCode;
+import org.apache.isis.viewer.json.applib.domain.DomainServicesResource;
+import org.apache.isis.viewer.json.viewer.ResourceContext;
import org.apache.isis.viewer.json.viewer.resources.ResourceAbstract;
import org.apache.isis.viewer.json.viewer.resources.objectlist.DomainObjectListRepBuilder;
-import org.apache.isis.viewer.json.viewer.resources.objectlist.DomainServiceListRepBuilder;
import org.apache.isis.viewer.json.viewer.resources.objects.DomainObjectRepBuilder;
-public class ServicesResourceImpl extends ResourceAbstract implements ServicesResource {
+public class DomainServicesResourceServerside extends ResourceAbstract implements DomainServicesResource {
@Override
@Produces({ MediaType.APPLICATION_JSON })
public Response services() {
init();
- final List<ObjectAdapter> serviceAdapters = getPersistenceSession().getServices();
- RepContext repContext = getResourceContext().repContext();
+ ResourceContext resourceContext = getResourceContext();
+ final List<ObjectAdapter> serviceAdapters = getPersistenceSession().getServices();
- DomainServiceListRepBuilder builder = DomainServiceListRepBuilder.newBuilder(repContext, serviceAdapters);
+ DomainObjectListRepBuilder builder = DomainServiceListRepBuilder.newBuilder(resourceContext).withAdapters(serviceAdapters);
return responseOfOk(jsonRepresentionFrom(builder));
}
@@ -60,11 +60,12 @@ public class ServicesResourceImpl extend
final ObjectAdapter serviceAdapter = getServiceAdapter(serviceId);
if(serviceAdapter == null) {
- return responseOfNotFound("Could not locate service '%s'", serviceId);
+ Object[] args = { serviceId };
+ return responseOf(HttpStatusCode.NOT_FOUND, "Could not locate service '%s'", args);
}
- RepContext repContext = getResourceContext().repContext();
+ ResourceContext resourceContext = getResourceContext();
- DomainObjectRepBuilder builder = DomainObjectRepBuilder.newBuilder(repContext, serviceAdapter);
+ DomainObjectRepBuilder builder = DomainObjectRepBuilder.newBuilder(resourceContext, serviceAdapter);
return responseOfOk(jsonRepresentionFrom(builder));
}
Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/user/UserRepBuilder.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/user/UserRepBuilder.java?rev=1165139&r1=1165138&r2=1165139&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/user/UserRepBuilder.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/user/UserRepBuilder.java Mon Sep 5 00:38:21 2011
@@ -18,37 +18,34 @@ package org.apache.isis.viewer.json.view
import org.apache.isis.core.commons.authentication.AuthenticationSession;
import org.apache.isis.viewer.json.applib.JsonRepresentation;
-import org.apache.isis.viewer.json.viewer.RepContext;
-import org.apache.isis.viewer.json.viewer.representations.LinkRepBuilder;
+import org.apache.isis.viewer.json.viewer.ResourceContext;
import org.apache.isis.viewer.json.viewer.representations.RepresentationBuilder;
-public class UserRepBuilder extends RepresentationBuilder {
+public class UserRepBuilder extends RepresentationBuilder<UserRepBuilder> {
- public static UserRepBuilder newBuilder(RepContext repContext, AuthenticationSession authenticationSession) {
- return new UserRepBuilder(repContext, authenticationSession);
+ public static UserRepBuilder newBuilder(ResourceContext resourceContext) {
+ return new UserRepBuilder(resourceContext);
}
- private final AuthenticationSession authenticationSession;
-
- private UserRepBuilder(RepContext repContext, AuthenticationSession authenticationSession) {
- super(repContext);
- this.authenticationSession = authenticationSession;
+ private UserRepBuilder(ResourceContext resourceContext) {
+ super(resourceContext);
+ withRepresentationType("user");
+ withSelf("user");
}
-
- public JsonRepresentation build() {
- JsonRepresentation linkToRepresentationType = LinkRepBuilder.newBuilder(repContext, "representationType", "representationTypes/user").build();
- representation.put("representationType", linkToRepresentationType);
-
- representation.put("self", LinkRepBuilder.newBuilder(repContext, "self", "user").build());
+
+ public UserRepBuilder withAuthenticationSession(AuthenticationSession authenticationSession) {
representation.put("username", authenticationSession.getUserName());
JsonRepresentation roles = JsonRepresentation.newArray();
for (String role : authenticationSession.getRoles()) {
roles.add(role);
}
representation.put("roles", roles);
-
- representation.put("links", JsonRepresentation.newArray());
- representation.put("metadata", JsonRepresentation.newMap());
+ return this;
+ }
+
+ public JsonRepresentation build() {
+ withLinks();
+ withMetadata();
return representation;
}