/* * Copyright 2011, 2012 Odysseus Software GmbH * * Licensed 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.synapse.commons.staxon.core.json; import javax.xml.namespace.QName; /** * <p>Configuration builder with "fluid" interface.</p> * <pre> * JsonXMLConfig config = new JsonXMLConfigBuilder().virtualRoot("foo").prettyPrint(true).build(); * </pre> * <p>Initially, values are set according to {@link JsonXMLConfig#DEFAULT}.</p> * * @see JsonXMLConfig */ public class JsonXMLConfigBuilder { protected final JsonXMLConfigImpl config; /** * Create a new builder. */ public JsonXMLConfigBuilder() { this(new JsonXMLConfigImpl()); } protected JsonXMLConfigBuilder(JsonXMLConfigImpl config) { this.config = config; } /** * Build a new configuration. * * @return configuration instance */ public JsonXMLConfig build() { return config.clone(); } /** * Set autoArray property and return receiver. * * @param autoArray * @return this */ public JsonXMLConfigBuilder autoArray(boolean autoArray) { config.setAutoArray(autoArray); return this; } /** * Set autoPrimitive property and return receiver. * * @param autoPrimitive * @return this */ public JsonXMLConfigBuilder autoPrimitive(boolean autoPrimitive) { config.setAutoPrimitive(autoPrimitive); return this; } /** * Set multiplePI property and return receiver. * * @param multiplePI * @return this */ public JsonXMLConfigBuilder multiplePI(boolean multiplePI) { config.setMultiplePI(multiplePI); return this; } /** * Set namespaceDeclarations property and return receiver. * * @param namespaceDeclarations * @return this */ public JsonXMLConfigBuilder namespaceDeclarations(boolean namespaceDeclarations) { config.setNamespaceDeclarations(namespaceDeclarations); return this; } /** * Set namespaceSeparator property and return receiver. * * @param namespaceSeparator * @return this */ public JsonXMLConfigBuilder namespaceSeparator(char namespaceSeparator) { config.setNamespaceSeparator(namespaceSeparator); return this; } /** * Set prettyPrint property and return receiver. * * @param prettyPrint * @return this */ public JsonXMLConfigBuilder prettyPrint(boolean prettyPrint) { config.setPrettyPrint(prettyPrint); return this; } /** * Set virtualRoot property and return receiver. * * @param virtualRoot * @return this */ public JsonXMLConfigBuilder virtualRoot(QName virtualRoot) { config.setVirtualRoot(virtualRoot); return this; } /** * Set virtualRoot property and return receiver. * * @param virtualRoot (parsed with {@link QName#valueOf(String)}) * @return this */ public JsonXMLConfigBuilder virtualRoot(String virtualRoot) { config.setVirtualRoot(QName.valueOf(virtualRoot)); return this; } /** * Set repairingNamespaces property and return receiver. * * @param repairingNamespaces * @return this */ public JsonXMLConfigBuilder repairingNamespaces(boolean repairingNamespaces) { config.setRepairingNamespaces(repairingNamespaces); return this; } /** * Set Custom Regex for ignore Auto Primitive mode * @param regex * @return this */ public JsonXMLConfigBuilder customRegex(String regex) { config.setCustomRegex(regex); return this; } public JsonXMLConfigBuilder customReplaceRegex(String customReplaceRegex) { config.setCustomReplaceRegex(customReplaceRegex); return this; } public JsonXMLConfigBuilder customReplaceSequence(String customReplaceSequence) { config.setCustomReplaceSequence(customReplaceSequence); return this; } }