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/10 02:11:15 UTC

svn commit: r1167411 - in /incubator/isis/trunk/framework/viewer/json: json-applib/src/main/java/org/apache/isis/viewer/json/applib/ json-applib/src/main/java/org/apache/isis/viewer/json/applib/util/ json-applib/src/test/java/org/apache/isis/viewer/jso...

Author: danhaywood
Date: Sat Sep 10 00:11:14 2011
New Revision: 1167411

URL: http://svn.apache.org/viewvc?rev=1167411&view=rev
Log:
ISIS-109: more on exception handling (406, 4xx)

Added:
    incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/DomainServiceResourceTest_invokeAction.java
Modified:
    incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/HttpStatusCode.java
    incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/JsonRepresentation.java
    incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/RestfulRequest.java
    incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/RestfulResponse.java
    incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/util/JsonMapper.java
    incubator/isis/trunk/framework/viewer/json/json-applib/src/test/java/org/apache/isis/viewer/json/applib/HttpStatusCodeTest.java
    incubator/isis/trunk/framework/viewer/json/json-applib/src/test/java/org/apache/isis/viewer/json/applib/JsonRepresentationTest_arrayIterator.java
    incubator/isis/trunk/framework/viewer/json/json-applib/src/test/java/org/apache/isis/viewer/json/applib/JsonRepresentationTest_arraySize_elementAt_setElementAt.java
    incubator/isis/trunk/framework/viewer/json/json-applib/src/test/java/org/apache/isis/viewer/json/applib/JsonRepresentationTest_newArray.java
    incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/AnyResourceTest_exceptionHandling.java
    incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/DomainObjectResourceTest.java
    incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/DomainServiceResourceTest_service_serviceId.java
    incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/DomainServiceResourceTest_services.java
    incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/HomePageResourceTest.java
    incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/RepresentationMatchers.java
    incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/UserResourceTest.java
    incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/JsonApplicationException.java
    incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/JsonApplicationExceptionMapper.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/DomainObjectResourceServerside.java
    incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainservices/DomainServiceListRepBuilder.java
    incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainservices/DomainServiceResourceServerside.java
    incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/TypeActionRepBuilder.java
    incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/home/HomePageResourceServerside.java
    incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/user/UserResourceServerside.java
    incubator/isis/trunk/framework/viewer/json/json-viewer/src/test/java/org/apache/isis/viewer/json/viewer/resources/JsonExceptionMapperTest.java
    incubator/isis/trunk/framework/viewer/json/json-viewer/src/test/java/org/apache/isis/viewer/json/viewer/resources/RepresentationTypeTest.java

Modified: incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/JsonRepresentation.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/JsonRepresentation.java?rev=1167411&r1=1167410&r2=1167411&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/JsonRepresentation.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/JsonRepresentation.java Sat Sep 10 00:11:14 2011
@@ -35,7 +35,6 @@ import org.jdom.output.XMLOutputter;
 import org.jdom.xpath.XPath;
 
 import com.google.common.base.Function;
-import com.google.common.collect.Iterables;
 import com.google.common.collect.Iterators;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
@@ -578,7 +577,7 @@ public class JsonRepresentation {
         return (Function<JsonNode, T>) transformer;
     }
 
