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");
>>>     }
>>>
>>>
>>>
>
>

Reply via email to