001/*
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements.  See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License.  You may obtain a copy of the License at
008 *
009 *      http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017package org.apache.camel.reifier.dataformat;
018
019import org.apache.camel.CamelContext;
020import org.apache.camel.model.DataFormatDefinition;
021import org.apache.camel.model.dataformat.XStreamDataFormat;
022import org.apache.camel.spi.DataFormat;
023import org.apache.camel.support.CamelContextHelper;
024import org.apache.camel.util.ObjectHelper;
025
026public class XStreamDataFormatReifier extends DataFormatReifier<XStreamDataFormat> {
027
028    public XStreamDataFormatReifier(DataFormatDefinition definition) {
029        super((XStreamDataFormat)definition);
030    }
031
032    @Override
033    protected DataFormat doCreateDataFormat(CamelContext camelContext) {
034        if ("json".equals(definition.getDriver())) {
035            definition.setDataFormatName("json-xstream");
036        }
037        DataFormat answer = super.doCreateDataFormat(camelContext);
038        // need to lookup the reference for the xstreamDriver
039        if (ObjectHelper.isNotEmpty(definition.getDriverRef())) {
040            setProperty(camelContext, answer, "xstreamDriver", CamelContextHelper.mandatoryLookup(camelContext, definition.getDriverRef()));
041        }
042        return answer;
043    }
044
045    @Override
046    protected void configureDataFormat(DataFormat dataFormat, CamelContext camelContext) {
047        if (definition.getPermissions() != null) {
048            setProperty(camelContext, dataFormat, "permissions", definition.getPermissions());
049        }
050        if (definition.getEncoding() != null) {
051            setProperty(camelContext, dataFormat, "encoding", definition.getEncoding());
052        }
053        if (definition.getConverters() != null) {
054            setProperty(camelContext, dataFormat, "converters", definition.getConverters());
055        }
056        if (definition.getAliases() != null) {
057            setProperty(camelContext, dataFormat, "aliases", definition.getAliases());
058        }
059        if (definition.getOmitFields() != null) {
060            setProperty(camelContext, dataFormat, "omitFields", definition.getOmitFields());
061        }
062        if (definition.getImplicitCollections() != null) {
063            setProperty(camelContext, dataFormat, "implicitCollections", definition.getImplicitCollections());
064        }
065        if (definition.getMode() != null) {
066            setProperty(camelContext, dataFormat, "mode", definition.getMode());
067        }
068    }
069
070}