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.core.databinding.processor;
 
 import java.util.List;
 
The databinding annotation processor for java interfaces

Version:
$Rev: 1035090 $ $Date: 2010-11-15 00:32:24 +0200 (Mon, 15 Nov 2010) $
 
 
         super();
         this. = registry.getExtensionPoint(DataBindingExtensionPoint.class);
     }
 
     public void visitInterface(JavaInterface javaInterfacethrows InvalidInterfaceException {
         if (!javaInterface.isRemotable()) {
             return;
         }
         List<Operationoperations = javaInterface.getOperations();
         processInterface(javaInterfaceoperations);
     }
 
     private void processInterface(JavaInterface javaInterfaceList<Operationoperations) {
         Class<?> clazz = javaInterface.getJavaClass();
         DataBinding dataBinding = clazz.getAnnotation(DataBinding.class);
         String dataBindingId = null;
         boolean wrapperStyle = false;
         if (dataBinding != null) {
             dataBindingId = dataBinding.value();
             wrapperStyle = dataBinding.wrapped();
         }
 
         for (Operation op : javaInterface.getOperations()) {
             JavaOperation operation = (JavaOperationop;
             // In the case of @WebMethod, the method name can be different from the operation name
 
             if (dataBindingId != null) {
                 op.setDataBinding(dataBindingId);
                 op.setWrapperStyle(wrapperStyle);
             }
 
             Method method = operation.getJavaMethod();
 
             DataBinding methodDataBinding = clazz.getAnnotation(DataBinding.class);
             if (methodDataBinding == null) {
                 methodDataBinding = dataBinding;
             }
             dataBindingId = null;
             wrapperStyle = false;
             if (dataBinding != null) {
                 dataBindingId = dataBinding.value();
                 wrapperStyle = dataBinding.wrapped();
                 operation.setDataBinding(dataBindingId);
                 operation.setWrapperStyle(wrapperStyle);
             }
 
             // FIXME: We need a better way to identify simple java types
             int i = 0;
             for (org.apache.tuscany.sca.interfacedef.DataType<?> d : operation.getInputType().getLogical()) {
                 if (d.getDataBinding() == null) {
                     d.setDataBinding(dataBindingId);
                 }
                 for (Annotation a : method.getParameterAnnotations()[i]) {
                     if (a.annotationType() == org.apache.tuscany.sca.databinding.annotation.DataType.class) {
                         String value = ((org.apache.tuscany.sca.databinding.annotation.DataType)a).value();
                        d.setDataBinding(value);
                    }
                }
                .introspectType(doperation);
                i++;
            }
            if (operation.getOutputType() != null) {
            	for ( org.apache.tuscany.sca.interfacedef.DataType<?> d : operation.getOutputType().getLogical()) {
            		if ( d != null ) {
            			// The DataType is null for void operations
            			if ( d.getDataBinding() == null ) {
            				d.setDataBinding(dataBindingId);
            			}
            			.introspectType(doperation);
            		}
            	}
              
                org.apache.tuscany.sca.databinding.annotation.DataType dt =
                    method.getAnnotation(org.apache.tuscany.sca.databinding.annotation.DataType.class);
                if (dt != null) {
                    operation.getOutputType().getLogical().get(0).setDataBinding(dt.value());
                }
                
            }
        }
    }
New to GrepCode? Check out our FAQ X