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; }
