All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.camel.model.dataformat.JacksonXMLDataFormat Maven / Gradle / Ivy

There is a newer version: 4.6.0
Show newest version
/**
 * 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.model.dataformat;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;

import org.apache.camel.CamelContext;
import org.apache.camel.model.DataFormatDefinition;
import org.apache.camel.spi.DataFormat;
import org.apache.camel.spi.Metadata;
import org.apache.camel.spi.RouteContext;
import org.apache.camel.util.ObjectHelper;

/**
 * Jackson XML data format
 *
 * @version
 */
@Metadata(firstVersion = "2.16.0", label = "dataformat,transformation,xml", title = "JacksonXML")
@XmlRootElement(name = "jacksonxml")
@XmlAccessorType(XmlAccessType.FIELD)
public class JacksonXMLDataFormat extends DataFormatDefinition {
    @XmlAttribute
    private String xmlMapper;
    @XmlAttribute
    private Boolean prettyPrint;
    @XmlAttribute
    private String unmarshalTypeName;
    @XmlTransient
    private Class unmarshalType;
    @XmlAttribute
    private Class jsonView;
    @XmlAttribute
    private String include;
    @XmlAttribute
    private Boolean allowJmsType;
    @XmlAttribute
    private String collectionTypeName;
    @XmlTransient
    private Class collectionType;
    @XmlAttribute
    private Boolean useList;
    @XmlAttribute
    private Boolean enableJaxbAnnotationModule;
    @XmlAttribute
    private String moduleClassNames;
    @XmlAttribute
    private String moduleRefs;
    @XmlAttribute
    private String enableFeatures;
    @XmlAttribute
    private String disableFeatures;
    @XmlAttribute
    private Boolean allowUnmarshallType;

    public JacksonXMLDataFormat() {
        super("jacksonxml");
    }

    public String getXmlMapper() {
        return xmlMapper;
    }

    /**
     * Lookup and use the existing XmlMapper with the given id.
     */
    public void setXmlMapper(String xmlMapper) {
        this.xmlMapper = xmlMapper;
    }

    public Boolean getPrettyPrint() {
        return prettyPrint;
    }

