You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@abdera.apache.org by jm...@apache.org on 2008/01/22 02:41:39 UTC

svn commit: r614086 - in /incubator/abdera/java/branches/server_refactor/src: main/java/org/apache/abdera/protocol/server/impl/ main/java/org/apache/abdera/protocol/server/provider/basic/ main/java/org/apache/abdera/protocol/server/provider/ext/ test/j...

Author: jmsnell
Date: Mon Jan 21 17:41:37 2008
New Revision: 614086

URL: http://svn.apache.org/viewvc?rev=614086&view=rev
Log:
Ok, the next iteration.  This moves the feed-server derived stuff on top of the ext stuff.  This collapses things down even further.

Oh, and the feed-server derived stuff will now generate a service document.

Added:
    incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/impl/AbstractWorkspaceInfo.java
      - copied, changed from r614076, incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/provider/ext/AbstractWorkspaceInfo.java
    incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/impl/CollectionInfo.java
      - copied, changed from r614076, incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/provider/ext/CollectionInfo.java
    incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/impl/ExtendedProvider.java
      - copied, changed from r614076, incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/provider/ext/ExtendedProvider.java
    incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/impl/SimpleCollection.java
      - copied, changed from r614076, incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/provider/ext/SimpleCollection.java
    incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/impl/SimpleWorkspace.java
      - copied, changed from r614076, incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/provider/ext/SimpleWorkspace.java
    incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/impl/WorkspaceInfo.java
      - copied, changed from r614076, incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/provider/ext/WorkspaceInfo.java
    incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/provider/basic/BasicWorkspace.java
Removed:
    incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/provider/basic/BasicProvider.java
    incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/provider/basic/BasicTargetResolver.java
    incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/provider/ext/
Modified:
    incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/impl/AbstractProvider.java
    incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/impl/AbstractWorkspaceProvider.java
    incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/impl/RegexTargetResolver.java
    incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/provider/basic/BasicAdapter.java
    incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/provider/basic/BasicServiceContext.java
    incubator/abdera/java/branches/server_refactor/src/test/java/org/apache/abdera/protocol/server/test/ext/TestServiceContext.java

Modified: incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/impl/AbstractProvider.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/impl/AbstractProvider.java?rev=614086&r1=614085&r2=614086&view=diff
==============================================================================
--- incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/impl/AbstractProvider.java (original)
+++ incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/impl/AbstractProvider.java Mon Jan 21 17:41:37 2008
@@ -31,16 +31,6 @@
 public abstract class AbstractProvider 
   implements Provider {
   
-  protected CollectionAdapterManager cam;
-  
-  protected CollectionAdapterManager getCollectionAdapterManager(
-    RequestContext request) {
-      if (cam == null) 
-        cam = new CollectionAdapterManager(
-          request.getAbdera());
-    return cam;
-  }
-  
   public ResponseContext process(
     RequestContext request) {    
       Target target = request.getTarget();

Copied: incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/impl/AbstractWorkspaceInfo.java (from r614076, incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/provider/ext/AbstractWorkspaceInfo.java)
URL: http://svn.apache.org/viewvc/incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/impl/AbstractWorkspaceInfo.java?p2=incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/impl/AbstractWorkspaceInfo.java&p1=incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/provider/ext/AbstractWorkspaceInfo.java&r1=614076&r2=614086&rev=614086&view=diff
==============================================================================
--- incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/provider/ext/AbstractWorkspaceInfo.java (original)
+++ incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/impl/AbstractWorkspaceInfo.java Mon Jan 21 17:41:37 2008
@@ -15,7 +15,7 @@
 * copyright in this work, please see the NOTICE file in the top level
 * directory of this distribution.
 */
-package org.apache.abdera.protocol.server.provider.ext;
+package org.apache.abdera.protocol.server.impl;
 
 import org.apache.abdera.protocol.server.ProviderHelper;
 import org.apache.abdera.protocol.server.RequestContext;

Modified: incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/impl/AbstractWorkspaceProvider.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/impl/AbstractWorkspaceProvider.java?rev=614086&r1=614085&r2=614086&view=diff
==============================================================================
--- incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/impl/AbstractWorkspaceProvider.java (original)
+++ incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/impl/AbstractWorkspaceProvider.java Mon Jan 21 17:41:37 2008
@@ -17,7 +17,6 @@
 */
 package org.apache.abdera.protocol.server.impl;
 
-import org.apache.abdera.protocol.server.CollectionAdapter;
 import org.apache.abdera.protocol.server.ProviderHelper;
 import org.apache.abdera.protocol.server.RequestContext;
 import org.apache.abdera.protocol.server.WorkspaceManager;
@@ -48,16 +47,6 @@
         getMethods(request));
   }
 
