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/26 00:34:53 UTC
svn commit: r615399 - in /incubator/abdera/java/branches/server_refactor_all:
examples/src/main/java/org/apache/abdera/examples/appserver/
server/src/main/java/org/apache/abdera/protocol/server/impl/
Author: jmsnell
Date: Fri Jan 25 15:34:44 2008
New Revision: 615399
URL: http://svn.apache.org/viewvc?rev=615399&view=rev
Log:
Fix up examples and some javadoc
Modified:
incubator/abdera/java/branches/server_refactor_all/examples/src/main/java/org/apache/abdera/examples/appserver/CustomProvider.java
incubator/abdera/java/branches/server_refactor_all/examples/src/main/java/org/apache/abdera/examples/appserver/SimpleAdapter.java
incubator/abdera/java/branches/server_refactor_all/server/src/main/java/org/apache/abdera/protocol/server/impl/TemplateTargetBuilder.java
Modified: incubator/abdera/java/branches/server_refactor_all/examples/src/main/java/org/apache/abdera/examples/appserver/CustomProvider.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/branches/server_refactor_all/examples/src/main/java/org/apache/abdera/examples/appserver/CustomProvider.java?rev=615399&r1=615398&r2=615399&view=diff
==============================================================================
--- incubator/abdera/java/branches/server_refactor_all/examples/src/main/java/org/apache/abdera/examples/appserver/CustomProvider.java (original)
+++ incubator/abdera/java/branches/server_refactor_all/examples/src/main/java/org/apache/abdera/examples/appserver/CustomProvider.java Fri Jan 25 15:34:44 2008
@@ -28,6 +28,8 @@
import org.apache.abdera.protocol.server.impl.RegexTargetResolver;
import org.apache.abdera.protocol.server.impl.SimpleCollectionInfo;
import org.apache.abdera.protocol.server.impl.SimpleWorkspaceInfo;
+import org.apache.abdera.protocol.server.impl.TemplateTargetBuilder;
+import org.apache.abdera.protocol.server.test.custom.OpenSearchFilter;
public class CustomProvider
extends AbstractWorkspaceProvider {
@@ -46,6 +48,17 @@
.setPattern("/atom/([^/#?;]+)(\\?[^#]*)?", TargetType.TYPE_COLLECTION, "collection")
.setPattern("/atom/([^/#?]+)/([^/#?]+)(\\?[^#]*)?", TargetType.TYPE_ENTRY, "collection","entry")
);
+
+
+ // The target builder is used to construct url's for the various targets
+ setTargetBuilder(
+ new TemplateTargetBuilder()
+ .setTemplate(TargetType.TYPE_SERVICE, "{target_base}/atom")
+ .setTemplate(TargetType.TYPE_COLLECTION, "{target_base}/atom/{collection}{-opt|?|q,c,s,p,l,i,o}{-join|&|q,c,s,p,l,i,o}")
+ .setTemplate(TargetType.TYPE_CATEGORIES, "{target_base}/atom/{collection};categories")
+ .setTemplate(TargetType.TYPE_ENTRY, "{target_base}/atom/{collection}/{entry}")
+ .setTemplate(OpenSearchFilter.TYPE_OPENSEARCH_DESCRIPTION, "{target_base}/search")
+ );
// Add a Workspace descriptor so the provider can generate an atompub service document
SimpleWorkspaceInfo workspace = new SimpleWorkspaceInfo();
Modified: incubator/abdera/java/branches/server_refactor_all/examples/src/main/java/org/apache/abdera/examples/appserver/SimpleAdapter.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/branches/server_refactor_all/examples/src/main/java/org/apache/abdera/examples/appserver/SimpleAdapter.java?rev=615399&r1=615398&r2=615399&view=diff
==============================================================================
--- incubator/abdera/java/branches/server_refactor_all/examples/src/main/java/org/apache/abdera/examples/appserver/SimpleAdapter.java (original)
+++ incubator/abdera/java/branches/server_refactor_all/examples/src/main/java/org/apache/abdera/examples/appserver/SimpleAdapter.java Fri Jan 25 15:34:44 2008
@@ -19,6 +19,8 @@
import java.io.IOException;
import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
import org.apache.abdera.Abdera;
import org.apache.abdera.i18n.text.UrlEncoding;
@@ -71,11 +73,19 @@
Feed feed = (Feed)context.getAttribute(Scope.SESSION, "feed");
if (feed == null) {
feed = createFeedBase(context);
+ feed.setBaseUri(getFeedBaseUri(context));
context.setAttribute(Scope.SESSION, "feed", feed);
}
return feed.getDocument();
}
-
+
+ private String getFeedBaseUri(RequestContext context) {
+ Map<String,String> params = new HashMap<String,String>();
+ params.put("collection", context.getTarget().getParameter("collection"));
+ String uri = context.resolveIri(TargetType.TYPE_COLLECTION, params);
+ return context.getResolvedUri().resolve(uri).toString();
+ }
+
public ResponseContext getFeed(
RequestContext request) {
Document<Feed> feed;
@@ -136,6 +146,7 @@
if (!ProviderHelper.isValidEntry(entry))
return ProviderHelper.badrequest(request);
setEntryDetails(
+ request,
entry,
abdera.getFactory().newUuidUri());
Feed feed = getFeedDocument(request).getRoot();
@@ -163,16 +174,24 @@
}
private void setEntryDetails(
+ RequestContext request,
Entry entry,
String id) {
entry.setUpdated(new Date());
entry.setEdited(entry.getUpdated());
entry.getIdElement().setValue(id);
entry.addLink(
- "/atom/feed/" + entry.getId().toASCIIString(),
+ getEntryLink(request,entry.getId().toASCIIString()),
"edit");
}
+ private String getEntryLink(RequestContext request, String entryid) {
+ Map<String,String> params = new HashMap<String,String>();
+ params.put("collection", request.getTarget().getParameter("collection"));
+ params.put("entry", entryid);
+ return request.resolveIri(TargetType.TYPE_ENTRY, params);
+ }
+
public ResponseContext putEntry(
RequestContext request) {
Abdera abdera = request.getAbdera();
@@ -189,6 +208,7 @@
if (!ProviderHelper.isValidEntry(entry))
return ProviderHelper.badrequest(request);
setEntryDetails(
+ request,
entry,
orig_entry.getId().toString());
orig_entry.discard();
Modified: incubator/abdera/java/branches/server_refactor_all/server/src/main/java/org/apache/abdera/protocol/server/impl/TemplateTargetBuilder.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/branches/server_refactor_all/server/src/main/java/org/apache/abdera/protocol/server/impl/TemplateTargetBuilder.java?rev=615399&r1=615398&r2=615399&view=diff
==============================================================================
--- incubator/abdera/java/branches/server_refactor_all/server/src/main/java/org/apache/abdera/protocol/server/impl/TemplateTargetBuilder.java (original)
+++ incubator/abdera/java/branches/server_refactor_all/server/src/main/java/org/apache/abdera/protocol/server/impl/TemplateTargetBuilder.java Fri Jan 25 15:34:44 2008
@@ -20,6 +20,12 @@
import org.apache.abdera.protocol.server.RequestContext.Scope;
@SuppressWarnings("unchecked")
+/**
+ * A TargetBuilder implementation that uses URI/IRI Templates to construct
+ * URIs/IRIs. The input parameter can be a java.util.Map<String,Object>,
+ * an instance of the org.apache.abdera.i18n.templates.Context interface,
+ * or any Java object with public getter methods.
+ */
public class TemplateTargetBuilder
implements TargetBuilder {