You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@abdera.apache.org by da...@apache.org on 2008/01/31 00:11:50 UTC

svn commit: r616940 - in /incubator/abdera/java/trunk/server/src/main/java/org/apache/abdera/protocol/server: context/ResponseContextException.java impl/AbstractEntityCollectionAdapter.java impl/AbstractWorkspaceManager.java

Author: dandiep
Date: Wed Jan 30 15:11:48 2008
New Revision: 616940

URL: http://svn.apache.org/viewvc?rev=616940&view=rev
Log:
Clean up AECA - allow the use of different feed URLs for individual entries. Fix putMedia. Add a setter for AbstractWorkspaceManager.workspaces.

Modified:
    incubator/abdera/java/trunk/server/src/main/java/org/apache/abdera/protocol/server/context/ResponseContextException.java
    incubator/abdera/java/trunk/server/src/main/java/org/apache/abdera/protocol/server/impl/AbstractEntityCollectionAdapter.java
    incubator/abdera/java/trunk/server/src/main/java/org/apache/abdera/protocol/server/impl/AbstractWorkspaceManager.java

Modified: incubator/abdera/java/trunk/server/src/main/java/org/apache/abdera/protocol/server/context/ResponseContextException.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/server/src/main/java/org/apache/abdera/protocol/server/context/ResponseContextException.java?rev=616940&r1=616939&r2=616940&view=diff
==============================================================================
--- incubator/abdera/java/trunk/server/src/main/java/org/apache/abdera/protocol/server/context/ResponseContextException.java (original)
+++ incubator/abdera/java/trunk/server/src/main/java/org/apache/abdera/protocol/server/context/ResponseContextException.java Wed Jan 30 15:11:48 2008
@@ -17,19 +17,21 @@
 */
 package org.apache.abdera.protocol.server.context;
 
