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:18 UTC
[22/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/html/HtmlParserBuilder.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/html/HtmlParserBuilder.java b/juneau-core/src/main/java/org/apache/juneau/html/HtmlParserBuilder.java
new file mode 100644
index 0000000..be8cc9c
--- /dev/null
+++ b/juneau-core/src/main/java/org/apache/juneau/html/HtmlParserBuilder.java
@@ -0,0 +1,484 @@
+// ***************************************************************************************************************************
+// * 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.html;
+
+import java.util.*;
+
+import javax.xml.stream.*;
+import javax.xml.stream.util.*;
+
+import org.apache.juneau.*;
+import org.apache.juneau.xml.*;
+
+/**
+ * Builder class for building instances of HTML parsers.
+ */
+public class HtmlParserBuilder extends XmlParserBuilder {
+
+ /**
+ * Constructor, default settings.
+ */
+ public HtmlParserBuilder() {
+ super();
+ }
+
+ /**
+ * Constructor.
+ * @param propertyStore The initial configuration settings for this builder.
+ */
+ public HtmlParserBuilder(PropertyStore propertyStore) {
+ super(propertyStore);
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlParser build() {
+ return new HtmlParser(propertyStore);
+ }
+
+
+ //--------------------------------------------------------------------------------
+ // Properties
+ //--------------------------------------------------------------------------------
+
+ @Override /* XmlParserBuilder */
+ public HtmlParserBuilder validating(boolean value) {
+ super.validating(value);
+ return this;
+ }
+
+ @Override /* XmlParserBuilder */
+ public HtmlParserBuilder reporter(XMLReporter value) {
+ super.reporter(value);
+ return this;
+ }
+
+ @Override /* XmlParserBuilder */
+ public HtmlParserBuilder resolver(XMLResolver value) {
+ super.resolver(value);
+ return this;
+ }
+
+ @Override /* XmlParserBuilder */
+ public HtmlParserBuilder eventAllocator(XMLEventAllocator value) {
+ super.eventAllocator(value);
+ return this;
+ }
+
+ @Override /* ParserBuilder */
+ public HtmlParserBuilder trimStrings(boolean value) {
+ super.trimStrings(value);
+ return this;
+ }
+
+ @Override /* ParserBuilder */
+ public HtmlParserBuilder strict(boolean value) {
+ super.strict(value);
+ return this;
+ }
+
+ @Override /* ParserBuilder */
+ public HtmlParserBuilder strict() {
+ super.strict();
+ return this;
+ }
+
+ @Override /* ParserBuilder */
+ public HtmlParserBuilder inputStreamCharset(String value) {
+ super.inputStreamCharset(value);
+ return this;
+ }
+
+ @Override /* ParserBuilder */
+ public HtmlParserBuilder fileCharset(String value) {
+ super.fileCharset(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlParserBuilder beansRequireDefaultConstructor(boolean value) {
+ super.beansRequireDefaultConstructor(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlParserBuilder beansRequireSerializable(boolean value) {
+ super.beansRequireSerializable(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlParserBuilder beansRequireSettersForGetters(boolean value) {
+ super.beansRequireSettersForGetters(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlParserBuilder beansRequireSomeProperties(boolean value) {
+ super.beansRequireSomeProperties(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlParserBuilder beanMapPutReturnsOldValue(boolean value) {
+ super.beanMapPutReturnsOldValue(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlParserBuilder beanConstructorVisibility(Visibility value) {
+ super.beanConstructorVisibility(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlParserBuilder beanClassVisibility(Visibility value) {
+ super.beanClassVisibility(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlParserBuilder beanFieldVisibility(Visibility value) {
+ super.beanFieldVisibility(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlParserBuilder methodVisibility(Visibility value) {
+ super.methodVisibility(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlParserBuilder useJavaBeanIntrospector(boolean value) {
+ super.useJavaBeanIntrospector(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlParserBuilder useInterfaceProxies(boolean value) {
+ super.useInterfaceProxies(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlParserBuilder ignoreUnknownBeanProperties(boolean value) {
+ super.ignoreUnknownBeanProperties(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlParserBuilder ignoreUnknownNullBeanProperties(boolean value) {
+ super.ignoreUnknownNullBeanProperties(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlParserBuilder ignorePropertiesWithoutSetters(boolean value) {
+ super.ignorePropertiesWithoutSetters(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlParserBuilder ignoreInvocationExceptionsOnGetters(boolean value) {
+ super.ignoreInvocationExceptionsOnGetters(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlParserBuilder ignoreInvocationExceptionsOnSetters(boolean value) {
+ super.ignoreInvocationExceptionsOnSetters(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlParserBuilder sortProperties(boolean value) {
+ super.sortProperties(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlParserBuilder notBeanPackages(String...values) {
+ super.notBeanPackages(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlParserBuilder notBeanPackages(Collection<String> values) {
+ super.notBeanPackages(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlParserBuilder setNotBeanPackages(String...values) {
+ super.setNotBeanPackages(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlParserBuilder setNotBeanPackages(Collection<String> values) {
+ super.setNotBeanPackages(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlParserBuilder removeNotBeanPackages(String...values) {
+ super.removeNotBeanPackages(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlParserBuilder removeNotBeanPackages(Collection<String> values) {
+ super.removeNotBeanPackages(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlParserBuilder notBeanClasses(Class<?>...values) {
+ super.notBeanClasses(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlParserBuilder notBeanClasses(Collection<Class<?>> values) {
+ super.notBeanClasses(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlParserBuilder setNotBeanClasses(Class<?>...values) {
+ super.setNotBeanClasses(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlParserBuilder setNotBeanClasses(Collection<Class<?>> values) {
+ super.setNotBeanClasses(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlParserBuilder removeNotBeanClasses(Class<?>...values) {
+ super.removeNotBeanClasses(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlParserBuilder removeNotBeanClasses(Collection<Class<?>> values) {
+ super.removeNotBeanClasses(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlParserBuilder beanFilters(Class<?>...values) {
+ super.beanFilters(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlParserBuilder beanFilters(Collection<Class<?>> values) {
+ super.beanFilters(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlParserBuilder setBeanFilters(Class<?>...values) {
+ super.setBeanFilters(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlParserBuilder setBeanFilters(Collection<Class<?>> values) {
+ super.setBeanFilters(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlParserBuilder removeBeanFilters(Class<?>...values) {
+ super.removeBeanFilters(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlParserBuilder removeBeanFilters(Collection<Class<?>> values) {
+ super.removeBeanFilters(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlParserBuilder pojoSwaps(Class<?>...values) {
+ super.pojoSwaps(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlParserBuilder pojoSwaps(Collection<Class<?>> values) {
+ super.pojoSwaps(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlParserBuilder setPojoSwaps(Class<?>...values) {
+ super.setPojoSwaps(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlParserBuilder setPojoSwaps(Collection<Class<?>> values) {
+ super.setPojoSwaps(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlParserBuilder removePojoSwaps(Class<?>...values) {
+ super.removePojoSwaps(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlParserBuilder removePojoSwaps(Collection<Class<?>> values) {
+ super.removePojoSwaps(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlParserBuilder implClasses(Map<Class<?>,Class<?>> values) {
+ super.implClasses(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public <T> CoreObjectBuilder implClass(Class<T> interfaceClass, Class<? extends T> implClass) {
+ super.implClass(interfaceClass, implClass);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlParserBuilder beanDictionary(Class<?>...values) {
+ super.beanDictionary(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlParserBuilder beanDictionary(Collection<Class<?>> values) {
+ super.beanDictionary(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlParserBuilder setBeanDictionary(Class<?>...values) {
+ super.setBeanDictionary(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlParserBuilder setBeanDictionary(Collection<Class<?>> values) {
+ super.setBeanDictionary(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlParserBuilder removeFromBeanDictionary(Class<?>...values) {
+ super.removeFromBeanDictionary(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlParserBuilder removeFromBeanDictionary(Collection<Class<?>> values) {
+ super.removeFromBeanDictionary(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlParserBuilder beanTypePropertyName(String value) {
+ super.beanTypePropertyName(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlParserBuilder defaultParser(Class<?> value) {
+ super.defaultParser(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlParserBuilder locale(Locale value) {
+ super.locale(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlParserBuilder timeZone(TimeZone value) {
+ super.timeZone(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlParserBuilder mediaType(MediaType value) {
+ super.mediaType(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlParserBuilder debug(boolean value) {
+ super.debug(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlParserBuilder property(String name, Object value) {
+ super.property(name, value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlParserBuilder properties(Map<String,Object> properties) {
+ super.properties(properties);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlParserBuilder addToProperty(String name, Object value) {
+ super.addToProperty(name, value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlParserBuilder putToProperty(String name, Object key, Object value) {
+ super.putToProperty(name, key, value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlParserBuilder putToProperty(String name, Object value) {
+ super.putToProperty(name, value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlParserBuilder removeFromProperty(String name, Object value) {
+ super.removeFromProperty(name, value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlParserBuilder classLoader(ClassLoader classLoader) {
+ super.classLoader(classLoader);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlParserBuilder 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/html/HtmlParserContext.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/html/HtmlParserContext.java b/juneau-core/src/main/java/org/apache/juneau/html/HtmlParserContext.java
index 8ea06a2..b71eae0 100644
--- a/juneau-core/src/main/java/org/apache/juneau/html/HtmlParserContext.java
+++ b/juneau-core/src/main/java/org/apache/juneau/html/HtmlParserContext.java
@@ -18,10 +18,10 @@ import org.apache.juneau.xml.*;
/**
* Configurable properties on the {@link HtmlParser} class.
* <p>
- * Context properties are set by calling {@link ContextFactory#setProperty(String, Object)} on the context factory
- * returned {@link CoreApi#getContextFactory()}.
+ * Context properties are set by calling {@link PropertyStore#setProperty(String, Object)} on the property store
+ * passed into the constructor.
* <p>
- * See {@link ContextFactory} for more information about context properties.
+ * See {@link PropertyStore} for more information about context properties.
*
* <h5 class='section'>Inherited configurable properties:</h5>
* <ul class='javahierarchy'>
@@ -36,12 +36,12 @@ public final class HtmlParserContext extends XmlParserContext {
/**
* Constructor.
* <p>
- * Typically only called from {@link ContextFactory#getContext(Class)}.
+ * Typically only called from {@link PropertyStore#getContext(Class)}.
*
- * @param cf The factory that created this context.
+ * @param ps The property store that created this context.
*/
- public HtmlParserContext(ContextFactory cf) {
- super(cf);
+ public HtmlParserContext(PropertyStore ps) {
+ super(ps);
}
@Override /* Context */
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core/src/main/java/org/apache/juneau/html/HtmlSchemaDocSerializer.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/html/HtmlSchemaDocSerializer.java b/juneau-core/src/main/java/org/apache/juneau/html/HtmlSchemaDocSerializer.java
index 0223623..582abcd 100644
--- a/juneau-core/src/main/java/org/apache/juneau/html/HtmlSchemaDocSerializer.java
+++ b/juneau-core/src/main/java/org/apache/juneau/html/HtmlSchemaDocSerializer.java
@@ -13,6 +13,7 @@
package org.apache.juneau.html;
import static org.apache.juneau.internal.ClassUtils.*;
+import static org.apache.juneau.serializer.SerializerContext.*;
import java.lang.reflect.*;
import java.util.*;
@@ -44,28 +45,36 @@ import org.apache.juneau.transform.*;
@Produces(value="text/html+schema", contentType="text/html")
public final class HtmlSchemaDocSerializer extends HtmlDocSerializer {
+ @SuppressWarnings("hiding")
+ final HtmlDocSerializerContext ctx;
+
/**
* Constructor.
+ * @param propertyStore The property store to use for creating the context for this serializer.
*/
- public HtmlSchemaDocSerializer() {
- setDetectRecursions(true);
- setIgnoreRecursions(true);
+ public HtmlSchemaDocSerializer(PropertyStore propertyStore) {
+ super(propertyStore);
+ this.ctx = createContext(HtmlDocSerializerContext.class);
}
/**
* Constructor.
- *
- * @param cf The context factory to use for creating the context for this serializer.
+ * @param propertyStore The property store to use for creating the context for this serializer.
+ * @param overrideProperties
*/
- public HtmlSchemaDocSerializer(ContextFactory cf) {
- getContextFactory().copyFrom(cf);
- setDetectRecursions(true);
- setIgnoreRecursions(true);
+ public HtmlSchemaDocSerializer(PropertyStore propertyStore, Map<String,Object> overrideProperties) {
+ super(propertyStore);
+ this.ctx = this.propertyStore.create(overrideProperties).getContext(HtmlDocSerializerContext.class);
+ }
+
+ @Override /* CoreObject */
+ protected ObjectMap getOverrideProperties() {
+ return super.getOverrideProperties().append(SERIALIZER_detectRecursions, true).append(SERIALIZER_ignoreRecursions, true);
}
@Override /* Serializer */
public HtmlDocSerializerSession createSession(Object output, ObjectMap op, Method javaMethod, Locale locale, TimeZone timeZone, MediaType mediaType) {
- return new HtmlDocSerializerSession(getContext(HtmlDocSerializerContext.class), op, output, javaMethod, locale, timeZone, mediaType);
+ return new HtmlDocSerializerSession(ctx, op, output, javaMethod, locale, timeZone, mediaType);
}
@Override /* ISchemaSerializer */
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core/src/main/java/org/apache/juneau/html/HtmlSerializer.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/html/HtmlSerializer.java b/juneau-core/src/main/java/org/apache/juneau/html/HtmlSerializer.java
index f66d57f..de4768e 100644
--- a/juneau-core/src/main/java/org/apache/juneau/html/HtmlSerializer.java
+++ b/juneau-core/src/main/java/org/apache/juneau/html/HtmlSerializer.java
@@ -13,7 +13,7 @@
package org.apache.juneau.html;
import static org.apache.juneau.html.HtmlSerializer.ContentResult.*;
-import static org.apache.juneau.html.HtmlSerializerContext.*;
+import static org.apache.juneau.serializer.SerializerContext.*;
import java.io.*;
import java.lang.reflect.*;
@@ -71,12 +71,10 @@ import org.apache.juneau.xml.annotation.*;
* String html = HtmlSerializer.<jsf>DEFAULT</jsf>.serialize(someObject);
*
* <jc>// Create a custom serializer that doesn't use whitespace and newlines</jc>
- * HtmlSerializer serializer = <jk>new</jk> HtmlSerializer()
- * .setUseIndentation(<jk>false</jk>);
+ * HtmlSerializer serializer = <jk>new</jk> HtmlSerializerBuider().ws().build();
*
* <jc>// Same as above, except uses cloning</jc>
- * HtmlSerializer serializer = HtmlSerializer.<jsf>DEFAULT</jsf>.clone()
- * .setUseIndentation(<jk>false</jk>);
+ * HtmlSerializer serializer = HtmlSerializer.<jsf>DEFAULT</jsf>.builder().ws().build();
*
* <jc>// Serialize POJOs to HTML</jc>
*
@@ -132,30 +130,68 @@ import org.apache.juneau.xml.annotation.*;
public class HtmlSerializer extends XmlSerializer {
/** Default serializer, all default settings. */
- public static final HtmlSerializer DEFAULT = new HtmlSerializer().lock();
+ public static final HtmlSerializer DEFAULT = new HtmlSerializer(PropertyStore.create());
/** Default serializer, single quotes. */
- public static final HtmlSerializer DEFAULT_SQ = new HtmlSerializer.Sq().lock();
+ public static final HtmlSerializer DEFAULT_SQ = new HtmlSerializer.Sq(PropertyStore.create());
/** Default serializer, single quotes, whitespace added. */
- public static final HtmlSerializer DEFAULT_SQ_READABLE = new HtmlSerializer.SqReadable().lock();
+ public static final HtmlSerializer DEFAULT_SQ_READABLE = new HtmlSerializer.SqReadable(PropertyStore.create());
+
/** Default serializer, single quotes. */
public static class Sq extends HtmlSerializer {
- /** Constructor */
- public Sq() {
- setQuoteChar('\'');
+
+ /**
+ * Constructor.
+ * @param propertyStore The property store containing all the settings for this object.
+ */
+ public Sq(PropertyStore propertyStore) {
+ super(propertyStore);
+ }
+
+
+ @Override /* CoreObject */
+ protected ObjectMap getOverrideProperties() {
+ return super.getOverrideProperties().append(SERIALIZER_quoteChar, '\'');
}
}
/** Default serializer, single quotes, whitespace added. */
- public static class SqReadable extends Sq {
- /** Constructor */
- public SqReadable() {
- setUseWhitespace(true);
+ public static class SqReadable extends HtmlSerializer {
+
+ /**
+ * Constructor.
+ * @param propertyStore The property store containing all the settings for this object.
+ */
+ public SqReadable(PropertyStore propertyStore) {
+ super(propertyStore);
+ }
+
+ @Override /* CoreObject */
+ protected ObjectMap getOverrideProperties() {
+ return super.getOverrideProperties().append(SERIALIZER_quoteChar, '\'').append(SERIALIZER_useWhitespace, true);
}
}
+
+ final HtmlSerializerContext ctx;
+ private volatile HtmlSchemaDocSerializer schemaSerializer;
+
+ /**
+ * Constructor.
+ * @param propertyStore The property store containing all the settings for this object.
+ */
+ public HtmlSerializer(PropertyStore propertyStore) {
+ super(propertyStore);
+ this.ctx = createContext(HtmlSerializerContext.class);
+ }
+
+ @Override /* CoreObject */
+ public HtmlSerializerBuilder builder() {
+ return new HtmlSerializerBuilder(propertyStore);
+ }
+
/**
* Main serialization routine.
* @param session The serialization context object.
@@ -633,12 +669,9 @@ public class HtmlSerializer extends XmlSerializer {
*/
@Override /* XmlSerializer */
public HtmlSerializer getSchemaSerializer() {
- try {
- return new HtmlSchemaDocSerializer(getContextFactory().clone());
- } catch (CloneNotSupportedException e) {
- // Should never happen.
- throw new RuntimeException(e);
- }
+ if (schemaSerializer == null)
+ schemaSerializer = new HtmlSchemaDocSerializer(propertyStore, getOverrideProperties());
+ return schemaSerializer;
}
@@ -648,7 +681,7 @@ public class HtmlSerializer extends XmlSerializer {
@Override /* Serializer */
public HtmlSerializerSession createSession(Object output, ObjectMap op, Method javaMethod, Locale locale, TimeZone timeZone, MediaType mediaType) {
- return new HtmlSerializerSession(getContext(HtmlSerializerContext.class), op, output, javaMethod, locale, timeZone, mediaType);
+ return new HtmlSerializerSession(ctx, op, output, javaMethod, locale, timeZone, mediaType);
}
@Override /* Serializer */
@@ -656,632 +689,4 @@ public class HtmlSerializer extends XmlSerializer {
HtmlSerializerSession s = (HtmlSerializerSession)session;
doSerialize(s, o, s.getWriter());
}
-
-
- //--------------------------------------------------------------------------------
- // Properties
- //--------------------------------------------------------------------------------
-
- /**
- * <b>Configuration property:</b> Anchor text source.
- * <p>
- * <ul>
- * <li><b>Name:</b> <js>"HtmlSerializer.uriAnchorText"</js>
- * <li><b>Data type:</b> <code>String</code>
- * <li><b>Default:</b> <js>"toString"</js>
- * <li><b>Session-overridable:</b> <jk>true</jk>
- * </ul>
- * <p>
- * When creating anchor tags (e.g. <code><xt><a</xt> <xa>href</xa>=<xs>'...'</xs><xt>></xt>text<xt></a></xt></code>)
- * in HTML, this setting defines what to set the inner text to.
- * <p>
- * Possible values:
- * <ul class='spaced-list'>
- * <li>{@link HtmlSerializerContext#TO_STRING} / <js>"toString"</js> - Set to whatever is returned by {@link #toString()} on the object.
- * <li>{@link HtmlSerializerContext#URI} / <js>"uri"</js> - Set to the URI value.
- * <li>{@link HtmlSerializerContext#LAST_TOKEN} / <js>"lastToken"</js> - Set to the last token of the URI value.
- * <li>{@link HtmlSerializerContext#PROPERTY_NAME} / <js>"propertyName"</js> - Set to the bean property name.
- * <li>{@link HtmlSerializerContext#URI_ANCHOR} / <js>"uriAnchor"</js> - Set to the anchor of the URL. (e.g. <js>"http://localhost:9080/foobar#anchorTextHere"</js>)
- * </ul>
- * <p>
- * <h5 class='section'>Notes:</h5>
- * <ul>
- * <li>This is equivalent to calling <code>setProperty(<jsf>HTML_uriAnchorText</jsf>, value)</code>.
- * <li>This introduces a slight performance penalty.
- * </ul>
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- * @throws LockedException If {@link #lock()} was called on this class.
- * @see HtmlSerializerContext#HTML_uriAnchorText
- */
- public HtmlSerializer setUriAnchorText(String value) throws LockedException {
- return setProperty(HTML_uriAnchorText, value);
- }
-
- /**
- * <b>Configuration property:</b> Look for URLs in {@link String Strings}.
- * <p>
- * <ul>
- * <li><b>Name:</b> <js>"HtmlSerializer.detectLinksInStrings"</js>
- * <li><b>Data type:</b> <code>Boolean</code>
- * <li><b>Default:</b> <jk>true</jk>
- * <li><b>Session-overridable:</b> <jk>true</jk>
- * </ul>
- * <p>
- * If a string looks like a URL (e.g. starts with <js>"http://"</js> or <js>"https://"</js>, then treat it like a URL
- * and make it into a hyperlink based on the rules specified by {@link HtmlSerializerContext#HTML_uriAnchorText}.
- * <p>
- * <h5 class='section'>Notes:</h5>
- * <ul>
- * <li>This is equivalent to calling <code>setProperty(<jsf>HTML_detectLinksInStrings</jsf>, value)</code>.
- * <li>This introduces a slight performance penalty.
- * </ul>
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- * @throws LockedException If {@link #lock()} was called on this class.
- * @see HtmlSerializerContext#HTML_detectLinksInStrings
- */
- public HtmlSerializer setDetectLinksInStrings(boolean value) throws LockedException {
- return setProperty(HTML_detectLinksInStrings, value);
- }
-
- /**
- * <b>Configuration property:</b> Look for link labels in the <js>"label"</js> parameter of the URL.
- * <p>
- * <ul>
- * <li><b>Name:</b> <js>"HtmlSerializer.lookForLabelParameters"</js>
- * <li><b>Data type:</b> <code>Boolean</code>
- * <li><b>Default:</b> <jk>true</jk>
- * <li><b>Session-overridable:</b> <jk>true</jk>
- * </ul>
- * <p>
- * If the URL has a label parameter (e.g. <js>"?label=foobar"</js>), then use that as the anchor text of the link.
- * <p>
- * The parameter name can be changed via the {@link HtmlSerializerContext#HTML_labelParameter} property.
- * <p>
- * <h5 class='section'>Notes:</h5>
- * <ul>
- * <li>This is equivalent to calling <code>setProperty(<jsf>HTML_lookForLabelParameters</jsf>, value)</code>.
- * <li>This introduces a slight performance penalty.
- * </ul>
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- * @throws LockedException If {@link #lock()} was called on this class.
- * @see HtmlSerializerContext#HTML_lookForLabelParameters
- */
- public HtmlSerializer setLookForLabelParameters(boolean value) throws LockedException {
- return setProperty(HTML_lookForLabelParameters, value);
- }
-
- /**
- * <b>Configuration property:</b> The parameter name to use when using {@link HtmlSerializerContext#HTML_lookForLabelParameters}.
- * <p>
- * <ul>
- * <li><b>Name:</b> <js>"HtmlSerializer.labelParameter"</js>
- * <li><b>Data type:</b> <code>String</code>
- * <li><b>Default:</b> <js>"label"</js>
- * <li><b>Session-overridable:</b> <jk>true</jk>
- * </ul>
- * <p>
- * <h5 class='section'>Notes:</h5>
- * <ul>
- * <li>This is equivalent to calling <code>setProperty(<jsf>HTML_labelParameter</jsf>, value)</code>.
- * <li>This introduces a slight performance penalty.
- * </ul>
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- * @throws LockedException If {@link #lock()} was called on this class.
- * @see HtmlSerializerContext#HTML_labelParameter
- */
- public HtmlSerializer setLabelParameter(String value) throws LockedException {
- return setProperty(HTML_labelParameter, value);
- }
-
- /**
- * <b>Configuration property:</b> Add key/value headers on bean/map tables.
- * <p>
- * <ul>
- * <li><b>Name:</b> <js>"HtmlSerializer.addKeyValueTableHeaders"</js>
- * <li><b>Data type:</b> <code>Boolean</code>
- * <li><b>Default:</b> <jk>false</jk>
- * <li><b>Session-overridable:</b> <jk>true</jk>
- * </ul>
- * <p>
- * <h5 class='section'>Notes:</h5>
- * <ul>
- * <li>This is equivalent to calling <code>setProperty(<jsf>HTML_addKeyValueTableHeaders</jsf>, value)</code>.
- * <li>This introduces a slight performance penalty.
- * </ul>
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- * @throws LockedException If {@link #lock()} was called on this class.
- * @see HtmlSerializerContext#HTML_addKeyValueTableHeaders
- */
- public HtmlSerializer setAddKeyValueTableHeaders(boolean value) throws LockedException {
- return setProperty(HTML_addKeyValueTableHeaders, value);
- }
-
- @Override /* Serializer */
- public HtmlSerializer setMaxDepth(int value) throws LockedException {
- super.setMaxDepth(value);
- return this;
- }
-
- @Override /* Serializer */
- public HtmlSerializer setInitialDepth(int value) throws LockedException {
- super.setInitialDepth(value);
- return this;
- }
-
- @Override /* Serializer */
- public HtmlSerializer setDetectRecursions(boolean value) throws LockedException {
- super.setDetectRecursions(value);
- return this;
- }
-
- @Override /* Serializer */
- public HtmlSerializer setIgnoreRecursions(boolean value) throws LockedException {
- super.setIgnoreRecursions(value);
- return this;
- }
-
- @Override /* Serializer */
- public HtmlSerializer setUseWhitespace(boolean value) throws LockedException {
- super.setUseWhitespace(value);
- return this;
- }
-
- @Override /* Serializer */
- public HtmlSerializer setAddBeanTypeProperties(boolean value) throws LockedException {
- super.setAddBeanTypeProperties(value);
- return this;
- }
-
- @Override /* Serializer */
- public HtmlSerializer setQuoteChar(char value) throws LockedException {
- super.setQuoteChar(value);
- return this;
- }
-
- @Override /* Serializer */
- public HtmlSerializer setTrimNullProperties(boolean value) throws LockedException {
- super.setTrimNullProperties(value);
- return this;
- }
-
- @Override /* Serializer */
- public HtmlSerializer setTrimEmptyCollections(boolean value) throws LockedException {
- super.setTrimEmptyCollections(value);
- return this;
- }
-
- @Override /* Serializer */
- public HtmlSerializer setTrimEmptyMaps(boolean value) throws LockedException {
- super.setTrimEmptyMaps(value);
- return this;
- }
-
- @Override /* Serializer */
- public HtmlSerializer setTrimStrings(boolean value) throws LockedException {
- super.setTrimStrings(value);
- return this;
- }
-
- @Override /* Serializer */
- public HtmlSerializer setRelativeUriBase(String value) throws LockedException {
- super.setRelativeUriBase(value);
- return this;
- }
-
- @Override /* Serializer */
- public HtmlSerializer setAbsolutePathUriBase(String value) throws LockedException {
- super.setAbsolutePathUriBase(value);
- return this;
- }
-
- @Override /* Serializer */
- public HtmlSerializer setSortCollections(boolean value) throws LockedException {
- super.setSortCollections(value);
- return this;
- }
-
- @Override /* Serializer */
- public HtmlSerializer setSortMaps(boolean value) throws LockedException {
- super.setSortMaps(value);
- return this;
- }
-
- @Override /* CoreApi */
- public HtmlSerializer setBeansRequireDefaultConstructor(boolean value) throws LockedException {
- super.setBeansRequireDefaultConstructor(value);
- return this;
- }
-
- @Override /* CoreApi */
- public HtmlSerializer setBeansRequireSerializable(boolean value) throws LockedException {
- super.setBeansRequireSerializable(value);
- return this;
- }
-
- @Override /* CoreApi */
- public HtmlSerializer setBeansRequireSettersForGetters(boolean value) throws LockedException {
- super.setBeansRequireSettersForGetters(value);
- return this;
- }
-
- @Override /* CoreApi */
- public HtmlSerializer setBeansRequireSomeProperties(boolean value) throws LockedException {
- super.setBeansRequireSomeProperties(value);
- return this;
- }
-
- @Override /* CoreApi */
- public HtmlSerializer setBeanMapPutReturnsOldValue(boolean value) throws LockedException {
- super.setBeanMapPutReturnsOldValue(value);
- return this;
- }
-
- @Override /* CoreApi */
- public HtmlSerializer setBeanConstructorVisibility(Visibility value) throws LockedException {
- super.setBeanConstructorVisibility(value);
- return this;
- }
-
- @Override /* CoreApi */
- public HtmlSerializer setBeanClassVisibility(Visibility value) throws LockedException {
- super.setBeanClassVisibility(value);
- return this;
- }
-
- @Override /* CoreApi */
- public HtmlSerializer setBeanFieldVisibility(Visibility value) throws LockedException {
- super.setBeanFieldVisibility(value);
- return this;
- }
-
- @Override /* CoreApi */
- public HtmlSerializer setMethodVisibility(Visibility value) throws LockedException {
- super.setMethodVisibility(value);
- return this;
- }
-
- @Override /* CoreApi */
- public HtmlSerializer setUseJavaBeanIntrospector(boolean value) throws LockedException {
- super.setUseJavaBeanIntrospector(value);
- return this;
- }
-
- @Override /* CoreApi */
- public HtmlSerializer setUseInterfaceProxies(boolean value) throws LockedException {
- super.setUseInterfaceProxies(value);
- return this;
- }
-
- @Override /* CoreApi */
- public HtmlSerializer setIgnoreUnknownBeanProperties(boolean value) throws LockedException {
- super.setIgnoreUnknownBeanProperties(value);
- return this;
- }
-
- @Override /* CoreApi */
- public HtmlSerializer setIgnoreUnknownNullBeanProperties(boolean value) throws LockedException {
- super.setIgnoreUnknownNullBeanProperties(value);
- return this;
- }
-
- @Override /* CoreApi */
- public HtmlSerializer setIgnorePropertiesWithoutSetters(boolean value) throws LockedException {
- super.setIgnorePropertiesWithoutSetters(value);
- return this;
- }
-
- @Override /* CoreApi */
- public HtmlSerializer setIgnoreInvocationExceptionsOnGetters(boolean value) throws LockedException {
- super.setIgnoreInvocationExceptionsOnGetters(value);
- return this;
- }
-
- @Override /* CoreApi */
- public HtmlSerializer setIgnoreInvocationExceptionsOnSetters(boolean value) throws LockedException {
- super.setIgnoreInvocationExceptionsOnSetters(value);
- return this;
- }
-
- @Override /* CoreApi */
- public HtmlSerializer setSortProperties(boolean value) throws LockedException {
- super.setSortProperties(value);
- return this;
- }
-
- @Override /* CoreApi */
- public HtmlSerializer setNotBeanPackages(String...values) throws LockedException {
- super.setNotBeanPackages(values);
- return this;
- }
-
- @Override /* CoreApi */
- public HtmlSerializer setNotBeanPackages(Collection<String> values) throws LockedException {
- super.setNotBeanPackages(values);
- return this;
- }
-
- @Override /* CoreApi */
- public HtmlSerializer addNotBeanPackages(String...values) throws LockedException {
- super.addNotBeanPackages(values);
- return this;
- }
-
- @Override /* CoreApi */
- public HtmlSerializer addNotBeanPackages(Collection<String> values) throws LockedException {
- super.addNotBeanPackages(values);
- return this;
- }
-
- @Override /* CoreApi */
- public HtmlSerializer removeNotBeanPackages(String...values) throws LockedException {
- super.removeNotBeanPackages(values);
- return this;
- }
-
- @Override /* CoreApi */
- public HtmlSerializer removeNotBeanPackages(Collection<String> values) throws LockedException {
- super.removeNotBeanPackages(values);
- return this;
- }
-
- @Override /* CoreApi */
- public HtmlSerializer setNotBeanClasses(Class<?>...values) throws LockedException {
- super.setNotBeanClasses(values);
- return this;
- }
-
- @Override /* CoreApi */
- public HtmlSerializer setNotBeanClasses(Collection<Class<?>> values) throws LockedException {
- super.setNotBeanClasses(values);
- return this;
- }
-
- @Override /* CoreApi */
- public HtmlSerializer addNotBeanClasses(Class<?>...values) throws LockedException {
- super.addNotBeanClasses(values);
- return this;
- }
-
- @Override /* CoreApi */
- public HtmlSerializer addNotBeanClasses(Collection<Class<?>> values) throws LockedException {
- super.addNotBeanClasses(values);
- return this;
- }
-
- @Override /* CoreApi */
- public HtmlSerializer removeNotBeanClasses(Class<?>...values) throws LockedException {
- super.removeNotBeanClasses(values);
- return this;
- }
-
- @Override /* CoreApi */
- public HtmlSerializer removeNotBeanClasses(Collection<Class<?>> values) throws LockedException {
- super.removeNotBeanClasses(values);
- return this;
- }
-
- @Override /* CoreApi */
- public HtmlSerializer setBeanFilters(Class<?>...values) throws LockedException {
- super.setBeanFilters(values);
- return this;
- }
-
- @Override /* CoreApi */
- public HtmlSerializer setBeanFilters(Collection<Class<?>> values) throws LockedException {
- super.setBeanFilters(values);
- return this;
- }
-
- @Override /* CoreApi */
- public HtmlSerializer addBeanFilters(Class<?>...values) throws LockedException {
- super.addBeanFilters(values);
- return this;
- }
-
- @Override /* CoreApi */
- public HtmlSerializer addBeanFilters(Collection<Class<?>> values) throws LockedException {
- super.addBeanFilters(values);
- return this;
- }
-
- @Override /* CoreApi */
- public HtmlSerializer removeBeanFilters(Class<?>...values) throws LockedException {
- super.removeBeanFilters(values);
- return this;
- }
-
- @Override /* CoreApi */
- public HtmlSerializer removeBeanFilters(Collection<Class<?>> values) throws LockedException {
- super.removeBeanFilters(values);
- return this;
- }
-
- @Override /* CoreApi */
- public HtmlSerializer setPojoSwaps(Class<?>...values) throws LockedException {
- super.setPojoSwaps(values);
- return this;
- }
-
- @Override /* CoreApi */
- public HtmlSerializer setPojoSwaps(Collection<Class<?>> values) throws LockedException {
- super.setPojoSwaps(values);
- return this;
- }
-
- @Override /* CoreApi */
- public HtmlSerializer addPojoSwaps(Class<?>...values) throws LockedException {
- super.addPojoSwaps(values);
- return this;
- }
-
- @Override /* CoreApi */
- public HtmlSerializer addPojoSwaps(Collection<Class<?>> values) throws LockedException {
- super.addPojoSwaps(values);
- return this;
- }
-
- @Override /* CoreApi */
- public HtmlSerializer removePojoSwaps(Class<?>...values) throws LockedException {
- super.removePojoSwaps(values);
- return this;
- }
-
- @Override /* CoreApi */
- public HtmlSerializer removePojoSwaps(Collection<Class<?>> values) throws LockedException {
- super.removePojoSwaps(values);
- return this;
- }
-
- @Override /* CoreApi */
- public HtmlSerializer setImplClasses(Map<Class<?>,Class<?>> values) throws LockedException {
- super.setImplClasses(values);
- return this;
- }
-
- @Override /* CoreApi */
- public <T> CoreApi addImplClass(Class<T> interfaceClass, Class<? extends T> implClass) throws LockedException {
- super.addImplClass(interfaceClass, implClass);
- return this;
- }
-
- @Override /* CoreApi */
- public HtmlSerializer setBeanDictionary(Class<?>...values) throws LockedException {
- super.setBeanDictionary(values);
- return this;
- }
-
- @Override /* CoreApi */
- public HtmlSerializer setBeanDictionary(Collection<Class<?>> values) throws LockedException {
- super.setBeanDictionary(values);
- return this;
- }
-
- @Override /* CoreApi */
- public HtmlSerializer addToBeanDictionary(Class<?>...values) throws LockedException {
- super.addToBeanDictionary(values);
- return this;
- }
-
- @Override /* CoreApi */
- public HtmlSerializer addToBeanDictionary(Collection<Class<?>> values) throws LockedException {
- super.addToBeanDictionary(values);
- return this;
- }
-
- @Override /* CoreApi */
- public HtmlSerializer removeFromBeanDictionary(Class<?>...values) throws LockedException {
- super.removeFromBeanDictionary(values);
- return this;
- }
-
- @Override /* CoreApi */
- public HtmlSerializer removeFromBeanDictionary(Collection<Class<?>> values) throws LockedException {
- super.removeFromBeanDictionary(values);
- return this;
- }
-
- @Override /* CoreApi */
- public HtmlSerializer setBeanTypePropertyName(String value) throws LockedException {
- super.setBeanTypePropertyName(value);
- return this;
- }
-
- @Override /* CoreApi */
- public HtmlSerializer setDefaultParser(Class<?> value) throws LockedException {
- super.setDefaultParser(value);
- return this;
- }
-
- @Override /* CoreApi */
- public HtmlSerializer setLocale(Locale value) throws LockedException {
- super.setLocale(value);
- return this;
- }
-
- @Override /* CoreApi */
- public HtmlSerializer setTimeZone(TimeZone value) throws LockedException {
- super.setTimeZone(value);
- return this;
- }
-
- @Override /* CoreApi */
- public HtmlSerializer setMediaType(MediaType value) throws LockedException {
- super.setMediaType(value);
- return this;
- }
-
- @Override /* CoreApi */
- public HtmlSerializer setDebug(boolean value) throws LockedException {
- super.setDebug(value);
- return this;
- }
-
- @Override /* CoreApi */
- public HtmlSerializer setProperty(String name, Object value) throws LockedException {
- super.setProperty(name, value);
- return this;
- }
-
- @Override /* CoreApi */
- public HtmlSerializer setProperties(ObjectMap properties) throws LockedException {
- super.setProperties(properties);
- return this;
- }
-
- @Override /* CoreApi */
- public HtmlSerializer addToProperty(String name, Object value) throws LockedException {
- super.addToProperty(name, value);
- return this;
- }
-
- @Override /* CoreApi */
- public HtmlSerializer putToProperty(String name, Object key, Object value) throws LockedException {
- super.putToProperty(name, key, value);
- return this;
- }
-
- @Override /* CoreApi */
- public HtmlSerializer putToProperty(String name, Object value) throws LockedException {
- super.putToProperty(name, value);
- return this;
- }
-
- @Override /* CoreApi */
- public HtmlSerializer removeFromProperty(String name, Object value) throws LockedException {
- super.removeFromProperty(name, value);
- return this;
- }
-
-
- //--------------------------------------------------------------------------------
- // Overridden methods
- //--------------------------------------------------------------------------------
-
- @Override /* CoreApi */
- public HtmlSerializer setClassLoader(ClassLoader classLoader) throws LockedException {
- super.setClassLoader(classLoader);
- return this;
- }
-
- @Override /* Lockable */
- public HtmlSerializer lock() {
- super.lock();
- return this;
- }
-
- @Override /* Lockable */
- public HtmlSerializer clone() {
- HtmlSerializer c = (HtmlSerializer)super.clone();
- return c;
- }
}
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core/src/main/java/org/apache/juneau/html/HtmlSerializerBuilder.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/html/HtmlSerializerBuilder.java b/juneau-core/src/main/java/org/apache/juneau/html/HtmlSerializerBuilder.java
new file mode 100644
index 0000000..7c9a923
--- /dev/null
+++ b/juneau-core/src/main/java/org/apache/juneau/html/HtmlSerializerBuilder.java
@@ -0,0 +1,706 @@
+// ***************************************************************************************************************************
+// * 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.html;
+
+import static org.apache.juneau.html.HtmlSerializerContext.*;
+
+import java.util.*;
+
+import org.apache.juneau.*;
+import org.apache.juneau.xml.*;
+
+/**
+ * Builder class for building instances of HTML serializers.
+ */
+public class HtmlSerializerBuilder extends XmlSerializerBuilder {
+
+ /**
+ * Constructor, default settings.
+ */
+ public HtmlSerializerBuilder() {
+ super();
+ }
+
+ /**
+ * Constructor.
+ * @param propertyStore The initial configuration settings for this builder.
+ */
+ public HtmlSerializerBuilder(PropertyStore propertyStore) {
+ super(propertyStore);
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlSerializer build() {
+ return new HtmlSerializer(propertyStore);
+ }
+
+
+ //--------------------------------------------------------------------------------
+ // Properties
+ //--------------------------------------------------------------------------------
+
+ /**
+ * <b>Configuration property:</b> Anchor text source.
+ * <p>
+ * <ul>
+ * <li><b>Name:</b> <js>"HtmlSerializer.uriAnchorText"</js>
+ * <li><b>Data type:</b> <code>String</code>
+ * <li><b>Default:</b> <js>"toString"</js>
+ * <li><b>Session-overridable:</b> <jk>true</jk>
+ * </ul>
+ * <p>
+ * When creating anchor tags (e.g. <code><xt><a</xt> <xa>href</xa>=<xs>'...'</xs><xt>></xt>text<xt></a></xt></code>)
+ * in HTML, this setting defines what to set the inner text to.
+ * <p>
+ * Possible values:
+ * <ul class='spaced-list'>
+ * <li>{@link HtmlSerializerContext#TO_STRING} / <js>"toString"</js> - Set to whatever is returned by {@link #toString()} on the object.
+ * <li>{@link HtmlSerializerContext#URI} / <js>"uri"</js> - Set to the URI value.
+ * <li>{@link HtmlSerializerContext#LAST_TOKEN} / <js>"lastToken"</js> - Set to the last token of the URI value.
+ * <li>{@link HtmlSerializerContext#PROPERTY_NAME} / <js>"propertyName"</js> - Set to the bean property name.
+ * <li>{@link HtmlSerializerContext#URI_ANCHOR} / <js>"uriAnchor"</js> - Set to the anchor of the URL. (e.g. <js>"http://localhost:9080/foobar#anchorTextHere"</js>)
+ * </ul>
+ * <p>
+ * <h5 class='section'>Notes:</h5>
+ * <ul>
+ * <li>This is equivalent to calling <code>property(<jsf>HTML_uriAnchorText</jsf>, value)</code>.
+ * <li>This introduces a slight performance penalty.
+ * </ul>
+ *
+ * @param value The new value for this property.
+ * @return This object (for method chaining).
+ * @see HtmlSerializerContext#HTML_uriAnchorText
+ */
+ public HtmlSerializerBuilder uriAnchorText(String value) {
+ return property(HTML_uriAnchorText, value);
+ }
+
+ /**
+ * <b>Configuration property:</b> Look for URLs in {@link String Strings}.
+ * <p>
+ * <ul>
+ * <li><b>Name:</b> <js>"HtmlSerializer.detectLinksInStrings"</js>
+ * <li><b>Data type:</b> <code>Boolean</code>
+ * <li><b>Default:</b> <jk>true</jk>
+ * <li><b>Session-overridable:</b> <jk>true</jk>
+ * </ul>
+ * <p>
+ * If a string looks like a URL (e.g. starts with <js>"http://"</js> or <js>"https://"</js>, then treat it like a URL
+ * and make it into a hyperlink based on the rules specified by {@link HtmlSerializerContext#HTML_uriAnchorText}.
+ * <p>
+ * <h5 class='section'>Notes:</h5>
+ * <ul>
+ * <li>This is equivalent to calling <code>property(<jsf>HTML_detectLinksInStrings</jsf>, value)</code>.
+ * <li>This introduces a slight performance penalty.
+ * </ul>
+ *
+ * @param value The new value for this property.
+ * @return This object (for method chaining).
+ * @see HtmlSerializerContext#HTML_detectLinksInStrings
+ */
+ public HtmlSerializerBuilder detectLinksInStrings(boolean value) {
+ return property(HTML_detectLinksInStrings, value);
+ }
+
+ /**
+ * <b>Configuration property:</b> Look for link labels in the <js>"label"</js> parameter of the URL.
+ * <p>
+ * <ul>
+ * <li><b>Name:</b> <js>"HtmlSerializer.lookForLabelParameters"</js>
+ * <li><b>Data type:</b> <code>Boolean</code>
+ * <li><b>Default:</b> <jk>true</jk>
+ * <li><b>Session-overridable:</b> <jk>true</jk>
+ * </ul>
+ * <p>
+ * If the URL has a label parameter (e.g. <js>"?label=foobar"</js>), then use that as the anchor text of the link.
+ * <p>
+ * The parameter name can be changed via the {@link HtmlSerializerContext#HTML_labelParameter} property.
+ * <p>
+ * <h5 class='section'>Notes:</h5>
+ * <ul>
+ * <li>This is equivalent to calling <code>property(<jsf>HTML_lookForLabelParameters</jsf>, value)</code>.
+ * <li>This introduces a slight performance penalty.
+ * </ul>
+ *
+ * @param value The new value for this property.
+ * @return This object (for method chaining).
+ * @see HtmlSerializerContext#HTML_lookForLabelParameters
+ */
+ public HtmlSerializerBuilder lookForLabelParameters(boolean value) {
+ return property(HTML_lookForLabelParameters, value);
+ }
+
+ /**
+ * <b>Configuration property:</b> The parameter name to use when using {@link HtmlSerializerContext#HTML_lookForLabelParameters}.
+ * <p>
+ * <ul>
+ * <li><b>Name:</b> <js>"HtmlSerializer.labelParameter"</js>
+ * <li><b>Data type:</b> <code>String</code>
+ * <li><b>Default:</b> <js>"label"</js>
+ * <li><b>Session-overridable:</b> <jk>true</jk>
+ * </ul>
+ * <p>
+ * <h5 class='section'>Notes:</h5>
+ * <ul>
+ * <li>This is equivalent to calling <code>property(<jsf>HTML_labelParameter</jsf>, value)</code>.
+ * <li>This introduces a slight performance penalty.
+ * </ul>
+ *
+ * @param value The new value for this property.
+ * @return This object (for method chaining).
+ * @see HtmlSerializerContext#HTML_labelParameter
+ */
+ public HtmlSerializerBuilder labelParameter(String value) {
+ return property(HTML_labelParameter, value);
+ }
+
+ /**
+ * <b>Configuration property:</b> Add key/value headers on bean/map tables.
+ * <p>
+ * <ul>
+ * <li><b>Name:</b> <js>"HtmlSerializer.addKeyValueTableHeaders"</js>
+ * <li><b>Data type:</b> <code>Boolean</code>
+ * <li><b>Default:</b> <jk>false</jk>
+ * <li><b>Session-overridable:</b> <jk>true</jk>
+ * </ul>
+ * <p>
+ * <h5 class='section'>Notes:</h5>
+ * <ul>
+ * <li>This is equivalent to calling <code>property(<jsf>HTML_addKeyValueTableHeaders</jsf>, value)</code>.
+ * <li>This introduces a slight performance penalty.
+ * </ul>
+ *
+ * @param value The new value for this property.
+ * @return This object (for method chaining).
+ * @see HtmlSerializerContext#HTML_addKeyValueTableHeaders
+ */
+ public HtmlSerializerBuilder addKeyValueTableHeaders(boolean value) {
+ return property(HTML_addKeyValueTableHeaders, value);
+ }
+
+ @Override /* XmlSerializerBuilder */
+ public HtmlSerializerBuilder enableNamespaces(boolean value) {
+ super.enableNamespaces(value);
+ return this;
+ }
+
+ @Override /* XmlSerializerBuilder */
+ public HtmlSerializerBuilder autoDetectNamespaces(boolean value) {
+ super.autoDetectNamespaces(value);
+ return this;
+ }
+
+ @Override /* XmlSerializerBuilder */
+ public HtmlSerializerBuilder addNamespaceUrisToRoot(boolean value) {
+ super.addNamespaceUrisToRoot(value);
+ return this;
+ }
+
+ @Override /* XmlSerializerBuilder */
+ public HtmlSerializerBuilder defaultNamespace(String value) {
+ super.defaultNamespace(value);
+ return this;
+ }
+
+ @Override /* XmlSerializerBuilder */
+ public HtmlSerializerBuilder xsNamespace(Namespace value) {
+ super.xsNamespace(value);
+ return this;
+ }
+
+ @Override /* XmlSerializerBuilder */
+ public HtmlSerializerBuilder namespaces(Namespace...values) {
+ super.namespaces(values);
+ return this;
+ }
+
+ @Override /* SerializerBuilder */
+ public HtmlSerializerBuilder maxDepth(int value) {
+ super.maxDepth(value);
+ return this;
+ }
+
+ @Override /* SerializerBuilder */
+ public HtmlSerializerBuilder initialDepth(int value) {
+ super.initialDepth(value);
+ return this;
+ }
+
+ @Override /* SerializerBuilder */
+ public HtmlSerializerBuilder detectRecursions(boolean value) {
+ super.detectRecursions(value);
+ return this;
+ }
+
+ @Override /* SerializerBuilder */
+ public HtmlSerializerBuilder ignoreRecursions(boolean value) {
+ super.ignoreRecursions(value);
+ return this;
+ }
+
+ @Override /* SerializerBuilder */
+ public HtmlSerializerBuilder useWhitespace(boolean value) {
+ super.useWhitespace(value);
+ return this;
+ }
+
+ @Override /* SerializerBuilder */
+ public HtmlSerializerBuilder ws() {
+ super.ws();
+ return this;
+ }
+
+ @Override /* SerializerBuilder */
+ public HtmlSerializerBuilder addBeanTypeProperties(boolean value) {
+ super.addBeanTypeProperties(value);
+ return this;
+ }
+
+ @Override /* SerializerBuilder */
+ public HtmlSerializerBuilder quoteChar(char value) {
+ super.quoteChar(value);
+ return this;
+ }
+
+ @Override /* SerializerBuilder */
+ public HtmlSerializerBuilder sq() {
+ super.sq();
+ return this;
+ }
+
+ @Override /* SerializerBuilder */
+ public HtmlSerializerBuilder trimNullProperties(boolean value) {
+ super.trimNullProperties(value);
+ return this;
+ }
+
+ @Override /* SerializerBuilder */
+ public HtmlSerializerBuilder trimEmptyCollections(boolean value) {
+ super.trimEmptyCollections(value);
+ return this;
+ }
+
+ @Override /* SerializerBuilder */
+ public HtmlSerializerBuilder trimEmptyMaps(boolean value) {
+ super.trimEmptyMaps(value);
+ return this;
+ }
+
+ @Override /* SerializerBuilder */
+ public HtmlSerializerBuilder trimStrings(boolean value) {
+ super.trimStrings(value);
+ return this;
+ }
+
+ @Override /* SerializerBuilder */
+ public HtmlSerializerBuilder relativeUriBase(String value) {
+ super.relativeUriBase(value);
+ return this;
+ }
+
+ @Override /* SerializerBuilder */
+ public HtmlSerializerBuilder absolutePathUriBase(String value) {
+ super.absolutePathUriBase(value);
+ return this;
+ }
+
+ @Override /* SerializerBuilder */
+ public HtmlSerializerBuilder sortCollections(boolean value) {
+ super.sortCollections(value);
+ return this;
+ }
+
+ @Override /* SerializerBuilder */
+ public HtmlSerializerBuilder sortMaps(boolean value) {
+ super.sortMaps(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlSerializerBuilder beansRequireDefaultConstructor(boolean value) {
+ super.beansRequireDefaultConstructor(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlSerializerBuilder beansRequireSerializable(boolean value) {
+ super.beansRequireSerializable(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlSerializerBuilder beansRequireSettersForGetters(boolean value) {
+ super.beansRequireSettersForGetters(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlSerializerBuilder beansRequireSomeProperties(boolean value) {
+ super.beansRequireSomeProperties(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlSerializerBuilder beanMapPutReturnsOldValue(boolean value) {
+ super.beanMapPutReturnsOldValue(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlSerializerBuilder beanConstructorVisibility(Visibility value) {
+ super.beanConstructorVisibility(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlSerializerBuilder beanClassVisibility(Visibility value) {
+ super.beanClassVisibility(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlSerializerBuilder beanFieldVisibility(Visibility value) {
+ super.beanFieldVisibility(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlSerializerBuilder methodVisibility(Visibility value) {
+ super.methodVisibility(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlSerializerBuilder useJavaBeanIntrospector(boolean value) {
+ super.useJavaBeanIntrospector(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlSerializerBuilder useInterfaceProxies(boolean value) {
+ super.useInterfaceProxies(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlSerializerBuilder ignoreUnknownBeanProperties(boolean value) {
+ super.ignoreUnknownBeanProperties(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlSerializerBuilder ignoreUnknownNullBeanProperties(boolean value) {
+ super.ignoreUnknownNullBeanProperties(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlSerializerBuilder ignorePropertiesWithoutSetters(boolean value) {
+ super.ignorePropertiesWithoutSetters(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlSerializerBuilder ignoreInvocationExceptionsOnGetters(boolean value) {
+ super.ignoreInvocationExceptionsOnGetters(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlSerializerBuilder ignoreInvocationExceptionsOnSetters(boolean value) {
+ super.ignoreInvocationExceptionsOnSetters(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlSerializerBuilder sortProperties(boolean value) {
+ super.sortProperties(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlSerializerBuilder notBeanPackages(String...values) {
+ super.notBeanPackages(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlSerializerBuilder notBeanPackages(Collection<String> values) {
+ super.notBeanPackages(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlSerializerBuilder setNotBeanPackages(String...values) {
+ super.setNotBeanPackages(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlSerializerBuilder setNotBeanPackages(Collection<String> values) {
+ super.setNotBeanPackages(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlSerializerBuilder removeNotBeanPackages(String...values) {
+ super.removeNotBeanPackages(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlSerializerBuilder removeNotBeanPackages(Collection<String> values) {
+ super.removeNotBeanPackages(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlSerializerBuilder notBeanClasses(Class<?>...values) {
+ super.notBeanClasses(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlSerializerBuilder notBeanClasses(Collection<Class<?>> values) {
+ super.notBeanClasses(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlSerializerBuilder setNotBeanClasses(Class<?>...values) {
+ super.setNotBeanClasses(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlSerializerBuilder setNotBeanClasses(Collection<Class<?>> values) {
+ super.setNotBeanClasses(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlSerializerBuilder removeNotBeanClasses(Class<?>...values) {
+ super.removeNotBeanClasses(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlSerializerBuilder removeNotBeanClasses(Collection<Class<?>> values) {
+ super.removeNotBeanClasses(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlSerializerBuilder beanFilters(Class<?>...values) {
+ super.beanFilters(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlSerializerBuilder beanFilters(Collection<Class<?>> values) {
+ super.beanFilters(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlSerializerBuilder setBeanFilters(Class<?>...values) {
+ super.setBeanFilters(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlSerializerBuilder setBeanFilters(Collection<Class<?>> values) {
+ super.setBeanFilters(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlSerializerBuilder removeBeanFilters(Class<?>...values) {
+ super.removeBeanFilters(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlSerializerBuilder removeBeanFilters(Collection<Class<?>> values) {
+ super.removeBeanFilters(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlSerializerBuilder pojoSwaps(Class<?>...values) {
+ super.pojoSwaps(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlSerializerBuilder pojoSwaps(Collection<Class<?>> values) {
+ super.pojoSwaps(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlSerializerBuilder setPojoSwaps(Class<?>...values) {
+ super.setPojoSwaps(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlSerializerBuilder setPojoSwaps(Collection<Class<?>> values) {
+ super.setPojoSwaps(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlSerializerBuilder removePojoSwaps(Class<?>...values) {
+ super.removePojoSwaps(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlSerializerBuilder removePojoSwaps(Collection<Class<?>> values) {
+ super.removePojoSwaps(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlSerializerBuilder implClasses(Map<Class<?>,Class<?>> values) {
+ super.implClasses(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public <T> HtmlSerializerBuilder implClass(Class<T> interfaceClass, Class<? extends T> implClass) {
+ super.implClass(interfaceClass, implClass);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlSerializerBuilder beanDictionary(Class<?>...values) {
+ super.beanDictionary(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlSerializerBuilder beanDictionary(Collection<Class<?>> values) {
+ super.beanDictionary(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlSerializerBuilder setBeanDictionary(Class<?>...values) {
+ super.setBeanDictionary(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlSerializerBuilder setBeanDictionary(Collection<Class<?>> values) {
+ super.setBeanDictionary(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlSerializerBuilder removeFromBeanDictionary(Class<?>...values) {
+ super.removeFromBeanDictionary(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlSerializerBuilder removeFromBeanDictionary(Collection<Class<?>> values) {
+ super.removeFromBeanDictionary(values);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlSerializerBuilder beanTypePropertyName(String value) {
+ super.beanTypePropertyName(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlSerializerBuilder defaultParser(Class<?> value) {
+ super.defaultParser(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlSerializerBuilder locale(Locale value) {
+ super.locale(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlSerializerBuilder timeZone(TimeZone value) {
+ super.timeZone(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlSerializerBuilder mediaType(MediaType value) {
+ super.mediaType(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlSerializerBuilder debug(boolean value) {
+ super.debug(value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlSerializerBuilder property(String name, Object value) {
+ super.property(name, value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlSerializerBuilder properties(Map<String,Object> properties) {
+ super.properties(properties);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlSerializerBuilder addToProperty(String name, Object value) {
+ super.addToProperty(name, value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlSerializerBuilder putToProperty(String name, Object key, Object value) {
+ super.putToProperty(name, key, value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlSerializerBuilder putToProperty(String name, Object value) {
+ super.putToProperty(name, value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlSerializerBuilder removeFromProperty(String name, Object value) {
+ super.removeFromProperty(name, value);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlSerializerBuilder classLoader(ClassLoader classLoader) {
+ super.classLoader(classLoader);
+ return this;
+ }
+
+ @Override /* CoreObjectBuilder */
+ public HtmlSerializerBuilder 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/html/HtmlSerializerContext.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/html/HtmlSerializerContext.java b/juneau-core/src/main/java/org/apache/juneau/html/HtmlSerializerContext.java
index b2096c1..948ee18 100644
--- a/juneau-core/src/main/java/org/apache/juneau/html/HtmlSerializerContext.java
+++ b/juneau-core/src/main/java/org/apache/juneau/html/HtmlSerializerContext.java
@@ -19,10 +19,10 @@ import org.apache.juneau.xml.*;
/**
* Configurable properties on the {@link HtmlSerializer} class.
* <p>
- * Context properties are set by calling {@link ContextFactory#setProperty(String, Object)} on the context factory
- * returned {@link CoreApi#getContextFactory()}.
+ * Context properties are set by calling {@link PropertyStore#setProperty(String, Object)} on the property store
+ * passed into the constructor.
* <p>
- * See {@link ContextFactory} for more information about context properties.
+ * See {@link PropertyStore} for more information about context properties.
*
* <h5 class='section'>Inherited configurable properties:</h5>
* <ul class='javahierarchy'>
@@ -158,18 +158,18 @@ public class HtmlSerializerContext extends XmlSerializerContext {
/**
* Constructor.
* <p>
- * Typically only called from {@link ContextFactory#getContext(Class)}.
+ * Typically only called from {@link PropertyStore#getContext(Class)}.
*
- * @param cf The factory that created this context.
+ * @param ps The property store that created this context.
*/
- public HtmlSerializerContext(ContextFactory cf) {
- super(cf);
- uriAnchorText = cf.getProperty(HTML_uriAnchorText, String.class, TO_STRING);
- lookForLabelParameters = cf.getProperty(HTML_lookForLabelParameters, Boolean.class, true);
- detectLinksInStrings = cf.getProperty(HTML_detectLinksInStrings, Boolean.class, true);
- labelParameter = cf.getProperty(HTML_labelParameter, String.class, "label");
- addKeyValueTableHeaders = cf.getProperty(HTML_addKeyValueTableHeaders, Boolean.class, false);
- addBeanTypeProperties = cf.getProperty(HTML_addBeanTypeProperties, boolean.class, cf.getProperty(SERIALIZER_addBeanTypeProperties, boolean.class, true));
+ public HtmlSerializerContext(PropertyStore ps) {
+ super(ps);
+ uriAnchorText = ps.getProperty(HTML_uriAnchorText, String.class, TO_STRING);
+ lookForLabelParameters = ps.getProperty(HTML_lookForLabelParameters, Boolean.class, true);
+ detectLinksInStrings = ps.getProperty(HTML_detectLinksInStrings, Boolean.class, true);
+ labelParameter = ps.getProperty(HTML_labelParameter, String.class, "label");
+ addKeyValueTableHeaders = ps.getProperty(HTML_addKeyValueTableHeaders, Boolean.class, false);
+ addBeanTypeProperties = ps.getProperty(HTML_addBeanTypeProperties, boolean.class, ps.getProperty(SERIALIZER_addBeanTypeProperties, boolean.class, true));
}
@Override /* Context */
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core/src/main/java/org/apache/juneau/html/HtmlSerializerSession.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/html/HtmlSerializerSession.java b/juneau-core/src/main/java/org/apache/juneau/html/HtmlSerializerSession.java
index 1ce2efc..4c1ee2f 100644
--- a/juneau-core/src/main/java/org/apache/juneau/html/HtmlSerializerSession.java
+++ b/juneau-core/src/main/java/org/apache/juneau/html/HtmlSerializerSession.java
@@ -55,7 +55,7 @@ public class HtmlSerializerSession extends XmlSerializerSession {
* @param output The output object. See {@link JsonSerializerSession#getWriter()} for valid class types.
* @param op The override properties.
* These override any context properties defined in the context.
- * @param javaMethod The java method that called this parser, usually the method in a REST servlet.
+ * @param javaMethod The java method that called this serializer, usually the method in a REST servlet.
* @param locale The session locale.
* If <jk>null</jk>, then the locale defined on the context is used.
* @param timeZone The session timezone.
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core/src/main/java/org/apache/juneau/html/HtmlStrippedDocSerializer.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/html/HtmlStrippedDocSerializer.java b/juneau-core/src/main/java/org/apache/juneau/html/HtmlStrippedDocSerializer.java
index 7efdfa0..29f4c78 100644
--- a/juneau-core/src/main/java/org/apache/juneau/html/HtmlStrippedDocSerializer.java
+++ b/juneau-core/src/main/java/org/apache/juneau/html/HtmlStrippedDocSerializer.java
@@ -15,6 +15,7 @@ package org.apache.juneau.html;
import java.lang.reflect.*;
import java.util.*;
+import org.apache.juneau.*;
import org.apache.juneau.annotation.*;
import org.apache.juneau.serializer.*;
@@ -35,6 +36,14 @@ import org.apache.juneau.serializer.*;
@Produces(value="text/html+stripped",contentType="text/html")
public class HtmlStrippedDocSerializer extends HtmlSerializer {
+ /**
+ * Constructor.
+ * @param propertyStore The property store containing all the settings for this object.
+ */
+ public HtmlStrippedDocSerializer(PropertyStore propertyStore) {
+ super(propertyStore);
+ }
+
//---------------------------------------------------------------------------
// Overridden methods
//---------------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core/src/main/java/org/apache/juneau/ini/ConfigFileImpl.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/ini/ConfigFileImpl.java b/juneau-core/src/main/java/org/apache/juneau/ini/ConfigFileImpl.java
index a4b2f89..e8da4c3 100644
--- a/juneau-core/src/main/java/org/apache/juneau/ini/ConfigFileImpl.java
+++ b/juneau-core/src/main/java/org/apache/juneau/ini/ConfigFileImpl.java
@@ -705,7 +705,12 @@ public final class ConfigFileImpl extends ConfigFile {
@Override /* ConfigFile */
public ConfigFile getResolving() {
- return getResolving(VarResolver.DEFAULT.clone().addVars(ConfigFileVar.class,IfVar.class,SwitchVar.class).setContextObject(ConfigFileVar.SESSION_config, this));
+ return getResolving(
+ new VarResolverBuilder()
+ .vars(SystemPropertiesVar.class, EnvVariablesVar.class, SwitchVar.class, IfVar.class, ConfigFileVar.class,IfVar.class,SwitchVar.class)
+ .contextObject(ConfigFileVar.SESSION_config, this)
+ .build()
+ );
}
/*
@@ -730,7 +735,7 @@ public final class ConfigFileImpl extends ConfigFile {
}
}
- private void addChange(Set<String> changes, String section, String key, String oldVal, String newVal) {
+ private static void addChange(Set<String> changes, String section, String key, String oldVal, String newVal) {
if (! StringUtils.isEquals(oldVal, newVal))
changes.add(getFullKey(section, key));
}
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core/src/main/java/org/apache/juneau/ini/ConfigFileWrapped.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/ini/ConfigFileWrapped.java b/juneau-core/src/main/java/org/apache/juneau/ini/ConfigFileWrapped.java
index 44fdd0d..62f3899 100644
--- a/juneau-core/src/main/java/org/apache/juneau/ini/ConfigFileWrapped.java
+++ b/juneau-core/src/main/java/org/apache/juneau/ini/ConfigFileWrapped.java
@@ -39,9 +39,10 @@ public final class ConfigFileWrapped extends ConfigFile {
ConfigFileWrapped(ConfigFileImpl cf, VarResolver vr) {
this.cf = cf;
- this.vs = vr.clone()
- .addVars(ConfigFileVar.class)
- .setContextObject(ConfigFileVar.SESSION_config, cf)
+ this.vs = vr.builder()
+ .vars(ConfigFileVar.class)
+ .contextObject(ConfigFileVar.SESSION_config, cf)
+ .build()
.createSession();
}
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core/src/main/java/org/apache/juneau/ini/package.html
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/ini/package.html b/juneau-core/src/main/java/org/apache/juneau/ini/package.html
index 4b0e158..a35c338 100644
--- a/juneau-core/src/main/java/org/apache/juneau/ini/package.html
+++ b/juneau-core/src/main/java/org/apache/juneau/ini/package.html
@@ -596,7 +596,7 @@
</p>
<p class='bcode'>
<jc>// Create a new REST client with JSON support</jc>
- RestClient c = <jk>new</jk> RestClient(JsonSerializer.<jk>class</jk>, JsonParser.<jk>class</jk>);
+ RestClient c = <jk>new</jk> RestClientBuilder().build();
<jc>// Retrieve config file through REST interface</jc>
ConfigFile cf = c.doGet(<js>"http://localhost:10000/sample/config"</js>).getResponse(ConfigFileImpl.<jk>class</jk>);
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core/src/main/java/org/apache/juneau/internal/JuneauLogger.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/internal/JuneauLogger.java b/juneau-core/src/main/java/org/apache/juneau/internal/JuneauLogger.java
index 021e4c3..b89e32c 100644
--- a/juneau-core/src/main/java/org/apache/juneau/internal/JuneauLogger.java
+++ b/juneau-core/src/main/java/org/apache/juneau/internal/JuneauLogger.java
@@ -28,13 +28,15 @@ import org.apache.juneau.transforms.*;
*/
public class JuneauLogger extends java.util.logging.Logger {
- private static final WriterSerializer serializer = JsonSerializer.DEFAULT_LAX.clone()
- .addPojoSwaps(
+ private static final WriterSerializer serializer = new JsonSerializerBuilder()
+ .pojoSwaps(
CalendarSwap.ISO8601DTZ.class,
DateSwap.ISO8601DTZ.class,
EnumerationSwap.class,
IteratorSwap.class
- );
+ )
+ .simple()
+ .build();
private static final ConcurrentHashMap<Class<?>,String> rbMap = new ConcurrentHashMap<Class<?>,String>();
@@ -120,7 +122,7 @@ public class JuneauLogger extends java.util.logging.Logger {
/**
* Logs a message with the specified {@link MessageFormat}-style arguments at {@link Level#INFO} level.
- *
+ *
* @param msg The message to log.
* @param args Optional {@link MessageFormat}-style arguments.
*/
@@ -131,7 +133,7 @@ public class JuneauLogger extends java.util.logging.Logger {
/**
* Logs a message with the specified {@link MessageFormat}-style arguments at {@link Level#CONFIG} level.
- *
+ *
* @param msg The message to log.
* @param args Optional {@link MessageFormat}-style arguments.
*/
@@ -142,7 +144,7 @@ public class JuneauLogger extends java.util.logging.Logger {
/**
* Logs a message with the specified {@link MessageFormat}-style arguments at {@link Level#FINE} level.
- *
+ *
* @param msg The message to log.
* @param args Optional {@link MessageFormat}-style arguments.
*/
@@ -153,7 +155,7 @@ public class JuneauLogger extends java.util.logging.Logger {
/**
* Logs a message with the specified {@link MessageFormat}-style arguments at {@link Level#FINER} level.
- *
+ *
* @param msg The message to log.
* @param args Optional {@link MessageFormat}-style arguments.
*/
@@ -164,7 +166,7 @@ public class JuneauLogger extends java.util.logging.Logger {
/**
* Logs a message with the specified {@link MessageFormat}-style arguments at {@link Level#FINEST} level.
- *
+ *
* @param msg The message to log.
* @param args Optional {@link MessageFormat}-style arguments.
*/
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core/src/main/java/org/apache/juneau/jso/JavaSerializedObjectParser.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/jso/JavaSerializedObjectParser.java b/juneau-core/src/main/java/org/apache/juneau/jso/JavaSerializedObjectParser.java
deleted file mode 100644
index 92181bc..0000000
--- a/juneau-core/src/main/java/org/apache/juneau/jso/JavaSerializedObjectParser.java
+++ /dev/null
@@ -1,51 +0,0 @@
-// ***************************************************************************************************************************
-// * 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.jso;
-
-import java.io.*;
-
-import org.apache.juneau.*;
-import org.apache.juneau.annotation.*;
-import org.apache.juneau.parser.*;
-
-/**
- * Parses POJOs from HTTP responses as Java {@link ObjectInputStream ObjectInputStreams}.
- *
- * <h5 class='section'>Media types:</h5>
- * <p>
- * Consumes <code>Content-Type</code> types: <code>application/x-java-serialized-object</code>
- */
-@Consumes("application/x-java-serialized-object")
-public final class JavaSerializedObjectParser extends InputStreamParser {
-
- //--------------------------------------------------------------------------------
- // Overridden methods
- //--------------------------------------------------------------------------------
-
- @SuppressWarnings("unchecked")
- @Override /* InputStreamParser */
- protected <T> T doParse(ParserSession session, ClassMeta<T> type) throws Exception {
- ObjectInputStream ois = new ObjectInputStream(session.getInputStream());
- return (T)ois.readObject();
- }
-
-
- @Override /* Lockable */
- public JavaSerializedObjectParser clone() {
- try {
- return (JavaSerializedObjectParser)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/jso/JavaSerializedObjectSerializer.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/jso/JavaSerializedObjectSerializer.java b/juneau-core/src/main/java/org/apache/juneau/jso/JavaSerializedObjectSerializer.java
deleted file mode 100644
index 4cfde6a..0000000
--- a/juneau-core/src/main/java/org/apache/juneau/jso/JavaSerializedObjectSerializer.java
+++ /dev/null
@@ -1,52 +0,0 @@
-// ***************************************************************************************************************************
-// * 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.jso;
-
-import java.io.*;
-
-import org.apache.juneau.annotation.*;
-import org.apache.juneau.serializer.*;
-
-/**
- * Serializes POJOs to HTTP responses as Java {@link ObjectOutputStream ObjectOutputStreams}.
- *
- * <h5 class='section'>Media types:</h5>
- * <p>
- * Handles <code>Accept</code> types: <code>application/x-java-serialized-object</code>
- * <p>
- * Produces <code>Content-Type</code> types: <code>application/x-java-serialized-object</code>
- */
-@Produces("application/x-java-serialized-object")
-public final class JavaSerializedObjectSerializer extends OutputStreamSerializer {
-
- //--------------------------------------------------------------------------------
- // Overridden methods
- //--------------------------------------------------------------------------------
-
- @Override /* OutputStreamSerializer */
- protected void doSerialize(SerializerSession session, Object o) throws Exception {
- ObjectOutputStream oos = new ObjectOutputStream(session.getOutputStream());
- oos.writeObject(o);
- oos.flush();
- oos.close();
- }
-
- @Override /* Serializer */
- public JavaSerializedObjectSerializer clone() {
- try {
- return (JavaSerializedObjectSerializer)super.clone();
- } catch (CloneNotSupportedException e) {
- throw new RuntimeException(e); // Shouldn't happen
- }
- }
-}