-    public JsonRepresentation arrayElementAt(int i) {
+    public JsonRepresentation arrayGet(int i) {
         ensureIsAnArrayAtLeastAsLargeAs(i);
         return new JsonRepresentation(jsonNode.get(i));
     }

Modified: incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/RestfulRequest.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/RestfulRequest.java?rev=1167411&r1=1167410&r2=1167411&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/RestfulRequest.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/RestfulRequest.java Sat Sep 10 00:11:14 2011
@@ -4,7 +4,6 @@ import java.util.Date;
 
 import javax.ws.rs.core.Response;
 
-import org.jboss.resteasy.client.ClientExecutor;
 import org.jboss.resteasy.client.ClientRequest;
 
 public final class RestfulRequest {

Modified: incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/RestfulResponse.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/RestfulResponse.java?rev=1167411&r1=1167410&r2=1167411&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/RestfulResponse.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/RestfulResponse.java Sat Sep 10 00:11:14 2011
@@ -2,18 +2,221 @@ package org.apache.isis.viewer.json.appl
 
 import java.io.IOException;
 import java.util.Date;
+import java.util.Map;
 
 import javax.ws.rs.core.CacheControl;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.MultivaluedMap;
 import javax.ws.rs.core.Response;
+import javax.ws.rs.core.Response.Status;
+import javax.ws.rs.core.Response.Status.Family;
+import javax.ws.rs.core.Response.StatusType;
 
 import org.apache.isis.viewer.json.applib.util.JsonMapper;
 import org.codehaus.jackson.JsonParseException;
 import org.codehaus.jackson.map.JsonMappingException;
 
+import com.google.common.collect.Maps;
+
 public class RestfulResponse<T> {
 
+    public final static class HttpStatusCode {
+
+        private final static Map<Status, HttpStatusCode> statii = Maps.newHashMap();
+        private final static Map<Integer, HttpStatusCode> statusCodes = Maps.newHashMap();
+
+        private static class StatusTypeImpl implements StatusType {
+
+            private int statusCode;
+            private Family family;
+            private String reasonPhrase;
+
+            private StatusTypeImpl(final int statusCode, final Family family,
+                    final String reasonPhrase) {
+                this.statusCode = statusCode;
+                this.family = family;
+                this.reasonPhrase = reasonPhrase;
+            }
+
+            @Override
+            public int getStatusCode() {
+                return statusCode;
+            }
+
+            @Override
+            public Family getFamily() {
+                return family;
+            }
+
+            @Override
+            public String getReasonPhrase() {
+                return reasonPhrase;
+            }
+        }
+
+        public static HttpStatusCode lookup(int status) {
+            return statusCodes.get(status);
+        }
+
+        public static Family lookupFamily(int statusCode) {
+            switch (statusCode / 100)
+            {
+               case 1:
+                  return Family.INFORMATIONAL;
+               case 2:
+                  return Family.SUCCESSFUL;
+               case 3:
+                  return Family.REDIRECTION;
+               case 4:
+                  return Family.CLIENT_ERROR;
+               case 5:
+                  return Family.SERVER_ERROR;
+               default:
+                  return Family.OTHER;
+            }
+        }
+
+        //public static final int SC_CONTINUE = 100;
+        //public static final int SC_SWITCHING_PROTOCOLS = 101;
+        //public static final int SC_PROCESSING = 102;
+
+        public final static HttpStatusCode OK = new HttpStatusCode(200, Status.OK);
+        public final static HttpStatusCode CREATED = new HttpStatusCode(201, Status.CREATED);
+        
+        //public static final int SC_ACCEPTED = 202;
+        //public static final int SC_NON_AUTHORITATIVE_INFORMATION = 203;
+        
+        public static final HttpStatusCode NO_CONTENT = new HttpStatusCode(204, Status.NO_CONTENT);
+
+        //public static final int SC_RESET_CONTENT = 205;
+        //public static final int SC_PARTIAL_CONTENT = 206;
+        //public static final int SC_MULTI_STATUS = 207;
+        //public static final int SC_MULTIPLE_CHOICES = 300;
+        //public static final int SC_MOVED_PERMANENTLY = 301;
+        //public static final int SC_MOVED_TEMPORARILY = 302;
+        //public static final int SC_SEE_OTHER = 303;
+        public final static HttpStatusCode NOT_MODIFIED = new HttpStatusCode(304, Status.BAD_REQUEST);
+
+        //public static final int SC_NOT_MODIFIED = 304;
+        //public static final int SC_USE_PROXY = 305;
+        //public static final int SC_TEMPORARY_REDIRECT = 307;
+        
+        public final static HttpStatusCode BAD_REQUEST = new HttpStatusCode(400, Status.BAD_REQUEST);
+        public final static HttpStatusCode UNAUTHORIZED = new HttpStatusCode(401, Status.UNAUTHORIZED);
+
+        //public static final int SC_PAYMENT_REQUIRED = 402;
+        //public static final int SC_FORBIDDEN = 403;
+
+        public final static HttpStatusCode NOT_FOUND = new HttpStatusCode(404, Status.NOT_FOUND);
+        public final static HttpStatusCode METHOD_NOT_ALLOWED = new HttpStatusCode(405, new StatusTypeImpl(405, Family.CLIENT_ERROR, "Method not allowed"));
+        public final static HttpStatusCode NOT_ACCEPTABLE = new HttpStatusCode(406, Status.NOT_ACCEPTABLE);
+
+        //public static final int SC_PROXY_AUTHENTICATION_REQUIRED = 407;
+        //public static final int SC_REQUEST_TIMEOUT = 408;
+        
+        public final static HttpStatusCode CONFLICT = new HttpStatusCode(409, Status.CONFLICT);
+
+        //public static final int SC_GONE = 410;
+        //public static final int SC_LENGTH_REQUIRED = 411;
+        //public static final int SC_PRECONDITION_FAILED = 412;
+        //public static final int SC_REQUEST_TOO_LONG = 413;
+        //public static final int SC_REQUEST_URI_TOO_LONG = 414;
+        //public static final int SC_UNSUPPORTED_MEDIA_TYPE = 415;
+        
+        public final static HttpStatusCode UNSUPPORTED_MEDIA_TYPE = new HttpStatusCode(415, Status.UNSUPPORTED_MEDIA_TYPE);
+
+        //public static final int SC_REQUESTED_RANGE_NOT_SATISFIABLE = 416;
+        //public static final int SC_EXPECTATION_FAILED = 417;
+        //public static final int SC_INSUFFICIENT_SPACE_ON_RESOURCE = 419;
+
+        public final static HttpStatusCode METHOD_FAILURE = new HttpStatusCode(420, new StatusTypeImpl(420, Family.CLIENT_ERROR, "Method failure"));
+
+        //public static final int SC_UNPROCESSABLE_ENTITY = 422;
+        //public static final int SC_LOCKED = 423;
+        //public static final int SC_FAILED_DEPENDENCY = 424;
+        
+        public final static HttpStatusCode INTERNAL_SERVER_ERROR = new HttpStatusCode(500, Status.INTERNAL_SERVER_ERROR);
+        public final static HttpStatusCode NOT_IMPLEMENTED = new HttpStatusCode(501, new StatusTypeImpl(501, Family.SERVER_ERROR, "Not implemented"));
+
+        //public static final int SC_BAD_GATEWAY = 502;
+        //public static final int SC_SERVICE_UNAVAILABLE = 503;
+        //public static final int SC_GATEWAY_TIMEOUT = 504;
+        //public static final int SC_HTTP_VERSION_NOT_SUPPORTED = 505;
+        //public static final int SC_INSUFFICIENT_STORAGE = 507;
+
+        public final static HttpStatusCode statusFor(int statusCode) {
+            HttpStatusCode httpStatusCode = statusCodes.get(statusCode);
+            if(httpStatusCode != null) {
+                return httpStatusCode;
+            }
+            return syncStatusFor(statusCode);
+        }
+
+        public final static HttpStatusCode statusFor(Status status) {
+            return statii.get(status);
+        }
+
+        private final static synchronized HttpStatusCode syncStatusFor(int statusCode) {
+            HttpStatusCode httpStatusCode = statusCodes.get(statusCode);
+            if(httpStatusCode == null) {
+                httpStatusCode = new HttpStatusCode(statusCode, null);
+                statusCodes.put(statusCode, httpStatusCode);
+            }
+            return httpStatusCode;
+        }
+        
+
+        private final int statusCode;
+        private final Family family;
+        private final StatusType jaxrsStatusType;
+
+        private HttpStatusCode(int statusCode, StatusType status) {
+            this.statusCode = statusCode;
+            this.jaxrsStatusType = status;
+            family = lookupFamily(statusCode);
+            statusCodes.put(statusCode, this);
+        }
+        
+        public int getStatusCode() {
+            return statusCode;
+        }
+        
+        public StatusType getJaxrsStatusType() {
+            return jaxrsStatusType;
+        }
+        
+        public Family getFamily() {
+            return family;
+        }
+
+        
+        @Override
+        public int hashCode() {
+            return statusCode;
+        }
+
+        @Override
+        public boolean equals(Object obj) {
+            if (this == obj)
+                return true;
+            if (obj == null)
+                return false;
+            if (getClass() != obj.getClass())
+                return false;
+            HttpStatusCode other = (HttpStatusCode) obj;
+            if (statusCode != other.statusCode)
+                return false;
+            return true;
+        }
+
+        @Override
+        public String toString() {
+            return "HttpStatusCode " + statusCode + ", " + family;
+        }
+        
+    }
+
+
     public static class Header<X> {
         
         public final static Header<String> WARNING = new Header<String>("Warning", Parser.forStrings());

Modified: incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/util/JsonMapper.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/util/JsonMapper.java?rev=1167411&r1=1167410&r2=1167411&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/util/JsonMapper.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/util/JsonMapper.java Sat Sep 10 00:11:14 2011
@@ -7,9 +7,7 @@ import java.util.List;
 import java.util.Map;
 
 import javax.ws.rs.core.Response;
-import javax.ws.rs.core.Response.Status.Family;
 
-import org.apache.isis.viewer.json.applib.HttpStatusCode;
 import org.apache.isis.viewer.json.applib.JsonRepresentation;
 import org.codehaus.jackson.JsonGenerationException;
 import org.codehaus.jackson.JsonGenerator;

Modified: incubator/isis/trunk/framework/viewer/json/json-applib/src/test/java/org/apache/isis/viewer/json/applib/HttpStatusCodeTest.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-applib/src/test/java/org/apache/isis/viewer/json/applib/HttpStatusCodeTest.java?rev=1167411&r1=1167410&r2=1167411&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-applib/src/test/java/org/apache/isis/viewer/json/applib/HttpStatusCodeTest.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-applib/src/test/java/org/apache/isis/viewer/json/applib/HttpStatusCodeTest.java Sat Sep 10 00:11:14 2011
@@ -5,6 +5,7 @@ import static org.junit.Assert.assertTha
 
 import javax.ws.rs.core.Response.Status.Family;
 
+import org.apache.isis.viewer.json.applib.RestfulResponse.HttpStatusCode;
 import org.junit.Test;
 
 public class HttpStatusCodeTest {

Modified: incubator/isis/trunk/framework/viewer/json/json-applib/src/test/java/org/apache/isis/viewer/json/applib/JsonRepresentationTest_arrayIterator.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-applib/src/test/java/org/apache/isis/viewer/json/applib/JsonRepresentationTest_arrayIterator.java?rev=1167411&r1=1167410&r2=1167411&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-applib/src/test/java/org/apache/isis/viewer/json/applib/JsonRepresentationTest_arrayIterator.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-applib/src/test/java/org/apache/isis/viewer/json/applib/JsonRepresentationTest_arrayIterator.java Sat Sep 10 00:11:14 2011
@@ -20,8 +20,6 @@ package org.apache.isis.viewer.json.appl
 
 import static org.apache.isis.viewer.json.applib.JsonUtils.readJson;
 import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.not;
-import static org.hamcrest.CoreMatchers.nullValue;
 import static org.junit.Assert.assertThat;
 
 import java.io.IOException;
@@ -29,7 +27,6 @@ import java.util.Iterator;
 
 import org.codehaus.jackson.JsonParseException;
 import org.codehaus.jackson.map.JsonMappingException;
-import org.junit.Before;
 import org.junit.Test;
 
 public class JsonRepresentationTest_arrayIterator {

Modified: incubator/isis/trunk/framework/viewer/json/json-applib/src/test/java/org/apache/isis/viewer/json/applib/JsonRepresentationTest_arraySize_elementAt_setElementAt.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-applib/src/test/java/org/apache/isis/viewer/json/applib/JsonRepresentationTest_arraySize_elementAt_setElementAt.java?rev=1167411&r1=1167410&r2=1167411&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-applib/src/test/java/org/apache/isis/viewer/json/applib/JsonRepresentationTest_arraySize_elementAt_setElementAt.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-applib/src/test/java/org/apache/isis/viewer/json/applib/JsonRepresentationTest_arraySize_elementAt_setElementAt.java Sat Sep 10 00:11:14 2011
@@ -52,7 +52,7 @@ public class JsonRepresentationTest_arra
     @Test(expected=IndexOutOfBoundsException.class)
     public void elementAt_outOfBounds() throws JsonParseException, JsonMappingException, IOException {
         jsonRepresentation = new JsonRepresentation(readJson("emptyList.json"));
-        jsonRepresentation.arrayElementAt(0);
+        jsonRepresentation.arrayGet(0);
     }
 
     @Test(expected=IndexOutOfBoundsException.class)
@@ -70,7 +70,7 @@ public class JsonRepresentationTest_arra
     @Test
     public void elementAt_forNonEmptyList() throws JsonParseException, JsonMappingException, IOException {
         jsonRepresentation = new JsonRepresentation(readJson("list.json"));
-        assertThat(jsonRepresentation.arrayElementAt(0), is(not(nullValue())));
+        assertThat(jsonRepresentation.arrayGet(0), is(not(nullValue())));
     }
 
     @Test
@@ -94,7 +94,7 @@ public class JsonRepresentationTest_arra
     @Test(expected=IllegalStateException.class)
     public void elementAt_forMap() throws JsonParseException, JsonMappingException, IOException {
         jsonRepresentation = new JsonRepresentation(readJson("emptyMap.json"));
-        jsonRepresentation.arrayElementAt(0);
+        jsonRepresentation.arrayGet(0);
     }
 
     @Test(expected=IllegalStateException.class)
@@ -108,7 +108,7 @@ public class JsonRepresentationTest_arra
     public void elementAt_forValue() throws JsonParseException, JsonMappingException, IOException {
         jsonRepresentation = new JsonRepresentation(readJson("map.json"));
         JsonRepresentation valueRepresentation = jsonRepresentation.getRepresentation("anInt");
-        valueRepresentation.arrayElementAt(0);
+        valueRepresentation.arrayGet(0);
     }
 
 }

Modified: incubator/isis/trunk/framework/viewer/json/json-applib/src/test/java/org/apache/isis/viewer/json/applib/JsonRepresentationTest_newArray.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-applib/src/test/java/org/apache/isis/viewer/json/applib/JsonRepresentationTest_newArray.java?rev=1167411&r1=1167410&r2=1167411&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-applib/src/test/java/org/apache/isis/viewer/json/applib/JsonRepresentationTest_newArray.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-applib/src/test/java/org/apache/isis/viewer/json/applib/JsonRepresentationTest_newArray.java Sat Sep 10 00:11:14 2011
@@ -36,8 +36,8 @@ public class JsonRepresentationTest_newA
     public void newArrayInitialSize() throws Exception {
         JsonRepresentation jsonRepresentation = JsonRepresentation.newArray(2);
         assertThat(jsonRepresentation.arraySize(), is(2));
-        assertThat(jsonRepresentation.arrayElementAt(0).isNull(), is(true));
-        assertThat(jsonRepresentation.arrayElementAt(1).isNull(), is(true));
+        assertThat(jsonRepresentation.arrayGet(0).isNull(), is(true));
+        assertThat(jsonRepresentation.arrayGet(1).isNull(), is(true));
     }
 
 }

Modified: incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/AnyResourceTest_exceptionHandling.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/AnyResourceTest_exceptionHandling.java?rev=1167411&r1=1167410&r2=1167411&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/AnyResourceTest_exceptionHandling.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/AnyResourceTest_exceptionHandling.java Sat Sep 10 00:11:14 2011
@@ -7,17 +7,16 @@ import javax.ws.rs.core.MediaType;
 
 import org.apache.isis.runtimes.dflt.webserver.WebServer;
 import org.apache.isis.viewer.json.applib.HttpMethod;
-import org.apache.isis.viewer.json.applib.HttpStatusCode;
 import org.apache.isis.viewer.json.applib.RepresentationType;
 import org.apache.isis.viewer.json.applib.RestfulClient;
 import org.apache.isis.viewer.json.applib.RestfulRequest;
 import org.apache.isis.viewer.json.applib.RestfulResponse;
+import org.apache.isis.viewer.json.applib.RestfulResponse.HttpStatusCode;
 import org.apache.isis.viewer.json.applib.homepage.HomePageRepresentation;
 import org.jboss.resteasy.client.ClientRequest;
 import org.jboss.resteasy.client.ClientResponse;
 import org.jboss.resteasy.util.HttpHeaderNames;
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Rule;
 import org.junit.Test;
 

Modified: incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/DomainObjectResourceTest.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/DomainObjectResourceTest.java?rev=1167411&r1=1167410&r2=1167411&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/DomainObjectResourceTest.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/DomainObjectResourceTest.java Sat Sep 10 00:11:14 2011
@@ -14,15 +14,14 @@ import javax.ws.rs.core.Response.Status.
 
 import org.apache.isis.runtimes.dflt.webserver.WebServer;
 import org.apache.isis.tck.dom.scalars.ApplibValuedEntity;
-import org.apache.isis.tck.objstore.dflt.scalars.ApplibValuedEntityRepositoryDefault;
 import org.apache.isis.viewer.json.applib.JsonRepresentation;
 import org.apache.isis.viewer.json.applib.RestfulClient;
 import org.apache.isis.viewer.json.applib.RestfulResponse;
 import org.apache.isis.viewer.json.applib.blocks.Link;
 import org.apache.isis.viewer.json.applib.blocks.Method;
-import org.apache.isis.viewer.json.applib.domainobjects.ObjectActionRepresentation;
 import org.apache.isis.viewer.json.applib.domainobjects.DomainObjectRepresentation;
 import org.apache.isis.viewer.json.applib.domainobjects.DomainObjectResource;
+import org.apache.isis.viewer.json.applib.domainobjects.ObjectActionRepresentation;
 import org.apache.isis.viewer.json.applib.domainobjects.ObjectPropertyRepresentation;
 import org.apache.isis.viewer.json.applib.domainobjects.ScalarValueRepresentation;
 import org.junit.Before;
@@ -45,7 +44,7 @@ public class DomainObjectResourceTest {
     }
 
 
-    @Ignore("to get working again")
+    @Ignore
     @Test
     public void returnsDomainObjectRepresentation() throws Exception {
         
@@ -53,7 +52,7 @@ public class DomainObjectResourceTest {
         DomainObjectResource domainObjectResource = client.getDomainObjectResource();
         
         // when
-        Response domainObjectResp = domainObjectResource.object("OID:1");
+        Response domainObjectResp = domainObjectResource.object("OID:6");
         RestfulResponse<DomainObjectRepresentation> domainObjectJsonResp = RestfulResponse.of(domainObjectResp, DomainObjectRepresentation.class);
         assertThat(domainObjectJsonResp.getStatus().getFamily(), is(Family.SUCCESSFUL));
         
@@ -239,7 +238,7 @@ public class DomainObjectResourceTest {
         assertThat(actionInvokeRepr.isArray(), is(true));
         assertThat(actionInvokeRepr.arraySize(), is(5));
         
-        JsonRepresentation domainObjectRefRepr = actionInvokeRepr.arrayElementAt(0);
+        JsonRepresentation domainObjectRefRepr = actionInvokeRepr.arrayGet(0);
 
         assertThat(domainObjectRefRepr, is(not(nullValue())));
         assertThat(domainObjectRefRepr.getString("title"), is("Untitled Applib Values Entity")); // TODO

Added: incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/DomainServiceResourceTest_invokeAction.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/DomainServiceResourceTest_invokeAction.java?rev=1167411&view=auto
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/DomainServiceResourceTest_invokeAction.java (added)
+++ incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/DomainServiceResourceTest_invokeAction.java Sat Sep 10 00:11:14 2011
@@ -0,0 +1,50 @@
+package org.apache.isis.viewer.json.tck;
+
+import java.io.IOException;
+
+import org.apache.isis.runtimes.dflt.webserver.WebServer;
+import org.apache.isis.viewer.json.applib.RestfulClient;
+import org.apache.isis.viewer.json.applib.domainobjects.DomainObjectRepresentation;
+import org.apache.isis.viewer.json.applib.domainobjects.DomainServiceResource;
+import org.codehaus.jackson.JsonParseException;
+import org.codehaus.jackson.map.JsonMappingException;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Rule;
+import org.junit.Test;
+
+
+public class DomainServiceResourceTest_invokeAction {
+
+    @Rule
+    public IsisWebServerRule webServerRule = new IsisWebServerRule();
+    
+    private RestfulClient client;
+    private DomainServiceResource resource;
+
+    @Before
+    public void setUp() throws Exception {
+        WebServer webServer = webServerRule.getWebServer();
+        client = new RestfulClient(webServer.getBase());
+        
+        resource = client.getDomainServiceResource();
+    }
+
+
+    // adding this just to be able to locate a domain object directly.
+    @Ignore
+    @Test
+    public void happyCase() throws Exception {
+        DomainObjectRepresentation simplesService = givenRepresentation("simples");
+        
+        
+    }
+
+
+    private DomainObjectRepresentation givenRepresentation(String serviceId) throws JsonParseException, JsonMappingException, IOException {
+        return RepresentationMatchers.entityOf(resource.service(serviceId), DomainObjectRepresentation.class);
+    }
+
+
+}
+    
\ No newline at end of file

Modified: incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/DomainServiceResourceTest_service_serviceId.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/DomainServiceResourceTest_service_serviceId.java?rev=1167411&r1=1167410&r2=1167411&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/DomainServiceResourceTest_service_serviceId.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/DomainServiceResourceTest_service_serviceId.java Sat Sep 10 00:11:14 2011
@@ -1,38 +1,35 @@
 package org.apache.isis.viewer.json.tck;
 
+import static org.apache.isis.core.commons.matchers.IsisMatchers.matches;
 import static org.apache.isis.viewer.json.tck.RepresentationMatchers.assertThat;
 import static org.apache.isis.viewer.json.tck.RepresentationMatchers.isArray;
 import static org.apache.isis.viewer.json.tck.RepresentationMatchers.isFollowableLinkToSelf;
 import static org.apache.isis.viewer.json.tck.RepresentationMatchers.isLink;
 import static org.apache.isis.viewer.json.tck.RepresentationMatchers.isMap;
-import static org.apache.isis.core.commons.matchers.IsisMatchers.*;
-
-import static org.hamcrest.CoreMatchers.*;
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.not;
+import static org.hamcrest.CoreMatchers.nullValue;
 import static org.junit.Assert.assertThat;
 
 import java.io.IOException;
 
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
-import javax.ws.rs.core.Response.Status.Family;
 
 import org.apache.isis.runtimes.dflt.webserver.WebServer;
-import org.apache.isis.viewer.json.applib.HttpStatusCode;
 import org.apache.isis.viewer.json.applib.JsonRepresentation;
 import org.apache.isis.viewer.json.applib.RepresentationType;
 import org.apache.isis.viewer.json.applib.RestfulClient;
 import org.apache.isis.viewer.json.applib.RestfulResponse;
+import org.apache.isis.viewer.json.applib.RestfulResponse.HttpStatusCode;
 import org.apache.isis.viewer.json.applib.blocks.Link;
 import org.apache.isis.viewer.json.applib.blocks.Method;
 import org.apache.isis.viewer.json.applib.domainobjects.DomainObjectRepresentation;
 import org.apache.isis.viewer.json.applib.domainobjects.DomainServiceResource;
-import org.apache.isis.viewer.json.applib.domainobjects.DomainServicesRepresentation;
 import org.apache.isis.viewer.json.applib.domainobjects.ObjectActionRepresentation;
 import org.apache.isis.viewer.json.viewer.resources.domainobjects.MemberType;
 import org.codehaus.jackson.JsonParseException;
 import org.codehaus.jackson.map.JsonMappingException;
-import org.hamcrest.CoreMatchers;
-import org.hamcrest.Matchers;
 import org.junit.Before;
 import org.junit.Ignore;
 import org.junit.Rule;
@@ -111,10 +108,18 @@ public class DomainServiceResourceTest_s
             assertThat(memberRepr.getDisabledReason(), is(nullValue()));
         }
         
-        JsonRepresentation listAction = repr.xpath("/members/e[memberType='objectAction' and actionId='list']").getRepresentation("e");
-        for (JsonRepresentation memberRepr : actions.arrayIterable()) {
-            
-        }
+        JsonRepresentation listActionRepr = repr.xpath("/members/e[memberType='objectAction' and actionId='list']").getRepresentation("e");
+        Link listActionDetailsLink = listActionRepr.getLink("actionDetails");
+        
+        // when
+        Response listActionDetailsResp = client.follow(listActionDetailsLink);
+        
+        // then
+        RestfulResponse<ObjectActionRepresentation> listActionDetailsJsonResp = RestfulResponse.of(listActionDetailsResp, ObjectActionRepresentation.class);
+        assertThat(listActionDetailsJsonResp.getStatus(), is(HttpStatusCode.OK));
+
+        ObjectActionRepresentation listActionDetailsRepr = listActionDetailsJsonResp.getEntity();
+        
     }
 
     @Ignore("TODO - need to add fixture data")

Modified: incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/DomainServiceResourceTest_services.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/DomainServiceResourceTest_services.java?rev=1167411&r1=1167410&r2=1167411&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/DomainServiceResourceTest_services.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/DomainServiceResourceTest_services.java Sat Sep 10 00:11:14 2011
@@ -15,11 +15,11 @@ import javax.ws.rs.core.Response;
 import javax.ws.rs.core.Response.Status.Family;
 
 import org.apache.isis.runtimes.dflt.webserver.WebServer;
-import org.apache.isis.viewer.json.applib.HttpStatusCode;
 import org.apache.isis.viewer.json.applib.JsonRepresentation;
 import org.apache.isis.viewer.json.applib.RepresentationType;
 import org.apache.isis.viewer.json.applib.RestfulClient;
 import org.apache.isis.viewer.json.applib.RestfulResponse;
+import org.apache.isis.viewer.json.applib.RestfulResponse.HttpStatusCode;
 import org.apache.isis.viewer.json.applib.blocks.Link;
 import org.apache.isis.viewer.json.applib.blocks.Method;
 import org.apache.isis.viewer.json.applib.domainobjects.DomainServiceResource;

Modified: incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/HomePageResourceTest.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/HomePageResourceTest.java?rev=1167411&r1=1167410&r2=1167411&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/HomePageResourceTest.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/HomePageResourceTest.java Sat Sep 10 00:11:14 2011
@@ -2,9 +2,9 @@ package org.apache.isis.viewer.json.tck;
 
 import static org.apache.isis.viewer.json.tck.RepresentationMatchers.assertThat;
 import static org.apache.isis.viewer.json.tck.RepresentationMatchers.entityOf;
+import static org.apache.isis.viewer.json.tck.RepresentationMatchers.isArray;
 import static org.apache.isis.viewer.json.tck.RepresentationMatchers.isFollowableLinkToSelf;
 import static org.apache.isis.viewer.json.tck.RepresentationMatchers.isLink;
-import static org.apache.isis.viewer.json.tck.RepresentationMatchers.isArray;
 import static org.apache.isis.viewer.json.tck.RepresentationMatchers.isMap;
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.CoreMatchers.not;
@@ -18,10 +18,10 @@ import javax.ws.rs.core.Response;
 import javax.ws.rs.core.Response.Status.Family;
 
 import org.apache.isis.runtimes.dflt.webserver.WebServer;
-import org.apache.isis.viewer.json.applib.HttpStatusCode;
 import org.apache.isis.viewer.json.applib.RepresentationType;
 import org.apache.isis.viewer.json.applib.RestfulClient;
 import org.apache.isis.viewer.json.applib.RestfulResponse;
+import org.apache.isis.viewer.json.applib.RestfulResponse.HttpStatusCode;
 import org.apache.isis.viewer.json.applib.blocks.Method;
 import org.apache.isis.viewer.json.applib.homepage.HomePageRepresentation;
 import org.apache.isis.viewer.json.applib.homepage.HomePageResource;

Modified: incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/RepresentationMatchers.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/RepresentationMatchers.java?rev=1167411&r1=1167410&r2=1167411&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/RepresentationMatchers.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/RepresentationMatchers.java Sat Sep 10 00:11:14 2011
@@ -4,11 +4,11 @@ import java.io.IOException;
 
 import javax.ws.rs.core.Response;
 
-import org.apache.isis.viewer.json.applib.HttpStatusCode;
 import org.apache.isis.viewer.json.applib.JsonRepresentation;
 import org.apache.isis.viewer.json.applib.JsonRepresentation.LinksToSelf;
 import org.apache.isis.viewer.json.applib.RestfulClient;
 import org.apache.isis.viewer.json.applib.RestfulResponse;
+import org.apache.isis.viewer.json.applib.RestfulResponse.HttpStatusCode;
 import org.apache.isis.viewer.json.applib.blocks.Link;
 import org.apache.isis.viewer.json.applib.blocks.Method;
 import org.codehaus.jackson.JsonParseException;

Modified: incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/UserResourceTest.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/UserResourceTest.java?rev=1167411&r1=1167410&r2=1167411&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/UserResourceTest.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/UserResourceTest.java Sat Sep 10 00:11:14 2011
@@ -18,13 +18,11 @@ import javax.ws.rs.core.Response;
 import javax.ws.rs.core.Response.Status.Family;
 
 import org.apache.isis.runtimes.dflt.webserver.WebServer;
-import org.apache.isis.viewer.json.applib.HttpStatusCode;
 import org.apache.isis.viewer.json.applib.RepresentationType;
 import org.apache.isis.viewer.json.applib.RestfulClient;
 import org.apache.isis.viewer.json.applib.RestfulResponse;
+import org.apache.isis.viewer.json.applib.RestfulResponse.HttpStatusCode;
 import org.apache.isis.viewer.json.applib.blocks.Method;
-import org.apache.isis.viewer.json.applib.homepage.HomePageRepresentation;
-import org.apache.isis.viewer.json.applib.homepage.HomePageResource;
 import org.apache.isis.viewer.json.applib.user.UserRepresentation;
 import org.apache.isis.viewer.json.applib.user.UserResource;
 import org.codehaus.jackson.JsonParseException;

Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/JsonApplicationException.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/JsonApplicationException.java?rev=1167411&r1=1167410&r2=1167411&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/JsonApplicationException.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/JsonApplicationException.java Sat Sep 10 00:11:14 2011
@@ -2,42 +2,36 @@ package org.apache.isis.viewer.json.view
 
 import javax.ws.rs.WebApplicationException;
 
-import org.apache.isis.viewer.json.applib.HttpStatusCode;
+import org.apache.isis.viewer.json.applib.RestfulResponse.HttpStatusCode;
 
-public class JsonApplicationException extends WebApplicationException {
+public class JsonApplicationException extends RuntimeException {
 
     public static final JsonApplicationException create(HttpStatusCode httpStatusCode) {
-        return new JsonApplicationException(httpStatusCode, null, null);
+        return create(httpStatusCode, null);
     }
 
-    public static JsonApplicationException create(HttpStatusCode httpStatusCode, String message, Object... args) {
-        return create(httpStatusCode, String.format(message, args));
+    public static JsonApplicationException create(HttpStatusCode httpStatusCode, String message,  Object... args) {
+        return create(httpStatusCode, null, message, args);
     }
 
     public static JsonApplicationException create(HttpStatusCode httpStatusCode, Exception cause) {
-        return create(httpStatusCode, null, cause);
+        return create(httpStatusCode, cause, null);
     }
     
-    public static JsonApplicationException create(HttpStatusCode httpStatusCode, String message, Exception cause) {
-        return new JsonApplicationException(httpStatusCode, message, cause);
+    public static JsonApplicationException create(HttpStatusCode httpStatusCode, Exception cause, String message, Object... args) {
+        return new JsonApplicationException(httpStatusCode, formatString(message, args), cause);
+    }
+
+    private static String formatString(String formatStr, Object... args) {
+        return formatStr != null? String.format(formatStr, args): null;
     }
 
     private static final long serialVersionUID = 1L;
     private HttpStatusCode httpStatusCode;
-    private final String message;
 
     private JsonApplicationException(HttpStatusCode httpStatusCode, String message, Throwable ex) {
-        super(ex, httpStatusCode.getStatusCode());
+        super(message, ex);
         this.httpStatusCode = httpStatusCode;
-        this.message = message;
-    }
-    
-    /**
-     * Overridden since cannot pass up to constructor.
-     */
-    @Override
-    public String getMessage() {
-        return message;
     }
     
     public HttpStatusCode getHttpStatusCode() {
@@ -45,5 +39,4 @@ public class JsonApplicationException ex
     }
 
 
-
 }

Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/JsonApplicationExceptionMapper.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/JsonApplicationExceptionMapper.java?rev=1167411&r1=1167410&r2=1167411&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/JsonApplicationExceptionMapper.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/JsonApplicationExceptionMapper.java Sat Sep 10 00:11:14 2011
@@ -5,17 +5,16 @@ import java.util.List;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 import javax.ws.rs.core.Response.ResponseBuilder;
-import javax.ws.rs.core.Response.Status;
 import javax.ws.rs.ext.ExceptionMapper;
 import javax.ws.rs.ext.Provider;
 
 import org.apache.commons.lang.exception.ExceptionUtils;
-import org.apache.isis.viewer.json.applib.HttpStatusCode;
 import org.apache.isis.viewer.json.applib.RestfulResponse;
 import org.apache.isis.viewer.json.applib.util.JsonMapper;
 
 import com.google.common.collect.Lists;
 
+@Provider
 public class JsonApplicationExceptionMapper implements ExceptionMapper<JsonApplicationException> {
 
     @Override
@@ -24,17 +23,14 @@ public class JsonApplicationExceptionMap
                 Response.status(ex.getHttpStatusCode().getJaxrsStatusType())
                 .type(MediaType.APPLICATION_JSON_TYPE)
                 .entity(jsonFor(ex));
-        withWarningIfAny(ex, builder);
-        return builder.build();
-    }
-
-    private static void withWarningIfAny(JsonApplicationException ex, ResponseBuilder builder) {
         String message = ex.getMessage();
         if(message != null) {
             builder.header(RestfulResponse.Header.WARNING.getName(), message);
         }
+        return builder.build();
     }
 
+
     private static class ExceptionPojo {
 
         public static ExceptionPojo create(Exception ex) {

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=1167411&r1=1167410&r2=1167411&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 Sat Sep 10 00:11:14 2011
@@ -31,12 +31,9 @@ import javax.ws.rs.core.HttpHeaders;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Request;
 import javax.ws.rs.core.Response;
-import javax.ws.rs.core.Response.ResponseBuilder;
-import javax.ws.rs.core.Response.Status;
 import javax.ws.rs.core.SecurityContext;
 import javax.ws.rs.core.UriInfo;
 
-import org.apache.commons.lang.exception.ExceptionUtils;
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.oid.stringable.OidStringifier;
@@ -49,9 +46,9 @@ 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.RestfulResponse.HttpStatusCode;
 import org.apache.isis.viewer.json.applib.util.JsonMapper;
 import org.apache.isis.viewer.json.viewer.JsonApplicationException;
 import org.apache.isis.viewer.json.viewer.ResourceContext;

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=1167411&r1=1167410&r2=1167411&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 Sat Sep 10 00:11:14 2011
@@ -47,7 +47,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.RestfulResponse.HttpStatusCode;
 import org.apache.isis.viewer.json.applib.domainobjects.DomainObjectResource;
 import org.apache.isis.viewer.json.applib.util.JsonMapper;
 import org.apache.isis.viewer.json.viewer.representations.RepresentationBuilder;
@@ -56,7 +56,6 @@ import org.apache.isis.viewer.json.viewe
 import org.apache.isis.viewer.json.viewer.util.UrlDecoderUtils;
 import org.codehaus.jackson.JsonParseException;
 import org.codehaus.jackson.map.JsonMappingException;
-import org.jboss.resteasy.annotations.ClientResponseType;
 
 import com.google.common.base.Charsets;
 import com.google.common.collect.Lists;

Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainservices/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/domainservices/DomainServiceListRepBuilder.java?rev=1167411&r1=1167410&r2=1167411&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainservices/DomainServiceListRepBuilder.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainservices/DomainServiceListRepBuilder.java Sat Sep 10 00:11:14 2011
@@ -17,12 +17,9 @@
 package org.apache.isis.viewer.json.viewer.resources.domainservices;
 
 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.ResourceContext;
-import org.apache.isis.viewer.json.viewer.representations.LinkBuilder;
 import org.apache.isis.viewer.json.viewer.resources.domainobjects.DomainObjectListRepBuilder;
-import org.apache.isis.viewer.json.viewer.resources.domainobjects.DomainObjectRepBuilder;
 
 class DomainServiceListRepBuilder extends DomainObjectListRepBuilder {
 

Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainservices/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/domainservices/DomainServiceResourceServerside.java?rev=1167411&r1=1167410&r2=1167411&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainservices/DomainServiceResourceServerside.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainservices/DomainServiceResourceServerside.java Sat Sep 10 00:11:14 2011
@@ -29,20 +29,17 @@ import javax.ws.rs.Produces;
 import javax.ws.rs.QueryParam;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
-import javax.ws.rs.core.Response.ResponseBuilder;
 
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.services.ServiceUtil;
-import org.apache.isis.viewer.json.applib.HttpStatusCode;
 import org.apache.isis.viewer.json.applib.RepresentationType;
 import org.apache.isis.viewer.json.applib.RestfulResponse;
+import org.apache.isis.viewer.json.applib.RestfulResponse.HttpStatusCode;
 import org.apache.isis.viewer.json.applib.domainobjects.DomainServiceResource;
 import org.apache.isis.viewer.json.viewer.ResourceContext;
 import org.apache.isis.viewer.json.viewer.representations.RepresentationBuilder;
 import org.apache.isis.viewer.json.viewer.resources.ResourceAbstract;
 import org.apache.isis.viewer.json.viewer.resources.domainobjects.DomainObjectListRepBuilder;
-import org.apache.isis.viewer.json.viewer.resources.domainobjects.DomainObjectRepBuilder;
-import org.jboss.resteasy.annotations.ClientResponseType;
 
 @Path("/services")
 public class DomainServiceResourceServerside extends ResourceAbstract implements

Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/TypeActionRepBuilder.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/TypeActionRepBuilder.java?rev=1167411&r1=1167410&r2=1167411&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/TypeActionRepBuilder.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/TypeActionRepBuilder.java Sat Sep 10 00:11:14 2011
@@ -21,10 +21,7 @@ import org.apache.isis.core.metamodel.sp
 import org.apache.isis.viewer.json.applib.JsonRepresentation;
 import org.apache.isis.viewer.json.viewer.ResourceContext;
 import org.apache.isis.viewer.json.viewer.representations.LinkBuilder;
-import org.apache.isis.viewer.json.viewer.representations.RepresentationBuilder;
-import org.apache.isis.viewer.json.viewer.resources.domainobjects.AbstractObjectMemberRepBuilder;
 import org.apache.isis.viewer.json.viewer.resources.domainobjects.MemberType;
-import org.apache.isis.viewer.json.viewer.resources.domainobjects.ObjectActionRepBuilder;
 
 public class TypeActionRepBuilder extends AbstractTypeMemberRepBuilder<TypeActionRepBuilder, ObjectAction> {
 

Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/home/HomePageResourceServerside.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?rev=1167411&r1=1167410&r2=1167411&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/home/HomePageResourceServerside.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/home/HomePageResourceServerside.java Sat Sep 10 00:11:14 2011
@@ -18,19 +18,16 @@
  */
 package org.apache.isis.viewer.json.viewer.resources.home;
 
-import java.util.List;
-
 import javax.ws.rs.Path;
 import javax.ws.rs.Produces;
 import javax.ws.rs.core.HttpHeaders;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 
-import org.apache.isis.viewer.json.applib.HttpStatusCode;
 import org.apache.isis.viewer.json.applib.JsonRepresentation;
 import org.apache.isis.viewer.json.applib.RepresentationType;
-import org.apache.isis.viewer.json.applib.RestfulRequest;
 import org.apache.isis.viewer.json.applib.RestfulResponse;
+import org.apache.isis.viewer.json.applib.RestfulResponse.HttpStatusCode;
 import org.apache.isis.viewer.json.applib.homepage.HomePageResource;
 import org.apache.isis.viewer.json.viewer.JsonApplicationException;
 import org.apache.isis.viewer.json.viewer.representations.LinkBuilder;

Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/user/UserResourceServerside.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/UserResourceServerside.java?rev=1167411&r1=1167410&r2=1167411&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/user/UserResourceServerside.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/user/UserResourceServerside.java Sat Sep 10 00:11:14 2011
@@ -22,7 +22,6 @@ import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 
-import org.apache.isis.viewer.json.applib.JsonRepresentation;
 import org.apache.isis.viewer.json.applib.RepresentationType;
 import org.apache.isis.viewer.json.applib.RestfulResponse;
 import org.apache.isis.viewer.json.applib.user.UserResource;

Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/test/java/org/apache/isis/viewer/json/viewer/resources/JsonExceptionMapperTest.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-viewer/src/test/java/org/apache/isis/viewer/json/viewer/resources/JsonExceptionMapperTest.java?rev=1167411&r1=1167410&r2=1167411&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/test/java/org/apache/isis/viewer/json/viewer/resources/JsonExceptionMapperTest.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/test/java/org/apache/isis/viewer/json/viewer/resources/JsonExceptionMapperTest.java Sat Sep 10 00:11:14 2011
@@ -1,6 +1,5 @@
 package org.apache.isis.viewer.json.viewer.resources;
 
-import static org.hamcrest.CoreMatchers.*;
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.CoreMatchers.not;
 import static org.hamcrest.CoreMatchers.nullValue;
@@ -9,9 +8,8 @@ import static org.junit.Assert.assertTha
 
 import javax.ws.rs.core.Response;
 
-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.RestfulResponse.HttpStatusCode;
 import org.apache.isis.viewer.json.applib.util.JsonMapper;
 import org.apache.isis.viewer.json.viewer.JsonApplicationException;
 import org.apache.isis.viewer.json.viewer.JsonApplicationExceptionMapper;
@@ -78,7 +76,7 @@ public class JsonExceptionMapperTest {
     public void entity_withCause() throws Exception {
         // given
         Exception cause = new Exception("barfoo");
-        JsonApplicationException ex = JsonApplicationException.create(HttpStatusCode.BAD_REQUEST, "foobar", cause);
+        JsonApplicationException ex = JsonApplicationException.create(HttpStatusCode.BAD_REQUEST, cause, "foobar");
         
         // when
         Response response = exceptionMapper.toResponse(ex);

Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/test/java/org/apache/isis/viewer/json/viewer/resources/RepresentationTypeTest.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-viewer/src/test/java/org/apache/isis/viewer/json/viewer/resources/RepresentationTypeTest.java?rev=1167411&r1=1167410&r2=1167411&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/test/java/org/apache/isis/viewer/json/viewer/resources/RepresentationTypeTest.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/test/java/org/apache/isis/viewer/json/viewer/resources/RepresentationTypeTest.java Sat Sep 10 00:11:14 2011
@@ -2,7 +2,6 @@ package org.apache.isis.viewer.json.view
 import static org.hamcrest.CoreMatchers.is;
 import static org.junit.Assert.assertThat;
 
-import org.apache.isis.viewer.json.viewer.resources.RepresentationType;
 import org.junit.Test;