Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * 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.tuscany.sca.databinding.jaxb;
 
 
 
JAXB DataBinding

Version:
$Rev: 916888 $ $Date: 2010-02-27 00:44:05 +0000 (Sat, 27 Feb 2010) $
 
 public class JAXBDataBinding extends BaseDataBinding {
     public static final String NAME = JAXBElement.class.getName();
 
     public static final String ROOT_NAMESPACE = "http://tuscany.apache.org/xmlns/sca/databinding/jaxb/1.0";
     public static final QName ROOT_ELEMENT = new QName("root");
     
     private JAXBTypeHelper xmlTypeHelper;
     private DOMHelper domHelper;
     private JAXBContextHelper contextHelper;
     
     public JAXBDataBinding(ExtensionPointRegistry registry) {
         super(JAXBElement.class);
         this. = new JAXBWrapperHandler();
         this. = new JAXBTypeHelper(registry);
         this. = DOMHelper.getInstance(registry);
          = JAXBContextHelper.getInstance(registry);
     }
 
     @Override
     public boolean introspect(DataType dataTypeOperation operation) {
         Class javaType = dataType.getPhysical();
         if (JAXBElement.class.isAssignableFrom(javaType)) {
             Type type = javaType.getGenericSuperclass();
             if (type instanceof ParameterizedType) {
                 ParameterizedType parameterizedType = ((ParameterizedType)type);
                 Type rawType = parameterizedType.getRawType();
                 if (rawType == JAXBElement.class) {
                     Type actualType = parameterizedType.getActualTypeArguments()[0];
                     if (actualType instanceof Class) {
                         XMLType xmlType = JAXBContextHelper.getXmlTypeName((Class)actualType);
                         dataType.setLogical(xmlType);
                         dataType.setDataBinding();
                         return true;
                     }
                 }
             }
             if (dataType.getLogical() == null) {
                 dataType.setLogical(.);
             }
             dataType.setDataBinding();
             return true;
         }
 
         XMLType xmlType = JAXBContextHelper.getXmlTypeName(javaType);
         if (xmlType == null) {
             return false;
         }
         dataType.setLogical(xmlType);
         dataType.setDataBinding();
         return true;
     }
 
     @SuppressWarnings("unchecked")
     @Override
    public Object copy(Object arg,
                       DataType sourceDataType,
                       DataType targetDataType,
                       Operation sourceOperation,
                       Operation targetOperation) {
        try {
            boolean isElement = false;
            if (sourceDataType == null) {
                Class cls = arg.getClass();
                if (arg instanceof JAXBElement) {
                    isElement = true;
                    cls = ((JAXBElement)arg).getDeclaredType();
                }
                sourceDataType = new DataTypeImpl<XMLType>(cls.);
            }
            JAXBContext context = .createJAXBContext(sourceDataType);
            arg = JAXBContextHelper.createJAXBElement(contextsourceDataTypearg);
            Document doc = .newDocument();
            context.createMarshaller().marshal(argdoc);
            
            Object value;
            if (targetDataType != null && targetDataType.getPhysical() != sourceDataType.getPhysical()) {
                JAXBContext targetContext = .createJAXBContext(targetDataType);
                value = targetContext.createUnmarshaller().unmarshal(doctargetDataType.getPhysical());
            } else {
                value = context.createUnmarshaller().unmarshal(docsourceDataType.getPhysical());
            }
            
            if (isElement && value instanceof JAXBElement) {
                return value;
            }
            return JAXBContextHelper.createReturnValue(contextsourceDataTypevalue);
        } catch (Exception e) {
            throw new IllegalArgumentException(e);
        }
    }
    @Override
    public WrapperHandler getWrapperHandler() {
        return ;
    }
    @Override
    public XMLTypeHelper getXMLTypeHelper() {
        // return new JAXBTypeHelper();
        return ;
    }
New to GrepCode? Check out our FAQ X