Ah, got it. Paul, let me know if you're not planning on cleaning this up today; I'll take it on.
2009/1/23 Paul Lindner <[email protected]>: > This was defined as a blocker issue before the branch was cut. The > supportedFields feature is in the 0.8.1 specification and it was > unimplemented until now. > > > On Jan 23, 2009, at 9:24 AM, Adam Winer wrote: > >> Why are we adding new features to the 1.0 branch? Shouldn't it be >> bug-fixes only? >> >> -- Adam Winer >> >> >> 2009/1/22 <[email protected]>: >>> >>> Author: lindner >>> Date: Thu Jan 22 13:06:02 2009 >>> New Revision: 736793 >>> >>> URL: http://svn.apache.org/viewvc?rev=736793&view=rev >>> Log: >>> SHINDIG-560 | Modified Patch from Ian Boston | Add support for >>> @supportedFields, plus merge dependent patches for samples >>> >>> Added: >>> >>> >>> incubator/shindig/branches/1.0.x-incubating/java/social-api/src/main/java/org/apache/shindig/social/core/util/ContainerConf.java >>> - copied unchanged from r736787, >>> incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/util/ContainerConf.java >>> >>> >>> incubator/shindig/branches/1.0.x-incubating/java/social-api/src/main/java/org/apache/shindig/social/core/util/JsonContainerConf.java >>> - copied unchanged from r736787, >>> incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/util/JsonContainerConf.java >>> Modified: >>> incubator/shindig/branches/1.0.x-incubating/ (props changed) >>> >>> >>> incubator/shindig/branches/1.0.x-incubating/java/common/src/test/java/org/apache/shindig/common/AllTests.java >>> (props changed) >>> >>> >>> incubator/shindig/branches/1.0.x-incubating/java/samples/src/main/java/org/apache/shindig/social/opensocial/jpa/ActivityDb.java >>> >>> >>> incubator/shindig/branches/1.0.x-incubating/java/samples/src/main/java/org/apache/shindig/social/opensocial/jpa/PersonDb.java >>> >>> >>> incubator/shindig/branches/1.0.x-incubating/java/samples/src/main/java/org/apache/shindig/social/opensocial/jpa/spi/PersonServiceDb.java >>> >>> >>> incubator/shindig/branches/1.0.x-incubating/java/server/src/test/java/org/apache/shindig/server/endtoend/EndToEndModule.java >>> >>> >>> incubator/shindig/branches/1.0.x-incubating/java/social-api/src/main/java/org/apache/shindig/social/core/config/SocialApiGuiceModule.java >>> >>> >>> incubator/shindig/branches/1.0.x-incubating/java/social-api/src/main/java/org/apache/shindig/social/core/oauth/OAuthConsumerRequestAuthenticationHandler.java >>> >>> >>> incubator/shindig/branches/1.0.x-incubating/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/ActivityHandler.java >>> >>> >>> incubator/shindig/branches/1.0.x-incubating/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/AppDataHandler.java >>> >>> >>> incubator/shindig/branches/1.0.x-incubating/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/DataRequestHandler.java >>> >>> >>> incubator/shindig/branches/1.0.x-incubating/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/PersonHandler.java >>> >>> >>> incubator/shindig/branches/1.0.x-incubating/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/RestfulRequestItem.java >>> >>> >>> incubator/shindig/branches/1.0.x-incubating/java/social-api/src/main/java/org/apache/shindig/social/sample/service/SampleContainerHandler.java >>> >>> >>> incubator/shindig/branches/1.0.x-incubating/java/social-api/src/test/java/org/apache/shindig/social/SocialApiTestsGuiceModule.java >>> >>> >>> incubator/shindig/branches/1.0.x-incubating/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/ActivityHandlerTest.java >>> >>> >>> incubator/shindig/branches/1.0.x-incubating/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/AppDataHandlerTest.java >>> >>> >>> incubator/shindig/branches/1.0.x-incubating/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/PersonHandlerTest.java >>> >>> >>> incubator/shindig/branches/1.0.x-incubating/java/social-api/src/test/java/org/apache/shindig/social/opensocial/spi/DataRequestHandlerTest.java >>> >>> >>> incubator/shindig/branches/1.0.x-incubating/site/eclipse/shindig-eclipse-codestyle_2.xml >>> >>> >>> incubator/shindig/branches/1.0.x-incubating/site/eclipse/shindig-eclipse-codetemplate.xml >>> >>> Propchange: incubator/shindig/branches/1.0.x-incubating/ >>> >>> ------------------------------------------------------------------------------ >>> --- svn:mergeinfo (original) >>> +++ svn:mergeinfo Thu Jan 22 13:06:02 2009 >>> @@ -1 +1 @@ >>> >>> -/incubator/shindig/trunk:724511-724522,724874,724915,724939,726597,727032-727033,727048,733593,733596-733666,733865-733869,735094 >>> >>> +/incubator/shindig/trunk:724511-724522,724874,724915,724939,726597,727032-727033,727048,727448,727515,733593,733596-733666,733865-733869,735094,736777,736787 >>> >>> Propchange: >>> incubator/shindig/branches/1.0.x-incubating/java/common/src/test/java/org/apache/shindig/common/AllTests.java >>> >>> ------------------------------------------------------------------------------ >>> --- svn:mergeinfo (original) >>> +++ svn:mergeinfo Thu Jan 22 13:06:02 2009 >>> @@ -1 +1 @@ >>> >>> -/incubator/shindig/trunk/java/common/src/test/java/org/apache/shindig/common/AllTests.java:733619-733666,733865-733869,735094 >>> >>> +/incubator/shindig/trunk/java/common/src/test/java/org/apache/shindig/common/AllTests.java:727448,727515,733619-733666,733865-733869,735094,736777,736787 >>> >>> Modified: >>> incubator/shindig/branches/1.0.x-incubating/java/samples/src/main/java/org/apache/shindig/social/opensocial/jpa/ActivityDb.java >>> URL: >>> http://svn.apache.org/viewvc/incubator/shindig/branches/1.0.x-incubating/java/samples/src/main/java/org/apache/shindig/social/opensocial/jpa/ActivityDb.java?rev=736793&r1=736792&r2=736793&view=diff >>> >>> ============================================================================== >>> --- >>> incubator/shindig/branches/1.0.x-incubating/java/samples/src/main/java/org/apache/shindig/social/opensocial/jpa/ActivityDb.java >>> (original) >>> +++ >>> incubator/shindig/branches/1.0.x-incubating/java/samples/src/main/java/org/apache/shindig/social/opensocial/jpa/ActivityDb.java >>> Thu Jan 22 13:06:02 2009 >>> @@ -17,6 +17,8 @@ >>> */ >>> package org.apache.shindig.social.opensocial.jpa; >>> >>> +import com.google.common.collect.Lists; >>> + >>> import static javax.persistence.CascadeType.ALL; >>> import static javax.persistence.GenerationType.IDENTITY; >>> >>> >>> Modified: >>> incubator/shindig/branches/1.0.x-incubating/java/samples/src/main/java/org/apache/shindig/social/opensocial/jpa/PersonDb.java >>> URL: >>> http://svn.apache.org/viewvc/incubator/shindig/branches/1.0.x-incubating/java/samples/src/main/java/org/apache/shindig/social/opensocial/jpa/PersonDb.java?rev=736793&r1=736792&r2=736793&view=diff >>> >>> ============================================================================== >>> --- >>> incubator/shindig/branches/1.0.x-incubating/java/samples/src/main/java/org/apache/shindig/social/opensocial/jpa/PersonDb.java >>> (original) >>> +++ >>> incubator/shindig/branches/1.0.x-incubating/java/samples/src/main/java/org/apache/shindig/social/opensocial/jpa/PersonDb.java >>> Thu Jan 22 13:06:02 2009 >>> @@ -21,6 +21,8 @@ >>> >>> import static javax.persistence.GenerationType.IDENTITY; >>> >>> +import com.google.common.collect.Lists; >>> + >>> import org.apache.shindig.social.opensocial.jpa.api.FilterCapability; >>> import org.apache.shindig.social.opensocial.jpa.api.DbObject; >>> import org.apache.shindig.social.opensocial.jpa.api.FilterSpecification; >>> >>> Modified: >>> incubator/shindig/branches/1.0.x-incubating/java/samples/src/main/java/org/apache/shindig/social/opensocial/jpa/spi/PersonServiceDb.java >>> URL: >>> http://svn.apache.org/viewvc/incubator/shindig/branches/1.0.x-incubating/java/samples/src/main/java/org/apache/shindig/social/opensocial/jpa/spi/PersonServiceDb.java?rev=736793&r1=736792&r2=736793&view=diff >>> >>> ============================================================================== >>> --- >>> incubator/shindig/branches/1.0.x-incubating/java/samples/src/main/java/org/apache/shindig/social/opensocial/jpa/spi/PersonServiceDb.java >>> (original) >>> +++ >>> incubator/shindig/branches/1.0.x-incubating/java/samples/src/main/java/org/apache/shindig/social/opensocial/jpa/spi/PersonServiceDb.java >>> Thu Jan 22 13:06:02 2009 >>> @@ -34,6 +34,8 @@ >>> import org.apache.shindig.social.opensocial.spi.SocialSpiException; >>> import org.apache.shindig.social.opensocial.spi.UserId; >>> >>> +import com.google.common.collect.Lists; >>> +import com.google.inject.Inject; >>> import java.util.List; >>> import java.util.Set; >>> import java.util.concurrent.Future; >>> >>> Modified: >>> incubator/shindig/branches/1.0.x-incubating/java/server/src/test/java/org/apache/shindig/server/endtoend/EndToEndModule.java >>> URL: >>> http://svn.apache.org/viewvc/incubator/shindig/branches/1.0.x-incubating/java/server/src/test/java/org/apache/shindig/server/endtoend/EndToEndModule.java?rev=736793&r1=736792&r2=736793&view=diff >>> >>> ============================================================================== >>> --- >>> incubator/shindig/branches/1.0.x-incubating/java/server/src/test/java/org/apache/shindig/server/endtoend/EndToEndModule.java >>> (original) >>> +++ >>> incubator/shindig/branches/1.0.x-incubating/java/server/src/test/java/org/apache/shindig/server/endtoend/EndToEndModule.java >>> Thu Jan 22 13:06:02 2009 >>> @@ -26,6 +26,8 @@ >>> import org.apache.shindig.social.core.util.BeanXStreamConverter; >>> import org.apache.shindig.social.core.util.BeanXmlConverter; >>> import org.apache.shindig.social.core.util.BeanAtomConverter; >>> +import org.apache.shindig.social.core.util.ContainerConf; >>> +import org.apache.shindig.social.core.util.JsonContainerConf; >>> import org.apache.shindig.social.opensocial.service.BeanConverter; >>> import >>> org.apache.shindig.social.opensocial.service.DataServiceServletFetcher; >>> >>> @@ -60,5 +62,6 @@ >>> >>> bind(new TypeLiteral<List<AuthenticationHandler>>(){}).toProvider( >>> AuthenticationHandlerProvider.class); >>> + bind(ContainerConf.class).to(JsonContainerConf.class); >>> } >>> } >>> >>> Modified: >>> incubator/shindig/branches/1.0.x-incubating/java/social-api/src/main/java/org/apache/shindig/social/core/config/SocialApiGuiceModule.java >>> URL: >>> http://svn.apache.org/viewvc/incubator/shindig/branches/1.0.x-incubating/java/social-api/src/main/java/org/apache/shindig/social/core/config/SocialApiGuiceModule.java?rev=736793&r1=736792&r2=736793&view=diff >>> >>> ============================================================================== >>> --- >>> incubator/shindig/branches/1.0.x-incubating/java/social-api/src/main/java/org/apache/shindig/social/core/config/SocialApiGuiceModule.java >>> (original) >>> +++ >>> incubator/shindig/branches/1.0.x-incubating/java/social-api/src/main/java/org/apache/shindig/social/core/config/SocialApiGuiceModule.java >>> Thu Jan 22 13:06:02 2009 >>> @@ -25,6 +25,8 @@ >>> import org.apache.shindig.social.core.util.BeanJsonConverter; >>> import org.apache.shindig.social.core.util.BeanXStreamAtomConverter; >>> import org.apache.shindig.social.core.util.BeanXStreamConverter; >>> +import org.apache.shindig.social.core.util.ContainerConf; >>> +import org.apache.shindig.social.core.util.JsonContainerConf; >>> import org.apache.shindig.social.opensocial.service.BeanConverter; >>> import >>> org.apache.shindig.social.opensocial.service.DataServiceServletFetcher; >>> import >>> org.apache.shindig.social.opensocial.service.StandardHandlerDispatcher; >>> @@ -50,7 +52,7 @@ >>> /** {...@inheritdoc} */ >>> @Override >>> protected void configure() { >>> - >>> bind(HandlerDispatcher.class).toProvider(HandlerDispatcherProvider.class); >>> + >>> bind(HandlerDispatcher.class).toProvider(HandlerDispatcherProvider.class); >>> >>> >>> bind(ParameterFetcher.class).annotatedWith(Names.named("DataServiceServlet")) >>> .to(DataServiceServletFetcher.class); >>> @@ -71,6 +73,7 @@ >>> >>> bind(new TypeLiteral<List<AuthenticationHandler>>(){}).toProvider( >>> AuthenticationHandlerProvider.class); >>> + bind(ContainerConf.class).to(JsonContainerConf.class); >>> } >>> >>> /** >>> >>> Modified: >>> incubator/shindig/branches/1.0.x-incubating/java/social-api/src/main/java/org/apache/shindig/social/core/oauth/OAuthConsumerRequestAuthenticationHandler.java >>> URL: >>> http://svn.apache.org/viewvc/incubator/shindig/branches/1.0.x-incubating/java/social-api/src/main/java/org/apache/shindig/social/core/oauth/OAuthConsumerRequestAuthenticationHandler.java?rev=736793&r1=736792&r2=736793&view=diff >>> >>> ============================================================================== >>> --- >>> incubator/shindig/branches/1.0.x-incubating/java/social-api/src/main/java/org/apache/shindig/social/core/oauth/OAuthConsumerRequestAuthenticationHandler.java >>> (original) >>> +++ >>> incubator/shindig/branches/1.0.x-incubating/java/social-api/src/main/java/org/apache/shindig/social/core/oauth/OAuthConsumerRequestAuthenticationHandler.java >>> Thu Jan 22 13:06:02 2009 >>> @@ -79,4 +79,4 @@ >>> } >>> } >>> >>> -} >>> \ No newline at end of file >>> +} >>> >>> Modified: >>> incubator/shindig/branches/1.0.x-incubating/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/ActivityHandler.java >>> URL: >>> http://svn.apache.org/viewvc/incubator/shindig/branches/1.0.x-incubating/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/ActivityHandler.java?rev=736793&r1=736792&r2=736793&view=diff >>> >>> ============================================================================== >>> --- >>> incubator/shindig/branches/1.0.x-incubating/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/ActivityHandler.java >>> (original) >>> +++ >>> incubator/shindig/branches/1.0.x-incubating/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/ActivityHandler.java >>> Thu Jan 22 13:06:02 2009 >>> @@ -17,10 +17,15 @@ >>> */ >>> package org.apache.shindig.social.opensocial.service; >>> >>> +import org.apache.shindig.social.core.util.ContainerConf; >>> import org.apache.shindig.social.opensocial.model.Activity; >>> import org.apache.shindig.social.opensocial.spi.ActivityService; >>> import org.apache.shindig.social.opensocial.spi.SocialSpiException; >>> import org.apache.shindig.social.opensocial.spi.UserId; >>> +import org.apache.shindig.common.ContainerConfigException; >>> +import org.apache.shindig.common.util.ImmediateFuture; >>> +import org.apache.shindig.social.opensocial.spi.RestfulCollection; >>> +import org.apache.shindig.social.opensocial.spi.CollectionOptions; >>> >>> import com.google.common.collect.Sets; >>> import com.google.inject.Inject; >>> @@ -28,15 +33,23 @@ >>> import java.util.List; >>> import java.util.Set; >>> import java.util.concurrent.Future; >>> +import java.util.logging.Level; >>> +import java.util.logging.Logger; >>> +import java.util.regex.Matcher; >>> +import java.util.regex.Pattern; >>> >>> public class ActivityHandler extends DataRequestHandler { >>> + private final static Logger logger = >>> Logger.getLogger(ActivityHandler.class.getName()); >>> private final ActivityService service; >>> >>> private static final String ACTIVITY_ID_PATH >>> = "/activities/{userId}+/{groupId}/{appId}/{activityId}+"; >>> + private static final String ACTIVITY_SUP_FIELDS_REGEX = >>> "/activities/@supportedFields"; >>> + private static Pattern activityPatternSupFields = >>> Pattern.compile(ACTIVITY_SUP_FIELDS_REGEX); >>> >>> @Inject >>> - public ActivityHandler(ActivityService service) { >>> + public ActivityHandler(ActivityService service, ContainerConf >>> containerConf) { >>> + super(containerConf); >>> this.service = service; >>> } >>> >>> @@ -103,6 +116,15 @@ >>> @Override >>> protected Future<?> handleGet(RequestItem request) >>> throws SocialSpiException { >>> + if (isValidSupportedFieldsRestCall(request)) { >>> + List<String> activityFieldsList = null; >>> + try { >>> + activityFieldsList = >>> containerConf.getActivityFieldsList(); >>> + } catch (ContainerConfigException e) { >>> + logger.log(Level.SEVERE,"Not able to retrieve >>> ActivityFields from container.js",e); >>> + } >>> + return ImmediateFuture.newInstance(new >>> RestfulCollection<String>(activityFieldsList)); >>> + } >>> request.applyUrlTemplate(ACTIVITY_ID_PATH); >>> >>> Set<UserId> userIds = request.getUsers(); >>> @@ -131,5 +153,11 @@ >>> // getSortBy(params), getFilterBy(params), getStartIndex(params), >>> getCount(params), >>> request.getFields(), request.getToken()); >>> } >>> - >>> + >>> + private boolean isValidSupportedFieldsRestCall(RequestItem request) { >>> + String url = ((RestfulRequestItem)request).getUrl(); >>> + Matcher supFieldsMatcher = activityPatternSupFields.matcher(url); >>> + boolean isValidSupFieldsUrl = supFieldsMatcher.matches(); >>> + return isValidSupFieldsUrl; >>> + } >>> } >>> >>> Modified: >>> incubator/shindig/branches/1.0.x-incubating/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/AppDataHandler.java >>> URL: >>> http://svn.apache.org/viewvc/incubator/shindig/branches/1.0.x-incubating/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/AppDataHandler.java?rev=736793&r1=736792&r2=736793&view=diff >>> >>> ============================================================================== >>> --- >>> incubator/shindig/branches/1.0.x-incubating/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/AppDataHandler.java >>> (original) >>> +++ >>> incubator/shindig/branches/1.0.x-incubating/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/AppDataHandler.java >>> Thu Jan 22 13:06:02 2009 >>> @@ -18,6 +18,7 @@ >>> package org.apache.shindig.social.opensocial.service; >>> >>> import org.apache.shindig.social.ResponseError; >>> +import org.apache.shindig.social.core.util.ContainerConf; >>> import org.apache.shindig.social.opensocial.spi.AppDataService; >>> import org.apache.shindig.social.opensocial.spi.SocialSpiException; >>> import org.apache.shindig.social.opensocial.spi.UserId; >>> @@ -36,7 +37,8 @@ >>> private static final String APP_DATA_PATH = >>> "/appdata/{userId}+/{groupId}/{appId}"; >>> >>> @Inject >>> - public AppDataHandler(AppDataService service) { >>> + public AppDataHandler(AppDataService service, ContainerConf >>> containerConf) { >>> + super(containerConf); >>> this.service = service; >>> } >>> >>> >>> Modified: >>> incubator/shindig/branches/1.0.x-incubating/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/DataRequestHandler.java >>> URL: >>> http://svn.apache.org/viewvc/incubator/shindig/branches/1.0.x-incubating/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/DataRequestHandler.java?rev=736793&r1=736792&r2=736793&view=diff >>> >>> ============================================================================== >>> --- >>> incubator/shindig/branches/1.0.x-incubating/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/DataRequestHandler.java >>> (original) >>> +++ >>> incubator/shindig/branches/1.0.x-incubating/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/DataRequestHandler.java >>> Thu Jan 22 13:06:02 2009 >>> @@ -20,6 +20,7 @@ >>> import org.apache.shindig.common.util.ImmediateFuture; >>> import org.apache.shindig.social.ResponseError; >>> import org.apache.shindig.social.opensocial.spi.SocialSpiException; >>> +import org.apache.shindig.social.core.util.ContainerConf; >>> >>> import com.google.common.collect.ImmutableSet; >>> >>> @@ -33,7 +34,16 @@ >>> private static final Set<String> CREATE_SYNONYMS = >>> ImmutableSet.of("put", "create"); >>> private static final Set<String> UPDATE_SYNONYMS = >>> ImmutableSet.of("post", "update"); >>> private static final Set<String> DELETE_SYNONYMS = >>> ImmutableSet.of("delete"); >>> - >>> + protected ContainerConf containerConf; >>> + >>> + /** >>> + * >>> + */ >>> + >>> + public DataRequestHandler(ContainerConf containerConf) { >>> + this.containerConf = containerConf; >>> + } >>> + >>> public Future<?> handleItem(RequestItem request) { >>> if (request.getOperation() == null) { >>> return ImmediateFuture.errorInstance(new >>> SocialSpiException(ResponseError.NOT_IMPLEMENTED, >>> >>> Modified: >>> incubator/shindig/branches/1.0.x-incubating/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/PersonHandler.java >>> URL: >>> http://svn.apache.org/viewvc/incubator/shindig/branches/1.0.x-incubating/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/PersonHandler.java?rev=736793&r1=736792&r2=736793&view=diff >>> >>> ============================================================================== >>> --- >>> incubator/shindig/branches/1.0.x-incubating/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/PersonHandler.java >>> (original) >>> +++ >>> incubator/shindig/branches/1.0.x-incubating/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/PersonHandler.java >>> Thu Jan 22 13:06:02 2009 >>> @@ -17,7 +17,10 @@ >>> */ >>> package org.apache.shindig.social.opensocial.service; >>> >>> +import org.apache.shindig.common.ContainerConfigException; >>> +import org.apache.shindig.common.util.ImmediateFuture; >>> import org.apache.shindig.social.ResponseError; >>> +import org.apache.shindig.social.core.util.ContainerConf; >>> import org.apache.shindig.social.opensocial.model.Person; >>> import org.apache.shindig.social.opensocial.spi.CollectionOptions; >>> import org.apache.shindig.social.opensocial.spi.GroupId; >>> @@ -27,19 +30,25 @@ >>> >>> import com.google.common.collect.Sets; >>> import com.google.inject.Inject; >>> - >>> import java.util.Set; >>> import java.util.concurrent.Future; >>> +import java.util.logging.Logger; >>> +import java.util.regex.Matcher; >>> +import java.util.regex.Pattern; >>> >>> >>> public class PersonHandler extends DataRequestHandler { >>> - >>> + private final static Logger logger = >>> Logger.getLogger(PersonHandler.class.getName()); >>> private final PersonService personService; >>> >>> private static final String PEOPLE_PATH = >>> "/people/{userId}+/{groupId}/{personId}+"; >>> - >>> + private static final String PEOPLE_SUP_FIELDS_REGEX = >>> "/people/@supportedFields"; >>> + private static Pattern peoplePatternSupFields = >>> Pattern.compile(PEOPLE_SUP_FIELDS_REGEX); >>> + private Object personFields = null; >>> + >>> @Inject >>> - public PersonHandler(PersonService personService) { >>> + public PersonHandler(PersonService personService, ContainerConf >>> containerConf) { >>> + super(containerConf); >>> this.personService = personService; >>> } >>> >>> @@ -66,7 +75,20 @@ >>> @Override >>> protected Future<?> handleGet(RequestItem request) throws >>> SocialSpiException { >>> request.applyUrlTemplate(PEOPLE_PATH); >>> - >>> + if (request instanceof RestfulRequestItem) { >>> + if (isValidSupportedFieldsRestCall(request)) { >>> + if (personFields == null) { >>> + logger.fine("personFieldsList is null"); >>> + try { >>> + personFields = this.containerConf.getPersonFields(); >>> + } catch (ContainerConfigException e) { >>> + throw new SocialSpiException(ResponseError.INTERNAL_ERROR, >>> + "Error trying to Supported Person Fields from >>> container.js", e); >>> + } >>> + } >>> + return ImmediateFuture.newInstance(personFields); >>> + } >>> + } >>> GroupId groupId = request.getGroup(); >>> Set<String> optionalPersonId = >>> Sets.newLinkedHashSet(request.getListParameter("personId")); >>> Set<String> fields = request.getFields(Person.Field.DEFAULT_FIELDS); >>> @@ -106,4 +128,11 @@ >>> // Every other case is a collection response. >>> return personService.getPeople(userIds, groupId, options, fields, >>> request.getToken()); >>> } >>> + >>> + private boolean isValidSupportedFieldsRestCall(RequestItem request) { >>> + String url = ((RestfulRequestItem)request).getUrl(); >>> + Matcher supFieldsMatcher =peoplePatternSupFields.matcher(url); >>> + boolean isValidSupFieldsUrl = supFieldsMatcher.matches(); >>> + return isValidSupFieldsUrl; >>> + } >>> } >>> >>> Modified: >>> incubator/shindig/branches/1.0.x-incubating/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/RestfulRequestItem.java >>> URL: >>> http://svn.apache.org/viewvc/incubator/shindig/branches/1.0.x-incubating/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/RestfulRequestItem.java?rev=736793&r1=736792&r2=736793&view=diff >>> >>> ============================================================================== >>> --- >>> incubator/shindig/branches/1.0.x-incubating/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/RestfulRequestItem.java >>> (original) >>> +++ >>> incubator/shindig/branches/1.0.x-incubating/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/RestfulRequestItem.java >>> Thu Jan 22 13:06:02 2009 >>> @@ -244,4 +244,8 @@ >>> } >>> return stringList; >>> } >>> + >>> + public String getUrl() { >>> + return this.url; >>> + } >>> } >>> >>> Modified: >>> incubator/shindig/branches/1.0.x-incubating/java/social-api/src/main/java/org/apache/shindig/social/sample/service/SampleContainerHandler.java >>> URL: >>> http://svn.apache.org/viewvc/incubator/shindig/branches/1.0.x-incubating/java/social-api/src/main/java/org/apache/shindig/social/sample/service/SampleContainerHandler.java?rev=736793&r1=736792&r2=736793&view=diff >>> >>> ============================================================================== >>> --- >>> incubator/shindig/branches/1.0.x-incubating/java/social-api/src/main/java/org/apache/shindig/social/sample/service/SampleContainerHandler.java >>> (original) >>> +++ >>> incubator/shindig/branches/1.0.x-incubating/java/social-api/src/main/java/org/apache/shindig/social/sample/service/SampleContainerHandler.java >>> Thu Jan 22 13:06:02 2009 >>> @@ -25,6 +25,7 @@ >>> import org.apache.commons.httpclient.methods.GetMethod; >>> import org.apache.shindig.common.util.ImmediateFuture; >>> import org.apache.shindig.social.ResponseError; >>> +import org.apache.shindig.social.core.util.ContainerConf; >>> import org.apache.shindig.social.opensocial.service.DataRequestHandler; >>> import org.apache.shindig.social.opensocial.service.RequestItem; >>> import org.apache.shindig.social.opensocial.spi.SocialSpiException; >>> @@ -42,7 +43,8 @@ >>> private static final String POST_PATH = >>> "/samplecontainer/{type}/{doevil}"; >>> >>> @Inject >>> - public SampleContainerHandler(JsonDbOpensocialService dbService) { >>> + public SampleContainerHandler(JsonDbOpensocialService dbService, >>> ContainerConf containerConf) { >>> + super(containerConf); >>> this.service = dbService; >>> } >>> >>> >>> Modified: >>> incubator/shindig/branches/1.0.x-incubating/java/social-api/src/test/java/org/apache/shindig/social/SocialApiTestsGuiceModule.java >>> URL: >>> http://svn.apache.org/viewvc/incubator/shindig/branches/1.0.x-incubating/java/social-api/src/test/java/org/apache/shindig/social/SocialApiTestsGuiceModule.java?rev=736793&r1=736792&r2=736793&view=diff >>> >>> ============================================================================== >>> --- >>> incubator/shindig/branches/1.0.x-incubating/java/social-api/src/test/java/org/apache/shindig/social/SocialApiTestsGuiceModule.java >>> (original) >>> +++ >>> incubator/shindig/branches/1.0.x-incubating/java/social-api/src/test/java/org/apache/shindig/social/SocialApiTestsGuiceModule.java >>> Thu Jan 22 13:06:02 2009 >>> @@ -22,6 +22,8 @@ >>> import org.apache.shindig.social.core.util.BeanJsonConverter; >>> import org.apache.shindig.social.core.util.BeanXStreamConverter; >>> import org.apache.shindig.social.core.util.BeanXmlConverter; >>> +import org.apache.shindig.social.core.util.ContainerConf; >>> +import org.apache.shindig.social.core.util.JsonContainerConf; >>> import org.apache.shindig.social.opensocial.service.BeanConverter; >>> import >>> org.apache.shindig.social.opensocial.service.DataServiceServletFetcher; >>> >>> @@ -45,6 +47,8 @@ >>> BeanXStreamConverter.class); >>> >>> bind(BeanConverter.class).annotatedWith(Names.named("shindig.bean.converter.json")).to( >>> BeanJsonConverter.class); >>> + bind(ContainerConf.class).to(JsonContainerConf.class); >>> + >>> >>> } >>> } >>> >>> Modified: >>> incubator/shindig/branches/1.0.x-incubating/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/ActivityHandlerTest.java >>> URL: >>> http://svn.apache.org/viewvc/incubator/shindig/branches/1.0.x-incubating/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/ActivityHandlerTest.java?rev=736793&r1=736792&r2=736793&view=diff >>> >>> ============================================================================== >>> --- >>> incubator/shindig/branches/1.0.x-incubating/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/ActivityHandlerTest.java >>> (original) >>> +++ >>> incubator/shindig/branches/1.0.x-incubating/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/ActivityHandlerTest.java >>> Thu Jan 22 13:06:02 2009 >>> @@ -25,6 +25,8 @@ >>> import org.apache.shindig.social.EasyMockTestCase; >>> import org.apache.shindig.social.core.model.ActivityImpl; >>> import org.apache.shindig.social.core.util.BeanJsonConverter; >>> +import org.apache.shindig.social.core.util.ContainerConf; >>> +import org.apache.shindig.social.core.util.JsonContainerConf; >>> import org.apache.shindig.social.opensocial.model.Activity; >>> import org.apache.shindig.social.opensocial.spi.ActivityService; >>> import org.apache.shindig.social.opensocial.spi.GroupId; >>> @@ -58,8 +60,8 @@ >>> token.setAppId("appId"); >>> converter = EasyMock.createMock(BeanJsonConverter.class); >>> activityService = EasyMock.createMock(ActivityService.class); >>> - >>> - handler = new ActivityHandler(activityService); >>> + ContainerConf containerConf = new JsonContainerConf(); >>> + handler = new ActivityHandler(activityService, containerConf); >>> } >>> >>> @Override >>> >>> Modified: >>> incubator/shindig/branches/1.0.x-incubating/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/AppDataHandlerTest.java >>> URL: >>> http://svn.apache.org/viewvc/incubator/shindig/branches/1.0.x-incubating/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/AppDataHandlerTest.java?rev=736793&r1=736792&r2=736793&view=diff >>> >>> ============================================================================== >>> --- >>> incubator/shindig/branches/1.0.x-incubating/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/AppDataHandlerTest.java >>> (original) >>> +++ >>> incubator/shindig/branches/1.0.x-incubating/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/AppDataHandlerTest.java >>> Thu Jan 22 13:06:02 2009 >>> @@ -24,6 +24,8 @@ >>> import org.apache.shindig.common.util.ImmediateFuture; >>> import org.apache.shindig.social.EasyMockTestCase; >>> import org.apache.shindig.social.core.util.BeanJsonConverter; >>> +import org.apache.shindig.social.core.util.ContainerConf; >>> +import org.apache.shindig.social.core.util.JsonContainerConf; >>> import org.apache.shindig.social.opensocial.spi.AppDataService; >>> import org.apache.shindig.social.opensocial.spi.DataCollection; >>> import org.apache.shindig.social.opensocial.spi.GroupId; >>> @@ -58,8 +60,8 @@ >>> token = new FakeGadgetToken(); >>> converter = EasyMock.createMock(BeanJsonConverter.class); >>> appDataService = EasyMock.createMock(AppDataService.class); >>> - >>> - handler = new AppDataHandler(appDataService); >>> + ContainerConf containerConf = new JsonContainerConf(); >>> + handler = new AppDataHandler(appDataService, containerConf); >>> } >>> >>> @Override >>> >>> Modified: >>> incubator/shindig/branches/1.0.x-incubating/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/PersonHandlerTest.java >>> URL: >>> http://svn.apache.org/viewvc/incubator/shindig/branches/1.0.x-incubating/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/PersonHandlerTest.java?rev=736793&r1=736792&r2=736793&view=diff >>> >>> ============================================================================== >>> --- >>> incubator/shindig/branches/1.0.x-incubating/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/PersonHandlerTest.java >>> (original) >>> +++ >>> incubator/shindig/branches/1.0.x-incubating/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/PersonHandlerTest.java >>> Thu Jan 22 13:06:02 2009 >>> @@ -22,6 +22,8 @@ >>> import org.apache.shindig.social.EasyMockTestCase; >>> import org.apache.shindig.social.ResponseError; >>> import org.apache.shindig.social.core.model.PersonImpl; >>> +import org.apache.shindig.social.core.util.ContainerConf; >>> +import org.apache.shindig.social.core.util.JsonContainerConf; >>> import org.apache.shindig.social.opensocial.model.Person; >>> import org.apache.shindig.social.opensocial.spi.CollectionOptions; >>> import org.apache.shindig.social.opensocial.spi.GroupId; >>> @@ -70,8 +72,8 @@ >>> protected void setUp() throws Exception { >>> token = new FakeGadgetToken(); >>> personService = EasyMock.createMock(PersonService.class); >>> - >>> - handler = new PersonHandler(personService); >>> + ContainerConf containerConf = new JsonContainerConf(); >>> + handler = new PersonHandler(personService, containerConf); >>> } >>> >>> @Override >>> >>> Modified: >>> incubator/shindig/branches/1.0.x-incubating/java/social-api/src/test/java/org/apache/shindig/social/opensocial/spi/DataRequestHandlerTest.java >>> URL: >>> http://svn.apache.org/viewvc/incubator/shindig/branches/1.0.x-incubating/java/social-api/src/test/java/org/apache/shindig/social/opensocial/spi/DataRequestHandlerTest.java?rev=736793&r1=736792&r2=736793&view=diff >>> >>> ============================================================================== >>> --- >>> incubator/shindig/branches/1.0.x-incubating/java/social-api/src/test/java/org/apache/shindig/social/opensocial/spi/DataRequestHandlerTest.java >>> (original) >>> +++ >>> incubator/shindig/branches/1.0.x-incubating/java/social-api/src/test/java/org/apache/shindig/social/opensocial/spi/DataRequestHandlerTest.java >>> Thu Jan 22 13:06:02 2009 >>> @@ -21,6 +21,8 @@ >>> >>> import org.apache.shindig.common.util.ImmediateFuture; >>> import org.apache.shindig.social.ResponseError; >>> +import org.apache.shindig.social.core.util.ContainerConf; >>> +import org.apache.shindig.social.core.util.JsonContainerConf; >>> import org.apache.shindig.social.opensocial.service.DataRequestHandler; >>> import org.apache.shindig.social.opensocial.service.RequestItem; >>> import org.apache.shindig.social.opensocial.service.RestfulRequestItem; >>> @@ -34,7 +36,8 @@ >>> >>> @Override >>> protected void setUp() throws Exception { >>> - drh = new DataRequestHandler() { >>> + ContainerConf containerConf = new JsonContainerConf(); >>> + drh = new DataRequestHandler(containerConf) { >>> protected Future<?> handleDelete(RequestItem request) { >>> return ImmediateFuture.newInstance("DELETE"); >>> } >>> >>> >>> > >

