You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shindig.apache.org by zh...@apache.org on 2010/10/09 02:10:12 UTC
svn commit: r1006080 - in /shindig/trunk/java:
common/src/main/java/org/apache/shindig/protocol/conversion/
common/src/test/java/org/apache/shindig/protocol/conversion/
gadgets/src/main/java/org/apache/shindig/gadgets/servlet/
gadgets/src/test/java/org...
Author: zhoresh
Date: Sat Oct 9 00:10:12 2010
New Revision: 1006080
URL: http://svn.apache.org/viewvc?rev=1006080&view=rev
Log:
Ref http://codereview.appspot.com/2341050/
Add Delegator verifier that check added fields
Added:
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerServiceTest.java
- copied, changed from r1005531, shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/GadgetHandlerServiceTest.java
Removed:
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/GadgetHandlerServiceTest.java
Modified:
shindig/trunk/java/common/src/main/java/org/apache/shindig/protocol/conversion/BeanDelegator.java
shindig/trunk/java/common/src/test/java/org/apache/shindig/protocol/conversion/BeanDelegatorTest.java
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerService.java
Modified: shindig/trunk/java/common/src/main/java/org/apache/shindig/protocol/conversion/BeanDelegator.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/common/src/main/java/org/apache/shindig/protocol/conversion/BeanDelegator.java?rev=1006080&r1=1006079&r2=1006080&view=diff
==============================================================================
--- shindig/trunk/java/common/src/main/java/org/apache/shindig/protocol/conversion/BeanDelegator.java (original)
+++ shindig/trunk/java/common/src/main/java/org/apache/shindig/protocol/conversion/BeanDelegator.java Sat Oct 9 00:10:12 2010
@@ -319,6 +319,19 @@ public class BeanDelegator {
return (delegatedClasses.get(dataType) == interfaceType);
}
+ /**
+ * Validate a delegator object has all fields defined.
+ * With the field list option, classes can be delegated without being complete.
+ * This helper method should be used to verify that no field was missed.
+ */
+ public static void validateDelegator(Object o)
+ throws IllegalArgumentException, IllegalAccessException, InvocationTargetException {
+ for (Method method : o.getClass().getInterfaces()[0].getMethods()) {
+ if (method.getName().startsWith("get")) {
+ Object val = method.invoke(o);
+ }
+ }
+ }
/**
* Utility function to auto generate mapping between two enums that have same values (toString)
Modified: shindig/trunk/java/common/src/test/java/org/apache/shindig/protocol/conversion/BeanDelegatorTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/common/src/test/java/org/apache/shindig/protocol/conversion/BeanDelegatorTest.java?rev=1006080&r1=1006079&r2=1006080&view=diff
==============================================================================
--- shindig/trunk/java/common/src/test/java/org/apache/shindig/protocol/conversion/BeanDelegatorTest.java (original)
+++ shindig/trunk/java/common/src/test/java/org/apache/shindig/protocol/conversion/BeanDelegatorTest.java Sat Oct 9 00:10:12 2010
@@ -27,6 +27,7 @@ import org.apache.shindig.protocol.conve
import org.junit.Before;
import org.junit.Test;
+import java.lang.reflect.InvocationTargetException;
import java.util.List;
import java.util.Map;
@@ -222,4 +223,26 @@ public class BeanDelegatorTest extends A
public void tesValidate() throws Exception {
beanDelegator.validate();
}
+
+ @Test
+ public void testValidateGoodBean() throws Exception {
+ TokenInter p = beanDelegator.createDelegator(null, TokenInter.class,
+ ImmutableMap.<String, Object>of("container", "open", "id", "test"));
+ BeanDelegator.validateDelegator(p);
+ }
+
+ @Test(expected = InvocationTargetException.class)
+ public void testValidateWrongtype() throws Exception {
+ TokenInter p = beanDelegator.createDelegator(null, TokenInter.class,
+ ImmutableMap.<String, Object>of("container", "open", "id", new Integer(5)));
+ BeanDelegator.validateDelegator(p);
+ }
+
+ @Test(expected = InvocationTargetException.class)
+ public void testValidateMissingField() throws Exception {
+ TokenInter p = beanDelegator.createDelegator(null, TokenInter.class,
+ ImmutableMap.<String, Object>of("container", "open"));
+ BeanDelegator.validateDelegator(p);
+ }
+
}
Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerService.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerService.java?rev=1006080&r1=1006079&r2=1006080&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerService.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerService.java Sat Oct 9 00:10:12 2010
@@ -249,14 +249,15 @@ public class GadgetsHandlerService {
public GadgetsHandlerApi.BaseResponse createErrorResponse(Uri url, int code, String error) {
GadgetsHandlerApi.Error errorBean = beanDelegator.createDelegator(
null, GadgetsHandlerApi.Error.class, ImmutableMap.<String, Object>of(
- "message", error, "code", code));
+ "message", BeanDelegator.nullable(error), "code", code));
return beanDelegator.createDelegator(error, GadgetsHandlerApi.BaseResponse.class,
ImmutableMap.<String, Object>of("url", BeanDelegator.nullable(url), "error", errorBean,
"responsetimems", BeanDelegator.NULL, "expiretimems", BeanDelegator.NULL));
}
- private GadgetsHandlerApi.MetadataResponse createMetadataResponse(
+ @VisibleForTesting
+ GadgetsHandlerApi.MetadataResponse createMetadataResponse(
Uri url, GadgetSpec spec, String iframeUrl, Boolean needsTokenRefresh,
Set<String> fields, Long expireTime) {
return (GadgetsHandlerApi.MetadataResponse) beanFilter.createFilteredBean(
@@ -271,7 +272,8 @@ public class GadgetsHandlerService {
fields);
}
- private GadgetsHandlerApi.TokenResponse createTokenResponse(
+ @VisibleForTesting
+ GadgetsHandlerApi.TokenResponse createTokenResponse(
Uri url, String token, Set<String> fields, Long tokenExpire) {
return (GadgetsHandlerApi.TokenResponse) beanFilter.createFilteredBean(
beanDelegator.createDelegator("empty", GadgetsHandlerApi.TokenResponse.class,
Copied: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerServiceTest.java (from r1005531, shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/GadgetHandlerServiceTest.java)
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerServiceTest.java?p2=shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerServiceTest.java&p1=shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/GadgetHandlerServiceTest.java&r1=1005531&r2=1006080&rev=1006080&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/GadgetHandlerServiceTest.java (original)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerServiceTest.java Sat Oct 9 00:10:12 2010
@@ -19,6 +19,7 @@
package org.apache.shindig.gadgets.servlet;
import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Lists;
import org.apache.shindig.auth.SecurityToken;
@@ -29,6 +30,7 @@ import org.apache.shindig.common.uri.Uri
import org.apache.shindig.common.util.FakeTimeSource;
import org.apache.shindig.gadgets.features.FeatureRegistry;
import org.apache.shindig.gadgets.process.ProcessingException;
+import org.apache.shindig.gadgets.spec.GadgetSpec;
import org.apache.shindig.protocol.conversion.BeanDelegator;
import org.apache.shindig.protocol.conversion.BeanFilter;
import org.easymock.EasyMock;
@@ -38,7 +40,7 @@ import org.junit.Test;
import java.util.List;
import java.util.Map;
-public class GadgetHandlerServiceTest extends EasyMockTestCase {
+public class GadgetsHandlerServiceTest extends EasyMockTestCase {
private static final String TOKEN = "<token data>";
private static final String OWNER = "<owner>";
@@ -230,6 +232,69 @@ public class GadgetHandlerServiceTest ex
verify();
}
+ @Test
+ public void testCreateErrorResponse() throws Exception {
+ GadgetsHandlerApi.BaseResponse res = gadgetHandler.createErrorResponse(null, 404, null);
+ assertEquals(404, res.getError().getCode());
+ assertNull(res.getError().getMessage());
+ assertNull(res.getUrl());
+ BeanDelegator.validateDelegator(res);
+ res = gadgetHandler.createErrorResponse(Uri.parse("url"), 500, "error");
+ assertEquals("error", res.getError().getMessage());
+ assertEquals("url", res.getUrl().toString());
+ BeanDelegator.validateDelegator(res);
+ }
+
+ @Test
+ public void testCreateErrorResponseFromException() throws Exception {
+ GadgetsHandlerApi.BaseResponse res = gadgetHandler.createErrorResponse(
+ Uri.parse("url"), new RuntimeException("test"), "error");
+ assertEquals("error", res.getError().getMessage());
+ assertEquals("url", res.getUrl().toString());
+ assertEquals(500, res.getError().getCode());
+ BeanDelegator.validateDelegator(res);
+ res = gadgetHandler.createErrorResponse(
+ Uri.parse("url"), new ProcessingException("test", 404), "error");
+ assertEquals("test", res.getError().getMessage());
+ assertEquals("url", res.getUrl().toString());
+ assertEquals(404, res.getError().getCode());
+ BeanDelegator.validateDelegator(res);
+ }
+
+ @Test
+ public void testCreateMetadataResponse() throws Exception {
+ GadgetsHandlerApi.MetadataResponse res = gadgetHandler.createMetadataResponse(
+ Uri.parse("gadgeturl"), new GadgetSpec(Uri.parse("#"), FakeProcessor.SPEC_XML),
+ null, null, ImmutableSet.of("*"), null);
+ assertNull(res.getIframeUrl());
+ assertNull(res.getNeedsTokenRefresh());
+ assertNull(res.getExpireTimeMs());
+ assertEquals(FakeProcessor.SPEC_TITLE, res.getModulePrefs().getTitle());
+ BeanDelegator.validateDelegator(res);
+ res = gadgetHandler.createMetadataResponse(
+ Uri.parse("gadgeturl"), new GadgetSpec(Uri.parse("#"), FakeProcessor.SPEC_XML),
+ "iframeurl", true, ImmutableSet.of("*"), 3L);
+ assertEquals("iframeurl", res.getIframeUrl());
+ assertEquals(true, res.getNeedsTokenRefresh().booleanValue());
+ assertEquals(3L, res.getExpireTimeMs().longValue());
+ BeanDelegator.validateDelegator(res);
+ }
+
+ @Test
+ public void testCreateTokenResponse() throws Exception {
+ GadgetsHandlerApi.TokenResponse res = gadgetHandler.createTokenResponse(Uri.parse("#"), null,
+ ImmutableSet.of("*"), null);
+ BeanDelegator.validateDelegator(res);
+ assertNull(res.getToken());
+ assertNull(res.getExpireTimeMs());
+ res = gadgetHandler.createTokenResponse(Uri.parse("#"), "token",
+ ImmutableSet.of("*"), 100L);
+ BeanDelegator.validateDelegator(res);
+ assertEquals("token", res.getToken());
+ assertEquals(100L, res.getExpireTimeMs().longValue());
+
+ }
+
private GadgetsHandlerApi.TokenData createTokenData(String ownerId, String viewerId) {
GadgetsHandlerApi.TokenData token = mock(GadgetsHandlerApi.TokenData.class);
if (ownerId != null) {