/**
* 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.camel.builder;
import java.nio.charset.Charset;
import java.util.Map;
import java.util.zip.Deflater;
import org.w3c.dom.Node;
import org.apache.camel.model.DataFormatDefinition;
import org.apache.camel.model.ProcessorDefinition;
import org.apache.camel.model.dataformat.AvroDataFormat;
import org.apache.camel.model.dataformat.Base64DataFormat;
import org.apache.camel.model.dataformat.BeanioDataFormat;
import org.apache.camel.model.dataformat.BindyDataFormat;
import org.apache.camel.model.dataformat.BindyType;
import org.apache.camel.model.dataformat.BoonDataFormat;
import org.apache.camel.model.dataformat.CastorDataFormat;
import org.apache.camel.model.dataformat.CsvDataFormat;
import org.apache.camel.model.dataformat.CustomDataFormat;
import org.apache.camel.model.dataformat.GzipDataFormat;
import org.apache.camel.model.dataformat.HL7DataFormat;
import org.apache.camel.model.dataformat.HessianDataFormat;
import org.apache.camel.model.dataformat.IcalDataFormat;
import org.apache.camel.model.dataformat.JacksonXMLDataFormat;
import org.apache.camel.model.dataformat.JaxbDataFormat;
import org.apache.camel.model.dataformat.JibxDataFormat;
import org.apache.camel.model.dataformat.JsonDataFormat;
import org.apache.camel.model.dataformat.JsonLibrary;
import org.apache.camel.model.dataformat.LZFDataFormat;
import org.apache.camel.model.dataformat.MimeMultipartDataFormat;
import org.apache.camel.model.dataformat.PGPDataFormat;
import org.apache.camel.model.dataformat.ProtobufDataFormat;
import org.apache.camel.model.dataformat.RssDataFormat;
import org.apache.camel.model.dataformat.SerializationDataFormat;
import org.apache.camel.model.dataformat.SoapJaxbDataFormat;
import org.apache.camel.model.dataformat.StringDataFormat;
import org.apache.camel.model.dataformat.SyslogDataFormat;
import org.apache.camel.model.dataformat.TarFileDataFormat;
import org.apache.camel.model.dataformat.TidyMarkupDataFormat;
import org.apache.camel.model.dataformat.XMLBeansDataFormat;
import org.apache.camel.model.dataformat.XMLSecurityDataFormat;
import org.apache.camel.model.dataformat.XStreamDataFormat;
import org.apache.camel.model.dataformat.XmlJsonDataFormat;
import org.apache.camel.model.dataformat.YAMLDataFormat;
import org.apache.camel.model.dataformat.YAMLLibrary;
import org.apache.camel.model.dataformat.ZipDataFormat;
import org.apache.camel.model.dataformat.ZipFileDataFormat;
import org.apache.camel.util.CollectionStringBuffer;
import org.apache.camel.util.jsse.KeyStoreParameters;
/**
* An expression for constructing the different possible {@link org.apache.camel.spi.DataFormat}
* options.
*
* @version
*/
public class DataFormatClause<T extends ProcessorDefinition<?>> {
private final T processorType;
private final Operation operation;
/**
* {@link org.apache.camel.spi.DataFormat} operations.
*/
public enum Operation {
Marshal, Unmarshal
}
public DataFormatClause(T processorType, Operation operation) {
this.processorType = processorType;
this.operation = operation;
}
/**
* Uses the Avro data format
*/
public T avro() {
return dataFormat(new AvroDataFormat());
}
public T avro(Object schema) {
AvroDataFormat dataFormat = new AvroDataFormat();
dataFormat.setSchema(schema);
return dataFormat(dataFormat);
}
public T avro(String instanceClassName) {
return dataFormat(new AvroDataFormat(instanceClassName));
}
/**
* Uses the base64 data format
*/
public T base64() {
Base64DataFormat dataFormat = new Base64DataFormat();
return dataFormat(dataFormat);
}
/**
* Uses the base64 data format
*/
public T base64(int lineLength, String lineSeparator, boolean urlSafe) {
Base64DataFormat dataFormat = new Base64DataFormat();
dataFormat.setLineLength(lineLength);
dataFormat.setLineSeparator(lineSeparator);
dataFormat.setUrlSafe(urlSafe);
return dataFormat(dataFormat);
}
/**
* Uses the beanio data format
*/
public T beanio(String mapping, String streamName) {
BeanioDataFormat dataFormat = new BeanioDataFormat();
dataFormat.setMapping(mapping);
dataFormat.setStreamName(streamName);
return dataFormat(dataFormat);
}
/**
* Uses the beanio data format
*/
public T beanio(String mapping, String streamName, String encoding) {
BeanioDataFormat dataFormat = new BeanioDataFormat();
dataFormat.setMapping(mapping);
dataFormat.setStreamName(streamName);
dataFormat.setEncoding(encoding);
return dataFormat(dataFormat);
}
/**
* Uses the beanio data format
*/
public T beanio(String mapping, String streamName, String encoding,
boolean ignoreUnidentifiedRecords, boolean ignoreUnexpectedRecords, boolean ignoreInvalidRecords) {
BeanioDataFormat dataFormat = new BeanioDataFormat();
dataFormat.setMapping(mapping);
dataFormat.setStreamName(streamName);
dataFormat.setEncoding(encoding);
dataFormat.setIgnoreUnidentifiedRecords(ignoreUnidentifiedRecords);
dataFormat.setIgnoreUnexpectedRecords(ignoreUnexpectedRecords);
dataFormat.setIgnoreInvalidRecords(ignoreInvalidRecords);
return dataFormat(dataFormat);
}
/**
* Uses the beanio data format
*/
public T beanio(String mapping, String streamName, String encoding, String beanReaderErrorHandlerType) {
BeanioDataFormat dataFormat = new BeanioDataFormat();
dataFormat.setMapping(mapping);
dataFormat.setStreamName(streamName);
dataFormat.setEncoding(encoding);
dataFormat.setBeanReaderErrorHandlerType(beanReaderErrorHandlerType);
return dataFormat(dataFormat);
}
/**
* Uses the Bindy data format
*
* @param type the type of bindy data format to use
* @param classType the POJO class type
*/
public T bindy(BindyType type, Class<?> classType) {
BindyDataFormat bindy = new BindyDataFormat();
bindy.setType(type);
bindy.setClassType(classType);
return dataFormat(bindy);
}
/**
* Uses the Boon data format
*
* @param classType the POJO class type
*/
public T boon(Class<?> classType) {
BoonDataFormat boon = new BoonDataFormat();
boon.setUnmarshalType(classType);
return dataFormat(boon);
}
/**
* Uses the CSV data format
*/
public T csv() {
return dataFormat(new CsvDataFormat());
}
/**
* Uses the CSV data format for a huge file.
* Sequential access through an iterator.
*/
public T csvLazyLoad() {
return dataFormat(new CsvDataFormat(true));
}
/**
* Uses the custom data format
*/
public T custom(String ref) {
return dataFormat(new CustomDataFormat(ref));
}
/**
* Uses the Castor data format
*/
public T castor() {
return dataFormat(new CastorDataFormat());
}
/**
* Uses the Castor data format
*
* @param mappingFile name of mapping file to locate in classpath
*/
public T castor(String mappingFile) {
CastorDataFormat castor = new CastorDataFormat();
castor.setMappingFile(mappingFile);
return dataFormat(castor);
}
/**
* Uses the Castor data format
*
* @param mappingFile name of mapping file to locate in classpath
* @param validation whether validation is enabled or not
*/
public T castor(String mappingFile, boolean validation) {
CastorDataFormat castor = new CastorDataFormat();
castor.setMappingFile(mappingFile);
castor.setValidation(validation);
return dataFormat(castor);
}
/**
* Uses the GZIP deflater data format
*/
public T gzip() {
GzipDataFormat gzdf = new GzipDataFormat();
return dataFormat(gzdf);
}
/**
* Uses the Hessian data format
*/
public T hessian() {
return dataFormat(new HessianDataFormat());
}
/**
* Uses the HL7 data format
*/
public T hl7() {
return dataFormat(new HL7DataFormat());
}
/**
* Uses the HL7 data format
*/
public T hl7(boolean validate) {
HL7DataFormat hl7 = new HL7DataFormat();
hl7.setValidate(validate);
return dataFormat(hl7);
}
/**
* Uses the HL7 data format
*/
public T hl7(Object parser) {
HL7DataFormat hl7 = new HL7DataFormat();
hl7.setParser(parser);
return dataFormat(hl7);
}
/**
* Uses the iCal data format
*/
public T ical(boolean validating) {
IcalDataFormat ical = new IcalDataFormat();
ical.setValidating(validating);
return dataFormat(ical);
}
/**
* Uses the LZF deflater data format
*/
public T lzf() {
LZFDataFormat lzfdf = new LZFDataFormat();
return dataFormat(lzfdf);
}
/**
* Uses the MIME Multipart data format
*/
public T mimeMultipart() {
MimeMultipartDataFormat mm = new MimeMultipartDataFormat();
return dataFormat(mm);
}
/**
* Uses the MIME Multipart data format
*
* @param multipartSubType Specifies the subtype of the MIME Multipart
*/
public T mimeMultipart(String multipartSubType) {
MimeMultipartDataFormat mm = new MimeMultipartDataFormat();
mm.setMultipartSubType(multipartSubType);
return dataFormat(mm);
}
/**
* Uses the MIME Multipart data format
*
* @param multipartSubType the subtype of the MIME Multipart
* @param multipartWithoutAttachment defines whether a message without attachment is also marshaled
* into a MIME Multipart (with only one body part).
* @param headersInline define the MIME Multipart headers as part of the message body
* or as Camel headers
* @param binaryContent have binary encoding for binary content (true) or use Base-64
* encoding for binary content (false)
*/
public T mimeMultipart(String multipartSubType, boolean multipartWithoutAttachment, boolean headersInline,
boolean binaryContent) {
MimeMultipartDataFormat mm = new MimeMultipartDataFormat();
mm.setMultipartSubType(multipartSubType);
mm.setMultipartWithoutAttachment(multipartWithoutAttachment);
mm.setHeadersInline(headersInline);
mm.setBinaryContent(binaryContent);
return dataFormat(mm);
}
/**
* Uses the MIME Multipart data format
*
* @param multipartSubType the subtype of the MIME Multipart
* @param multipartWithoutAttachment defines whether a message without attachment is also marshaled
* into a MIME Multipart (with only one body part).
* @param headersInline define the MIME Multipart headers as part of the message body
* or as Camel headers
* @param includeHeaders if headersInline is set to true all camel headers matching this
* regex are also stored as MIME headers on the Multipart
* @param binaryContent have binary encoding for binary content (true) or use Base-64
* encoding for binary content (false)
*/
public T mimeMultipart(String multipartSubType, boolean multipartWithoutAttachment, boolean headersInline,
String includeHeaders, boolean binaryContent) {
MimeMultipartDataFormat mm = new MimeMultipartDataFormat();
mm.setMultipartSubType(multipartSubType);
mm.setMultipartWithoutAttachment(multipartWithoutAttachment);
mm.setHeadersInline(headersInline);
mm.setIncludeHeaders(includeHeaders);
mm.setBinaryContent(binaryContent);
return dataFormat(mm);
}
/**
* Uses the MIME Multipart data format
*
* @param multipartWithoutAttachment defines whether a message without attachment is also marshaled
* into a MIME Multipart (with only one body part).
* @param headersInline define the MIME Multipart headers as part of the message body
* or as Camel headers
* @param binaryContent have binary encoding for binary content (true) or use Base-64
* encoding for binary content (false)
*/
public T mimeMultipart(boolean multipartWithoutAttachment, boolean headersInline,
boolean binaryContent) {
MimeMultipartDataFormat mm = new MimeMultipartDataFormat();
mm.setMultipartWithoutAttachment(multipartWithoutAttachment);
mm.setHeadersInline(headersInline);
mm.setBinaryContent(binaryContent);
return dataFormat(mm);
}
/**
* Uses the PGP data format
*/
public T pgp(String keyFileName, String keyUserid) {
PGPDataFormat pgp = new PGPDataFormat();
pgp.setKeyFileName(keyFileName);
pgp.setKeyUserid(keyUserid);
return dataFormat(pgp);
}
/**
* Uses the PGP data format
*/
public T pgp(String keyFileName, String keyUserid, String password) {
PGPDataFormat pgp = new PGPDataFormat();
pgp.setKeyFileName(keyFileName);
pgp.setKeyUserid(keyUserid);
pgp.setPassword(password);
return dataFormat(pgp);
}
/**
* Uses the PGP data format
*/
public T pgp(String keyFileName, String keyUserid, String password, boolean armored, boolean integrity) {
PGPDataFormat pgp = new PGPDataFormat();
pgp.setKeyFileName(keyFileName);
pgp.setKeyUserid(keyUserid);
pgp.setPassword(password);
pgp.setArmored(armored);
pgp.setIntegrity(integrity);
return dataFormat(pgp);
}
/**
* Uses the Jackson XML data format
*/
public T jacksonxml() {
return dataFormat(new JacksonXMLDataFormat());
}
/**
* Uses the Jackson XML data format
*
* @param unmarshalType
* unmarshal type for xml jackson type
*/
public T jacksonxml(Class<?> unmarshalType) {
JacksonXMLDataFormat jacksonXMLDataFormat = new JacksonXMLDataFormat();
jacksonXMLDataFormat.setUnmarshalType(unmarshalType);
return dataFormat(jacksonXMLDataFormat);
}
/**
* Uses the Jackson XML data format
*
* @param unmarshalType
* unmarshal type for xml jackson type
* @param jsonView
* the view type for xml jackson type
*/
public T jacksonxml(Class<?> unmarshalType, Class<?> jsonView) {
JacksonXMLDataFormat jacksonXMLDataFormat = new JacksonXMLDataFormat();
jacksonXMLDataFormat.setUnmarshalType(unmarshalType);
jacksonXMLDataFormat.setJsonView(jsonView);
return dataFormat(jacksonXMLDataFormat);
}
/**
* Uses the Jackson XML data format using the Jackson library turning pretty
* printing on or off
*
* @param prettyPrint
* turn pretty printing on or off
*/
public T jacksonxml(boolean prettyPrint) {
JacksonXMLDataFormat jacksonXMLDataFormat = new JacksonXMLDataFormat();
jacksonXMLDataFormat.setPrettyPrint(prettyPrint);
return dataFormat(jacksonXMLDataFormat);
}
/**
* Uses the Jackson XML data format
*
* @param unmarshalType
* unmarshal type for xml jackson type
* @param prettyPrint
* turn pretty printing on or off
*/
public T jacksonxml(Class<?> unmarshalType, boolean prettyPrint) {
JacksonXMLDataFormat jacksonXMLDataFormat = new JacksonXMLDataFormat();
jacksonXMLDataFormat.setUnmarshalType(unmarshalType);
jacksonXMLDataFormat.setPrettyPrint(prettyPrint);
return dataFormat(jacksonXMLDataFormat);
}
/**
* Uses the Jackson XML data format
*
* @param unmarshalType
* unmarshal type for xml jackson type
* @param jsonView
* the view type for xml jackson type
* @param prettyPrint
* turn pretty printing on or off
*/
public T jacksonxml(Class<?> unmarshalType, Class<?> jsonView, boolean prettyPrint) {
JacksonXMLDataFormat jacksonXMLDataFormat = new JacksonXMLDataFormat();
jacksonXMLDataFormat.setUnmarshalType(unmarshalType);
jacksonXMLDataFormat.setJsonView(jsonView);
jacksonXMLDataFormat.setPrettyPrint(prettyPrint);
return dataFormat(jacksonXMLDataFormat);
}
/**
* Uses the Jackson XML data format
*
* @param unmarshalType
* unmarshal type for xml jackson type
* @param jsonView
* the view type for xml jackson type
* @param include
* include such as <tt>ALWAYS</tt>, <tt>NON_NULL</tt>, etc.
*/
public T jacksonxml(Class<?> unmarshalType, Class<?> jsonView, String include) {
JacksonXMLDataFormat jacksonXMLDataFormat = new JacksonXMLDataFormat();
jacksonXMLDataFormat.setUnmarshalType(unmarshalType);
jacksonXMLDataFormat.setJsonView(jsonView);
jacksonXMLDataFormat.setInclude(include);
return dataFormat(jacksonXMLDataFormat);
}
/**
* Uses the Jackson XML data format
*
* @param unmarshalType
* unmarshal type for xml jackson type
* @param jsonView
* the view type for xml jackson type
* @param include
* include such as <tt>ALWAYS</tt>, <tt>NON_NULL</tt>, etc.
* @param prettyPrint
* turn pretty printing on or off
*/
public T jacksonxml(Class<?> unmarshalType, Class<?> jsonView, String include, boolean prettyPrint) {
JacksonXMLDataFormat jacksonXMLDataFormat = new JacksonXMLDataFormat();
jacksonXMLDataFormat.setUnmarshalType(unmarshalType);
jacksonXMLDataFormat.setJsonView(jsonView);
jacksonXMLDataFormat.setInclude(include);
jacksonXMLDataFormat.setPrettyPrint(prettyPrint);
return dataFormat(jacksonXMLDataFormat);
}
/**
* Uses the JAXB data format
*/
public T jaxb() {
return dataFormat(new JaxbDataFormat());
}
/**
* Uses the JAXB data format with context path
*/
public T jaxb(String contextPath) {
JaxbDataFormat dataFormat = new JaxbDataFormat();
dataFormat.setContextPath(contextPath);
return dataFormat(dataFormat);
}
/**
* Uses the JAXB data format turning pretty printing on or off
*/
public T jaxb(boolean prettyPrint) {
return dataFormat(new JaxbDataFormat(prettyPrint));
}
/**
* Uses the JiBX data format.
*/
public T jibx() {
return dataFormat(new JibxDataFormat());
}
/**
* Uses the JiBX data format with unmarshall class.
*/
public T jibx(Class<?> unmarshallClass) {
return dataFormat(new JibxDataFormat(unmarshallClass));
}
/**
* Uses the JSON data format using the XStream json library
*/
public T json() {
return dataFormat(new JsonDataFormat());
}
/**
* Uses the JSON data format using the XStream json library turning pretty printing on or off
*
* @param prettyPrint turn pretty printing on or off
*/
public T json(boolean prettyPrint) {
JsonDataFormat json = new JsonDataFormat();
json.setPrettyPrint(prettyPrint);
return dataFormat(json);
}
/**
* Uses the JSON data format
*
* @param library the json library to use
*/
public T json(JsonLibrary library) {
return dataFormat(new JsonDataFormat(library));
}
/**
* Uses the JSON data format
*
* @param library the json library to use
* @param prettyPrint turn pretty printing on or off
*/
public T json(JsonLibrary library, boolean prettyPrint) {
JsonDataFormat json = new JsonDataFormat(library);
json.setPrettyPrint(prettyPrint);
return dataFormat(json);
}
/**
* Uses the JSON data format
*
* @param type the json type to use
* @param unmarshalType unmarshal type for json jackson type
*/
public T json(JsonLibrary type, Class<?> unmarshalType) {
JsonDataFormat json = new JsonDataFormat(type);
json.setUnmarshalType(unmarshalType);
return dataFormat(json);
}
/**
* Uses the JSON data format
*
* @param type the json type to use
* @param unmarshalType unmarshal type for json jackson type
* @param prettyPrint turn pretty printing on or off
*/
public T json(JsonLibrary type, Class<?> unmarshalType, boolean prettyPrint) {
JsonDataFormat json = new JsonDataFormat(type);
json.setUnmarshalType(unmarshalType);
json.setPrettyPrint(prettyPrint);
return dataFormat(json);
}
/**
* Uses the Jackson JSON data format
*
* @param unmarshalType unmarshal type for json jackson type
* @param jsonView the view type for json jackson type
*/
public T json(Class<?> unmarshalType, Class<?> jsonView) {
JsonDataFormat json = new JsonDataFormat(JsonLibrary.Jackson);
json.setUnmarshalType(unmarshalType);
json.setJsonView(jsonView);
return dataFormat(json);
}
/**
* Uses the Jackson JSON data format
*
* @param unmarshalType unmarshal type for json jackson type
* @param jsonView the view type for json jackson type
* @param prettyPrint turn pretty printing on or off
*/
public T json(Class<?> unmarshalType, Class<?> jsonView, boolean prettyPrint) {
JsonDataFormat json = new JsonDataFormat(JsonLibrary.Jackson);
json.setUnmarshalType(unmarshalType);
json.setJsonView(jsonView);
json.setPrettyPrint(prettyPrint);
return dataFormat(json);
}
/**
* Uses the Jackson JSON data format
*
* @param unmarshalType unmarshal type for json jackson type
* @param jsonView the view type for json jackson type
* @param include include such as <tt>ALWAYS</tt>, <tt>NON_NULL</tt>, etc.
*/
public T json(Class<?> unmarshalType, Class<?> jsonView, String include) {
JsonDataFormat json = new JsonDataFormat(JsonLibrary.Jackson);
json.setUnmarshalType(unmarshalType);
json.setJsonView(jsonView);
json.setInclude(include);
return dataFormat(json);
}
/**
* Uses the Jackson JSON data format
*
* @param unmarshalType unmarshal type for json jackson type
* @param jsonView the view type for json jackson type
* @param include include such as <tt>ALWAYS</tt>, <tt>NON_NULL</tt>, etc.
* @param prettyPrint turn pretty printing on or off
*/
public T json(Class<?> unmarshalType, Class<?> jsonView, String include, boolean prettyPrint) {
JsonDataFormat json = new JsonDataFormat(JsonLibrary.Jackson);
json.setUnmarshalType(unmarshalType);
json.setJsonView(jsonView);
json.setInclude(include);
json.setPrettyPrint(prettyPrint);
return dataFormat(json);
}
/**
* Uses the protobuf data format
*/
public T protobuf() {
return dataFormat(new ProtobufDataFormat());
}
public T protobuf(Object defaultInstance) {
ProtobufDataFormat dataFormat = new ProtobufDataFormat();
dataFormat.setDefaultInstance(defaultInstance);
return dataFormat(dataFormat);
}
public T protobuf(Object defaultInstance, String contentTypeFormat) {
ProtobufDataFormat dataFormat = new ProtobufDataFormat();
dataFormat.setDefaultInstance(defaultInstance);
dataFormat.setContentTypeFormat(contentTypeFormat);
return dataFormat(dataFormat);
}
public T protobuf(String instanceClassName) {
return dataFormat(new ProtobufDataFormat(instanceClassName));
}
public T protobuf(String instanceClassName, String contentTypeFormat) {
return dataFormat(new ProtobufDataFormat(instanceClassName, contentTypeFormat));
}
/**
* Uses the RSS data format
*/
public T rss() {
return dataFormat(new RssDataFormat());
}
/**
* Uses the Java Serialization data format
*/
public T serialization() {
return dataFormat(new SerializationDataFormat());
}
/**
* Uses the Soap 1.1 JAXB data format
*/
public T soapjaxb() {
return dataFormat(new SoapJaxbDataFormat());
}
/**
* Uses the Soap 1.1 JAXB data format
*/
public T soapjaxb(String contextPath) {
return dataFormat(new SoapJaxbDataFormat(contextPath));
}
/**
* Uses the Soap 1.1 JAXB data format
*/
public T soapjaxb(String contextPath, String elementNameStrategyRef) {
return dataFormat(new SoapJaxbDataFormat(contextPath, elementNameStrategyRef));
}
/**
* Uses the Soap 1.1 JAXB data format
*/
public T soapjaxb(String contextPath, Object elementNameStrategy) {
return dataFormat(new SoapJaxbDataFormat(contextPath, elementNameStrategy));
}
/**
* Uses the Soap 1.2 JAXB data format
*/
public T soapjaxb12() {
SoapJaxbDataFormat soap = new SoapJaxbDataFormat();
soap.setVersion("1.2");
return dataFormat(soap);
}
/**
* Uses the Soap 1.2 JAXB data format
*/
public T soapjaxb12(String contextPath) {
SoapJaxbDataFormat soap = new SoapJaxbDataFormat(contextPath);
soap.setVersion("1.2");
return dataFormat(soap);
}
/**
* Uses the Soap 1.2 JAXB data format
*/
public T soapjaxb12(String contextPath, String elementNameStrategyRef) {
SoapJaxbDataFormat soap = new SoapJaxbDataFormat(contextPath, elementNameStrategyRef);
soap.setVersion("1.2");
return dataFormat(soap);
}
/**
* Uses the Soap JAXB data format
*/
public T soapjaxb12(String contextPath, Object elementNameStrategy) {
SoapJaxbDataFormat soap = new SoapJaxbDataFormat(contextPath, elementNameStrategy);
soap.setVersion("1.2");
return dataFormat(soap);
}
/**
* Uses the String data format
*/
public T string() {
return string(null);
}
/**
* Uses the String data format supporting encoding using given charset
*/
public T string(String charset) {
StringDataFormat sdf = new StringDataFormat();
sdf.setCharset(charset);
return dataFormat(sdf);
}
/**
* Uses the Syslog data format
*/
public T syslog() {
return dataFormat(new SyslogDataFormat());
}
/**
* Return WellFormed HTML (an XML Document) either
* {@link java.lang.String} or {@link org.w3c.dom.Node}
*/
public T tidyMarkup(Class<?> dataObjectType) {
return dataFormat(new TidyMarkupDataFormat(dataObjectType));
}
/**
* Return TidyMarkup in the default format
* as {@link org.w3c.dom.Node}
*/
public T tidyMarkup() {
return dataFormat(new TidyMarkupDataFormat(Node.class));
}
/**
* Uses the XStream data format.
* <p/>
* Favor using {@link #xstream(String)} to pass in a permission
*/
public T xstream() {
return dataFormat(new XStreamDataFormat());
}
/**
* Uses the xstream by setting the encoding or permission
*
* @param encodingOrPermission is either an encoding or permission syntax
*/
public T xstream(String encodingOrPermission) {
// is it an encoding? if not we assume its a permission
if (Charset.isSupported(encodingOrPermission)) {
return xstream(encodingOrPermission, (String) null);
} else {
return xstream(null, encodingOrPermission);
}
}
/**
* Uses the xstream by setting the encoding
*/
public T xstream(String encoding, String permission) {
XStreamDataFormat xdf = new XStreamDataFormat();
xdf.setPermissions(permission);
xdf.setEncoding(encoding);
return dataFormat(xdf);
}
/**
* Uses the xstream by permitting the java type
*
* @param type the pojo xstream should use as allowed permission
*/
public T xstream(Class<?> type) {
return xstream(null, type);
}
/**
* Uses the xstream by permitting the java type
*
* @param encoding encoding to use
* @param type the pojo class(es) xstream should use as allowed permission
*/
public T xstream(String encoding, Class<?>... type) {
CollectionStringBuffer csb = new CollectionStringBuffer(",");
for (Class<?> clazz : type) {
csb.append("+");
csb.append(clazz.getName());
}
return xstream(encoding, csb.toString());
}
/**
* Uses the YAML data format
*
* @param library the yaml library to use
*/
public T yaml(YAMLLibrary library) {
return dataFormat(new YAMLDataFormat(library));
}
/**
* Uses the YAML data format
*
* @param library the yaml type to use
* @param type the type for json snakeyaml type
*/
public T yaml(YAMLLibrary library, Class<?> type) {
return dataFormat(new YAMLDataFormat(library, type));
}
/**
* Uses the XML Security data format
*/
public T secureXML() {
XMLSecurityDataFormat xsdf = new XMLSecurityDataFormat();
return dataFormat(xsdf);
}
/**
* Uses the XML Security data format
*/
public T secureXML(String secureTag, boolean secureTagContents) {
XMLSecurityDataFormat xsdf = new XMLSecurityDataFormat(secureTag, secureTagContents);
return dataFormat(xsdf);
}
/**
* Uses the XML Security data format
*/
public T secureXML(String secureTag, Map<String, String> namespaces, boolean secureTagContents) {
XMLSecurityDataFormat xsdf = new XMLSecurityDataFormat(secureTag, namespaces, secureTagContents);
return dataFormat(xsdf);
}
/**
* Uses the XML Security data format
*/
public T secureXML(String secureTag, boolean secureTagContents, String passPhrase) {
XMLSecurityDataFormat xsdf = new XMLSecurityDataFormat(secureTag, secureTagContents, passPhrase);
return dataFormat(xsdf);
}
/**
* Uses the XML Security data format
*/
public T secureXML(String secureTag, Map<String, String> namespaces, boolean secureTagContents, String passPhrase) {
XMLSecurityDataFormat xsdf = new XMLSecurityDataFormat(secureTag, namespaces, secureTagContents, passPhrase);
return dataFormat(xsdf);
}
/**
* Uses the XML Security data format
*/
public T secureXML(String secureTag, boolean secureTagContents, String passPhrase, String xmlCipherAlgorithm) {
XMLSecurityDataFormat xsdf = new XMLSecurityDataFormat(secureTag, secureTagContents, passPhrase, xmlCipherAlgorithm);
return dataFormat(xsdf);
}
/**
* Uses the XML Security data format
*/
public T secureXML(String secureTag, Map<String, String> namespaces, boolean secureTagContents, String passPhrase, String xmlCipherAlgorithm) {
XMLSecurityDataFormat xsdf = new XMLSecurityDataFormat(secureTag, namespaces, secureTagContents, passPhrase, xmlCipherAlgorithm);
return dataFormat(xsdf);
}
/**
* @deprecated Use {@link #secureXML(String, Map, boolean, String, String, String, String)} instead.
* Uses the XML Security data format
*/
@Deprecated
public T secureXML(String secureTag, boolean secureTagContents, String recipientKeyAlias, String xmlCipherAlgorithm,
String keyCipherAlgorithm) {
XMLSecurityDataFormat xsdf = new XMLSecurityDataFormat(secureTag, secureTagContents, recipientKeyAlias, xmlCipherAlgorithm, keyCipherAlgorithm);
return dataFormat(xsdf);
}
/**
* Uses the XML Security data format
*/
public T secureXML(String secureTag, boolean secureTagContents, String recipientKeyAlias, String xmlCipherAlgorithm,
String keyCipherAlgorithm, String keyOrTrustStoreParametersId) {
XMLSecurityDataFormat xsdf = new XMLSecurityDataFormat(secureTag, secureTagContents, recipientKeyAlias, xmlCipherAlgorithm,
keyCipherAlgorithm, keyOrTrustStoreParametersId);
return dataFormat(xsdf);
}
/**
* Uses the XML Security data format
*/
public T secureXML(String secureTag, boolean secureTagContents, String recipientKeyAlias, String xmlCipherAlgorithm,
String keyCipherAlgorithm, String keyOrTrustStoreParametersId, String keyPassword) {
XMLSecurityDataFormat xsdf = new XMLSecurityDataFormat(secureTag, secureTagContents, recipientKeyAlias, xmlCipherAlgorithm,
keyCipherAlgorithm, keyOrTrustStoreParametersId, keyPassword);
return dataFormat(xsdf);
}
/**
* Uses the XML Security data format
*/
public T secureXML(String secureTag, boolean secureTagContents, String recipientKeyAlias, String xmlCipherAlgorithm,
String keyCipherAlgorithm, KeyStoreParameters keyOrTrustStoreParameters) {
XMLSecurityDataFormat xsdf = new XMLSecurityDataFormat(secureTag, secureTagContents, recipientKeyAlias, xmlCipherAlgorithm,
keyCipherAlgorithm, keyOrTrustStoreParameters);
return dataFormat(xsdf);
}
/**
* Uses the XML Security data format
*/
public T secureXML(String secureTag, boolean secureTagContents, String recipientKeyAlias, String xmlCipherAlgorithm,
String keyCipherAlgorithm, KeyStoreParameters keyOrTrustStoreParameters, String keyPassword) {
XMLSecurityDataFormat xsdf = new XMLSecurityDataFormat(secureTag, secureTagContents, recipientKeyAlias, xmlCipherAlgorithm,
keyCipherAlgorithm, keyOrTrustStoreParameters, keyPassword);
return dataFormat(xsdf);
}
/**
* Uses the XML Security data format
*/
public T secureXML(String secureTag, Map<String, String> namespaces, boolean secureTagContents, String recipientKeyAlias,
String xmlCipherAlgorithm, String keyCipherAlgorithm, String keyOrTrustStoreParametersId) {
XMLSecurityDataFormat xsdf = new XMLSecurityDataFormat(secureTag, namespaces, secureTagContents, recipientKeyAlias, xmlCipherAlgorithm,
keyCipherAlgorithm, keyOrTrustStoreParametersId);
return dataFormat(xsdf);
}
/**
* Uses the XML Security data format
*/
public T secureXML(String secureTag, Map<String, String> namespaces, boolean secureTagContents, String recipientKeyAlias,
String xmlCipherAlgorithm, String keyCipherAlgorithm, String keyOrTrustStoreParametersId, String keyPassword) {
XMLSecurityDataFormat xsdf = new XMLSecurityDataFormat(secureTag, namespaces, secureTagContents, recipientKeyAlias, xmlCipherAlgorithm,
keyCipherAlgorithm, keyOrTrustStoreParametersId, keyPassword);
return dataFormat(xsdf);
}
/**
* Uses the XML Security data format
*/
public T secureXML(String secureTag, Map<String, String> namespaces, boolean secureTagContents, String recipientKeyAlias,
String xmlCipherAlgorithm, String keyCipherAlgorithm, KeyStoreParameters keyOrTrustStoreParameters) {
XMLSecurityDataFormat xsdf = new XMLSecurityDataFormat(secureTag, namespaces, secureTagContents, recipientKeyAlias, xmlCipherAlgorithm,
keyCipherAlgorithm, keyOrTrustStoreParameters);
return dataFormat(xsdf);
}
/**
* Uses the XML Security data format
*/
public T secureXML(String secureTag, Map<String, String> namespaces, boolean secureTagContents, String recipientKeyAlias,
String xmlCipherAlgorithm, String keyCipherAlgorithm, KeyStoreParameters keyOrTrustStoreParameters, String keyPassword) {
XMLSecurityDataFormat xsdf = new XMLSecurityDataFormat(secureTag, namespaces, secureTagContents, recipientKeyAlias, xmlCipherAlgorithm,
keyCipherAlgorithm, keyOrTrustStoreParameters, keyPassword);
return dataFormat(xsdf);
}
/**
* Uses the XML Security data format
*/
public T secureXML(String secureTag, Map<String, String> namespaces, boolean secureTagContents, String recipientKeyAlias,
String xmlCipherAlgorithm, String keyCipherAlgorithm, KeyStoreParameters keyOrTrustStoreParameters, String keyPassword,
String digestAlgorithm) {
XMLSecurityDataFormat xsdf = new XMLSecurityDataFormat(secureTag, namespaces, secureTagContents, recipientKeyAlias, xmlCipherAlgorithm,
keyCipherAlgorithm, keyOrTrustStoreParameters, keyPassword, digestAlgorithm);
return dataFormat(xsdf);
}
/**
* Uses the Tar file data format
*/
public T tarFile() {
TarFileDataFormat tfdf = new TarFileDataFormat();
return dataFormat(tfdf);
}
/**
* Uses the xmlBeans data format
*/
public T xmlBeans() {
return dataFormat(new XMLBeansDataFormat());
}
/**
* Uses the xmljson dataformat, based on json-lib
*/
public T xmljson() {
return dataFormat(new XmlJsonDataFormat());
}
/**
* Uses the xmljson dataformat, based on json-lib, initializing custom options with a Map
*/
public T xmljson(Map<String, String> options) {
return dataFormat(new XmlJsonDataFormat(options));
}
/**
* Uses the ZIP deflater data format
*/
public T zip() {
ZipDataFormat zdf = new ZipDataFormat(Deflater.DEFAULT_COMPRESSION);
return dataFormat(zdf);
}
/**
* Uses the ZIP deflater data format
*/
public T zip(int compressionLevel) {
ZipDataFormat zdf = new ZipDataFormat(compressionLevel);
return dataFormat(zdf);
}
/**
* Uses the ZIP file data format
*/
public T zipFile() {
ZipFileDataFormat zfdf = new ZipFileDataFormat();
return dataFormat(zfdf);
}
@SuppressWarnings("unchecked")
private T dataFormat(DataFormatDefinition dataFormatType) {
switch (operation) {
case Unmarshal:
return (T) processorType.unmarshal(dataFormatType);
case Marshal:
return (T) processorType.marshal(dataFormatType);
default:
throw new IllegalArgumentException("Unknown DataFormat operation: " + operation);
}
}
}