    /**
     * To enable pretty printing output nicely formatted.
     * 

* Is by default false. */ public void setPrettyPrint(Boolean prettyPrint) { this.prettyPrint = prettyPrint; } public String getUnmarshalTypeName() { return unmarshalTypeName; } /** * Class name of the java type to use when unarmshalling */ public void setUnmarshalTypeName(String unmarshalTypeName) { this.unmarshalTypeName = unmarshalTypeName; } public Class getUnmarshalType() { return unmarshalType; } /** * Class of the java type to use when unarmshalling */ public void setUnmarshalType(Class unmarshalType) { this.unmarshalType = unmarshalType; } public Class getJsonView() { return jsonView; } /** * When marshalling a POJO to JSON you might want to exclude certain fields * from the JSON output. With Jackson you can use JSON views to accomplish * this. This option is to refer to the class which has @JsonView * annotations */ public void setJsonView(Class jsonView) { this.jsonView = jsonView; } public String getInclude() { return include; } /** * If you want to marshal a pojo to JSON, and the pojo has some fields with * null values. And you want to skip these null values, you can set this * option to NOT_NULL */ public void setInclude(String include) { this.include = include; } public Boolean getAllowJmsType() { return allowJmsType; } /** * Used for JMS users to allow the JMSType header from the JMS spec to * specify a FQN classname to use to unmarshal to. */ public void setAllowJmsType(Boolean allowJmsType) { this.allowJmsType = allowJmsType; } public String getCollectionTypeName() { return collectionTypeName; } /** * Refers to a custom collection type to lookup in the registry to use. This * option should rarely be used, but allows to use different collection * types than java.util.Collection based as default. */ public void setCollectionTypeName(String collectionTypeName) { this.collectionTypeName = collectionTypeName; } public Boolean getUseList() { return useList; } /** * To unarmshal to a List of Map or a List of Pojo. */ public void setUseList(Boolean useList) { this.useList = useList; } public Boolean getEnableJaxbAnnotationModule() { return enableJaxbAnnotationModule; } /** * Whether to enable the JAXB annotations module when using jackson. When * enabled then JAXB annotations can be used by Jackson. */ public void setEnableJaxbAnnotationModule(Boolean enableJaxbAnnotationModule) { this.enableJaxbAnnotationModule = enableJaxbAnnotationModule; } public String getModuleClassNames() { return moduleClassNames; } /** * To use custom Jackson modules com.fasterxml.jackson.databind.Module * specified as a String with FQN class names. Multiple classes can be * separated by comma. */ public void setModuleClassNames(String moduleClassNames) { this.moduleClassNames = moduleClassNames; } public String getModuleRefs() { return moduleRefs; } /** * To use custom Jackson modules referred from the Camel registry. Multiple * modules can be separated by comma. */ public void setModuleRefs(String moduleRefs) { this.moduleRefs = moduleRefs; } public String getEnableFeatures() { return enableFeatures; } /** * Set of features to enable on the Jackson * com.fasterxml.jackson.databind.ObjectMapper. *

* The features should be a name that matches a enum from * com.fasterxml.jackson.databind.SerializationFeature, * com.fasterxml.jackson.databind.DeserializationFeature, or * com.fasterxml.jackson.databind.MapperFeature *

* Multiple features can be separated by comma */ public void setEnableFeatures(String enableFeatures) { this.enableFeatures = enableFeatures; } public String getDisableFeatures() { return disableFeatures; } /** * Set of features to disable on the Jackson * com.fasterxml.jackson.databind.ObjectMapper. *

* The features should be a name that matches a enum from * com.fasterxml.jackson.databind.SerializationFeature, * com.fasterxml.jackson.databind.DeserializationFeature, or * com.fasterxml.jackson.databind.MapperFeature *

* Multiple features can be separated by comma */ public void setDisableFeatures(String disableFeatures) { this.disableFeatures = disableFeatures; } public Boolean getAllowUnmarshallType() { return allowUnmarshallType; } /** * If enabled then Jackson is allowed to attempt to use the CamelJacksonUnmarshalType header during the unmarshalling. *

* This should only be enabled when desired to be used. */ public void setAllowUnmarshallType(Boolean allowUnmarshallType) { this.allowUnmarshallType = allowUnmarshallType; } @Override public String getDataFormatName() { return "jacksonxml"; } @Override protected DataFormat createDataFormat(RouteContext routeContext) { if (unmarshalType == null && unmarshalTypeName != null) { try { unmarshalType = routeContext.getCamelContext().getClassResolver().resolveMandatoryClass(unmarshalTypeName); } catch (ClassNotFoundException e) { throw ObjectHelper.wrapRuntimeCamelException(e); } } if (collectionType == null && collectionTypeName != null) { try { collectionType = routeContext.getCamelContext().getClassResolver().resolveMandatoryClass(collectionTypeName); } catch (ClassNotFoundException e) { throw ObjectHelper.wrapRuntimeCamelException(e); } } return super.createDataFormat(routeContext); } @Override protected void configureDataFormat(DataFormat dataFormat, CamelContext camelContext) { if (xmlMapper != null) { // must be a reference value String ref = xmlMapper.startsWith("#") ? xmlMapper : "#" + xmlMapper; setProperty(camelContext, dataFormat, "xmlMapper", ref); } if (unmarshalType != null) { setProperty(camelContext, dataFormat, "unmarshalType", unmarshalType); } if (prettyPrint != null) { setProperty(camelContext, dataFormat, "prettyPrint", prettyPrint); } if (jsonView != null) { setProperty(camelContext, dataFormat, "jsonView", jsonView); } if (include != null) { setProperty(camelContext, dataFormat, "include", include); } if (allowJmsType != null) { setProperty(camelContext, dataFormat, "allowJmsType", allowJmsType); } if (collectionType != null) { setProperty(camelContext, dataFormat, "collectionType", collectionType); } if (useList != null) { setProperty(camelContext, dataFormat, "useList", useList); } if (enableJaxbAnnotationModule != null) { setProperty(camelContext, dataFormat, "enableJaxbAnnotationModule", enableJaxbAnnotationModule); } if (moduleClassNames != null) { setProperty(camelContext, dataFormat, "modulesClassNames", moduleClassNames); } if (moduleRefs != null) { setProperty(camelContext, dataFormat, "moduleRefs", moduleRefs); } if (enableFeatures != null) { setProperty(camelContext, dataFormat, "enableFeatures", enableFeatures); } if (disableFeatures != null) { setProperty(camelContext, dataFormat, "disableFeatures", disableFeatures); } if (allowUnmarshallType != null) { setProperty(camelContext, dataFormat, "allowUnmarshallType", allowUnmarshallType); } } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy