Return-Path: X-Original-To: apmail-abdera-commits-archive@www.apache.org Delivered-To: apmail-abdera-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id E7486B580 for ; Sat, 31 Dec 2011 02:40:16 +0000 (UTC) Received: (qmail 49169 invoked by uid 500); 31 Dec 2011 02:40:16 -0000 Delivered-To: apmail-abdera-commits-archive@abdera.apache.org Received: (qmail 49130 invoked by uid 500); 31 Dec 2011 02:40:14 -0000 Mailing-List: contact commits-help@abdera.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@abdera.apache.org Delivered-To: mailing list commits@abdera.apache.org Received: (qmail 49123 invoked by uid 99); 31 Dec 2011 02:40:12 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 31 Dec 2011 02:40:12 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 31 Dec 2011 02:40:03 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id A98A3238897D for ; Sat, 31 Dec 2011 02:39:40 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1226027 - in /abdera/abdera2: common/src/main/java/org/apache/abdera2/common/io/ core/src/main/java/org/apache/abdera2/model/ core/src/main/java/org/apache/abdera2/parser/ core/src/main/java/org/apache/abdera2/parser/axiom/ core/src/main/j... Date: Sat, 31 Dec 2011 02:39:39 -0000 To: commits@abdera.apache.org From: jmsnell@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20111231023940.A98A3238897D@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: jmsnell Date: Sat Dec 31 02:39:39 2011 New Revision: 1226027 URL: http://svn.apache.org/viewvc?rev=1226027&view=rev Log: Immutable/Threadsafe treatment for WriterOptions too Removed: abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/axiom/FOMWriterOptions.java abdera/abdera2/core/src/main/java/org/apache/abdera2/writer/AbstractWriterOptions.java Modified: abdera/abdera2/common/src/main/java/org/apache/abdera2/common/io/Compression.java abdera/abdera2/core/src/main/java/org/apache/abdera2/model/Base.java abdera/abdera2/core/src/main/java/org/apache/abdera2/model/ElementWrapper.java abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/AbstractParser.java abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/axiom/FOMDocument.java abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/axiom/FOMElement.java abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/axiom/FOMWriter.java abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/axiom/PrettyWriter.java abdera/abdera2/core/src/main/java/org/apache/abdera2/writer/AbstractWriter.java abdera/abdera2/core/src/main/java/org/apache/abdera2/writer/WriterOptions.java abdera/abdera2/ext/src/main/java/org/apache/abdera2/ext/activities/FeedToActivityWriter.java abdera/abdera2/ext/src/main/java/org/apache/abdera2/ext/json/JSONWriter.java abdera/abdera2/test/src/main/java/org/apache/abdera2/test/client/AppTest.java abdera/abdera2/test/src/main/java/org/apache/abdera2/test/parser/EncodingTest.java Modified: abdera/abdera2/common/src/main/java/org/apache/abdera2/common/io/Compression.java URL: http://svn.apache.org/viewvc/abdera/abdera2/common/src/main/java/org/apache/abdera2/common/io/Compression.java?rev=1226027&r1=1226026&r2=1226027&view=diff ============================================================================== --- abdera/abdera2/common/src/main/java/org/apache/abdera2/common/io/Compression.java (original) +++ abdera/abdera2/common/src/main/java/org/apache/abdera2/common/io/Compression.java Sat Dec 31 02:39:39 2011 @@ -79,6 +79,10 @@ public class Compression { checkArgument(exp, "At least one codec must be specified"); } + public static OutputStream wrap(OutputStream out, Iterable codecs) throws IOException { + return wrap(out,Iterables.toArray(codecs,CompressionCodec.class)); + } + public static OutputStream wrap( OutputStream out, CompressionCodec... codecs) Modified: abdera/abdera2/core/src/main/java/org/apache/abdera2/model/Base.java URL: http://svn.apache.org/viewvc/abdera/abdera2/core/src/main/java/org/apache/abdera2/model/Base.java?rev=1226027&r1=1226026&r2=1226027&view=diff ============================================================================== --- abdera/abdera2/core/src/main/java/org/apache/abdera2/model/Base.java (original) +++ abdera/abdera2/core/src/main/java/org/apache/abdera2/model/Base.java Sat Dec 31 02:39:39 2011 @@ -35,6 +35,8 @@ public interface Base extends Cloneable * Get the default WriterOptions for this object */ WriterOptions getDefaultWriterOptions(); + + WriterOptions.Builder makeDefaultWriterOptions(); /** * Serializes the model component out to the specified stream Modified: abdera/abdera2/core/src/main/java/org/apache/abdera2/model/ElementWrapper.java URL: http://svn.apache.org/viewvc/abdera/abdera2/core/src/main/java/org/apache/abdera2/model/ElementWrapper.java?rev=1226027&r1=1226026&r2=1226027&view=diff ============================================================================== --- abdera/abdera2/core/src/main/java/org/apache/abdera2/model/ElementWrapper.java (original) +++ abdera/abdera2/core/src/main/java/org/apache/abdera2/model/ElementWrapper.java Sat Dec 31 02:39:39 2011 @@ -293,6 +293,10 @@ public abstract class ElementWrapper imp internal.writeTo(out, options); } + public WriterOptions.Builder makeDefaultWriterOptions() { + return internal.makeDefaultWriterOptions(); + } + public WriterOptions getDefaultWriterOptions() { return internal.getDefaultWriterOptions(); } Modified: abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/AbstractParser.java URL: http://svn.apache.org/viewvc/abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/AbstractParser.java?rev=1226027&r1=1226026&r2=1226027&view=diff ============================================================================== --- abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/AbstractParser.java (original) +++ abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/AbstractParser.java Sat Dec 31 02:39:39 2011 @@ -136,7 +136,7 @@ public abstract class AbstractParser imp protected abstract ParserOptions.Builder initDefaultParserOptions(); public synchronized Parser setDefaultParserOptions(ParserOptions options) { - this.options = options; + this.options = options != null ? options : initDefaultParserOptions().get(); return this; } Modified: abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/axiom/FOMDocument.java URL: http://svn.apache.org/viewvc/abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/axiom/FOMDocument.java?rev=1226027&r1=1226026&r2=1226027&view=diff ============================================================================== --- abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/axiom/FOMDocument.java (original) +++ abdera/abdera2/core/src/main/java/org/apache/abdera2/parser/axiom/FOMDocument.java Sat Dec 31 02:39:39 2011 @@ -325,6 +325,10 @@ public class FOMDocument { + + protected String charset = "UTF-8"; + protected ImmutableSet.Builder codecs = + ImmutableSet.builder(); + protected boolean autoclose = false; + + public Builder charset(String charset) { + this.charset = charset; + return this; + } + + public Builder compression(CompressionCodec codec) { + this.codecs.add(codec); + return this; + } + + public Builder autoclose() { + this.autoclose = true; + return this; + } + + public Builder doNotAutoclose() { + this.autoclose = false; + return this; + } + + public WriterOptions get() { + // TODO Auto-generated method stub + return null; + } + + + } + + private final String charset; + private final ImmutableSet codecs; + private final boolean autoclose; + + WriterOptions(Builder builder) { + this.charset = builder.charset; + this.codecs = builder.codecs.build(); + this.autoclose = builder.autoclose; + } + /** * When writing, use the specified compression codecs */ - WriterOptions setCompressionCodecs(CompressionCodec... codecs); - - Object clone() throws CloneNotSupportedException; + public Iterable getCompressionCodecs() { + return codecs; + } /** * The character encoding to use for the output */ - String getCharset(); - - /** - * The character encoding to use for the output - */ - WriterOptions setCharset(String charset); + public String getCharset() { + return charset; + } /** * True if the writer should close the output stream or writer when finished */ - boolean getAutoClose(); + public boolean getAutoClose() { + return autoclose; + } - /** - * True if the writer should close the output stream or writer when finished - */ - WriterOptions setAutoClose(boolean autoclose); } Modified: abdera/abdera2/ext/src/main/java/org/apache/abdera2/ext/activities/FeedToActivityWriter.java URL: http://svn.apache.org/viewvc/abdera/abdera2/ext/src/main/java/org/apache/abdera2/ext/activities/FeedToActivityWriter.java?rev=1226027&r1=1226026&r2=1226027&view=diff ============================================================================== --- abdera/abdera2/ext/src/main/java/org/apache/abdera2/ext/activities/FeedToActivityWriter.java (original) +++ abdera/abdera2/ext/src/main/java/org/apache/abdera2/ext/activities/FeedToActivityWriter.java Sat Dec 31 02:39:39 2011 @@ -14,9 +14,11 @@ import org.apache.abdera2.model.Document import org.apache.abdera2.model.Entry; import org.apache.abdera2.model.Feed; import org.apache.abdera2.writer.AbstractWriter; -import org.apache.abdera2.writer.AbstractWriterOptions; import org.apache.abdera2.writer.Writer; import org.apache.abdera2.writer.WriterOptions; + +import com.google.common.collect.Iterables; + import static com.google.common.base.Preconditions.*; @Name("activity") @@ -49,8 +51,7 @@ public class FeedToActivityWriter checkNotNull(base); } checkArgument(base instanceof Feed || base instanceof Entry); - if (options.getCompressionCodecs() != null && - options.getCompressionCodecs().length > 0) + if (!Iterables.isEmpty(options.getCompressionCodecs())) out = Compression.wrap(out, options.getCompressionCodecs()); if (base instanceof Entry) { f2ac.convert((Entry)base).writeTo(out,options.getCharset()); @@ -96,9 +97,8 @@ public class FeedToActivityWriter } } - protected WriterOptions initDefaultWriterOptions() { - return new AbstractWriterOptions() { - }; + protected WriterOptions.Builder initDefaultWriterOptions() { + return WriterOptions.make(); } } Modified: abdera/abdera2/ext/src/main/java/org/apache/abdera2/ext/json/JSONWriter.java URL: http://svn.apache.org/viewvc/abdera/abdera2/ext/src/main/java/org/apache/abdera2/ext/json/JSONWriter.java?rev=1226027&r1=1226026&r2=1226027&view=diff ============================================================================== --- abdera/abdera2/ext/src/main/java/org/apache/abdera2/ext/json/JSONWriter.java (original) +++ abdera/abdera2/ext/src/main/java/org/apache/abdera2/ext/json/JSONWriter.java Sat Dec 31 02:39:39 2011 @@ -27,7 +27,6 @@ import org.apache.abdera2.Abdera; import org.apache.abdera2.common.anno.Name; import org.apache.abdera2.model.Base; import org.apache.abdera2.writer.AbstractWriter; -import org.apache.abdera2.writer.AbstractWriterOptions; import org.apache.abdera2.writer.WriterOptions; @Name("json") @@ -43,9 +42,8 @@ public class JSONWriter extends Abstract } @Override - protected WriterOptions initDefaultWriterOptions() { - return new AbstractWriterOptions() { - }; + protected WriterOptions.Builder initDefaultWriterOptions() { + return WriterOptions.make(); } public Object write(Base base, WriterOptions options) throws IOException { 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=1226027&r1=1226026&r2=1226027&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 Sat Dec 31 02:39:39 2011 @@ -142,8 +142,8 @@ public class AppTest { response.setStatus(HttpServletResponse.SC_OK); response.setContentType("application/atomsvc+xml; charset=utf-8"); - WriterOptions options = service.getDefaultWriterOptions(); - options.setCharset("UTF-8"); + WriterOptions options = service.makeDefaultWriterOptions() + .charset("UTF-8").get(); service.writeTo(response.getOutputStream(), options); } } @@ -184,8 +184,8 @@ public class AppTest { case COLLECTION: response.setStatus(HttpServletResponse.SC_OK); response.setContentType("application/atom+xml; charset=utf-8"); - WriterOptions options = feed.getDefaultWriterOptions(); - options.setCharset("UTF-8"); + WriterOptions options = feed.makeDefaultWriterOptions() + .charset("UTF-8").get(); feed.writeTo(response.getOutputStream(), options); break; case ENTRY: @@ -193,8 +193,8 @@ public class AppTest { Entry entry = feed.getRoot().getEntries().get(getTarget()); response.setStatus(HttpServletResponse.SC_OK); response.setContentType("application/atom+xml; charset=utf-8"); - options = entry.getDefaultWriterOptions(); - options.setCharset("UTF-8"); + options = entry.makeDefaultWriterOptions() + .charset("UTF-8").get(); entry.writeTo(response.getOutputStream(), options); } catch (Exception e) { response.sendError(HttpServletResponse.SC_NOT_FOUND); @@ -245,8 +245,8 @@ public class AppTest { response.setStatus(HttpServletResponse.SC_CREATED); response.setHeader("Location", entry.getId().toString()); response.setHeader("Content-Location", entry.getId().toString()); - WriterOptions woptions = entry.getDefaultWriterOptions(); - woptions.setCharset("UTF-8"); + WriterOptions woptions = entry.makeDefaultWriterOptions() + .charset("UTF-8").get(); entry.writeTo(response.getOutputStream(), woptions); return; } @@ -272,8 +272,8 @@ public class AppTest { response.setStatus(HttpServletResponse.SC_CREATED); response.setHeader("Location", entry.getId().toString()); response.setHeader("Content-Location", entry.getId().toString()); - WriterOptions woptions = entry.getDefaultWriterOptions(); - woptions.setCharset("UTF-8"); + WriterOptions woptions = entry.makeDefaultWriterOptions() + .charset("UTF-8").get(); entry.writeTo(response.getOutputStream(), woptions); return; } Modified: abdera/abdera2/test/src/main/java/org/apache/abdera2/test/parser/EncodingTest.java URL: http://svn.apache.org/viewvc/abdera/abdera2/test/src/main/java/org/apache/abdera2/test/parser/EncodingTest.java?rev=1226027&r1=1226026&r2=1226027&view=diff ============================================================================== --- abdera/abdera2/test/src/main/java/org/apache/abdera2/test/parser/EncodingTest.java (original) +++ abdera/abdera2/test/src/main/java/org/apache/abdera2/test/parser/EncodingTest.java Sat Dec 31 02:39:39 2011 @@ -118,10 +118,12 @@ public class EncodingTest { entry.setTitle("1"); ByteArrayOutputStream out = new ByteArrayOutputStream(); - WriterOptions writeoptions = entry.getDefaultWriterOptions(); - writeoptions.setCompressionCodecs(CompressionCodec.DEFLATE); - writeoptions.setCharset("UTF-16"); - writeoptions.setAutoClose(true); + WriterOptions writeoptions = + entry.makeDefaultWriterOptions() + .compression(CompressionCodec.DEFLATE) + .charset("UTF-16") + .autoclose() + .get(); entry.getDocument().writeTo(out, writeoptions); out.close();