You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@juneau.apache.org by ja...@apache.org on 2017/03/10 16:51:13 UTC
[17/34] incubator-juneau git commit: Add builder classes for all
serializers and parsers.
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core/src/main/java/org/apache/juneau/parser/ParserGroupBuilder.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/parser/ParserGroupBuilder.java b/juneau-core/src/main/java/org/apache/juneau/parser/ParserGroupBuilder.java
new file mode 100644
index 0000000..64f9253
--- /dev/null
+++ b/juneau-core/src/main/java/org/apache/juneau/parser/ParserGroupBuilder.java
@@ -0,0 +1,864 @@
+// ***************************************************************************************************************************
+// * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file *
+// * distributed with this work for additional information regarding copyright ownership. The ASF licenses this file *
+// * to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance *
+// * with the License. You may obtain a copy of the License at *
+// * *
+// * http://www.apache.org/licenses/LICENSE-2.0 *
+// * *
+// * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an *
+// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the *
+// * specific language governing permissions and limitations under the License. *
+// ***************************************************************************************************************************
+package org.apache.juneau.parser;
+
+import static org.apache.juneau.BeanContext.*;
+import static org.apache.juneau.parser.ParserContext.*;
+
+import java.util.*;
+
+import org.apache.juneau.*;
+
+/**
+ * Builder class for creating instances of {@link ParserGroup}.
+ */
+public class ParserGroupBuilder {
+
+ private final List<Object> parsers;
+ private final PropertyStore propertyStore;
+
+ /**
+ * Create an empty parser group builder.
+ */
+ public ParserGroupBuilder() {
+ this.parsers = new ArrayList<Object>();
+ this.propertyStore = PropertyStore.create();
+ }
+
+ /**
+ * Clone an existing parser group builder.
+ * @param copyFrom The parser group that we're copying settings and parsers from.
+ */
+ public ParserGroupBuilder(ParserGroup copyFrom) {
+ this.parsers = new ArrayList<Object>(Arrays.asList(copyFrom.parsers));
+ this.propertyStore = copyFrom.createPropertyStore();
+ }
+
+ /**
+ * Registers the specified parsers with this group.
+ *
+ * @param p The parsers to append to this group.
+ * @return This object (for method chaining).
+ */
+ public ParserGroupBuilder append(Class<?>...p) {
+ parsers.addAll(Arrays.asList(p));
+ return this;
+ }
+
+ /**
+ * Registers the specified parsers with this group.
+ *
+ * @param p The parsers to append to this group.
+ * @return This object (for method chaining).
+ */
+ public ParserGroupBuilder append(Parser...p) {
+ parsers.addAll(Arrays.asList(p));
+ return this;
+ }
+
+ /**
+ * Registers the specified parsers with this group.
+ *
+ * @param p The parsers to append to this group.
+ * @return This object (for method chaining).
+ */
+ public ParserGroupBuilder append(List<Parser> p) {
+ parsers.addAll(p);
+ return this;
+ }
+
+ /**
+ * Creates a new {@link ParserGroup} object using a snapshot of the settings defined in this builder.
+ * <p>
+ * This method can be called multiple times to produce multiple parser groups.
+ *
+ * @return A new {@link ParserGroup} object.
+ */
+ @SuppressWarnings("unchecked")
+ public ParserGroup build() {
+ List<Parser> l = new ArrayList<Parser>();
+ for (Object p : parsers) {
+ Class<? extends Parser> c = null;
+ PropertyStore ps = propertyStore;
+ if (p instanceof Class) {
+ c = (Class<? extends Parser>)p;
+ } else {
+ // Note that if we added a serializer instance, we want a new instance with this builder's properties
+ // on top of the previous serializer's properties.
+ Parser p2 = (Parser)p;
+ ps = p2.createPropertyStore().copyFrom(propertyStore);
+ c = p2.getClass();
+ }
+ try {
+ l.add(c.getConstructor(PropertyStore.class).newInstance(ps));
+ } catch (Exception e) {
+ throw new RuntimeException("Could not instantiate parser " + c.getName(), e);
+ }
+ }
+ return new ParserGroup(propertyStore, l.toArray(new Parser[l.size()]));
+ }
+
+
+ //--------------------------------------------------------------------------------
+ // Properties
+ //--------------------------------------------------------------------------------
+
+ /**
+ * Sets a property on all parsers in this group.
+ *
+ * @param name The property name.
+ * @param value The property value.
+ * @return This object (for method chaining).
+ * @see PropertyStore#setProperty(String, Object)
+ */
+ public ParserGroupBuilder property(String name, Object value) {
+ propertyStore.setProperty(name, value);
+ return this;
+ }
+
+ /**
+ * Sets a set of properties on all parsers in this group.
+ *
+ * @param properties The properties to set on this class.
+ * @return This object (for method chaining).
+ * @see PropertyStore#setProperties(java.util.Map)
+ */
+ public ParserGroupBuilder properties(ObjectMap properties) {
+ propertyStore.setProperties(properties);
+ return this;
+ }
+
+ /**
+ * Adds a value to a SET property on all parsers in this group.
+ *
+ * @param name The property name.
+ * @param value The new value to add to the SET property.
+ * @return This object (for method chaining).
+ * @throws ConfigException If property is not a SET property.
+ */
+ public ParserGroupBuilder addToProperty(String name, Object value) {
+ propertyStore.addToProperty(name, value);
+ return this;
+ }
+
+ /**
+ * Adds or overwrites a value to a MAP property on all parsers in this group.
+ *
+ * @param name The property name.
+ * @param key The property value map key.
+ * @param value The property value map value.
+ * @return This object (for method chaining).
+ * @throws ConfigException If property is not a MAP property.
+ */
+ public ParserGroupBuilder putToProperty(String name, Object key, Object value) {
+ propertyStore.putToProperty(name, key, value);
+ return this;
+ }
+
+ /**
+ * Adds or overwrites a value to a MAP property on all parsers in this group.
+ *
+ * @param name The property value.
+ * @param value The property value map value.
+ * @return This object (for method chaining).
+ * @throws ConfigException If property is not a MAP property.
+ */
+ public ParserGroupBuilder putToProperty(String name, Object value) {
+ propertyStore.putToProperty(name, value);
+ return this;
+ }
+
+ /**
+ * Removes a value from a SET property on all parsers in this group.
+ *
+ * @param name The property name.
+ * @param value The property value in the SET property.
+ * @return This object (for method chaining).
+ * @throws ConfigException If property is not a SET property.
+ */
+ public ParserGroupBuilder removeFromProperty(String name, Object value) {
+ propertyStore.removeFromProperty(name, value);
+ return this;
+ }
+
+ /**
+ * Sets the {@link ParserContext#PARSER_trimStrings} property on all parsers in this group.
+ *
+ * @param value The new value for this property.
+ * @return This object (for method chaining).
+ * @see ParserContext#PARSER_trimStrings
+ */
+ public ParserGroupBuilder trimStrings(boolean value) {
+ return property(PARSER_trimStrings, value);
+ }
+
+ /**
+ * Sets the {@link ParserContext#PARSER_strict} property on all parsers in this group.
+ *
+ * @param value The new value for this property.
+ * @return This object (for method chaining).
+ * @see ParserContext#PARSER_strict
+ */
+ public ParserGroupBuilder strict(boolean value) {
+ return property(PARSER_strict, value);
+ }
+
+ /**
+ * Sets the {@link ParserContext#PARSER_inputStreamCharset} property on all parsers in this group.
+ *
+ * @param value The new value for this property.
+ * @return This object (for method chaining).
+ * @see ParserContext#PARSER_inputStreamCharset
+ */
+ public ParserGroupBuilder inputStreamCharset(String value) {
+ return property(PARSER_inputStreamCharset, value);
+ }
+
+ /**
+ * Sets the {@link ParserContext#PARSER_fileCharset} property on all parsers in this group.
+ *
+ * @param value The new value for this property.
+ * @return This object (for method chaining).
+ * @see ParserContext#PARSER_fileCharset
+ */
+ public ParserGroupBuilder fileCharset(String value) {
+ return property(PARSER_fileCharset, value);
+ }
+
+ /**
+ * Sets the {@link BeanContext#BEAN_beansRequireDefaultConstructor} property on all parsers in this group.
+ *
+ * @param value The new value for this property.
+ * @return This object (for method chaining).
+ * @see BeanContext#BEAN_beansRequireDefaultConstructor
+ */
+ public ParserGroupBuilder beansRequireDefaultConstructor(boolean value) {
+ return property(BEAN_beansRequireDefaultConstructor, value);
+ }
+
+ /**
+ * Sets the {@link BeanContext#BEAN_beansRequireSerializable} property on all parsers in this group.
+ *
+ * @param value The new value for this property.
+ * @return This object (for method chaining).
+ * @see BeanContext#BEAN_beansRequireSerializable
+ */
+ public ParserGroupBuilder beansRequireSerializable(boolean value) {
+ return property(BEAN_beansRequireSerializable, value);
+ }
+
+ /**
+ * Sets the {@link BeanContext#BEAN_beansRequireSettersForGetters} property on all parsers in this group.
+ *
+ * @param value The new value for this property.
+ * @return This object (for method chaining).
+ * @see BeanContext#BEAN_beansRequireSettersForGetters
+ */
+ public ParserGroupBuilder beansRequireSettersForGetters(boolean value) {
+ return property(BEAN_beansRequireSettersForGetters, value);
+ }
+
+ /**
+ * Sets the {@link BeanContext#BEAN_beansRequireSomeProperties} property on all parsers in this group.
+ *
+ * @param value The new value for this property.
+ * @return This object (for method chaining).
+ * @see BeanContext#BEAN_beansRequireSomeProperties
+ */
+ public ParserGroupBuilder beansRequireSomeProperties(boolean value) {
+ return property(BEAN_beansRequireSomeProperties, value);
+ }
+
+ /**
+ * Sets the {@link BeanContext#BEAN_beanMapPutReturnsOldValue} property on all parsers in this group.
+ *
+ * @param value The new value for this property.
+ * @return This object (for method chaining).
+ * @see BeanContext#BEAN_beanMapPutReturnsOldValue
+ */
+ public ParserGroupBuilder beanMapPutReturnsOldValue(boolean value) {
+ return property(BEAN_beanMapPutReturnsOldValue, value);
+ }
+
+ /**
+ * Sets the {@link BeanContext#BEAN_beanConstructorVisibility} property on all parsers in this group.
+ *
+ * @param value The new value for this property.
+ * @return This object (for method chaining).
+ * @see BeanContext#BEAN_beanConstructorVisibility
+ */
+ public ParserGroupBuilder beanConstructorVisibility(Visibility value) {
+ return property(BEAN_beanConstructorVisibility, value);
+ }
+
+ /**
+ * Sets the {@link BeanContext#BEAN_beanClassVisibility} property on all parsers in this group.
+ *
+ * @param value The new value for this property.
+ * @return This object (for method chaining).
+ * @see BeanContext#BEAN_beanClassVisibility
+ */
+ public ParserGroupBuilder beanClassVisibility(Visibility value) {
+ return property(BEAN_beanClassVisibility, value);
+ }
+
+ /**
+ * Sets the {@link BeanContext#BEAN_beanFieldVisibility} property on all parsers in this group.
+ *
+ * @param value The new value for this property.
+ * @return This object (for method chaining).
+ * @see BeanContext#BEAN_beanFieldVisibility
+ */
+ public ParserGroupBuilder beanFieldVisibility(Visibility value) {
+ return property(BEAN_beanFieldVisibility, value);
+ }
+
+ /**
+ * Sets the {@link BeanContext#BEAN_methodVisibility} property on all parsers in this group.
+ *
+ * @param value The new value for this property.
+ * @return This object (for method chaining).
+ * @see BeanContext#BEAN_methodVisibility
+ */
+ public ParserGroupBuilder methodVisibility(Visibility value) {
+ return property(BEAN_methodVisibility, value);
+ }
+
+ /**
+ * Sets the {@link BeanContext#BEAN_useJavaBeanIntrospector} property on all parsers in this group.
+ *
+ * @param value The new value for this property.
+ * @return This object (for method chaining).
+ * @see BeanContext#BEAN_useJavaBeanIntrospector
+ */
+ public ParserGroupBuilder useJavaBeanIntrospector(boolean value) {
+ return property(BEAN_useJavaBeanIntrospector, value);
+ }
+
+ /**
+ * Sets the {@link BeanContext#BEAN_useInterfaceProxies} property on all parsers in this group.
+ *
+ * @param value The new value for this property.
+ * @return This object (for method chaining).
+ * @see BeanContext#BEAN_useInterfaceProxies
+ */
+ public ParserGroupBuilder useInterfaceProxies(boolean value) {
+ return property(BEAN_useInterfaceProxies, value);
+ }
+
+ /**
+ * Sets the {@link BeanContext#BEAN_ignoreUnknownBeanProperties} property on all parsers in this group.
+ *
+ * @param value The new value for this property.
+ * @return This object (for method chaining).
+ * @see BeanContext#BEAN_ignoreUnknownBeanProperties
+ */
+ public ParserGroupBuilder ignoreUnknownBeanProperties(boolean value) {
+ return property(BEAN_ignoreUnknownBeanProperties, value);
+ }
+
+ /**
+ * Sets the {@link BeanContext#BEAN_ignoreUnknownNullBeanProperties} property on all parsers in this group.
+ *
+ * @param value The new value for this property.
+ * @return This object (for method chaining).
+ * @see BeanContext#BEAN_ignoreUnknownNullBeanProperties
+ */
+ public ParserGroupBuilder ignoreUnknownNullBeanProperties(boolean value) {
+ return property(BEAN_ignoreUnknownNullBeanProperties, value);
+ }
+
+ /**
+ * Sets the {@link BeanContext#BEAN_ignorePropertiesWithoutSetters} property on all parsers in this group.
+ *
+ * @param value The new value for this property.
+ * @return This object (for method chaining).
+ * @see BeanContext#BEAN_ignorePropertiesWithoutSetters
+ */
+ public ParserGroupBuilder ignorePropertiesWithoutSetters(boolean value) {
+ return property(BEAN_ignorePropertiesWithoutSetters, value);
+ }
+
+ /**
+ * Sets the {@link BeanContext#BEAN_ignoreInvocationExceptionsOnGetters} property on all parsers in this group.
+ *
+ * @param value The new value for this property.
+ * @return This object (for method chaining).
+ * @see BeanContext#BEAN_ignoreInvocationExceptionsOnGetters
+ */
+ public ParserGroupBuilder ignoreInvocationExceptionsOnGetters(boolean value) {
+ return property(BEAN_ignoreInvocationExceptionsOnGetters, value);
+ }
+
+ /**
+ * Sets the {@link BeanContext#BEAN_ignoreInvocationExceptionsOnSetters} property on all parsers in this group.
+ *
+ * @param value The new value for this property.
+ * @return This object (for method chaining).
+ * @see BeanContext#BEAN_ignoreInvocationExceptionsOnSetters
+ */
+ public ParserGroupBuilder ignoreInvocationExceptionsOnSetters(boolean value) {
+ return property(BEAN_ignoreInvocationExceptionsOnSetters, value);
+ }
+
+ /**
+ * Sets the {@link BeanContext#BEAN_sortProperties} property on all parsers in this group.
+ *
+ * @param value The new value for this property.
+ * @return This object (for method chaining).
+ * @see BeanContext#BEAN_sortProperties
+ */
+ public ParserGroupBuilder sortProperties(boolean value) {
+ return property(BEAN_sortProperties, value);
+ }
+
+ /**
+ * Sets the {@link BeanContext#BEAN_notBeanPackages_add} property on all parsers in this group.
+ *
+ * @param values The new value for this property.
+ * @return This object (for method chaining).
+ * @see BeanContext#BEAN_notBeanPackages_add
+ */
+ public ParserGroupBuilder notBeanPackages(String...values) {
+ return property(BEAN_notBeanPackages_add, values);
+ }
+
+ /**
+ * Sets the {@link BeanContext#BEAN_notBeanPackages_add} property on all parsers in this group.
+ *
+ * @param value The new value for this property.
+ * @return This object (for method chaining).
+ * @see BeanContext#BEAN_notBeanPackages_add
+ */
+ public ParserGroupBuilder notBeanPackages(Collection<String> value) {
+ return property(BEAN_notBeanPackages_add, value);
+ }
+
+ /**
+ * Sets the {@link BeanContext#BEAN_notBeanPackages} property on all parsers in this group.
+ *
+ * @param values The values to remove from this property.
+ * @return This object (for method chaining).
+ * @see BeanContext#BEAN_notBeanPackages
+ */
+ public ParserGroupBuilder setNotBeanPackages(String...values) {
+ return property(BEAN_notBeanPackages, values);
+ }
+
+ /**
+ * Sets the {@link BeanContext#BEAN_notBeanPackages} property on all parsers in this group.
+ *
+ * @param values The values to remove from this property.
+ * @return This object (for method chaining).
+ * @see BeanContext#BEAN_notBeanPackages
+ */
+ public ParserGroupBuilder setNotBeanPackages(Collection<String> values) {
+ return property(BEAN_notBeanPackages, values);
+ }
+
+ /**
+ * Sets the {@link BeanContext#BEAN_notBeanPackages_remove} property on all parsers in this group.
+ *
+ * @param values The values to remove from this property.
+ * @return This object (for method chaining).
+ * @see BeanContext#BEAN_notBeanPackages
+ * @see BeanContext#BEAN_notBeanPackages_remove
+ */
+ public ParserGroupBuilder removeNotBeanPackages(String...values) {
+ return property(BEAN_notBeanPackages_remove, values);
+ }
+
+ /**
+ * Sets the {@link BeanContext#BEAN_notBeanPackages_remove} property on all parsers in this group.
+ *
+ * @param values The values to remove from this property.
+ * @return This object (for method chaining).
+ * @see BeanContext#BEAN_notBeanPackages
+ * @see BeanContext#BEAN_notBeanPackages_remove
+ */
+ public ParserGroupBuilder removeNotBeanPackages(Collection<String> values) {
+ return property(BEAN_notBeanPackages_remove, values);
+ }
+
+ /**
+ * Sets the {@link BeanContext#BEAN_notBeanClasses_add} property on all parsers in this group.
+ *
+ * @param values The new value for this property.
+ * @return This object (for method chaining).
+ * @see BeanContext#BEAN_notBeanClasses_add
+ */
+ public ParserGroupBuilder notBeanClasses(Class<?>...values) {
+ return property(BEAN_notBeanClasses_add, values);
+ }
+
+ /**
+ * Sets the {@link BeanContext#BEAN_notBeanClasses_add} property on all parsers in this group.
+ *
+ * @param values The new value for this property.
+ * @return This object (for method chaining).
+ * @see BeanContext#BEAN_notBeanPackages_add
+ */
+ public ParserGroupBuilder notBeanClasses(Collection<Class<?>> values) {
+ return property(BEAN_notBeanClasses_add, values);
+ }
+
+ /**
+ * Sets the {@link BeanContext#BEAN_notBeanClasses} property on all parsers in this group.
+ *
+ * @param values The values to add to this property.
+ * @return This object (for method chaining).
+ * @see BeanContext#BEAN_notBeanClasses
+ */
+ public ParserGroupBuilder setNotBeanClasses(Class<?>...values) {
+ return property(BEAN_notBeanClasses, values);
+ }
+
+ /**
+ * Sets the {@link BeanContext#BEAN_notBeanClasses} property on all parsers in this group.
+ *
+ * @param values The values to add to this property.
+ * @return This object (for method chaining).
+ * @see BeanContext#BEAN_notBeanClasses
+ */
+ public ParserGroupBuilder setNotBeanClasses(Collection<Class<?>> values) {
+ return property(BEAN_notBeanClasses, values);
+ }
+
+ /**
+ * Sets the {@link BeanContext#BEAN_notBeanClasses_remove} property on all parsers in this group.
+ *
+ * @param values The values to remove from this property.
+ * @return This object (for method chaining).
+ * @see BeanContext#BEAN_notBeanClasses_remove
+ */
+ public ParserGroupBuilder removeNotBeanClasses(Class<?>...values) {
+ return property(BEAN_notBeanClasses_remove, values);
+ }
+
+ /**
+ * Sets the {@link BeanContext#BEAN_notBeanClasses_remove} property on all parsers in this group.
+ *
+ * @param values The values to remove from this property.
+ * @return This object (for method chaining).
+ * @see BeanContext#BEAN_notBeanClasses_remove
+ */
+ public ParserGroupBuilder removeNotBeanClasses(Collection<Class<?>> values) {
+ return property(BEAN_notBeanClasses_remove, values);
+ }
+
+ /**
+ * Sets the {@link BeanContext#BEAN_beanFilters_add} property on all parsers in this group.
+ *
+ * @param values The new value for this property.
+ * @return This object (for method chaining).
+ * @see BeanContext#BEAN_beanFilters_add
+ */
+ public ParserGroupBuilder beanFilters(Class<?>...values) {
+ return property(BEAN_beanFilters_add, values);
+ }
+
+ /**
+ * Sets the {@link BeanContext#BEAN_beanFilters_add} property on all parsers in this group.
+ *
+ * @param values The new value for this property.
+ * @return This object (for method chaining).
+ * @see BeanContext#BEAN_beanFilters_add
+ */
+ public ParserGroupBuilder beanFilters(Collection<Class<?>> values) {
+ return property(BEAN_beanFilters_add, values);
+ }
+
+ /**
+ * Sets the {@link BeanContext#BEAN_beanFilters} property on all parsers in this group.
+ *
+ * @param values The values to add to this property.
+ * @return This object (for method chaining).
+ * @see BeanContext#BEAN_beanFilters
+ */
+ public ParserGroupBuilder setBeanFilters(Class<?>...values) {
+ return property(BEAN_beanFilters, values);
+ }
+
+ /**
+ * Sets the {@link BeanContext#BEAN_beanFilters} property on all parsers in this group.
+ *
+ * @param values The values to add to this property.
+ * @return This object (for method chaining).
+ * @see BeanContext#BEAN_beanFilters
+ */
+ public ParserGroupBuilder setBeanFilters(Collection<Class<?>> values) {
+ return property(BEAN_beanFilters, values);
+ }
+
+ /**
+ * Sets the {@link BeanContext#BEAN_beanFilters_remove} property on all parsers in this group.
+ *
+ * @param values The values to remove from this property.
+ * @return This object (for method chaining).
+ * @see BeanContext#BEAN_beanFilters_remove
+ */
+ public ParserGroupBuilder removeBeanFilters(Class<?>...values) {
+ return property(BEAN_beanFilters_remove, values);
+ }
+
+ /**
+ * Sets the {@link BeanContext#BEAN_beanFilters_remove} property on all parsers in this group.
+ *
+ * @param values The values to remove from this property.
+ * @return This object (for method chaining).
+ * @see BeanContext#BEAN_beanFilters_remove
+ */
+ public ParserGroupBuilder removeBeanFilters(Collection<Class<?>> values) {
+ return property(BEAN_beanFilters_remove, values);
+ }
+
+ /**
+ * Sets the {@link BeanContext#BEAN_pojoSwaps_add} property on all parsers in this group.
+ *
+ * @param values The new value for this property.
+ * @return This object (for method chaining).
+ * @see BeanContext#BEAN_pojoSwaps_add
+ */
+ public ParserGroupBuilder pojoSwaps(Class<?>...values) {
+ return property(BEAN_pojoSwaps_add, values);
+ }
+
+ /**
+ * Sets the {@link BeanContext#BEAN_pojoSwaps_add} property on all parsers in this group.
+ *
+ * @param values The new value for this property.
+ * @return This object (for method chaining).
+ * @see BeanContext#BEAN_pojoSwaps_add
+ */
+ public ParserGroupBuilder pojoSwaps(Collection<Class<?>> values) {
+ return property(BEAN_pojoSwaps_add, values);
+ }
+
+ /**
+ * Sets the {@link BeanContext#BEAN_pojoSwaps} property on all parsers in this group.
+ *
+ * @param values The values to add to this property.
+ * @return This object (for method chaining).
+ * @see BeanContext#BEAN_pojoSwaps
+ */
+ public ParserGroupBuilder setPojoSwaps(Class<?>...values) {
+ return property(BEAN_pojoSwaps, values);
+ }
+
+ /**
+ * Sets the {@link BeanContext#BEAN_pojoSwaps} property on all parsers in this group.
+ *
+ * @param values The values to add to this property.
+ * @return This object (for method chaining).
+ * @see BeanContext#BEAN_pojoSwaps
+ */
+ public ParserGroupBuilder setPojoSwaps(Collection<Class<?>> values) {
+ return property(BEAN_pojoSwaps, values);
+ }
+
+ /**
+ * Sets the {@link BeanContext#BEAN_pojoSwaps_remove} property on all parsers in this group.
+ *
+ * @param values The values to remove from this property.
+ * @return This object (for method chaining).
+ * @see BeanContext#BEAN_pojoSwaps_remove
+ */
+ public ParserGroupBuilder removePojoSwaps(Class<?>...values) {
+ return property(BEAN_pojoSwaps_remove, values);
+ }
+
+ /**
+ * Sets the {@link BeanContext#BEAN_pojoSwaps_remove} property on all parsers in this group.
+ *
+ * @param values The values to remove from this property.
+ * @return This object (for method chaining).
+ * @see BeanContext#BEAN_pojoSwaps_remove
+ */
+ public ParserGroupBuilder removePojoSwaps(Collection<Class<?>> values) {
+ return property(BEAN_pojoSwaps_remove, values);
+ }
+
+ /**
+ * Sets the {@link BeanContext#BEAN_implClasses} property on all parsers in this group.
+ *
+ * @param values The new value for this property.
+ * @return This object (for method chaining).
+ * @see BeanContext#BEAN_implClasses
+ */
+ public ParserGroupBuilder implClasses(Map<Class<?>,Class<?>> values) {
+ return property(BEAN_implClasses, values);
+ }
+
+ /**
+ * Sets the {@link BeanContext#BEAN_implClasses_put} property on all parsers in this group.
+ *
+ * @param interfaceClass The interface class.
+ * @param implClass The implementation class.
+ * @param <T> The class type of the interface.
+ * @return This object (for method chaining).
+ * @see BeanContext#BEAN_implClasses
+ * @see BeanContext#BEAN_implClasses_put
+ */
+ public <T> ParserGroupBuilder implClass(Class<T> interfaceClass, Class<? extends T> implClass) {
+ return putToProperty(BEAN_implClasses, interfaceClass, implClass);
+ }
+
+ /**
+ * Sets the {@link BeanContext#BEAN_beanDictionary_add} property on all parsers in this group.
+ *
+ * @param values The new value for this property.
+ * @return This object (for method chaining).
+ * @see BeanContext#BEAN_beanDictionary_add
+ */
+ public ParserGroupBuilder beanDictionary(Class<?>...values) {
+ return property(BEAN_beanDictionary_add, values);
+ }
+
+ /**
+ * Sets the {@link BeanContext#BEAN_beanDictionary_add} property on all parsers in this group.
+ *
+ * @param values The values to add to this property.
+ * @return This object (for method chaining).
+ * @see BeanContext#BEAN_beanDictionary_add
+ */
+ public ParserGroupBuilder beanDictionary(Collection<Class<?>> values) {
+ return property(BEAN_beanDictionary_add, values);
+ }
+
+ /**
+ * Sets the {@link BeanContext#BEAN_beanDictionary} property on all parsers in this group.
+ *
+ * @param values The values to add to this property.
+ * @return This object (for method chaining).
+ * @see BeanContext#BEAN_beanDictionary
+ */
+ public ParserGroupBuilder setBeanDictionary(Class<?>...values) {
+ return property(BEAN_beanDictionary, values);
+ }
+
+ /**
+ * Sets the {@link BeanContext#BEAN_beanDictionary} property on all parsers in this group.
+ *
+ * @param values The values to add to this property.
+ * @return This object (for method chaining).
+ * @see BeanContext#BEAN_beanDictionary
+ */
+ public ParserGroupBuilder setBeanDictionary(Collection<Class<?>> values) {
+ return property(BEAN_beanDictionary, values);
+ }
+
+ /**
+ * Sets the {@link BeanContext#BEAN_beanDictionary_remove} property on all parsers in this group.
+ *
+ * @param values The values to remove from this property.
+ * @return This object (for method chaining).
+ * @see BeanContext#BEAN_beanDictionary_remove
+ */
+ public ParserGroupBuilder removeFromBeanDictionary(Class<?>...values) {
+ return property(BEAN_beanDictionary_remove, values);
+ }
+
+ /**
+ * Sets the {@link BeanContext#BEAN_beanDictionary_remove} property on all parsers in this group.
+ *
+ * @param values The values to remove from this property.
+ * @return This object (for method chaining).
+ * @see BeanContext#BEAN_beanDictionary_remove
+ */
+ public ParserGroupBuilder removeFromBeanDictionary(Collection<Class<?>> values) {
+ return property(BEAN_beanDictionary_remove, values);
+ }
+
+ /**
+ * Sets the {@link BeanContext#BEAN_beanTypePropertyName} property on all parsers in this group.
+ *
+ * @param value The new value for this property.
+ * @return This object (for method chaining).
+ * @see BeanContext#BEAN_beanTypePropertyName
+ */
+ public ParserGroupBuilder beanTypePropertyName(String value) {
+ return property(BEAN_beanTypePropertyName, value);
+ }
+
+ /**
+ * Sets the {@link BeanContext#BEAN_defaultParser} property on all parsers in this group.
+ *
+ * @param value The new value for this property.
+ * @return This object (for method chaining).
+ * @see BeanContext#BEAN_defaultParser
+ */
+ public ParserGroupBuilder defaultParser(Class<?> value) {
+ return property(BEAN_defaultParser, value);
+ }
+
+ /**
+ * Sets the {@link BeanContext#BEAN_locale} property on all parsers in this group.
+ *
+ * @param value The new value for this property.
+ * @return This object (for method chaining).
+ * @see BeanContext#BEAN_locale
+ */
+ public ParserGroupBuilder locale(Locale value) {
+ return property(BEAN_locale, value);
+ }
+
+ /**
+ * Sets the {@link BeanContext#BEAN_timeZone} property on all parsers in this group.
+ *
+ * @param value The new value for this property.
+ * @return This object (for method chaining).
+ * @see BeanContext#BEAN_timeZone
+ */
+ public ParserGroupBuilder timeZone(TimeZone value) {
+ return property(BEAN_timeZone, value);
+ }
+
+ /**
+ * Sets the {@link BeanContext#BEAN_mediaType} property on all parsers in this group.
+ *
+ * @param value The new value for this property.
+ * @return This object (for method chaining).
+ * @see BeanContext#BEAN_mediaType
+ */
+ public ParserGroupBuilder mediaType(MediaType value) {
+ return property(BEAN_mediaType, value);
+ }
+
+ /**
+ * Sets the {@link BeanContext#BEAN_debug} property on all parsers in this group.
+ *
+ * @param value The new value for this property.
+ * @return This object (for method chaining).
+ * @see BeanContext#BEAN_debug
+ */
+ public ParserGroupBuilder debug(boolean value) {
+ return property(BEAN_debug, value);
+ }
+
+ /**
+ * Specifies the classloader to use when resolving classes from strings for all parsers in this group.
+ * <p>
+ * Can be used for resolving class names when the classes being created are in a different
+ * classloader from the Juneau code.
+ * <p>
+ * If <jk>null</jk>, the system classloader will be used to resolve classes.
+ *
+ * @param classLoader The new classloader.
+ * @return This object (for method chaining).
+ * @see PropertyStore#setClassLoader(ClassLoader)
+ */
+ public ParserGroupBuilder classLoader(ClassLoader classLoader) {
+ propertyStore.setClassLoader(classLoader);
+ return this;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core/src/main/java/org/apache/juneau/parser/ParserListener.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/parser/ParserListener.java b/juneau-core/src/main/java/org/apache/juneau/parser/ParserListener.java
index e675f5c..9c01704 100644
--- a/juneau-core/src/main/java/org/apache/juneau/parser/ParserListener.java
+++ b/juneau-core/src/main/java/org/apache/juneau/parser/ParserListener.java
@@ -19,7 +19,7 @@ import org.apache.juneau.*;
* <p>
* Listeners can be registered with parsers through the {@link Parser#addListener(ParserListener)} method.
* <p>
- * It should be noted that listeners are not automatically copied over to new parsers when a parser is cloned.
+ * It should be noted that listeners are not automatically copied over to new parsers when a parser is cloned using the {@link Parser#builder()} method.
*/
public class ParserListener {
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core/src/main/java/org/apache/juneau/parser/ReaderParser.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/parser/ReaderParser.java b/juneau-core/src/main/java/org/apache/juneau/parser/ReaderParser.java
index 044038d..12d8677 100644
--- a/juneau-core/src/main/java/org/apache/juneau/parser/ReaderParser.java
+++ b/juneau-core/src/main/java/org/apache/juneau/parser/ReaderParser.java
@@ -12,6 +12,7 @@
// ***************************************************************************************************************************
package org.apache.juneau.parser;
+import org.apache.juneau.*;
import org.apache.juneau.annotation.*;
/**
@@ -33,6 +34,14 @@ import org.apache.juneau.annotation.*;
*/
public abstract class ReaderParser extends Parser {
+ /**
+ * Constructor.
+ * @param propertyStore The property store containing all the settings for this object.
+ */
+ protected ReaderParser(PropertyStore propertyStore) {
+ super(propertyStore);
+ }
+
@Override /* Parser */
public boolean isReaderParser() {
return true;
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core/src/main/java/org/apache/juneau/parser/package.html
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/parser/package.html b/juneau-core/src/main/java/org/apache/juneau/parser/package.html
index 3c38ac3..ea6b20d 100644
--- a/juneau-core/src/main/java/org/apache/juneau/parser/package.html
+++ b/juneau-core/src/main/java/org/apache/juneau/parser/package.html
@@ -123,7 +123,7 @@
}
</p>
<p>
- Parsers that take advantage of the entire {@link org.apache.juneau.CoreApi} interface to be able to parse arbitrary beans and POJOs is
+ Parsers that take advantage of the entire {@link org.apache.juneau.CoreObject} interface to be able to parse arbitrary beans and POJOs is
considerably more complex and outside the scope of this document.
If developing such a parser, the best course of action would be to replicate what occurs in the {@link org.apache.juneau.json.JsonParser} class.
</p>
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core/src/main/java/org/apache/juneau/plaintext/PlainTextParser.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/plaintext/PlainTextParser.java b/juneau-core/src/main/java/org/apache/juneau/plaintext/PlainTextParser.java
index 86340c7..1006307 100644
--- a/juneau-core/src/main/java/org/apache/juneau/plaintext/PlainTextParser.java
+++ b/juneau-core/src/main/java/org/apache/juneau/plaintext/PlainTextParser.java
@@ -44,6 +44,24 @@ import org.apache.juneau.transform.*;
@Consumes("text/plain")
public final class PlainTextParser extends ReaderParser {
+ /** Default parser, all default settings.*/
+ public static final PlainTextParser DEFAULT = new PlainTextParser(PropertyStore.create());
+
+
+ /**
+ * Constructor.
+ * @param propertyStore The property store containing all the settings for this object.
+ */
+ public PlainTextParser(PropertyStore propertyStore) {
+ super(propertyStore);
+ }
+
+ @Override /* CoreObject */
+ public PlainTextParserBuilder builder() {
+ return new PlainTextParserBuilder(propertyStore);
+ }
+
+
//--------------------------------------------------------------------------------
// Overridden methods
//--------------------------------------------------------------------------------
@@ -52,13 +70,4 @@ public final class PlainTextParser extends ReaderParser {
protected <T> T doParse(ParserSession session, ClassMeta<T> type) throws Exception {
return session.convertToType(IOUtils.read(session.getReader()), type);
}
-
- @Override /* Lockable */
- public PlainTextParser clone() {
- try {
- return (PlainTextParser)super.clone();
- } catch (CloneNotSupportedException e) {
- throw new RuntimeException(e); // Shouldn't happen.
- }
- }
}
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core/src/main/java/org/apache/juneau/plaintext/PlainTextParserBuilder.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/plaintext/PlainTextParserBuilder.java b/juneau-core/src/main/java/org/apache/juneau/plaintext/PlainTextParserBuilder.java
new file mode 100644
index 0000000..febd91f
--- /dev/null
+++ b/juneau-core/src/main/java/org/apache/juneau/plaintext/PlainTextParserBuilder.java
@@ -0,0 +1,457 @@
+// ***************************************************************************************************************************
+// * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file *
+// * distributed with this work for additional information regarding copyright ownership. The ASF licenses this file *
+// * to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance *
+// * with the License. You may obtain a copy of the License at *
+// * *
+// * http://www.apache.org/licenses/LICENSE-2.0 *
+// * *
+// * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an *
+// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the *
+// * specific language governing permissions and limitations under the License. *
+// ***************************************************************************************************************************
+package org.apache.juneau.plaintext;
+
+import java.util.*;
+
+import org.apache.juneau.*;
+import org.apache.juneau.parser.*;
+
+/**
+ * Builder class for building instances of plain-text parsers.
+ */
+public class PlainTextParserBuilder extends ParserBuilder {
+
+ /**
+ * Constructor, default settings.
+ */
+ public PlainTextParserBuilder() {
+ super();
+ }
+
+ /**
+ * Constructor.
+ * @param propertyStore The initial configuration settings for this builder.
+ */
+ public PlainTextParserBuilder(PropertyStore propertyStore) {
+ super(propertyStore);
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextParser build() {
+ return new PlainTextParser(propertyStore);
+ }
+
+
+ //--------------------------------------------------------------------------------
+ // Properties
+ //--------------------------------------------------------------------------------
+
+ @Override /* ParserBuilder */
+ public PlainTextParserBuilder trimStrings(boolean value) {
+ super.trimStrings(value);
+ return this;
+ }
+
+ @Override /* ParserBuilder */
+ public PlainTextParserBuilder strict(boolean value) {
+ super.strict(value);
+ return this;
+ }
+
+ @Override /* ParserBuilder */
+ public PlainTextParserBuilder strict() {
+ super.strict();
+ return this;
+ }
+
+ @Override /* ParserBuilder */
+ public PlainTextParserBuilder inputStreamCharset(String value) {
+ super.inputStreamCharset(value);
+ return this;
+ }
+
+ @Override /* ParserBuilder */
+ public PlainTextParserBuilder fileCharset(String value) {
+ super.fileCharset(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextParserBuilder beansRequireDefaultConstructor(boolean value) {
+ super.beansRequireDefaultConstructor(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextParserBuilder beansRequireSerializable(boolean value) {
+ super.beansRequireSerializable(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextParserBuilder beansRequireSettersForGetters(boolean value) {
+ super.beansRequireSettersForGetters(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextParserBuilder beansRequireSomeProperties(boolean value) {
+ super.beansRequireSomeProperties(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextParserBuilder beanMapPutReturnsOldValue(boolean value) {
+ super.beanMapPutReturnsOldValue(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextParserBuilder beanConstructorVisibility(Visibility value) {
+ super.beanConstructorVisibility(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextParserBuilder beanClassVisibility(Visibility value) {
+ super.beanClassVisibility(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextParserBuilder beanFieldVisibility(Visibility value) {
+ super.beanFieldVisibility(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextParserBuilder methodVisibility(Visibility value) {
+ super.methodVisibility(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextParserBuilder useJavaBeanIntrospector(boolean value) {
+ super.useJavaBeanIntrospector(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextParserBuilder useInterfaceProxies(boolean value) {
+ super.useInterfaceProxies(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextParserBuilder ignoreUnknownBeanProperties(boolean value) {
+ super.ignoreUnknownBeanProperties(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextParserBuilder ignoreUnknownNullBeanProperties(boolean value) {
+ super.ignoreUnknownNullBeanProperties(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextParserBuilder ignorePropertiesWithoutSetters(boolean value) {
+ super.ignorePropertiesWithoutSetters(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextParserBuilder ignoreInvocationExceptionsOnGetters(boolean value) {
+ super.ignoreInvocationExceptionsOnGetters(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextParserBuilder ignoreInvocationExceptionsOnSetters(boolean value) {
+ super.ignoreInvocationExceptionsOnSetters(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextParserBuilder sortProperties(boolean value) {
+ super.sortProperties(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextParserBuilder notBeanPackages(String...values) {
+ super.notBeanPackages(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextParserBuilder notBeanPackages(Collection<String> values) {
+ super.notBeanPackages(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextParserBuilder setNotBeanPackages(String...values) {
+ super.setNotBeanPackages(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextParserBuilder setNotBeanPackages(Collection<String> values) {
+ super.setNotBeanPackages(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextParserBuilder removeNotBeanPackages(String...values) {
+ super.removeNotBeanPackages(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextParserBuilder removeNotBeanPackages(Collection<String> values) {
+ super.removeNotBeanPackages(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextParserBuilder notBeanClasses(Class<?>...values) {
+ super.notBeanClasses(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextParserBuilder notBeanClasses(Collection<Class<?>> values) {
+ super.notBeanClasses(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextParserBuilder setNotBeanClasses(Class<?>...values) {
+ super.setNotBeanClasses(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextParserBuilder setNotBeanClasses(Collection<Class<?>> values) {
+ super.setNotBeanClasses(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextParserBuilder removeNotBeanClasses(Class<?>...values) {
+ super.removeNotBeanClasses(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextParserBuilder removeNotBeanClasses(Collection<Class<?>> values) {
+ super.removeNotBeanClasses(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextParserBuilder beanFilters(Class<?>...values) {
+ super.beanFilters(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextParserBuilder beanFilters(Collection<Class<?>> values) {
+ super.beanFilters(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextParserBuilder setBeanFilters(Class<?>...values) {
+ super.setBeanFilters(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextParserBuilder setBeanFilters(Collection<Class<?>> values) {
+ super.setBeanFilters(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextParserBuilder removeBeanFilters(Class<?>...values) {
+ super.removeBeanFilters(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextParserBuilder removeBeanFilters(Collection<Class<?>> values) {
+ super.removeBeanFilters(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextParserBuilder pojoSwaps(Class<?>...values) {
+ super.pojoSwaps(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextParserBuilder pojoSwaps(Collection<Class<?>> values) {
+ super.pojoSwaps(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextParserBuilder setPojoSwaps(Class<?>...values) {
+ super.setPojoSwaps(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextParserBuilder setPojoSwaps(Collection<Class<?>> values) {
+ super.setPojoSwaps(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextParserBuilder removePojoSwaps(Class<?>...values) {
+ super.removePojoSwaps(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextParserBuilder removePojoSwaps(Collection<Class<?>> values) {
+ super.removePojoSwaps(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextParserBuilder implClasses(Map<Class<?>,Class<?>> values) {
+ super.implClasses(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public <T> PlainTextParserBuilder implClass(Class<T> interfaceClass, Class<? extends T> implClass) {
+ super.implClass(interfaceClass, implClass);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextParserBuilder beanDictionary(Class<?>...values) {
+ super.beanDictionary(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextParserBuilder beanDictionary(Collection<Class<?>> values) {
+ super.beanDictionary(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextParserBuilder setBeanDictionary(Class<?>...values) {
+ super.setBeanDictionary(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextParserBuilder setBeanDictionary(Collection<Class<?>> values) {
+ super.setBeanDictionary(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextParserBuilder removeFromBeanDictionary(Class<?>...values) {
+ super.removeFromBeanDictionary(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextParserBuilder removeFromBeanDictionary(Collection<Class<?>> values) {
+ super.removeFromBeanDictionary(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextParserBuilder beanTypePropertyName(String value) {
+ super.beanTypePropertyName(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextParserBuilder defaultParser(Class<?> value) {
+ super.defaultParser(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextParserBuilder locale(Locale value) {
+ super.locale(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextParserBuilder timeZone(TimeZone value) {
+ super.timeZone(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextParserBuilder mediaType(MediaType value) {
+ super.mediaType(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextParserBuilder debug(boolean value) {
+ super.debug(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextParserBuilder property(String name, Object value) {
+ super.property(name, value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextParserBuilder properties(Map<String,Object> properties) {
+ super.properties(properties);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextParserBuilder addToProperty(String name, Object value) {
+ super.addToProperty(name, value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextParserBuilder putToProperty(String name, Object key, Object value) {
+ super.putToProperty(name, key, value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextParserBuilder putToProperty(String name, Object value) {
+ super.putToProperty(name, value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextParserBuilder removeFromProperty(String name, Object value) {
+ super.removeFromProperty(name, value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextParserBuilder classLoader(ClassLoader classLoader) {
+ super.classLoader(classLoader);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextParserBuilder apply(PropertyStore copyFrom) {
+ super.apply(copyFrom);
+ return this;
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core/src/main/java/org/apache/juneau/plaintext/PlainTextSerializer.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/plaintext/PlainTextSerializer.java b/juneau-core/src/main/java/org/apache/juneau/plaintext/PlainTextSerializer.java
index 0cc9dcf..b49380f 100644
--- a/juneau-core/src/main/java/org/apache/juneau/plaintext/PlainTextSerializer.java
+++ b/juneau-core/src/main/java/org/apache/juneau/plaintext/PlainTextSerializer.java
@@ -43,6 +43,24 @@ import org.apache.juneau.transform.*;
@Produces("text/plain")
public final class PlainTextSerializer extends WriterSerializer {
+ /** Default serializer, all default settings.*/
+ public static final PlainTextSerializer DEFAULT = new PlainTextSerializer(PropertyStore.create());
+
+
+ /**
+ * Constructor.
+ * @param propertyStore The property store containing all the settings for this object.
+ */
+ public PlainTextSerializer(PropertyStore propertyStore) {
+ super(propertyStore);
+ }
+
+ @Override /* CoreObject */
+ public PlainTextSerializerBuilder builder() {
+ return new PlainTextSerializerBuilder(propertyStore);
+ }
+
+
//--------------------------------------------------------------------------------
// Overridden methods
//--------------------------------------------------------------------------------
@@ -51,13 +69,4 @@ public final class PlainTextSerializer extends WriterSerializer {
protected void doSerialize(SerializerSession session, Object o) throws Exception {
session.getWriter().write(o == null ? "null" : session.convertToType(o, String.class));
}
-
- @Override /* Serializer */
- public PlainTextSerializer clone() {
- try {
- return (PlainTextSerializer)super.clone();
- } catch (CloneNotSupportedException e) {
- throw new RuntimeException(e); // Shouldn't happen.
- }
- }
}
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core/src/main/java/org/apache/juneau/plaintext/PlainTextSerializerBuilder.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/plaintext/PlainTextSerializerBuilder.java b/juneau-core/src/main/java/org/apache/juneau/plaintext/PlainTextSerializerBuilder.java
new file mode 100644
index 0000000..8ab1255
--- /dev/null
+++ b/juneau-core/src/main/java/org/apache/juneau/plaintext/PlainTextSerializerBuilder.java
@@ -0,0 +1,528 @@
+// ***************************************************************************************************************************
+// * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file *
+// * distributed with this work for additional information regarding copyright ownership. The ASF licenses this file *
+// * to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance *
+// * with the License. You may obtain a copy of the License at *
+// * *
+// * http://www.apache.org/licenses/LICENSE-2.0 *
+// * *
+// * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an *
+// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the *
+// * specific language governing permissions and limitations under the License. *
+// ***************************************************************************************************************************
+package org.apache.juneau.plaintext;
+
+import java.util.*;
+
+import org.apache.juneau.*;
+import org.apache.juneau.serializer.*;
+
+/**
+ * Builder class for building instances of plain-text serializers.
+ */
+public class PlainTextSerializerBuilder extends SerializerBuilder {
+
+ /**
+ * Constructor, default settings.
+ */
+ public PlainTextSerializerBuilder() {
+ super();
+ }
+
+ /**
+ * Constructor.
+ * @param propertyStore The initial configuration settings for this builder.
+ */
+ public PlainTextSerializerBuilder(PropertyStore propertyStore) {
+ super(propertyStore);
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextSerializer build() {
+ return new PlainTextSerializer(propertyStore);
+ }
+
+
+ //--------------------------------------------------------------------------------
+ // Properties
+ //--------------------------------------------------------------------------------
+
+ @Override /* SerializerBuilder */
+ public PlainTextSerializerBuilder maxDepth(int value) {
+ super.maxDepth(value);
+ return this;
+ }
+
+ @Override /* SerializerBuilder */
+ public PlainTextSerializerBuilder initialDepth(int value) {
+ super.initialDepth(value);
+ return this;
+ }
+
+ @Override /* SerializerBuilder */
+ public PlainTextSerializerBuilder detectRecursions(boolean value) {
+ super.detectRecursions(value);
+ return this;
+ }
+
+ @Override /* SerializerBuilder */
+ public PlainTextSerializerBuilder ignoreRecursions(boolean value) {
+ super.ignoreRecursions(value);
+ return this;
+ }
+
+ @Override /* SerializerBuilder */
+ public PlainTextSerializerBuilder useWhitespace(boolean value) {
+ super.useWhitespace(value);
+ return this;
+ }
+
+ @Override /* SerializerBuilder */
+ public PlainTextSerializerBuilder ws() {
+ super.ws();
+ return this;
+ }
+
+ @Override /* SerializerBuilder */
+ public PlainTextSerializerBuilder addBeanTypeProperties(boolean value) {
+ super.addBeanTypeProperties(value);
+ return this;
+ }
+
+ @Override /* SerializerBuilder */
+ public PlainTextSerializerBuilder quoteChar(char value) {
+ super.quoteChar(value);
+ return this;
+ }
+
+ @Override /* SerializerBuilder */
+ public PlainTextSerializerBuilder sq() {
+ super.sq();
+ return this;
+ }
+
+ @Override /* SerializerBuilder */
+ public PlainTextSerializerBuilder trimNullProperties(boolean value) {
+ super.trimNullProperties(value);
+ return this;
+ }
+
+ @Override /* SerializerBuilder */
+ public PlainTextSerializerBuilder trimEmptyCollections(boolean value) {
+ super.trimEmptyCollections(value);
+ return this;
+ }
+
+ @Override /* SerializerBuilder */
+ public PlainTextSerializerBuilder trimEmptyMaps(boolean value) {
+ super.trimEmptyMaps(value);
+ return this;
+ }
+
+ @Override /* SerializerBuilder */
+ public PlainTextSerializerBuilder trimStrings(boolean value) {
+ super.trimStrings(value);
+ return this;
+ }
+
+ @Override /* SerializerBuilder */
+ public PlainTextSerializerBuilder relativeUriBase(String value) {
+ super.relativeUriBase(value);
+ return this;
+ }
+
+ @Override /* SerializerBuilder */
+ public PlainTextSerializerBuilder absolutePathUriBase(String value) {
+ super.absolutePathUriBase(value);
+ return this;
+ }
+
+ @Override /* SerializerBuilder */
+ public PlainTextSerializerBuilder sortCollections(boolean value) {
+ super.sortCollections(value);
+ return this;
+ }
+
+ @Override /* SerializerBuilder */
+ public PlainTextSerializerBuilder sortMaps(boolean value) {
+ super.sortMaps(value);
+ return this;
+ }
+ @Override /* CoreObjectBuilder */
+ public PlainTextSerializerBuilder beansRequireDefaultConstructor(boolean value) {
+ super.beansRequireDefaultConstructor(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextSerializerBuilder beansRequireSerializable(boolean value) {
+ super.beansRequireSerializable(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextSerializerBuilder beansRequireSettersForGetters(boolean value) {
+ super.beansRequireSettersForGetters(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextSerializerBuilder beansRequireSomeProperties(boolean value) {
+ super.beansRequireSomeProperties(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextSerializerBuilder beanMapPutReturnsOldValue(boolean value) {
+ super.beanMapPutReturnsOldValue(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextSerializerBuilder beanConstructorVisibility(Visibility value) {
+ super.beanConstructorVisibility(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextSerializerBuilder beanClassVisibility(Visibility value) {
+ super.beanClassVisibility(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextSerializerBuilder beanFieldVisibility(Visibility value) {
+ super.beanFieldVisibility(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextSerializerBuilder methodVisibility(Visibility value) {
+ super.methodVisibility(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextSerializerBuilder useJavaBeanIntrospector(boolean value) {
+ super.useJavaBeanIntrospector(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextSerializerBuilder useInterfaceProxies(boolean value) {
+ super.useInterfaceProxies(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextSerializerBuilder ignoreUnknownBeanProperties(boolean value) {
+ super.ignoreUnknownBeanProperties(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextSerializerBuilder ignoreUnknownNullBeanProperties(boolean value) {
+ super.ignoreUnknownNullBeanProperties(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextSerializerBuilder ignorePropertiesWithoutSetters(boolean value) {
+ super.ignorePropertiesWithoutSetters(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextSerializerBuilder ignoreInvocationExceptionsOnGetters(boolean value) {
+ super.ignoreInvocationExceptionsOnGetters(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextSerializerBuilder ignoreInvocationExceptionsOnSetters(boolean value) {
+ super.ignoreInvocationExceptionsOnSetters(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextSerializerBuilder sortProperties(boolean value) {
+ super.sortProperties(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextSerializerBuilder notBeanPackages(String...values) {
+ super.notBeanPackages(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextSerializerBuilder notBeanPackages(Collection<String> values) {
+ super.notBeanPackages(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextSerializerBuilder setNotBeanPackages(String...values) {
+ super.setNotBeanPackages(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextSerializerBuilder setNotBeanPackages(Collection<String> values) {
+ super.setNotBeanPackages(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextSerializerBuilder removeNotBeanPackages(String...values) {
+ super.removeNotBeanPackages(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextSerializerBuilder removeNotBeanPackages(Collection<String> values) {
+ super.removeNotBeanPackages(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextSerializerBuilder notBeanClasses(Class<?>...values) {
+ super.notBeanClasses(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextSerializerBuilder notBeanClasses(Collection<Class<?>> values) {
+ super.notBeanClasses(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextSerializerBuilder setNotBeanClasses(Class<?>...values) {
+ super.setNotBeanClasses(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextSerializerBuilder setNotBeanClasses(Collection<Class<?>> values) {
+ super.setNotBeanClasses(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextSerializerBuilder removeNotBeanClasses(Class<?>...values) {
+ super.removeNotBeanClasses(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextSerializerBuilder removeNotBeanClasses(Collection<Class<?>> values) {
+ super.removeNotBeanClasses(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextSerializerBuilder beanFilters(Class<?>...values) {
+ super.beanFilters(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextSerializerBuilder beanFilters(Collection<Class<?>> values) {
+ super.beanFilters(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextSerializerBuilder setBeanFilters(Class<?>...values) {
+ super.setBeanFilters(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextSerializerBuilder setBeanFilters(Collection<Class<?>> values) {
+ super.setBeanFilters(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextSerializerBuilder removeBeanFilters(Class<?>...values) {
+ super.removeBeanFilters(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextSerializerBuilder removeBeanFilters(Collection<Class<?>> values) {
+ super.removeBeanFilters(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextSerializerBuilder pojoSwaps(Class<?>...values) {
+ super.pojoSwaps(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextSerializerBuilder pojoSwaps(Collection<Class<?>> values) {
+ super.pojoSwaps(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextSerializerBuilder setPojoSwaps(Class<?>...values) {
+ super.setPojoSwaps(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextSerializerBuilder setPojoSwaps(Collection<Class<?>> values) {
+ super.setPojoSwaps(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextSerializerBuilder removePojoSwaps(Class<?>...values) {
+ super.removePojoSwaps(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextSerializerBuilder removePojoSwaps(Collection<Class<?>> values) {
+ super.removePojoSwaps(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextSerializerBuilder implClasses(Map<Class<?>,Class<?>> values) {
+ super.implClasses(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public <T> PlainTextSerializerBuilder implClass(Class<T> interfaceClass, Class<? extends T> implClass) {
+ super.implClass(interfaceClass, implClass);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextSerializerBuilder beanDictionary(Class<?>...values) {
+ super.beanDictionary(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextSerializerBuilder beanDictionary(Collection<Class<?>> values) {
+ super.beanDictionary(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextSerializerBuilder setBeanDictionary(Class<?>...values) {
+ super.setBeanDictionary(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextSerializerBuilder setBeanDictionary(Collection<Class<?>> values) {
+ super.setBeanDictionary(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextSerializerBuilder removeFromBeanDictionary(Class<?>...values) {
+ super.removeFromBeanDictionary(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextSerializerBuilder removeFromBeanDictionary(Collection<Class<?>> values) {
+ super.removeFromBeanDictionary(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextSerializerBuilder beanTypePropertyName(String value) {
+ super.beanTypePropertyName(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextSerializerBuilder defaultParser(Class<?> value) {
+ super.defaultParser(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextSerializerBuilder locale(Locale value) {
+ super.locale(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextSerializerBuilder timeZone(TimeZone value) {
+ super.timeZone(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextSerializerBuilder mediaType(MediaType value) {
+ super.mediaType(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextSerializerBuilder debug(boolean value) {
+ super.debug(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextSerializerBuilder property(String name, Object value) {
+ super.property(name, value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextSerializerBuilder properties(Map<String,Object> properties) {
+ super.properties(properties);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextSerializerBuilder addToProperty(String name, Object value) {
+ super.addToProperty(name, value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextSerializerBuilder putToProperty(String name, Object key, Object value) {
+ super.putToProperty(name, key, value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextSerializerBuilder putToProperty(String name, Object value) {
+ super.putToProperty(name, value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextSerializerBuilder removeFromProperty(String name, Object value) {
+ super.removeFromProperty(name, value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextSerializerBuilder classLoader(ClassLoader classLoader) {
+ super.classLoader(classLoader);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public PlainTextSerializerBuilder apply(PropertyStore copyFrom) {
+ super.apply(copyFrom);
+ return this;
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core/src/main/java/org/apache/juneau/serializer/OutputStreamSerializer.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/serializer/OutputStreamSerializer.java b/juneau-core/src/main/java/org/apache/juneau/serializer/OutputStreamSerializer.java
index 1c2a2d2..bbfcfb2 100644
--- a/juneau-core/src/main/java/org/apache/juneau/serializer/OutputStreamSerializer.java
+++ b/juneau-core/src/main/java/org/apache/juneau/serializer/OutputStreamSerializer.java
@@ -14,6 +14,7 @@ package org.apache.juneau.serializer;
import java.io.*;
+import org.apache.juneau.*;
import org.apache.juneau.annotation.*;
import org.apache.juneau.internal.*;
@@ -37,7 +38,15 @@ import org.apache.juneau.internal.*;
*/
public abstract class OutputStreamSerializer extends Serializer {
- @Override /* Serializer */
+ /**
+ * Constructor.
+ * @param propertyStore The property store containing all the settings for this object.
+ */
+ protected OutputStreamSerializer(PropertyStore propertyStore) {
+ super(propertyStore);
+ }
+
+ @Override /* Serializer */
public boolean isWriterSerializer() {
return false;
}