+import org.apache.abdera.protocol.server.ResponseContext;
+
 
 public class ResponseContextException extends Exception {
 
   private static final long serialVersionUID = -3031651143835987024L;
 
-  private AbstractResponseContext responseContext;
+  private ResponseContext responseContext;
 
-  public ResponseContextException(AbstractResponseContext responseContext, Throwable t) {
+  public ResponseContextException(ResponseContext responseContext, Throwable t) {
     super(t);
     this.responseContext = responseContext;
   }
 
-  public ResponseContextException(AbstractResponseContext responseContext) {
+  public ResponseContextException(ResponseContext responseContext) {
     super();
     this.responseContext = responseContext;
   }
@@ -47,7 +49,7 @@
     this.responseContext.setStatusText(msg);
   }
 
-  public AbstractResponseContext getResponseContext() {
+  public ResponseContext getResponseContext() {
     return responseContext;
   }
 

Modified: incubator/abdera/java/trunk/server/src/main/java/org/apache/abdera/protocol/server/impl/AbstractEntityCollectionAdapter.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/server/src/main/java/org/apache/abdera/protocol/server/impl/AbstractEntityCollectionAdapter.java?rev=616940&r1=616939&r2=616940&view=diff
==============================================================================
--- incubator/abdera/java/trunk/server/src/main/java/org/apache/abdera/protocol/server/impl/AbstractEntityCollectionAdapter.java (original)
+++ incubator/abdera/java/trunk/server/src/main/java/org/apache/abdera/protocol/server/impl/AbstractEntityCollectionAdapter.java Wed Jan 30 15:11:48 2008
@@ -19,6 +19,7 @@
 
 import java.io.IOException;
 import java.io.InputStream;
+import java.net.URL;
 import java.util.Date;
 import java.util.List;
 
@@ -58,16 +59,18 @@
   @Override
   public ResponseContext postMedia(RequestContext request) {
     try {
-      T doc = postMedia(request.getContentType(), request.getSlug(), 
-                             request.getInputStream(), request);
+      T entryObj = postMedia(request.getContentType(), 
+                             request.getSlug(), 
+                             request.getInputStream(), 
+                             request);
 
-      IRI entryIri = getFeedIRI(request);
+      IRI entryIri = getFeedIRI(entryObj, request);
 
       Entry entry = request.getAbdera().getFactory().newEntry();
 
-      addEntryDetails(request, entry, entryIri, doc);
+      addEntryDetails(request, entry, entryIri, entryObj);
 
-      addMediaContent(entryIri, entry, doc);
+      addMediaContent(entryIri, entry, entryObj);
 
       return buildCreateMediaEntryResponse(entryIri, entry);
     } catch (IOException e) {
@@ -76,6 +79,29 @@
       return createErrorResponse(e);
     }
   }
+  
+  @Override
+  public ResponseContext putMedia(RequestContext request) {
+    try {
+      String id = getEntryID(request);
+      T entryObj = getEntry(id, request);
+      
+      putMedia(entryObj, request.getContentType(), request.getSlug(), 
+               request.getInputStream(), request);
+
+      return new EmptyResponseContext(200);
+    } catch (IOException e) {
+      return new EmptyResponseContext(500);
+    } catch (ResponseContextException e) {
+      return createErrorResponse(e);
+    }
+  }
+
+  public void putMedia(T entryObj, MimeType contentType, String slug,
+                       InputStream inputStream, RequestContext request)
+    throws ResponseContextException {
+    throw new ResponseContextException(ProviderHelper.notallowed(request));
+  }
 
   public ResponseContext postEntry(RequestContext request) {
     try {
@@ -95,7 +121,7 @@
                                  entry.getContentElement(), request);
           entry.getIdElement().setValue(getId(entryObj));
         
-          IRI entryBaseUri = getFeedIRI(request);          
+          IRI entryBaseUri = getFeedIRI(entryObj, request);          
           IRI entryIri = entryBaseUri.resolve(getName(entryObj));
           entry.addLink(entryIri.toString(), "edit");
     
@@ -175,18 +201,17 @@
 
   protected void addFeedDetails(Feed feed, RequestContext request) throws ResponseContextException {
     feed.setUpdated(new Date());
-
-    IRI entryIri = getFeedIRI(request);
     
     Iterable<T> entries = getEntries(request);
     if (entries != null) {
       for (T entryObj : entries) {
         Entry e = feed.addEntry();
   
-        addEntryDetails(request, e, entryIri, entryObj);
+        IRI feedIri = new IRI(getFeedIriForEntry(entryObj, request));
+        addEntryDetails(request, e, feedIri, entryObj);
 
         if (isMediaEntry(entryObj)) {
-          addMediaContent(entryIri, e, entryObj);
+          addMediaContent(feedIri, e, entryObj);
         } else {
           addContent(e, entryObj, request);
         }
@@ -194,10 +219,10 @@
     }
   }
 
-  private IRI getFeedIRI(RequestContext request) {
-    IRI entryIri = new IRI(getHref(request) + "/");
-    return entryIri;
+  private IRI getFeedIRI(T entryObj, RequestContext request) {
+    return new IRI(getFeedIriForEntry(entryObj, request) + "/");
   }
+  
   /**
    * Gets the UUID for the specified entry.
    * @param entry
@@ -262,7 +287,7 @@
         return new EmptyResponseContext(404);
       }
       
-      Entry orig_entry = getEntryFromCollectionProvider(entryObj, new IRI(getHref(request)), request);
+      Entry orig_entry = getEntryFromCollectionProvider(entryObj, new IRI(getFeedIriForEntry(entryObj, request)), request);
       if (orig_entry != null) {
 
         MimeType contentType = request.getContentType();
@@ -299,6 +324,10 @@
     
   }
 
+  protected String getFeedIriForEntry(T entryObj, RequestContext request) {
+    return getHref(request);
+  }
+
   public abstract void putEntry(T entry, String title, Date updated, 
                                 List<Person> authors, String summary, 
                                 Content content, RequestContext request) throws ResponseContextException;
@@ -314,8 +343,8 @@
   }
 
   protected void addEntryDetails(RequestContext request, Entry e, 
-                               IRI entryBaseIri, T entryObj) throws ResponseContextException {
-    IRI entryIri = entryBaseIri.resolve(getName(entryObj));
+                                 IRI feedIri, T entryObj) throws ResponseContextException {
+    IRI entryIri = feedIri.resolve(getName(entryObj));
     e.addLink(entryIri.toString(), "edit");
     e.setId(getId(entryObj));
     e.setTitle(getTitle(entryObj));
@@ -348,16 +377,16 @@
 
   protected ResponseContext createMediaEntry(RequestContext request) {
     try {
-      T doc = postMedia(request.getContentType(), request.getSlug(), 
+      T entryObj = postMedia(request.getContentType(), request.getSlug(), 
                                request.getInputStream(), request);
 
-      IRI feedUri = getFeedIRI(request);
+      IRI feedUri = getFeedIRI(entryObj, request);
 
       Entry entry = request.getAbdera().getFactory().newEntry();
 
-      addEntryDetails(request, entry, feedUri, doc);
+      addEntryDetails(request, entry, feedUri, entryObj);
 
-      addMediaContent(feedUri, entry, doc);
+      addMediaContent(feedUri, entry, entryObj);
 
       return buildCreateMediaEntryResponse(feedUri, entry);
     } catch (IOException e) {
@@ -386,7 +415,7 @@
         
         entry.getIdElement().setValue(getId(entryObj));
 
-        IRI feedUri = getFeedIRI(request);
+        IRI feedUri = getFeedIRI(entryObj, request);
 
         IRI entryIri = feedUri.resolve(getName(entryObj));
         entry.addLink(entryIri.toString(), "edit");

Modified: incubator/abdera/java/trunk/server/src/main/java/org/apache/abdera/protocol/server/impl/AbstractWorkspaceManager.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/server/src/main/java/org/apache/abdera/protocol/server/impl/AbstractWorkspaceManager.java?rev=616940&r1=616939&r2=616940&view=diff
==============================================================================
--- incubator/abdera/java/trunk/server/src/main/java/org/apache/abdera/protocol/server/impl/AbstractWorkspaceManager.java (original)
+++ incubator/abdera/java/trunk/server/src/main/java/org/apache/abdera/protocol/server/impl/AbstractWorkspaceManager.java Wed Jan 30 15:11:48 2008
@@ -33,6 +33,10 @@
     return workspaces;
   }
 
+  public void setWorkspaces(Collection<WorkspaceInfo> workspaces) {
+    this.workspaces = workspaces;
+  }
+
   public void addWorkspace(WorkspaceInfo workspace) {
     if (workspaces == null) {
       workspaces = new HashSet<WorkspaceInfo>();