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 2007/11/21 00:17:04 UTC
svn commit: r596873 - in /incubator/abdera/java/trunk:
core/src/main/java/org/apache/abdera/util/
core/src/main/java/org/apache/abdera/writer/
examples/src/main/java/org/apache/abdera/examples/appserver/
server/src/main/java/org/apache/abdera/protocol/...
Author: jmsnell
Date: Tue Nov 20 15:17:03 2007
New Revision: 596873
URL: http://svn.apache.org/viewvc?rev=596873&view=rev
Log:
Provide an example of using the StreamWriterResponseContext.
Provide utility methods on StreamWriter to indicate that a collection accepts entries and nothing, etc.
Modified:
incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/AbstractStreamWriter.java
incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/writer/StreamWriter.java
incubator/abdera/java/trunk/examples/src/main/java/org/apache/abdera/examples/appserver/SimpleProvider.java
incubator/abdera/java/trunk/server/src/main/java/org/apache/abdera/protocol/server/impl/StreamWriterResponseContext.java
Modified: incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/AbstractStreamWriter.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/AbstractStreamWriter.java?rev=596873&r1=596872&r2=596873&view=diff
==============================================================================
--- incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/AbstractStreamWriter.java (original)
+++ incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/AbstractStreamWriter.java Tue Nov 20 15:17:03 2007
@@ -567,6 +567,14 @@
return this;
}
+ public StreamWriter writeAcceptsEntry() {
+ return writeAccepts("application/atom+xml;type=entry");
+ }
+
+ public StreamWriter writeAcceptsNothing() {
+ return writeAccepts("");
+ }
+
public StreamWriter startCategories() {
return startCategories(false,null);
}
Modified: incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/writer/StreamWriter.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/writer/StreamWriter.java?rev=596873&r1=596872&r2=596873&view=diff
==============================================================================
--- incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/writer/StreamWriter.java (original)
+++ incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/writer/StreamWriter.java Tue Nov 20 15:17:03 2007
@@ -705,6 +705,16 @@
StreamWriter writeAccepts(String... accepts);
/**
+ * Writes an app:accept element indicating that entries are accepted
+ */
+ StreamWriter writeAcceptsEntry();
+
+ /**
+ * Writes an app:accept element indicating that nothing is accepted
+ */
+ StreamWriter writeAcceptsNothing();
+
+ /**
* Start an app:categories element
*/
StreamWriter startCategories();
Modified: incubator/abdera/java/trunk/examples/src/main/java/org/apache/abdera/examples/appserver/SimpleProvider.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/examples/src/main/java/org/apache/abdera/examples/appserver/SimpleProvider.java?rev=596873&r1=596872&r2=596873&view=diff
==============================================================================
--- incubator/abdera/java/trunk/examples/src/main/java/org/apache/abdera/examples/appserver/SimpleProvider.java (original)
+++ incubator/abdera/java/trunk/examples/src/main/java/org/apache/abdera/examples/appserver/SimpleProvider.java Tue Nov 20 15:17:03 2007
@@ -17,19 +17,18 @@
*/
package org.apache.abdera.examples.appserver;
+import java.io.IOException;
import java.util.Date;
import javax.activation.MimeType;
import org.apache.abdera.Abdera;
import org.apache.abdera.factory.Factory;
+import org.apache.abdera.i18n.iri.IRI;
import org.apache.abdera.model.Base;
-import org.apache.abdera.model.Collection;
import org.apache.abdera.model.Document;
import org.apache.abdera.model.Entry;
import org.apache.abdera.model.Feed;
-import org.apache.abdera.model.Service;
-import org.apache.abdera.model.Workspace;
import org.apache.abdera.parser.ParseException;
import org.apache.abdera.parser.Parser;
import org.apache.abdera.protocol.server.Provider;
@@ -40,34 +39,22 @@
import org.apache.abdera.protocol.server.impl.AbstractResponseContext;
import org.apache.abdera.protocol.server.impl.BaseResponseContext;
import org.apache.abdera.protocol.server.impl.EmptyResponseContext;
+import org.apache.abdera.protocol.server.impl.StreamWriterResponseContext;
import org.apache.abdera.util.EntityTag;
import org.apache.abdera.util.MimeTypeHelper;
-import org.apache.abdera.i18n.iri.IRI;
+import org.apache.abdera.writer.StreamWriter;
public class SimpleProvider
extends AbstractProvider
implements Provider {
private EntityTag service_etag = new EntityTag("simple");
- private Document<Service> service_doc;
private Document<Feed> feed_doc;
public SimpleProvider() {
super(10);
}
- private Document<Service> init_service_doc(Abdera abdera) {
- Factory factory = abdera.getFactory();
- Service service = factory.newService();
- Workspace workspace = service.addWorkspace("Simple");
- try {
- Collection collection = workspace.addCollection("Simple", "atom/feed");
- collection.setAccept("entry");
- collection.addCategories().setFixed(false);
- } catch (Exception e) {}
- return service.getDocument();
- }
-
private Document<Feed> init_feed_doc(Abdera abdera) {
Factory factory = abdera.getFactory();
Feed feed = factory.newFeed();
@@ -82,13 +69,6 @@
return feed.getDocument();
}
- private synchronized Document<Service> get_service_doc(Abdera abdera) {
- if (service_doc == null) {
- service_doc = init_service_doc(abdera);
- }
- return service_doc;
- }
-
private synchronized Document<Feed> get_feed_doc(Abdera abdera) {
if (feed_doc == null) {
feed_doc = init_feed_doc(abdera);
@@ -96,16 +76,42 @@
return feed_doc;
}
+ /**
+ * Demonstrates how to use the StreamWriterResponseContext to serialize
+ * a response document. The alternative is to use the BaseResponseContext
+ * which uses a FOM Object Model. The StreamWriterResponseContext is faster
+ * and requires less memory since it streams directly to the outputstream
+ * or writer
+ */
public ResponseContext getService(
RequestContext request) {
Abdera abdera = request.getAbdera();
- Document<Service> service = get_service_doc(abdera);
- AbstractResponseContext rc;
- rc = new BaseResponseContext<Document<Service>>(service);
+ AbstractResponseContext rc =
+ new StreamWriterResponseContext(abdera) {
+ protected void writeTo(
+ StreamWriter sw)
+ throws IOException {
+ sw.startDocument()
+ .startWorkspace()
+ .writeTitle("Simple")
+ .startCollection("atom/feed")
+ .writeTitle("Simple")
+ .writeAcceptsEntry()
+ .startCategories(false)
+ .endCategories()
+ .endCollection()
+ .endWorkspace()
+ .endDocument();
+ }
+ };
rc.setEntityTag(service_etag);
return rc;
}
-
+
+ /**
+ * Demonstates how to use the BaseResponseContext to serialize a response
+ * document.
+ */
public ResponseContext getFeed(
RequestContext request) {
Abdera abdera = request.getAbdera();
Modified: incubator/abdera/java/trunk/server/src/main/java/org/apache/abdera/protocol/server/impl/StreamWriterResponseContext.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/server/src/main/java/org/apache/abdera/protocol/server/impl/StreamWriterResponseContext.java?rev=596873&r1=596872&r2=596873&view=diff
==============================================================================
--- incubator/abdera/java/trunk/server/src/main/java/org/apache/abdera/protocol/server/impl/StreamWriterResponseContext.java (original)
+++ incubator/abdera/java/trunk/server/src/main/java/org/apache/abdera/protocol/server/impl/StreamWriterResponseContext.java Tue Nov 20 15:17:03 2007
@@ -37,6 +37,7 @@
private final Abdera abdera;
private final String sw;
private boolean autoindent;
+ private String encoding = "UTF-8";
/**
* Create a new StreamWriterResponseContext
@@ -82,7 +83,7 @@
public void writeTo(
OutputStream out)
throws IOException {
- writeTo(new OutputStreamWriter(out,"UTF-8"));
+ writeTo(new OutputStreamWriter(out,encoding));
}
/**
@@ -135,5 +136,23 @@
*/
public boolean getAutoIndent() {
return this.autoindent;
+ }
+
+ public boolean hasEntity() {
+ return true;
+ }
+
+ /**
+ * Return the character set encoding used when writing to an outputstream
+ */
+ public String getEncoding() {
+ return encoding;
+ }
+
+ /**
+ * Set the character set encoding used when writing to an outputstream
+ */
+ public void setEncoding(String encoding) {
+ this.encoding = encoding;
}
}