-  public CollectionAdapter getCollectionAdapter(
-      RequestContext request) {
-        try {
-          return getCollectionAdapterManager(request)
-            .getAdapter(getAdapterIdentifier(request));
-        } catch (Exception e) {
-          throw new RuntimeException(e);
-        }
-    }
-  
   protected String getAdapterIdentifier(
     RequestContext request) {
       return null;

Copied: incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/impl/CollectionInfo.java (from r614076, incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/provider/ext/CollectionInfo.java)
URL: http://svn.apache.org/viewvc/incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/impl/CollectionInfo.java?p2=incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/impl/CollectionInfo.java&p1=incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/provider/ext/CollectionInfo.java&r1=614076&r2=614086&rev=614086&view=diff
==============================================================================
--- incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/provider/ext/CollectionInfo.java (original)
+++ incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/impl/CollectionInfo.java Mon Jan 21 17:41:37 2008
@@ -15,7 +15,7 @@
 * copyright in this work, please see the NOTICE file in the top level
 * directory of this distribution.
 */
-package org.apache.abdera.protocol.server.provider.ext;
+package org.apache.abdera.protocol.server.impl;
 
 import org.apache.abdera.protocol.server.CollectionAdapter;
 import org.apache.abdera.protocol.server.RequestContext;

Copied: incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/impl/ExtendedProvider.java (from r614076, incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/provider/ext/ExtendedProvider.java)
URL: http://svn.apache.org/viewvc/incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/impl/ExtendedProvider.java?p2=incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/impl/ExtendedProvider.java&p1=incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/provider/ext/ExtendedProvider.java&r1=614076&r2=614086&rev=614086&view=diff
==============================================================================
--- incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/provider/ext/ExtendedProvider.java (original)
+++ incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/impl/ExtendedProvider.java Mon Jan 21 17:41:37 2008
@@ -15,7 +15,7 @@
 * copyright in this work, please see the NOTICE file in the top level
 * directory of this distribution.
 */
-package org.apache.abdera.protocol.server.provider.ext;
+package org.apache.abdera.protocol.server.impl;
 
 import java.io.IOException;
 import java.util.ArrayList;
@@ -25,7 +25,6 @@
 import org.apache.abdera.protocol.server.ResponseContext;
 import org.apache.abdera.protocol.server.WorkspaceManager;
 import org.apache.abdera.protocol.server.context.StreamWriterResponseContext;
-import org.apache.abdera.protocol.server.impl.AbstractProvider;
 import org.apache.abdera.util.Constants;
 import org.apache.abdera.writer.StreamWriter;
 
@@ -33,6 +32,13 @@
   extends AbstractProvider {
   
   private List<WorkspaceInfo> workspaces = new ArrayList<WorkspaceInfo>();
+  
+  public ExtendedProvider() {}
+  
+  public ExtendedProvider(WorkspaceInfo... workspaces) {
+    for (WorkspaceInfo wi : workspaces)
+      addWorkspace(wi);
+  }
   
   public void addWorkspace(WorkspaceInfo wi) {
     if (!workspaces.contains(wi))

Modified: incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/impl/RegexTargetResolver.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/impl/RegexTargetResolver.java?rev=614086&r1=614085&r2=614086&view=diff
==============================================================================
--- incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/impl/RegexTargetResolver.java (original)
+++ incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/impl/RegexTargetResolver.java Mon Jan 21 17:41:37 2008
@@ -17,8 +17,10 @@
 */
 package org.apache.abdera.protocol.server.impl;
 
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
@@ -164,16 +166,20 @@
     }
     
     public String getParameter(String name) {
-      if (fields == null) return null;
+      if (fields == null) return super.getParameter(name);
       int idx = 0;
       for (int n = 0; n < fields.length; n++)
         if (fields[n].equalsIgnoreCase(name)) idx = n + 1;
       return idx > 0 && idx <= matcher.groupCount() ? 
-        matcher.group(idx) : null;
+        matcher.group(idx) : super.getParameter(name);
     }
 
     public String[] getParameterNames() {
-      return fields;
+      String[] names = super.getParameterNames();
+      List<String> list = new ArrayList<String>();
+      if (names != null) list.addAll(Arrays.asList(names));
+      if (fields != null) list.addAll(Arrays.asList(fields));
+      return list.toArray(new String[list.size()]);
     }
 
     @Override

Copied: incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/impl/SimpleCollection.java (from r614076, incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/provider/ext/SimpleCollection.java)
URL: http://svn.apache.org/viewvc/incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/impl/SimpleCollection.java?p2=incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/impl/SimpleCollection.java&p1=incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/provider/ext/SimpleCollection.java&r1=614076&r2=614086&rev=614086&view=diff
==============================================================================
--- incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/provider/ext/SimpleCollection.java (original)
+++ incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/impl/SimpleCollection.java Mon Jan 21 17:41:37 2008
@@ -15,7 +15,7 @@
 * copyright in this work, please see the NOTICE file in the top level
 * directory of this distribution.
 */
-package org.apache.abdera.protocol.server.provider.ext;
+package org.apache.abdera.protocol.server.impl;
 
 import org.apache.abdera.protocol.server.CollectionAdapter;
 import org.apache.abdera.protocol.server.RequestContext;

Copied: incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/impl/SimpleWorkspace.java (from r614076, incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/provider/ext/SimpleWorkspace.java)
URL: http://svn.apache.org/viewvc/incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/impl/SimpleWorkspace.java?p2=incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/impl/SimpleWorkspace.java&p1=incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/provider/ext/SimpleWorkspace.java&r1=614076&r2=614086&rev=614086&view=diff
==============================================================================
--- incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/provider/ext/SimpleWorkspace.java (original)
+++ incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/impl/SimpleWorkspace.java Mon Jan 21 17:41:37 2008
@@ -15,7 +15,7 @@
 * copyright in this work, please see the NOTICE file in the top level
 * directory of this distribution.
 */
-package org.apache.abdera.protocol.server.provider.ext;
+package org.apache.abdera.protocol.server.impl;
 
 import java.util.ArrayList;
 import java.util.List;

Copied: incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/impl/WorkspaceInfo.java (from r614076, incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/provider/ext/WorkspaceInfo.java)
URL: http://svn.apache.org/viewvc/incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/impl/WorkspaceInfo.java?p2=incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/impl/WorkspaceInfo.java&p1=incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/provider/ext/WorkspaceInfo.java&r1=614076&r2=614086&rev=614086&view=diff
==============================================================================
--- incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/provider/ext/WorkspaceInfo.java (original)
+++ incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/impl/WorkspaceInfo.java Mon Jan 21 17:41:37 2008
@@ -15,7 +15,7 @@
 * copyright in this work, please see the NOTICE file in the top level
 * directory of this distribution.
 */
-package org.apache.abdera.protocol.server.provider.ext;
+package org.apache.abdera.protocol.server.impl;
 
 import org.apache.abdera.protocol.server.RequestContext;
 import org.apache.abdera.protocol.server.WorkspaceManager;

Modified: incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/provider/basic/BasicAdapter.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/provider/basic/BasicAdapter.java?rev=614086&r1=614085&r2=614086&view=diff
==============================================================================
--- incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/provider/basic/BasicAdapter.java (original)
+++ incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/provider/basic/BasicAdapter.java Mon Jan 21 17:41:37 2008
@@ -120,7 +120,7 @@
         String entryId = 
           !createFlag ? 
             target.getParameter(
-              BasicProvider.PARAM_ENTRY) : null;
+              BasicServiceContext.PARAM_ENTRY) : null;
         Entry newEntry = createFlag
             ? createEntry(inputEntry)
             : updateEntry(entryId, inputEntry);
@@ -148,7 +148,7 @@
   public ResponseContext deleteEntry(
     RequestContext request) {
       Target target = request.getTarget();
-      String entryId = target.getParameter(BasicProvider.PARAM_ENTRY);
+      String entryId = target.getParameter(BasicServiceContext.PARAM_ENTRY);
       try {
         return deleteEntry(entryId) ?
           ProviderHelper.nocontent() :
@@ -166,7 +166,7 @@
   public ResponseContext getEntry(
     RequestContext request) {
       Target target = request.getTarget();
-      String entryId = target.getParameter(BasicProvider.PARAM_ENTRY);
+      String entryId = target.getParameter(BasicServiceContext.PARAM_ENTRY);
       try {
         Entry entry = getEntry(entryId);
         return entry != null ?

Modified: incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/provider/basic/BasicServiceContext.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/provider/basic/BasicServiceContext.java?rev=614086&r1=614085&r2=614086&view=diff
==============================================================================
--- incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/provider/basic/BasicServiceContext.java (original)
+++ incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/provider/basic/BasicServiceContext.java Mon Jan 21 17:41:37 2008
@@ -17,14 +17,35 @@
 */
 package org.apache.abdera.protocol.server.provider.basic;
 
+import org.apache.abdera.protocol.Resolver;
+import org.apache.abdera.protocol.server.Provider;
+import org.apache.abdera.protocol.server.RequestContext;
+import org.apache.abdera.protocol.server.Target;
+import org.apache.abdera.protocol.server.TargetType;
 import org.apache.abdera.protocol.server.context.DefaultServiceContext;
+import org.apache.abdera.protocol.server.impl.ExtendedProvider;
+import org.apache.abdera.protocol.server.impl.RegexTargetResolver;
 
 public class BasicServiceContext 
   extends DefaultServiceContext {
 
-  public BasicServiceContext() {
-    this.defaultprovider = BasicProvider.class.getName();
-    this.defaulttargetresolver = BasicTargetResolver.class.getName();
-  }
+  public static final String PARAM_FEED = "feed";
+  public static final String PARAM_ENTRY = "entry";
+
+  public synchronized Provider getProvider(
+      RequestContext request) {
+        if (provider == null) {
+          provider = 
+            new ExtendedProvider(
+              new BasicWorkspace());
+        }
+        return provider;
+    }
     
+  public Resolver<Target> getTargetResolver() {
+    return new RegexTargetResolver()
+      .setPattern("/", TargetType.TYPE_SERVICE)
+      .setPattern("/" + "([^/#?]+)", TargetType.TYPE_COLLECTION, BasicServiceContext.PARAM_FEED)
+      .setPattern("/" + "([^/#?]+)/([^/#?]+)", TargetType.TYPE_ENTRY, BasicServiceContext.PARAM_FEED, BasicServiceContext.PARAM_ENTRY);
+  }
 }

Added: incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/provider/basic/BasicWorkspace.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/provider/basic/BasicWorkspace.java?rev=614086&view=auto
==============================================================================
--- incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/provider/basic/BasicWorkspace.java (added)
+++ incubator/abdera/java/branches/server_refactor/src/main/java/org/apache/abdera/protocol/server/provider/basic/BasicWorkspace.java Mon Jan 21 17:41:37 2008
@@ -0,0 +1,83 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  The ASF licenses this file to You
+* under the Apache License, Version 2.0 (the "License"); you may not
+* use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.  For additional information regarding
+* copyright in this work, please see the NOTICE file in the top level
+* directory of this distribution.
+*/
+package org.apache.abdera.protocol.server.provider.basic;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+
+import org.apache.abdera.protocol.server.CollectionAdapter;
+import org.apache.abdera.protocol.server.RequestContext;
+import org.apache.abdera.protocol.server.impl.AbstractWorkspaceInfo;
+import org.apache.abdera.protocol.server.impl.CollectionAdapterManager;
+import org.apache.abdera.protocol.server.impl.CollectionInfo;
+import org.apache.abdera.protocol.server.impl.SimpleCollection;
+
+public class BasicWorkspace
+  extends AbstractWorkspaceInfo {
+
+  protected CollectionAdapterManager cam;
+  
+  protected CollectionAdapterManager getCollectionAdapterManager(
+    RequestContext request) {
+      if (cam == null) 
+        cam = new CollectionAdapterManager(
+          request.getAbdera());
+    return cam;
+  }
+  
+  public CollectionInfo[] getCollections(RequestContext request) {
+    CollectionAdapterManager cam = getCollectionAdapterManager(request);
+    List<CollectionInfo> collections = new ArrayList<CollectionInfo>();
+    try {
+      Map<String,Properties> map = cam.listAdapters();
+      for (Map.Entry<String,Properties> entry : map.entrySet()) {
+        String id = entry.getKey();
+        Properties properties = entry.getValue();
+        CollectionAdapter ca = cam.getAdapter(id);
+        String href = properties.getProperty(BasicAdapter.PROP_NAME_FEED_URI);
+        String title = properties.getProperty(BasicAdapter.PROP_NAME_TITLE);
+        SimpleCollection col = new SimpleCollection(ca,id,title,href,"application/atom+xml;type=entry");
+        collections.add(col);
+      }
+    } catch (Exception e) {}
+    return collections.toArray(new CollectionInfo[collections.size()]);
+  }
+
+  public CollectionAdapter getCollectionAdapter(RequestContext request) {
+    try {
+      return getCollectionAdapterManager(request)
+        .getAdapter(
+          request.getTarget()
+            .getParameter(
+              BasicServiceContext.PARAM_FEED));
+    } catch (Exception e) {
+      return null;
+    }
+  }
+
+  public String getTitle(RequestContext request) {
+    return "Abdera";
+  }
+
+  public boolean isWorkspaceFor(RequestContext request) {
+    return getCollectionAdapter(request) != null;
+  }
+
+}

Modified: incubator/abdera/java/branches/server_refactor/src/test/java/org/apache/abdera/protocol/server/test/ext/TestServiceContext.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/branches/server_refactor/src/test/java/org/apache/abdera/protocol/server/test/ext/TestServiceContext.java?rev=614086&r1=614085&r2=614086&view=diff
==============================================================================
--- incubator/abdera/java/branches/server_refactor/src/test/java/org/apache/abdera/protocol/server/test/ext/TestServiceContext.java (original)
+++ incubator/abdera/java/branches/server_refactor/src/test/java/org/apache/abdera/protocol/server/test/ext/TestServiceContext.java Mon Jan 21 17:41:37 2008
@@ -23,10 +23,10 @@
 import org.apache.abdera.protocol.server.Target;
 import org.apache.abdera.protocol.server.TargetType;
 import org.apache.abdera.protocol.server.context.DefaultServiceContext;
+import org.apache.abdera.protocol.server.impl.ExtendedProvider;
 import org.apache.abdera.protocol.server.impl.RegexTargetResolver;
-import org.apache.abdera.protocol.server.provider.ext.ExtendedProvider;
-import org.apache.abdera.protocol.server.provider.ext.SimpleCollection;
-import org.apache.abdera.protocol.server.provider.ext.SimpleWorkspace;
+import org.apache.abdera.protocol.server.impl.SimpleCollection;
+import org.apache.abdera.protocol.server.impl.SimpleWorkspace;
 import org.apache.abdera.protocol.server.test.simple.SimpleAdapter;
 
 public class TestServiceContext