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/10/17 23:04:13 UTC
svn commit: r1185378 [2/2] - in /incubator/isis/trunk/framework:
tck/tck-dom/src/main/java/org/apache/isis/tck/dom/simples/
viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/
viewer/json/json-applib/src/main/java/org/apache/isis/...
Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/home/HomePageReprRenderer.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/HomePageReprRenderer.java?rev=1185378&r1=1185377&r2=1185378&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/home/HomePageReprRenderer.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/home/HomePageReprRenderer.java Mon Oct 17 21:04:11 2011
@@ -8,6 +8,7 @@ import org.apache.isis.viewer.json.appli
import org.apache.isis.viewer.json.viewer.ResourceContext;
import org.apache.isis.viewer.json.viewer.representations.LinkFollower;
import org.apache.isis.viewer.json.viewer.representations.LinkBuilder;
+import org.apache.isis.viewer.json.viewer.representations.Rel;
import org.apache.isis.viewer.json.viewer.representations.RendererFactory;
import org.apache.isis.viewer.json.viewer.representations.RendererFactoryRegistry;
import org.apache.isis.viewer.json.viewer.representations.ReprRenderer;
@@ -65,7 +66,7 @@ public class HomePageReprRenderer extend
}
private void putLinkToSelf(JsonRepresentation representation) {
- final LinkBuilder linkBuilder = LinkBuilder.newBuilder(resourceContext, "self", getRepresentationType(), "");
+ final LinkBuilder linkBuilder = LinkBuilder.newBuilder(resourceContext, Rel.SELF, getRepresentationType(), "");
final LinkFollower linkFollower = getLinkFollower().follow("self");
if(linkFollower.isFollowing()) {
@@ -80,7 +81,7 @@ public class HomePageReprRenderer extend
}
private void putLinkToCapabilities(final JsonRepresentation representation) {
- final LinkBuilder linkBuilder = LinkBuilder.newBuilder(getResourceContext(), "capabilities", RepresentationType.CAPABILITIES, "capabilities");
+ final LinkBuilder linkBuilder = LinkBuilder.newBuilder(getResourceContext(), Rel.CAPABILITIES, RepresentationType.CAPABILITIES, "capabilities");
final LinkFollower linkFollower = getLinkFollower().follow("capabilities");
if(linkFollower.isFollowing()) {
@@ -97,7 +98,7 @@ public class HomePageReprRenderer extend
private void putLinkToServices(JsonRepresentation representation) {
final LinkBuilder linkBuilder =
- LinkBuilder.newBuilder(getResourceContext(), "services", RepresentationType.LIST, "services");
+ LinkBuilder.newBuilder(getResourceContext(), Rel.SERVICES, RepresentationType.LIST, "services");
final LinkFollower linkFollower = getLinkFollower().follow("services");
if(linkFollower.isFollowing()) {
@@ -119,7 +120,7 @@ public class HomePageReprRenderer extend
private void putLinkToUser(JsonRepresentation representation) {
final LinkBuilder userLinkBuilder =
- LinkBuilder.newBuilder(getResourceContext(), "user", RepresentationType.USER, "user");
+ LinkBuilder.newBuilder(getResourceContext(), Rel.USER, RepresentationType.USER, "user");
final LinkFollower linkFollower = getLinkFollower().follow("user");
if(linkFollower.isFollowing()) {
Added: incubator/isis/trunk/framework/viewer/json/json-viewer/src/test/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainResourceHelperTest_readBodyAsMap.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/domainobjects/DomainResourceHelperTest_readBodyAsMap.java?rev=1185378&view=auto
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/test/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainResourceHelperTest_readBodyAsMap.java (added)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/test/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainResourceHelperTest_readBodyAsMap.java Mon Oct 17 21:04:11 2011
@@ -0,0 +1,61 @@
+package org.apache.isis.viewer.json.viewer.resources.domainobjects;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+
+import javax.ws.rs.WebApplicationException;
+
+import org.apache.isis.viewer.json.applib.JsonRepresentation;
+import org.apache.isis.viewer.json.viewer.JsonApplicationException;
+import org.junit.Test;
+
+public class DomainResourceHelperTest_readBodyAsMap {
+
+ private JsonRepresentation representation;
+
+ @Test
+ public void whenNull() throws Exception {
+ representation = DomainResourceHelper.readBodyAsMap(null);
+
+ assertThat(representation.isMap(), is(true));
+ assertThat(representation.size(), is(0));
+ }
+
+ @Test
+ public void whenEmptyString() throws Exception {
+ representation = DomainResourceHelper.readBodyAsMap("");
+
+ assertThat(representation.isMap(), is(true));
+ assertThat(representation.size(), is(0));
+ }
+
+ @Test
+ public void whenWhitespaceOnlyString() throws Exception {
+ representation = DomainResourceHelper.readBodyAsMap(" \t ");
+
+ assertThat(representation.isMap(), is(true));
+ assertThat(representation.size(), is(0));
+ }
+
+ @Test
+ public void emptyMap() throws Exception {
+ representation = DomainResourceHelper.readBodyAsMap("{}");
+
+ assertThat(representation.isMap(), is(true));
+ assertThat(representation.size(), is(0));
+ }
+
+ @Test
+ public void map() throws Exception {
+ representation = DomainResourceHelper.readBodyAsMap("{\"foo\":\"bar\"}");
+
+ assertThat(representation.isMap(), is(true));
+ assertThat(representation.size(), is(1));
+ }
+
+ @Test(expected=JsonApplicationException.class)
+ public void whenArray() throws Exception {
+ DomainResourceHelper.readBodyAsMap("[]");
+ }
+
+}
Added: incubator/isis/trunk/framework/viewer/json/json-viewer/src/test/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/JsonValueEncoderTest_asAdapter.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/domainobjects/JsonValueEncoderTest_asAdapter.java?rev=1185378&view=auto
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/test/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/JsonValueEncoderTest_asAdapter.java (added)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/test/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/JsonValueEncoderTest_asAdapter.java Mon Oct 17 21:04:11 2011
@@ -0,0 +1,343 @@
+package org.apache.isis.viewer.json.viewer.resources.domainobjects;
+
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertSame;
+
+import java.math.BigDecimal;
+import java.math.BigInteger;
+
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.facetapi.Facet;
+import org.apache.isis.core.metamodel.facets.object.encodeable.EncodableFacet;
+import org.apache.isis.core.metamodel.spec.ObjectSpecification;
+import org.apache.isis.viewer.json.applib.JsonRepresentation;
+import org.codehaus.jackson.node.BigIntegerNode;
+import org.codehaus.jackson.node.BooleanNode;
+import org.codehaus.jackson.node.DecimalNode;
+import org.codehaus.jackson.node.DoubleNode;
+import org.codehaus.jackson.node.IntNode;
+import org.codehaus.jackson.node.LongNode;
+import org.codehaus.jackson.node.TextNode;
+import org.jmock.Expectations;
+import org.jmock.Mockery;
+import org.jmock.integration.junit4.JMock;
+import org.jmock.integration.junit4.JUnit4Mockery;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@RunWith(JMock.class)
+public class JsonValueEncoderTest_asAdapter {
+
+ private Mockery context = new JUnit4Mockery();
+
+ private JsonValueEncoder jsonValueEncoder;
+ private JsonRepresentation representation;
+ private ObjectSpecification objectSpec;
+
+ private EncodableFacet encodableFacet;
+ private ObjectAdapter objectAdapter;
+
+ @Before
+ public void setUp() throws Exception {
+ objectSpec = context.mock(ObjectSpecification.class);
+ encodableFacet = context.mock(EncodableFacet.class);
+ objectAdapter = context.mock(ObjectAdapter.class);
+
+ representation = new JsonRepresentation(TextNode.valueOf("aString"));
+ jsonValueEncoder = new JsonValueEncoder();
+ }
+
+ @Test(expected=IllegalArgumentException.class)
+ public void whenSpecIsNull() throws Exception {
+ jsonValueEncoder.asAdapter(null, representation);
+ }
+
+ @Test(expected=IllegalArgumentException.class)
+ public void whenReprIsNull() throws Exception {
+ allowingObjectSpecHas(EncodableFacet.class, encodableFacet);
+ jsonValueEncoder.asAdapter(objectSpec, null);
+ }
+
+ @Test(expected=IllegalArgumentException.class)
+ public void whenReprIsAnArray() throws Exception {
+ allowingObjectSpecHas(EncodableFacet.class, encodableFacet);
+ jsonValueEncoder.asAdapter(objectSpec, JsonRepresentation.newArray());
+ }
+
+ @Test(expected=IllegalArgumentException.class)
+ public void whenReprIsAMap() throws Exception {
+ allowingObjectSpecHas(EncodableFacet.class, encodableFacet);
+ assertNull(jsonValueEncoder.asAdapter(objectSpec, JsonRepresentation.newMap()));
+ }
+
+ @Test(expected=IllegalArgumentException.class)
+ public void whenSpecDoesNotHaveAnEncodableFacet() throws Exception {
+ allowingObjectSpecHas(EncodableFacet.class, null);
+
+ assertNull(jsonValueEncoder.asAdapter(objectSpec, representation));
+ }
+
+ @Test
+ public void whenReprIsBooleanPrimitive() throws Exception {
+ whenReprIsBoolean(boolean.class);
+ }
+
+ @Test
+ public void whenReprIsBooleanWrapper() throws Exception {
+ whenReprIsBoolean(Boolean.class);
+ }
+
+ private void whenReprIsBoolean(final Class<?> correspondingClass) {
+ // given
+ allowingObjectSpecHas(EncodableFacet.class, encodableFacet);
+ allowingObjectSpecCorrespondingClassIs(correspondingClass);
+ final boolean value = true;
+ representation = new JsonRepresentation(BooleanNode.valueOf(value));
+ context.checking(new Expectations() {
+ {
+ one(encodableFacet).fromEncodedString("" + value);
+ will(returnValue(objectAdapter));
+ }
+ });
+
+ // when
+ final ObjectAdapter adapter = jsonValueEncoder.asAdapter(objectSpec, representation);
+
+ // then
+ assertSame(objectAdapter, adapter);
+ }
+
+ @Test(expected=IllegalArgumentException.class)
+ public void whenObjectSpecIsBooleanButReprIsNot() throws Exception {
+ // given
+ allowingObjectSpecHas(EncodableFacet.class, encodableFacet);
+ allowingObjectSpecCorrespondingClassIs(boolean.class);
+
+ // when
+ jsonValueEncoder.asAdapter(objectSpec, representation);
+ }
+
+ @Test
+ public void whenReprIsIntegerPrimitive() throws Exception {
+ whenReprIsInteger(int.class);
+ }
+
+ @Test
+ public void whenReprIsIntegerWrapper() throws Exception {
+ whenReprIsInteger(Integer.class);
+ }
+
+ private void whenReprIsInteger(final Class<?> correspondingClass) {
+ // given
+ allowingObjectSpecHas(EncodableFacet.class, encodableFacet);
+ allowingObjectSpecCorrespondingClassIs(correspondingClass);
+ final int value = 123;
+ representation = new JsonRepresentation(IntNode.valueOf(value));
+ context.checking(new Expectations() {
+ {
+ one(encodableFacet).fromEncodedString("" + value);
+ will(returnValue(objectAdapter));
+ }
+ });
+
+ // when
+ final ObjectAdapter adapter = jsonValueEncoder.asAdapter(objectSpec, representation);
+
+ // then
+ assertSame(objectAdapter, adapter);
+ }
+
+ @Test(expected=IllegalArgumentException.class)
+ public void whenObjectSpecIsIntegerButReprIsNot() throws Exception {
+ // given
+ allowingObjectSpecHas(EncodableFacet.class, encodableFacet);
+ allowingObjectSpecCorrespondingClassIs(int.class);
+
+ // when
+ jsonValueEncoder.asAdapter(objectSpec, representation);
+ }
+
+ @Test
+ public void whenReprIsLongPrimitive() throws Exception {
+ whenReprIsLong(long.class);
+ }
+
+ @Test
+ public void whenReprIsLongWrapper() throws Exception {
+ whenReprIsLong(Long.class);
+ }
+
+ private void whenReprIsLong(final Class<?> correspondingClass) {
+ // given
+ allowingObjectSpecHas(EncodableFacet.class, encodableFacet);
+ allowingObjectSpecCorrespondingClassIs(correspondingClass);
+ final long value = 1234567890L;
+ representation = new JsonRepresentation(LongNode.valueOf(value));
+ context.checking(new Expectations() {
+ {
+ one(encodableFacet).fromEncodedString("" + value);
+ will(returnValue(objectAdapter));
+ }
+ });
+
+ // when
+ final ObjectAdapter adapter = jsonValueEncoder.asAdapter(objectSpec, representation);
+
+ // then
+ assertSame(objectAdapter, adapter);
+ }
+
+ @Test(expected=IllegalArgumentException.class)
+ public void whenObjectSpecIsLongButReprIsNot() throws Exception {
+ // given
+ allowingObjectSpecHas(EncodableFacet.class, encodableFacet);
+ allowingObjectSpecCorrespondingClassIs(long.class);
+
+ // when
+ jsonValueEncoder.asAdapter(objectSpec, representation);
+ }
+
+ @Test
+ public void whenReprIsDoublePrimitive() throws Exception {
+ whenReprIsDouble(double.class);
+ }
+
+ @Test
+ public void whenReprIsDoubleWrapper() throws Exception {
+ whenReprIsDouble(Double.class);
+ }
+
+ private void whenReprIsDouble(final Class<?> correspondingClass) {
+ // given
+ allowingObjectSpecHas(EncodableFacet.class, encodableFacet);
+ allowingObjectSpecCorrespondingClassIs(correspondingClass);
+ final double value = 123.45;
+ representation = new JsonRepresentation(DoubleNode.valueOf(value));
+ context.checking(new Expectations() {
+ {
+ one(encodableFacet).fromEncodedString("" + value);
+ will(returnValue(objectAdapter));
+ }
+ });
+
+ // when
+ final ObjectAdapter adapter = jsonValueEncoder.asAdapter(objectSpec, representation);
+
+ // then
+ assertSame(objectAdapter, adapter);
+ }
+
+ @Test(expected=IllegalArgumentException.class)
+ public void whenObjectSpecIsDoubleButReprIsNot() throws Exception {
+ // given
+ allowingObjectSpecHas(EncodableFacet.class, encodableFacet);
+ allowingObjectSpecCorrespondingClassIs(double.class);
+
+ // when
+ jsonValueEncoder.asAdapter(objectSpec, representation);
+ }
+
+ @Test
+ public void whenReprIsBigInteger() throws Exception {
+ // given
+ allowingObjectSpecHas(EncodableFacet.class, encodableFacet);
+ allowingObjectSpecCorrespondingClassIs(BigInteger.class);
+ final BigInteger value = BigInteger.valueOf(123);
+ representation = new JsonRepresentation(BigIntegerNode.valueOf(value));
+ context.checking(new Expectations() {
+ {
+ one(encodableFacet).fromEncodedString("" + value);
+ will(returnValue(objectAdapter));
+ }
+ });
+
+ // when
+ final ObjectAdapter adapter = jsonValueEncoder.asAdapter(objectSpec, representation);
+
+ // then
+ assertSame(objectAdapter, adapter);
+ }
+
+ @Test(expected=IllegalArgumentException.class)
+ public void whenObjectSpecIsBigIntegerButReprIsNot() throws Exception {
+ // given
+ allowingObjectSpecHas(EncodableFacet.class, encodableFacet);
+ allowingObjectSpecCorrespondingClassIs(BigInteger.class);
+
+ // when
+ jsonValueEncoder.asAdapter(objectSpec, representation);
+ }
+
+ @Test
+ public void whenReprIsBigDecimal() throws Exception {
+ // given
+ allowingObjectSpecHas(EncodableFacet.class, encodableFacet);
+ allowingObjectSpecCorrespondingClassIs(BigDecimal.class);
+ final BigDecimal value = new BigDecimal("123234234.45612312343535");
+ representation = new JsonRepresentation(DecimalNode.valueOf(value));
+ context.checking(new Expectations() {
+ {
+ one(encodableFacet).fromEncodedString("" + value);
+ will(returnValue(objectAdapter));
+ }
+ });
+
+ // when
+ final ObjectAdapter adapter = jsonValueEncoder.asAdapter(objectSpec, representation);
+
+ // then
+ assertSame(objectAdapter, adapter);
+ }
+
+ @Test(expected=IllegalArgumentException.class)
+ public void whenObjectSpecIsBigDecimalButReprIsNot() throws Exception {
+ // given
+ allowingObjectSpecHas(EncodableFacet.class, encodableFacet);
+ allowingObjectSpecCorrespondingClassIs(BigDecimal.class);
+
+ // when
+ jsonValueEncoder.asAdapter(objectSpec, representation);
+ }
+
+
+ @Test
+ public void whenReprIsString() throws Exception {
+ // given
+ allowingObjectSpecHas(EncodableFacet.class, encodableFacet);
+ allowingObjectSpecCorrespondingClassIs(String.class);
+ representation = new JsonRepresentation(TextNode.valueOf("aString"));
+
+ context.checking(new Expectations() {
+ {
+ one(encodableFacet).fromEncodedString("aString");
+ will(returnValue(objectAdapter));
+ }
+ });
+
+ // when
+ final ObjectAdapter adapter = jsonValueEncoder.asAdapter(objectSpec, representation);
+
+ // then
+ assertSame(objectAdapter, adapter);
+ }
+
+ private <T extends Facet> void allowingObjectSpecHas(final Class<T> facetClass, final T encodableFacet) {
+ context.checking(new Expectations() {
+ {
+ allowing(objectSpec).getFacet(facetClass);
+ will(returnValue(encodableFacet));
+ }
+ });
+ }
+
+ private void allowingObjectSpecCorrespondingClassIs(final Class<?> result) {
+ context.checking(new Expectations() {
+ {
+ allowing(objectSpec).getCorrespondingClass();
+ will(returnValue(result));
+ }
+ });
+ }
+
+}
Added: incubator/isis/trunk/framework/viewer/json/json-viewer/src/test/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/JsonValueEncoderTest_asObject.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/domainobjects/JsonValueEncoderTest_asObject.java?rev=1185378&view=auto
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/test/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/JsonValueEncoderTest_asObject.java (added)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/test/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/JsonValueEncoderTest_asObject.java Mon Oct 17 21:04:11 2011
@@ -0,0 +1,231 @@
+package org.apache.isis.viewer.json.viewer.resources.domainobjects;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertSame;
+
+import java.math.BigDecimal;
+import java.math.BigInteger;
+
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.facetapi.Facet;
+import org.apache.isis.core.metamodel.facets.object.encodeable.EncodableFacet;
+import org.apache.isis.core.metamodel.spec.ObjectSpecification;
+import org.apache.isis.viewer.json.applib.JsonRepresentation;
+import org.jmock.Expectations;
+import org.jmock.Mockery;
+import org.jmock.integration.junit4.JMock;
+import org.jmock.integration.junit4.JUnit4Mockery;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@RunWith(JMock.class)
+public class JsonValueEncoderTest_asObject {
+
+ private Mockery context = new JUnit4Mockery();
+
+ private JsonValueEncoder jsonValueEncoder;
+ private JsonRepresentation representation;
+ private ObjectAdapter objectAdapter;
+ private ObjectSpecification objectSpec;
+
+ private EncodableFacet encodableFacet;
+ private Object encoded;
+
+ @Before
+ public void setUp() throws Exception {
+ objectAdapter = context.mock(ObjectAdapter.class);
+ objectSpec = context.mock(ObjectSpecification.class);
+
+ context.checking(new Expectations() {
+ {
+ allowing(objectAdapter).getSpecification();
+ will(returnValue(objectSpec));
+ }
+ });
+ encodableFacet = context.mock(EncodableFacet.class);
+
+ encoded = new Object();
+
+ jsonValueEncoder = new JsonValueEncoder();
+ }
+
+ @Test(expected=IllegalArgumentException.class)
+ public void whenAdapterIsNull() throws Exception {
+ jsonValueEncoder.asObject(null);
+ }
+
+ @Test(expected=IllegalArgumentException.class)
+ public void whenObjectAdapterIsNotSpecialCaseAndSpecIsNotEncodable() throws Exception {
+ allowingObjectSpecCorrespondingClassIs(String.class);
+ allowingObjectSpecHas(EncodableFacet.class, null);
+ jsonValueEncoder.asObject(objectAdapter);
+ }
+
+ @Test
+ public void whenBooleanPrimitive() throws Exception {
+ whenBoolean(boolean.class);
+ }
+
+ @Test
+ public void whenBooleanWrapper() throws Exception {
+ whenBoolean(Boolean.class);
+ }
+
+ private void whenBoolean(final Class<?> cls) {
+ allowingObjectSpecCorrespondingClassIs(cls);
+ allowingObjectSpecHas(EncodableFacet.class, encodableFacet);
+ never(encodableFacet);
+ context.checking(new Expectations() {
+ {
+ one(objectAdapter).getObject();
+ will(returnValue(true));
+ }
+ });
+ assertEquals(true, jsonValueEncoder.asObject(objectAdapter));
+ }
+
+
+ @Test
+ public void whenIntegerPrimitive() throws Exception {
+ whenInteger(int.class);
+ }
+
+ @Test
+ public void whenIntegerWrapper() throws Exception {
+ whenInteger(Integer.class);
+ }
+
+ private void whenInteger(final Class<?> cls) {
+ allowingObjectSpecCorrespondingClassIs(cls);
+ allowingObjectSpecHas(EncodableFacet.class, encodableFacet);
+ never(encodableFacet);
+ context.checking(new Expectations() {
+ {
+ one(objectAdapter).getObject();
+ will(returnValue(123));
+ }
+ });
+ assertEquals(123, jsonValueEncoder.asObject(objectAdapter));
+ }
+
+ @Test
+ public void whenLongPrimitive() throws Exception {
+ whenLong(long.class);
+ }
+
+ @Test
+ public void whenLongWrapper() throws Exception {
+ whenLong(Long.class);
+ }
+
+ private void whenLong(final Class<?> cls) {
+ allowingObjectSpecCorrespondingClassIs(cls);
+ allowingObjectSpecHas(EncodableFacet.class, encodableFacet);
+ never(encodableFacet);
+ context.checking(new Expectations() {
+ {
+ one(objectAdapter).getObject();
+ will(returnValue(123456789L));
+ }
+ });
+ assertEquals(123456789L, jsonValueEncoder.asObject(objectAdapter));
+ }
+
+ @Test
+ public void whenDoublePrimitive() throws Exception {
+ whenDouble(double.class);
+ }
+
+ @Test
+ public void whenDoubleWrapper() throws Exception {
+ whenDouble(Double.class);
+ }
+
+ private void whenDouble(final Class<?> cls) {
+ allowingObjectSpecCorrespondingClassIs(cls);
+ allowingObjectSpecHas(EncodableFacet.class, encodableFacet);
+ never(encodableFacet);
+ context.checking(new Expectations() {
+ {
+ one(objectAdapter).getObject();
+ will(returnValue(12345.6789));
+ }
+ });
+ assertEquals(12345.6789, jsonValueEncoder.asObject(objectAdapter));
+ }
+
+ @Test
+ public void whenBigInteger() throws Exception {
+ allowingObjectSpecCorrespondingClassIs(BigInteger.class);
+ allowingObjectSpecHas(EncodableFacet.class, encodableFacet);
+ never(encodableFacet);
+ final BigInteger value = new BigInteger("123456789012345");
+ context.checking(new Expectations() {
+
+ {
+ one(objectAdapter).getObject();
+ will(returnValue(value));
+ }
+ });
+ assertEquals(value, jsonValueEncoder.asObject(objectAdapter));
+ }
+
+ @Test
+ public void whenBigDecimal() throws Exception {
+ allowingObjectSpecCorrespondingClassIs(BigDecimal.class);
+ allowingObjectSpecHas(EncodableFacet.class, encodableFacet);
+ never(encodableFacet);
+ final BigDecimal value = new BigDecimal("1234567890.1234567890");
+ context.checking(new Expectations() {
+
+ {
+ one(objectAdapter).getObject();
+ will(returnValue(value));
+ }
+ });
+ assertEquals(value, jsonValueEncoder.asObject(objectAdapter));
+ }
+
+
+ @Test
+ public void whenString() throws Exception {
+ allowingObjectSpecCorrespondingClassIs(String.class);
+ allowingObjectSpecHas(EncodableFacet.class, encodableFacet);
+ context.checking(new Expectations() {
+ {
+ one(encodableFacet).toEncodedString(objectAdapter);
+ will(returnValue("encodedString"));
+ }
+ });
+ assertSame("encodedString", jsonValueEncoder.asObject(objectAdapter));
+ }
+
+ private void allowingObjectSpecCorrespondingClassIs(final Class<?> result) {
+ context.checking(new Expectations() {
+ {
+ allowing(objectSpec).getCorrespondingClass();
+ will(returnValue(result));
+ }
+ });
+ }
+
+ private <T extends Facet> void allowingObjectSpecHas(final Class<T> facetClass, final T encodableFacet) {
+ context.checking(new Expectations() {
+ {
+ allowing(objectSpec).getFacet(facetClass);
+ will(returnValue(encodableFacet));
+ }
+ });
+ }
+
+ private void never(final EncodableFacet encodableFacet2) {
+ context.checking(new Expectations() {
+ {
+ never(encodableFacet2);
+ }
+ });
+ }
+
+
+}