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 2011/10/22 01:47:53 UTC
svn commit: r1187599 [4/4] - in /abdera/abdera2:
activities/src/main/java/org/apache/abdera2/activities/client/
activities/src/main/java/org/apache/abdera2/activities/protocol/
activities/src/main/java/org/apache/abdera2/activities/protocol/basic/
acti...
Modified: abdera/abdera2/server/src/main/java/org/apache/abdera2/protocol/server/provider/managed/FeedConfiguration.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/server/src/main/java/org/apache/abdera2/protocol/server/provider/managed/FeedConfiguration.java?rev=1187599&r1=1187598&r2=1187599&view=diff
==============================================================================
--- abdera/abdera2/server/src/main/java/org/apache/abdera2/protocol/server/provider/managed/FeedConfiguration.java (original)
+++ abdera/abdera2/server/src/main/java/org/apache/abdera2/protocol/server/provider/managed/FeedConfiguration.java Fri Oct 21 23:47:50 2011
@@ -17,6 +17,9 @@
*/
package org.apache.abdera2.protocol.server.provider.managed;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
@@ -26,7 +29,11 @@ import org.apache.abdera2.protocol.serve
import org.apache.abdera2.protocol.server.model.AtompubCategoriesInfo;
import org.apache.abdera2.protocol.server.model.AtompubCollectionInfo;
-public class FeedConfiguration extends Configuration implements AtompubCollectionInfo {
+import com.google.common.base.Supplier;
+
+public class FeedConfiguration
+ extends Configuration
+ implements AtompubCollectionInfo {
public static final String PROP_NAME_ADAPTER_CLASS = "adapterClassName";
public static final String PROP_SUB_URI_NAME = "subUri";
public static final String PROP_AUTHOR_NAME = "author";
@@ -42,45 +49,126 @@ public class FeedConfiguration extends C
public static final String ENTRY_ELEM_NAME_UPDATED = "updated";
public static final String ENTRY_ELEM_NAME_LINK = "link";
+ public static class Generator implements Supplier<FeedConfiguration> {
+
+ private String feedId;
+ private String subUri;
+ private String adapterClassName;
+ private String feedConfigLocation;
+ private ServerConfiguration serverConfiguration;
+ private String feedTitle = "unknown";
+ private String feedAuthor = "unknown";
+ private final Map<Object, Object> optionalProperties =
+ new HashMap<Object,Object>();
+ private CollectionAdapterConfiguration adapterConfiguration;
+
+ public Generator id(String id) {
+ this.feedId = id;
+ return this;
+ }
+
+ public Generator subUri(String uri) {
+ this.subUri = uri;
+ return this;
+ }
+
+ public Generator adapter(String className) {
+ this.adapterClassName = className;
+ return this;
+ }
+
+ public Generator location(String location) {
+ this.feedConfigLocation = location;
+ return this;
+ }
+
+ public Generator serverConfig(ServerConfiguration config) {
+ this.serverConfiguration = config;
+ return this;
+ }
+
+ public Generator title(String title) {
+ this.feedTitle = title;
+ return this;
+ }
+
+ public Generator author(String author) {
+ this.feedAuthor = author;
+ return this;
+ }
+
+ public Generator set(Object key, Object val) {
+ this.optionalProperties.put(key, val);
+ return this;
+ }
+
+ public Generator setAll(Map<Object,Object> props) {
+ this.optionalProperties.putAll(props);
+ return this;
+ }
+
+ public Generator adapterConfif(CollectionAdapterConfiguration config) {
+ this.adapterConfiguration = config;
+ return this;
+ }
+
+ public FeedConfiguration get() {
+ return new FeedConfiguration(this);
+ }
+
+ }
+
+ public static Generator make() {
+ return new Generator();
+ }
+
private final String feedId;
private final String subUri;
private final String adapterClassName;
private final String feedConfigLocation;
private final ServerConfiguration serverConfiguration;
- private String feedTitle = "unknown";
- private String feedAuthor = "unknown";
- private Map<Object, Object> optionalProperties;
+ private final String feedTitle ;
+ private final String feedAuthor;
+ private final Map<Object, Object> optionalProperties =
+ new HashMap<Object,Object>();
private final CollectionAdapterConfiguration adapterConfiguration;
-
- public FeedConfiguration(String feedId,
- String subUri,
- String adapterClassName,
- String feedConfigLocation,
- ServerConfiguration serverConfiguration) {
- this.feedId = feedId;
- this.subUri = subUri;
- this.adapterClassName = adapterClassName;
- this.feedConfigLocation = feedConfigLocation;
- this.adapterConfiguration = new CollectionAdapterConfiguration(serverConfiguration, feedConfigLocation);
- this.serverConfiguration = serverConfiguration;
- }
-
- public static FeedConfiguration getFeedConfiguration(String feedId,
- Properties properties,
- ServerConfiguration serverConfiguration) {
- FeedConfiguration feedConfiguration =
- new FeedConfiguration(feedId, Configuration.getProperty(properties, PROP_SUB_URI_NAME), Configuration
- .getProperty(properties, PROP_NAME_ADAPTER_CLASS), Configuration
- .getProperty(properties, PROP_FEED_CONFIG_LOCATION_NAME), serverConfiguration);
- if (properties.containsKey(PROP_AUTHOR_NAME)) {
- feedConfiguration.setFeedAuthor(Configuration.getProperty(properties, PROP_AUTHOR_NAME));
- }
-
- if (properties.containsKey(PROP_TITLE_NAME)) {
- feedConfiguration.setFeedTitle(Configuration.getProperty(properties, PROP_TITLE_NAME));
- }
- feedConfiguration.optionalProperties = properties;
- return feedConfiguration;
+
+ protected FeedConfiguration(Generator gen) {
+ this.feedId = gen.feedId;
+ this.subUri = gen.subUri;
+ this.adapterClassName = gen.adapterClassName;
+ this.feedConfigLocation = gen.feedConfigLocation;
+ this.serverConfiguration = gen.serverConfiguration;
+ this.feedTitle = gen.feedTitle;
+ this.feedAuthor = gen.feedAuthor;
+ this.optionalProperties.putAll(gen.optionalProperties);
+ this.adapterConfiguration = gen.adapterConfiguration;
+ }
+
+ public static FeedConfiguration getFeedConfiguration(
+ String feedId,
+ Properties properties,
+ ServerConfiguration serverConfiguration) {
+
+ String author = "unknown";
+ String title = "unknown";
+
+ if (properties.containsKey(PROP_AUTHOR_NAME))
+ author = Configuration.getProperty(properties, PROP_AUTHOR_NAME);
+ if (properties.containsKey(PROP_TITLE_NAME))
+ title = Configuration.getProperty(properties, PROP_TITLE_NAME);
+
+ return FeedConfiguration
+ .make()
+ .id(feedId)
+ .subUri(Configuration.getProperty(properties, PROP_SUB_URI_NAME))
+ .adapter(Configuration.getProperty(properties, PROP_NAME_ADAPTER_CLASS))
+ .location(Configuration.getProperty(properties, PROP_FEED_CONFIG_LOCATION_NAME))
+ .serverConfig(serverConfiguration)
+ .title(title)
+ .author(author)
+ .setAll(properties)
+ .get();
}
public String getAdapterClassName() {
@@ -107,14 +195,6 @@ public class FeedConfiguration extends C
return subUri;
}
- public void setFeedAuthor(String feedAuthor) {
- this.feedAuthor = feedAuthor;
- }
-
- public void setFeedTitle(String feedTitle) {
- this.feedTitle = feedTitle;
- }
-
public String getFeedUri() {
return serverConfiguration.getServerUri() + "/" + getSubUri();
}
@@ -142,15 +222,17 @@ public class FeedConfiguration extends C
return collection;
}
- public String[] getAccepts(RequestContext request) {
+ public Iterable<String> getAccepts(RequestContext request) {
Object accepts = optionalProperties.get(PROP_ACCEPTS);
+ String[] arr = null;
if (accepts == null || !(accepts instanceof String))
- return new String[] {"application/atom+xml;type=entry"};
- return ((String)accepts).split("\\s*,\\s*");
+ arr = new String[] {"application/atom+xml;type=entry"};
+ else arr = ((String)accepts).split("\\s*,\\s*");
+ return Arrays.asList(arr);
}
- public AtompubCategoriesInfo[] getCategoriesInfo(RequestContext request) {
- return new AtompubCategoriesInfo[0];
+ public Iterable<AtompubCategoriesInfo> getCategoriesInfo(RequestContext request) {
+ return Collections.<AtompubCategoriesInfo>emptySet();
}
public String getHref(RequestContext request) {
Modified: abdera/abdera2/server/src/main/java/org/apache/abdera2/protocol/server/provider/managed/ManagedCollectionAdapter.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/server/src/main/java/org/apache/abdera2/protocol/server/provider/managed/ManagedCollectionAdapter.java?rev=1187599&r1=1187598&r2=1187599&view=diff
==============================================================================
--- abdera/abdera2/server/src/main/java/org/apache/abdera2/protocol/server/provider/managed/ManagedCollectionAdapter.java (original)
+++ abdera/abdera2/server/src/main/java/org/apache/abdera2/protocol/server/provider/managed/ManagedCollectionAdapter.java Fri Oct 21 23:47:50 2011
@@ -20,17 +20,16 @@ package org.apache.abdera2.protocol.serv
import org.apache.abdera2.Abdera;
import org.apache.abdera2.common.protocol.RequestContext;
import org.apache.abdera2.common.protocol.ResponseContextException;
-import org.apache.abdera2.protocol.server.AtompubCollectionAdapter;
import org.apache.abdera2.protocol.server.impl.AbstractAtompubCollectionAdapter;
public abstract class ManagedCollectionAdapter
- extends AbstractAtompubCollectionAdapter
- implements AtompubCollectionAdapter {
+ extends AbstractAtompubCollectionAdapter {
protected final FeedConfiguration config;
protected final Abdera abdera;
protected ManagedCollectionAdapter(Abdera abdera, FeedConfiguration config) {
+ super(null);
this.config = config;
this.abdera = abdera;
}
Modified: abdera/abdera2/test/src/main/java/org/apache/abdera2/test/client/AppTest.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/test/src/main/java/org/apache/abdera2/test/client/AppTest.java?rev=1187599&r1=1187598&r2=1187599&view=diff
==============================================================================
--- abdera/abdera2/test/src/main/java/org/apache/abdera2/test/client/AppTest.java (original)
+++ abdera/abdera2/test/src/main/java/org/apache/abdera2/test/client/AppTest.java Fri Oct 21 23:47:50 2011
@@ -27,7 +27,6 @@ import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
-import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
@@ -57,6 +56,7 @@ import org.apache.abdera2.protocol.clien
import org.apache.abdera2.protocol.client.Client;
import org.apache.abdera2.protocol.client.RequestOptions;
import org.apache.abdera2.protocol.client.Session;
+import org.apache.abdera2.common.date.DateTimes;
import org.apache.abdera2.common.http.CacheControl;
import org.apache.abdera2.common.http.EntityTag;
import org.apache.abdera2.common.mediatype.MimeTypeHelper;
@@ -384,7 +384,7 @@ public class AppTest {
Client abderaClient = new BasicClient();
Session session = abderaClient.newSession();
RequestOptions options = session.getDefaultRequestOptions();
- options.setIfModifiedSince(new Date());
+ options.setIfModifiedSince(DateTimes.now());
assertNotNull(options.getIfModifiedSince());
options.set4xxRequestException(true);
Modified: abdera/abdera2/test/src/main/java/org/apache/abdera2/test/security/filter/CustomProvider.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/test/src/main/java/org/apache/abdera2/test/security/filter/CustomProvider.java?rev=1187599&r1=1187598&r2=1187599&view=diff
==============================================================================
--- abdera/abdera2/test/src/main/java/org/apache/abdera2/test/security/filter/CustomProvider.java (original)
+++ abdera/abdera2/test/src/main/java/org/apache/abdera2/test/security/filter/CustomProvider.java Fri Oct 21 23:47:50 2011
@@ -17,10 +17,10 @@
*/
package org.apache.abdera2.test.security.filter;
+import org.apache.abdera2.common.protocol.CollectionAdapter;
import org.apache.abdera2.common.protocol.RequestContext;
import org.apache.abdera2.common.protocol.RouteManager;
import org.apache.abdera2.common.protocol.TargetType;
-import org.apache.abdera2.protocol.server.AtompubCollectionAdapter;
import org.apache.abdera2.protocol.server.impl.AbstractAtompubWorkspaceProvider;
import org.apache.abdera2.protocol.server.impl.SimpleWorkspaceInfo;
import org.apache.abdera2.security.util.filters.SignedRequestFilter;
@@ -38,9 +38,9 @@ public class CustomProvider
private static final String certificateAlias = "James";
@SuppressWarnings({ "rawtypes", "unchecked" })
- public CustomProvider() {
+ public CustomProvider(String href) {
- this.adapter = new SimpleAdapter();
+ this.adapter = new SimpleAdapter(href);
RouteManager rm =
new RouteManager()
@@ -51,10 +51,12 @@ public class CustomProvider
setTargetBuilder(rm);
setTargetResolver(rm);
- SimpleWorkspaceInfo workspace = new SimpleWorkspaceInfo();
- workspace.setTitle("A Simple Workspace");
- workspace.addCollection(adapter);
- addWorkspace(workspace);
+ addWorkspace(
+ SimpleWorkspaceInfo
+ .make()
+ .title("A Simple Workspace")
+ .collection(adapter)
+ .get());
addFilter(
new SignedRequestFilter());
@@ -67,7 +69,7 @@ public class CustomProvider
null));
}
- public AtompubCollectionAdapter getCollectionAdapter(RequestContext request) {
+ public CollectionAdapter getCollectionAdapter(RequestContext request) {
return adapter;
}
Modified: abdera/abdera2/test/src/main/java/org/apache/abdera2/test/security/filter/SimpleAdapter.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/test/src/main/java/org/apache/abdera2/test/security/filter/SimpleAdapter.java?rev=1187599&r1=1187598&r2=1187599&view=diff
==============================================================================
--- abdera/abdera2/test/src/main/java/org/apache/abdera2/test/security/filter/SimpleAdapter.java (original)
+++ abdera/abdera2/test/src/main/java/org/apache/abdera2/test/security/filter/SimpleAdapter.java Fri Oct 21 23:47:50 2011
@@ -42,83 +42,108 @@ import org.apache.abdera2.protocol.serve
import org.apache.abdera2.writer.StreamWriter;
import org.joda.time.DateTime;
+import com.google.common.base.Function;
+
@SuppressWarnings("unchecked")
public class SimpleAdapter extends AbstractAtompubCollectionAdapter {
- @Override
- public String getAuthor(RequestContext request) throws ResponseContextException {
- return "Simple McGee";
- }
-
- @Override
- public String getId(RequestContext request) {
- return "tag:example.org,2008:feed";
- }
-
- public String getHref(RequestContext request) {
- Map<String, Object> params = new HashMap<String, Object>();
- params.put("collection", "feed");
- return request.urlFor("feed", params);
- }
-
- public String getTitle(RequestContext request) {
- return "A simple feed";
- }
-
- public ResponseContext extensionRequest(RequestContext request) {
- return ProviderHelper.notallowed(request, "Method Not Allowed", ProviderHelper.getDefaultMethods(request));
- }
-
- private Document<Feed> getFeedDocument(RequestContext context) throws ResponseContextException {
- Feed feed = (Feed)context.getAttribute(Scope.SESSION, "feed");
- if (feed == null) {
- feed = createFeedBase(context);
- feed.setBaseUri(getHref(context));
- context.setAttribute(Scope.SESSION, "feed", feed);
- }
- return feed.getDocument();
- }
-
- public ResponseContext getItemList(RequestContext request) {
+ public SimpleAdapter(String href) {
+ super(href);
+ putHandler(TargetType.TYPE_COLLECTION,"GET",getItemList());
+ putHandler(TargetType.TYPE_COLLECTION,"HEAD",getItemList());
+ putHandler(TargetType.TYPE_COLLECTION,"POST",postItem());
+ putHandler(TargetType.TYPE_ENTRY,"DELETE",deleteItem());
+ putHandler(TargetType.TYPE_ENTRY,"GET",getItem());
+ putHandler(TargetType.TYPE_ENTRY,"HEAD",getItem());
+ putHandler(TargetType.TYPE_ENTRY,"PUT",putItem());
+ putHandler(TargetType.TYPE_CATEGORIES,"GET",getCategories());
+ putHandler(TargetType.TYPE_CATEGORIES,"HEAD",getCategories());
+ }
+
+ @Override
+ public String getAuthor(RequestContext request) throws ResponseContextException {
+ return "Simple McGee";
+ }
+
+ @Override
+ public String getId(RequestContext request) {
+ return "tag:example.org,2008:feed";
+ }
+
+ public String getHref(RequestContext request) {
+ Map<String, Object> params = new HashMap<String, Object>();
+ params.put("collection", "feed");
+ return request.urlFor(TargetType.TYPE_COLLECTION, params);
+ }
+
+ public String getTitle(RequestContext request) {
+ return "A simple feed";
+ }
+
+ private Document<Feed> getFeedDocument(RequestContext context) throws ResponseContextException {
+ Feed feed = (Feed)context.getAttribute(Scope.SESSION, "feed");
+ if (feed == null) {
+ feed = createFeedBase(context);
+ feed.setBaseUri(getHref(context));
+ context.setAttribute(Scope.SESSION, "feed", feed);
+ }
+ return feed.getDocument();
+ }
+
+ private Function<RequestContext,ResponseContext> getItemList() {
+ return new Function<RequestContext,ResponseContext>() {
+ public ResponseContext apply(RequestContext input) {
Document<Feed> feed;
try {
- feed = getFeedDocument(request);
+ feed = getFeedDocument(input);
} catch (ResponseContextException e) {
return e.getResponseContext();
}
-
- return AbstractAtompubProvider.returnBase(feed, 200, feed.getRoot().getUpdated()).setEntityTag(AbstractAtompubProvider
- .calculateEntityTag(feed.getRoot()));
- }
-
- public ResponseContext deleteItem(RequestContext request) {
- Entry entry = getAbderaEntry(request);
+ return AbstractAtompubProvider
+ .returnBase(feed, 200, feed.getRoot().getUpdated())
+ .setEntityTag(
+ AbstractAtompubProvider
+ .calculateEntityTag(feed.getRoot()));
+ }
+ };
+ }
+
+ public Function<RequestContext,ResponseContext> deleteItem() {
+ return new Function<RequestContext,ResponseContext>() {
+ public ResponseContext apply(RequestContext input) {
+ Entry entry = getAbderaEntry(input);
if (entry != null)
entry.discard();
return ProviderHelper.nocontent();
- }
-
- public ResponseContext getItem(RequestContext request) {
- Entry entry = (Entry)getAbderaEntry(request);
+ }
+ };
+ }
+
+ private Function<RequestContext,ResponseContext> getItem() {
+ return new Function<RequestContext,ResponseContext>() {
+ public ResponseContext apply(RequestContext input) {
+ Entry entry = (Entry)getAbderaEntry(input);
if (entry != null) {
Feed feed = entry.getParentElement();
entry = (Entry)entry.clone();
entry.setSource(feed.getAsSource());
Document<Entry> entry_doc = entry.getDocument();
- return AbstractAtompubProvider.returnBase(entry_doc, 200, entry.getEdited()).setEntityTag(AbstractAtompubProvider
+ return AbstractAtompubProvider
+ .returnBase(entry_doc, 200, entry.getEdited())
+ .setEntityTag(AbstractAtompubProvider
.calculateEntityTag(entry));
} else {
- return ProviderHelper.notfound(request);
+ return ProviderHelper.notfound(input);
}
- }
-
- private static Abdera getAbdera(RequestContext request) {
- return AbstractAtompubProvider.getAbdera(request);
- }
-
- public ResponseContext postItem(RequestContext context) {
- Abdera abdera = getAbdera(context);
- AtompubRequestContext request = (AtompubRequestContext) context;
+ }
+ };
+ }
+
+ private Function<RequestContext,ResponseContext> postItem() {
+ return new Function<RequestContext,ResponseContext>() {
+ public ResponseContext apply(RequestContext input) {
+ AtompubRequestContext request = (AtompubRequestContext) input;
+ Abdera abdera = request.getAbdera();
try {
Document<Entry> entry_doc = (Document<Entry>)request.getDocument(abdera.getParser()).clone();
if (entry_doc != null) {
@@ -144,25 +169,29 @@ public class SimpleAdapter extends Abstr
} catch (Exception e) {
return ProviderHelper.badrequest(request);
}
- }
-
- private void setEntryDetails(RequestContext request, Entry entry, String id) {
- entry.setUpdated(DateTime.now());
- entry.setEdited(entry.getUpdated());
- entry.getIdElement().setValue(id);
- entry.addLink(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.urlFor("entry", params);
- }
-
- public ResponseContext putItem(RequestContext context) {
- Abdera abdera = getAbdera(context);
- AtompubRequestContext request = (AtompubRequestContext) context;
+ }
+ };
+ }
+
+ private void setEntryDetails(RequestContext request, Entry entry, String id) {
+ entry.setUpdated(DateTime.now());
+ entry.setEdited(entry.getUpdated());
+ entry.getIdElement().setValue(id);
+ entry.addLink(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.urlFor(TargetType.TYPE_ENTRY, params);
+ }
+
+ private Function<RequestContext,ResponseContext> putItem() {
+ return new Function<RequestContext,ResponseContext>() {
+ public ResponseContext apply(RequestContext input) {
+ AtompubRequestContext request = (AtompubRequestContext) input;
+ Abdera abdera = request.getAbdera();
Entry orig_entry = getAbderaEntry(request);
if (orig_entry != null) {
try {
@@ -192,29 +221,36 @@ public class SimpleAdapter extends Abstr
} else {
return ProviderHelper.notfound(request);
}
- }
-
- private Entry getAbderaEntry(RequestContext request) {
- try {
- return getFeedDocument(request).getRoot().getEntry(getResourceName(request));
- } catch (Exception e) {
- }
- return null;
- }
-
- public String getResourceName(RequestContext request) {
- if (request.getTarget().getType() != TargetType.TYPE_ENTRY)
- return null;
- String[] segments = request.getUri().toString().split("/");
- return UrlEncoding.decode(segments[segments.length - 1]);
- }
-
- public ResponseContext getCategories(RequestContext request) {
- return new StreamWriterResponseContext(getAbdera(request)) {
+ }
+ };
+ }
+
+ private Entry getAbderaEntry(RequestContext request) {
+ try {
+ return getFeedDocument(request).getRoot().getEntry(getResourceName(request));
+ } catch (Exception e) {
+ }
+ return null;
+ }
+
+ public String getResourceName(RequestContext request) {
+ if (request.getTarget().getType() != TargetType.TYPE_ENTRY)
+ return null;
+ String[] segments = request.getUri().toString().split("/");
+ return UrlEncoding.decode(segments[segments.length - 1]);
+ }
+
+ private Function<RequestContext,ResponseContext> getCategories() {
+ return new Function<RequestContext,ResponseContext>() {
+ public ResponseContext apply(RequestContext input) {
+ AtompubRequestContext request = (AtompubRequestContext) input;
+ return new StreamWriterResponseContext(request.getAbdera()) {
protected void writeTo(StreamWriter sw) throws IOException {
sw.startDocument().startCategories(false).writeCategory("foo").writeCategory("bar")
.writeCategory("baz").endCategories().endDocument();
}
}.setStatus(200).setContentType(Constants.CAT_MEDIA_TYPE);
- }
+ }
+ };
+ }
}
Modified: abdera/abdera2/test/src/main/java/org/apache/abdera2/test/server/custom/CustomProvider.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/test/src/main/java/org/apache/abdera2/test/server/custom/CustomProvider.java?rev=1187599&r1=1187598&r2=1187599&view=diff
==============================================================================
--- abdera/abdera2/test/src/main/java/org/apache/abdera2/test/server/custom/CustomProvider.java (original)
+++ abdera/abdera2/test/src/main/java/org/apache/abdera2/test/server/custom/CustomProvider.java Fri Oct 21 23:47:50 2011
@@ -18,14 +18,14 @@
package org.apache.abdera2.test.server.custom;
import org.apache.abdera2.common.misc.Chain;
+import org.apache.abdera2.common.misc.Task;
+import org.apache.abdera2.common.protocol.CollectionAdapter;
import org.apache.abdera2.common.protocol.RequestContext;
import org.apache.abdera2.common.protocol.BaseRequestContextWrapper;
import org.apache.abdera2.common.protocol.ResponseContext;
-import org.apache.abdera2.common.protocol.Filter;
import org.apache.abdera2.common.protocol.RegexTargetResolver;
import org.apache.abdera2.common.protocol.TargetType;
import org.apache.abdera2.common.protocol.TemplateManagerTargetBuilder;
-import org.apache.abdera2.protocol.server.AtompubCollectionAdapter;
import org.apache.abdera2.protocol.server.impl.AbstractAtompubWorkspaceProvider;
import org.apache.abdera2.protocol.server.impl.SimpleWorkspaceInfo;
@@ -33,8 +33,9 @@ public class CustomProvider extends Abst
private final SimpleAdapter adapter;
- public CustomProvider() {
- this.adapter = new SimpleAdapter();
+ @SuppressWarnings("unchecked")
+ public CustomProvider(String href) {
+ this.adapter = new SimpleAdapter(href);
RegexTargetResolver<RequestContext> resolver =
new RegexTargetResolver<RequestContext>()
.setPattern("/atom(\\?[^#]*)?", TargetType.TYPE_SERVICE)
@@ -53,18 +54,21 @@ public class CustomProvider extends Abst
.add(TargetType.TYPE_ENTRY, "{target_base}/atom/{collection}/{entry}")
.get();
setTargetBuilder(tmb);
- SimpleWorkspaceInfo workspace = new SimpleWorkspaceInfo();
- workspace.setTitle("A Simple Workspace");
- workspace.addCollection(adapter);
- addWorkspace(workspace);
+ addWorkspace(
+ SimpleWorkspaceInfo
+ .make()
+ .title("A Simple Workspace")
+ .collection(adapter)
+ .get()
+ );
addFilter(new SimpleFilter());
}
- public AtompubCollectionAdapter getCollectionAdapter(RequestContext request) {
+ public CollectionAdapter getCollectionAdapter(RequestContext request) {
return adapter;
}
- public class SimpleFilter implements Filter {
+ public class SimpleFilter implements Task<RequestContext,ResponseContext> {
public ResponseContext apply(RequestContext request, Chain<RequestContext,ResponseContext> chain) {
BaseRequestContextWrapper rcw = new BaseRequestContextWrapper(request);
rcw.setAttribute("offset", 10);
Modified: abdera/abdera2/test/src/main/java/org/apache/abdera2/test/server/custom/SimpleAdapter.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/test/src/main/java/org/apache/abdera2/test/server/custom/SimpleAdapter.java?rev=1187599&r1=1187598&r2=1187599&view=diff
==============================================================================
--- abdera/abdera2/test/src/main/java/org/apache/abdera2/test/server/custom/SimpleAdapter.java (original)
+++ abdera/abdera2/test/src/main/java/org/apache/abdera2/test/server/custom/SimpleAdapter.java Fri Oct 21 23:47:50 2011
@@ -42,9 +42,24 @@ import org.apache.abdera2.protocol.serve
import org.apache.abdera2.writer.StreamWriter;
import org.joda.time.DateTime;
+import com.google.common.base.Function;
+
@SuppressWarnings("unchecked")
public class SimpleAdapter extends AbstractAtompubCollectionAdapter {
+ public SimpleAdapter(String href) {
+ super(href);
+ putHandler(TargetType.TYPE_COLLECTION,"GET",getItemList());
+ putHandler(TargetType.TYPE_COLLECTION,"HEAD",getItemList());
+ putHandler(TargetType.TYPE_COLLECTION,"POST",postItem());
+ putHandler(TargetType.TYPE_ENTRY,"DELETE",deleteItem());
+ putHandler(TargetType.TYPE_ENTRY,"GET",getItem());
+ putHandler(TargetType.TYPE_ENTRY,"HEAD",getItem());
+ putHandler(TargetType.TYPE_ENTRY,"PUT",putItem());
+ putHandler(TargetType.TYPE_CATEGORIES,"GET",getCategories());
+ putHandler(TargetType.TYPE_CATEGORIES,"HEAD",getCategories());
+ }
+
@Override
public String getAuthor(RequestContext request) throws ResponseContextException {
return "Simple McGee";
@@ -65,10 +80,6 @@ public class SimpleAdapter extends Abstr
return "A simple feed";
}
- public ResponseContext extensionRequest(RequestContext request) {
- return ProviderHelper.notallowed(request, "Method Not Allowed", ProviderHelper.getDefaultMethods(request));
- }
-
private Document<Feed> getFeedDocument(RequestContext context) throws ResponseContextException {
Feed feed = (Feed)context.getAttribute(Scope.SESSION, "feed");
if (feed == null) {
@@ -79,69 +90,89 @@ public class SimpleAdapter extends Abstr
return feed.getDocument();
}
- public ResponseContext getItemList(RequestContext request) {
- Document<Feed> feed;
- try {
- feed = getFeedDocument(request);
- } catch (ResponseContextException e) {
- return e.getResponseContext();
- }
-
- return AbstractAtompubProvider.returnBase(feed, 200, feed.getRoot().getUpdated()).setEntityTag(AbstractAtompubProvider
- .calculateEntityTag(feed.getRoot()));
- }
-
- public ResponseContext deleteItem(RequestContext request) {
- Entry entry = getAbderaEntry(request);
- if (entry != null)
- entry.discard();
- return ProviderHelper.nocontent();
- }
-
- public ResponseContext getItem(RequestContext request) {
- Entry entry = (Entry)getAbderaEntry(request);
- if (entry != null) {
- Feed feed = entry.getParentElement();
- entry = (Entry)entry.clone();
- entry.setSource(feed.getAsSource());
- Document<Entry> entry_doc = entry.getDocument();
- return AbstractAtompubProvider.returnBase(entry_doc, 200, entry.getEdited()).setEntityTag(AbstractAtompubProvider
- .calculateEntityTag(entry));
- } else {
- return ProviderHelper.notfound(request);
+ private Function<RequestContext,ResponseContext> getItemList() {
+ return new Function<RequestContext,ResponseContext>() {
+ public ResponseContext apply(RequestContext input) {
+ Document<Feed> feed;
+ try {
+ feed = getFeedDocument(input);
+ } catch (ResponseContextException e) {
+ return e.getResponseContext();
+ }
+ return AbstractAtompubProvider
+ .returnBase(feed, 200, feed.getRoot().getUpdated())
+ .setEntityTag(
+ AbstractAtompubProvider
+ .calculateEntityTag(feed.getRoot()));
+ }
+ };
+ }
+
+ public Function<RequestContext,ResponseContext> deleteItem() {
+ return new Function<RequestContext,ResponseContext>() {
+ public ResponseContext apply(RequestContext input) {
+ Entry entry = getAbderaEntry(input);
+ if (entry != null)
+ entry.discard();
+ return ProviderHelper.nocontent();
+ }
+ };
+ }
+
+ private Function<RequestContext,ResponseContext> getItem() {
+ return new Function<RequestContext,ResponseContext>() {
+ public ResponseContext apply(RequestContext input) {
+ Entry entry = (Entry)getAbderaEntry(input);
+ if (entry != null) {
+ Feed feed = entry.getParentElement();
+ entry = (Entry)entry.clone();
+ entry.setSource(feed.getAsSource());
+ Document<Entry> entry_doc = entry.getDocument();
+ return AbstractAtompubProvider
+ .returnBase(entry_doc, 200, entry.getEdited())
+ .setEntityTag(AbstractAtompubProvider
+ .calculateEntityTag(entry));
+ } else {
+ return ProviderHelper.notfound(input);
+ }
}
+ };
}
- public ResponseContext postItem(RequestContext context) {
- AtompubRequestContext request = (AtompubRequestContext) context;
- Abdera abdera = request.getAbdera();
- try {
- Document<Entry> entry_doc = (Document<Entry>)request.getDocument(abdera.getParser()).clone();
- if (entry_doc != null) {
- Entry entry = entry_doc.getRoot();
- if (!AbstractAtompubProvider.isValidEntry(entry))
- return ProviderHelper.badrequest(request);
- setEntryDetails(request, entry, abdera.getFactory().newUuidUri());
- Feed feed = getFeedDocument(request).getRoot();
- feed.insertEntry(entry);
- feed.setUpdated(DateTime.now());
- FOMResponseContext<?> rc =
- (FOMResponseContext<?>)AbstractAtompubProvider.returnBase(entry_doc, 201, entry.getEdited());
- return rc.setLocation(ProviderHelper.resolveBase(request).resolve(entry.getEditLinkResolvedHref())
- .toString()).setContentLocation(rc.getLocation().toString()).setEntityTag(AbstractAtompubProvider
- .calculateEntityTag(entry));
- } else {
- return ProviderHelper.badrequest(request);
- }
- } catch (ParseException pe) {
- return ProviderHelper.notsupported(request);
- } catch (ClassCastException cce) {
- return ProviderHelper.notsupported(request);
- } catch (Exception e) {
- return ProviderHelper.badrequest(request);
+ private Function<RequestContext,ResponseContext> postItem() {
+ return new Function<RequestContext,ResponseContext>() {
+ public ResponseContext apply(RequestContext input) {
+ AtompubRequestContext request = (AtompubRequestContext) input;
+ Abdera abdera = request.getAbdera();
+ try {
+ Document<Entry> entry_doc = (Document<Entry>)request.getDocument(abdera.getParser()).clone();
+ if (entry_doc != null) {
+ Entry entry = entry_doc.getRoot();
+ if (!AbstractAtompubProvider.isValidEntry(entry))
+ return ProviderHelper.badrequest(request);
+ setEntryDetails(request, entry, abdera.getFactory().newUuidUri());
+ Feed feed = getFeedDocument(request).getRoot();
+ feed.insertEntry(entry);
+ feed.setUpdated(DateTime.now());
+ FOMResponseContext<?> rc =
+ (FOMResponseContext<?>)AbstractAtompubProvider.returnBase(entry_doc, 201, entry.getEdited());
+ return rc.setLocation(ProviderHelper.resolveBase(request).resolve(entry.getEditLinkResolvedHref())
+ .toString()).setContentLocation(rc.getLocation().toString()).setEntityTag(AbstractAtompubProvider
+ .calculateEntityTag(entry));
+ } else {
+ return ProviderHelper.badrequest(request);
+ }
+ } catch (ParseException pe) {
+ return ProviderHelper.notsupported(request);
+ } catch (ClassCastException cce) {
+ return ProviderHelper.notsupported(request);
+ } catch (Exception e) {
+ return ProviderHelper.badrequest(request);
+ }
}
+ };
}
-
+
private void setEntryDetails(RequestContext request, Entry entry, String id) {
entry.setUpdated(DateTime.now());
entry.setEdited(entry.getUpdated());
@@ -156,40 +187,44 @@ public class SimpleAdapter extends Abstr
return request.urlFor(TargetType.TYPE_ENTRY, params);
}
- public ResponseContext putItem(RequestContext context) {
- AtompubRequestContext request = (AtompubRequestContext) context;
- Abdera abdera = request.getAbdera();
- Entry orig_entry = getAbderaEntry(request);
- if (orig_entry != null) {
- try {
- Document<Entry> entry_doc = (Document<Entry>)request.getDocument(abdera.getParser()).clone();
- if (entry_doc != null) {
- Entry entry = entry_doc.getRoot();
- if (!entry.getId().equals(orig_entry.getId()))
- return ProviderHelper.conflict(request);
- if (!AbstractAtompubProvider.isValidEntry(entry))
- return ProviderHelper.badrequest(request);
- setEntryDetails(request, entry, orig_entry.getId().toString());
- orig_entry.discard();
- Feed feed = getFeedDocument(request).getRoot();
- feed.insertEntry(entry);
- feed.setUpdated(DateTime.now());
- return ProviderHelper.nocontent();
- } else {
- return ProviderHelper.badrequest(request);
- }
- } catch (ParseException pe) {
- return ProviderHelper.notsupported(request);
- } catch (ClassCastException cce) {
- return ProviderHelper.notsupported(request);
- } catch (Exception e) {
- return ProviderHelper.badrequest(request);
- }
- } else {
- return ProviderHelper.notfound(request);
+ private Function<RequestContext,ResponseContext> putItem() {
+ return new Function<RequestContext,ResponseContext>() {
+ public ResponseContext apply(RequestContext input) {
+ AtompubRequestContext request = (AtompubRequestContext) input;
+ Abdera abdera = request.getAbdera();
+ Entry orig_entry = getAbderaEntry(request);
+ if (orig_entry != null) {
+ try {
+ Document<Entry> entry_doc = (Document<Entry>)request.getDocument(abdera.getParser()).clone();
+ if (entry_doc != null) {
+ Entry entry = entry_doc.getRoot();
+ if (!entry.getId().equals(orig_entry.getId()))
+ return ProviderHelper.conflict(request);
+ if (!AbstractAtompubProvider.isValidEntry(entry))
+ return ProviderHelper.badrequest(request);
+ setEntryDetails(request, entry, orig_entry.getId().toString());
+ orig_entry.discard();
+ Feed feed = getFeedDocument(request).getRoot();
+ feed.insertEntry(entry);
+ feed.setUpdated(DateTime.now());
+ return ProviderHelper.nocontent();
+ } else {
+ return ProviderHelper.badrequest(request);
+ }
+ } catch (ParseException pe) {
+ return ProviderHelper.notsupported(request);
+ } catch (ClassCastException cce) {
+ return ProviderHelper.notsupported(request);
+ } catch (Exception e) {
+ return ProviderHelper.badrequest(request);
+ }
+ } else {
+ return ProviderHelper.notfound(request);
+ }
}
+ };
}
-
+
private Entry getAbderaEntry(RequestContext request) {
try {
return getFeedDocument(request).getRoot().getEntry(getResourceName(request));
@@ -205,13 +240,18 @@ public class SimpleAdapter extends Abstr
return UrlEncoding.decode(segments[segments.length - 1]);
}
- public ResponseContext getCategories(RequestContext context) {
- AtompubRequestContext request = (AtompubRequestContext) context;
- return new StreamWriterResponseContext(request.getAbdera()) {
- protected void writeTo(StreamWriter sw) throws IOException {
- sw.startDocument().startCategories(false).writeCategory("foo").writeCategory("bar")
- .writeCategory("baz").endCategories().endDocument();
- }
- }.setStatus(200).setContentType(Constants.CAT_MEDIA_TYPE);
+ private Function<RequestContext,ResponseContext> getCategories() {
+ return new Function<RequestContext,ResponseContext>() {
+ public ResponseContext apply(RequestContext input) {
+ AtompubRequestContext request = (AtompubRequestContext) input;
+ return new StreamWriterResponseContext(request.getAbdera()) {
+ protected void writeTo(StreamWriter sw) throws IOException {
+ sw.startDocument().startCategories(false).writeCategory("foo").writeCategory("bar")
+ .writeCategory("baz").endCategories().endDocument();
+ }
+ }.setStatus(200).setContentType(Constants.CAT_MEDIA_TYPE);
+ }
+ };
}
+
}
Modified: abdera/abdera2/test/src/main/java/org/apache/abdera2/test/server/customer/CustomerAdapter.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/test/src/main/java/org/apache/abdera2/test/server/customer/CustomerAdapter.java?rev=1187599&r1=1187598&r2=1187599&view=diff
==============================================================================
--- abdera/abdera2/test/src/main/java/org/apache/abdera2/test/server/customer/CustomerAdapter.java (original)
+++ abdera/abdera2/test/src/main/java/org/apache/abdera2/test/server/customer/CustomerAdapter.java Fri Oct 21 23:47:50 2011
@@ -30,7 +30,6 @@ import org.apache.abdera2.Abdera;
import org.apache.abdera2.factory.Factory;
import org.apache.abdera2.common.iri.IRI;
import org.apache.abdera2.common.protocol.RequestContext;
-import org.apache.abdera2.common.protocol.ResponseContext;
import org.apache.abdera2.common.protocol.ResponseContextException;
import org.apache.abdera2.model.Content;
import org.apache.abdera2.model.Element;
@@ -46,17 +45,14 @@ public class CustomerAdapter extends Abs
private Map<Integer, Customer> customers = new HashMap<Integer, Customer>();
private Factory factory = Abdera.getInstance().getFactory();
- public CustomerAdapter() {
+ public CustomerAdapter(String href) {
+ super(href);
}
public String getId(RequestContext request) {
return "tag:example.org,2007:feed";
}
- public <S extends ResponseContext>S getCategories(RequestContext request) {
- return null;
- }
-
@Override
public Customer postEntry(String title,
IRI id,
Modified: abdera/abdera2/test/src/main/java/org/apache/abdera2/test/server/customer/CustomerAdapterTest.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/test/src/main/java/org/apache/abdera2/test/server/customer/CustomerAdapterTest.java?rev=1187599&r1=1187598&r2=1187599&view=diff
==============================================================================
--- abdera/abdera2/test/src/main/java/org/apache/abdera2/test/server/customer/CustomerAdapterTest.java (original)
+++ abdera/abdera2/test/src/main/java/org/apache/abdera2/test/server/customer/CustomerAdapterTest.java Fri Oct 21 23:47:50 2011
@@ -60,15 +60,14 @@ public class CustomerAdapterTest {
private void setupAbdera(String base) throws Exception {
customerProvider = new DefaultAtompubProvider(base);
-
- CustomerAdapter ca = new CustomerAdapter();
- ca.setHref("customers");
-
- SimpleWorkspaceInfo wi = new SimpleWorkspaceInfo();
- wi.setTitle("Customer Workspace");
- wi.addCollection(ca);
-
- customerProvider.addWorkspace(wi);
+ CustomerAdapter ca = new CustomerAdapter("customers");
+ customerProvider
+ .addWorkspace(
+ SimpleWorkspaceInfo
+ .make()
+ .title("Customer Workspace")
+ .collection(ca)
+ .get());
}
@Test
Modified: abdera/abdera2/test/src/main/java/org/apache/abdera2/test/server/multipart/MultipartRelatedAdapter.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/test/src/main/java/org/apache/abdera2/test/server/multipart/MultipartRelatedAdapter.java?rev=1187599&r1=1187598&r2=1187599&view=diff
==============================================================================
--- abdera/abdera2/test/src/main/java/org/apache/abdera2/test/server/multipart/MultipartRelatedAdapter.java (original)
+++ abdera/abdera2/test/src/main/java/org/apache/abdera2/test/server/multipart/MultipartRelatedAdapter.java Fri Oct 21 23:47:50 2011
@@ -7,17 +7,25 @@ import java.util.Map;
import javax.mail.MessagingException;
import org.apache.abdera2.parser.ParseException;
+import org.apache.abdera2.protocol.server.impl.AbstractAtompubProvider;
import org.apache.abdera2.protocol.server.multipart.AbstractMultipartCollectionAdapter;
import org.apache.abdera2.common.Constants;
import org.apache.abdera2.common.mediatype.MimeTypeHelper;
import org.apache.abdera2.common.protocol.RequestContext;
import org.apache.abdera2.common.protocol.ResponseContext;
import org.apache.abdera2.common.protocol.EmptyResponseContext;
-import org.apache.abdera2.common.protocol.ProviderHelper;
+import org.apache.abdera2.common.protocol.TargetType;
-@SuppressWarnings("unchecked")
-public class MultipartRelatedAdapter extends AbstractMultipartCollectionAdapter {
+import com.google.common.base.Function;
+public class MultipartRelatedAdapter
+ extends AbstractMultipartCollectionAdapter {
+
+ public MultipartRelatedAdapter(String href) {
+ super(href);
+ putHandler(TargetType.TYPE_COLLECTION,"POST",handlePost());
+ }
+
@Override
public String getAuthor(RequestContext request) {
return "Acme Industries";
@@ -28,42 +36,33 @@ public class MultipartRelatedAdapter ext
return "tag:example.org,2008:feed";
}
- public <S extends ResponseContext>S deleteItem(RequestContext request) {
- return (S)ProviderHelper.notallowed(request);
- }
-
- public <S extends ResponseContext>S getItem(RequestContext request) {
- return (S)ProviderHelper.notallowed(request);
- }
-
- public <S extends ResponseContext>S getItemList(RequestContext request) {
- return (S)ProviderHelper.notallowed(request);
- }
-
- public <S extends ResponseContext>S postItem(RequestContext request) {
- return (S)ProviderHelper.notallowed(request);
- }
-
- public <S extends ResponseContext>S putItem(RequestContext request) {
- return (S)ProviderHelper.notallowed(request);
+ private Function<RequestContext,ResponseContext> handlePost() {
+ return new Function<RequestContext,ResponseContext>() {
+ public ResponseContext apply(RequestContext input) {
+ return AbstractAtompubProvider.IS_ATOM.apply(input) ?
+ NOT_ALLOWED.apply(input) :
+ postMedia().apply(input);
+ }
+ };
}
-
- public <S extends ResponseContext>S postMedia(RequestContext request) {
- try {
- if (MimeTypeHelper.isMultipart(request.getContentType().toString())) {
- getMultipartRelatedData(request);
- // Post object is a wrapper for the media resource and the media link entry.
- // Once we get it we can save them following the rfc specification.
- }
-
- return (S)new EmptyResponseContext(201);
- } catch (ParseException pe) {
- return (S)new EmptyResponseContext(415, pe.getLocalizedMessage());
- } catch (IOException ioe) {
- return (S)new EmptyResponseContext(500, ioe.getLocalizedMessage());
- } catch (MessagingException e) {
- return (S)new EmptyResponseContext(500, e.getLocalizedMessage());
+
+ public Function<RequestContext,ResponseContext> postMedia() {
+ return new Function<RequestContext,ResponseContext>() {
+ public ResponseContext apply(RequestContext input) {
+ try {
+ if (MimeTypeHelper.isMultipart(input.getContentType().toString())) {
+ getMultipartRelatedData(input);
+ }
+ return new EmptyResponseContext(201);
+ } catch (ParseException pe) {
+ return new EmptyResponseContext(415, pe.getLocalizedMessage());
+ } catch (IOException ioe) {
+ return new EmptyResponseContext(500, ioe.getLocalizedMessage());
+ } catch (MessagingException e) {
+ return new EmptyResponseContext(500, e.getLocalizedMessage());
+ }
}
+ };
}
public String getTitle(RequestContext request) {
Modified: abdera/abdera2/test/src/main/java/org/apache/abdera2/test/server/multipart/MultipartRelatedTest.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/test/src/main/java/org/apache/abdera2/test/server/multipart/MultipartRelatedTest.java?rev=1187599&r1=1187598&r2=1187599&view=diff
==============================================================================
--- abdera/abdera2/test/src/main/java/org/apache/abdera2/test/server/multipart/MultipartRelatedTest.java (original)
+++ abdera/abdera2/test/src/main/java/org/apache/abdera2/test/server/multipart/MultipartRelatedTest.java Fri Oct 21 23:47:50 2011
@@ -10,6 +10,7 @@ import java.util.Map;
import org.apache.abdera2.Abdera;
import org.apache.abdera2.factory.Factory;
import org.apache.abdera2.common.iri.IRI;
+import org.apache.abdera2.common.protocol.CollectionAdapter;
import org.apache.abdera2.common.protocol.RequestProcessor;
import org.apache.abdera2.common.protocol.TargetType;
import org.apache.abdera2.common.protocol.servlet.AbderaServlet;
@@ -28,6 +29,8 @@ import org.eclipse.jetty.servlet.Servlet
import org.junit.After;
import org.junit.Test;
+import com.google.common.base.Function;
+
@SuppressWarnings("serial")
public class MultipartRelatedTest {
@@ -37,20 +40,24 @@ public class MultipartRelatedTest {
@Override
protected AtompubProvider createProvider() {
DefaultAtompubProvider provider = new DefaultAtompubProvider("/");
- Map<TargetType,RequestProcessor> map =
- new HashMap<TargetType,RequestProcessor>();
+
+ Map<TargetType,Function<CollectionAdapter,? extends RequestProcessor>> map =
+ new HashMap<TargetType,Function<CollectionAdapter,? extends RequestProcessor>>();
map.put(TargetType.TYPE_SERVICE,
- new MultipartRelatedServiceRequestProcessor());
+ RequestProcessor.forClass(
+ MultipartRelatedServiceRequestProcessor.class,
+ provider.getWorkspaceManager()));
provider.addRequestProcessors(map);
-
- MultipartRelatedAdapter ca = new MultipartRelatedAdapter();
- ca.setHref("media");
-
- SimpleWorkspaceInfo wi = new SimpleWorkspaceInfo();
- wi.setTitle("multimedia/related Workspace");
- wi.addCollection(ca);
-
- provider.addWorkspace(wi);
+
+ MultipartRelatedAdapter ca = new MultipartRelatedAdapter("media");
+
+ provider
+ .addWorkspace(
+ SimpleWorkspaceInfo
+ .make()
+ .title("multipart/related Workspace")
+ .collection(ca)
+ .get());
provider.init(Abdera.getInstance(), null);
return provider;