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.wire;
 
 import java.util.List;
 
This processor is responsible to add an interceptor to invocation chain if the source and target operations have different databinding requirements

Version:
$Rev: 1035090 $ $Date: 2010-11-15 00:32:24 +0200 (Mon, 15 Nov 2010) $
 
     private Mediator mediator;
     
         super();
         this. = registry.getExtensionPoint(UtilityExtensionPoint.class).getUtility(Mediator.class);
     }
 
     public boolean isTransformationRequired(DataType sourceDataType target) {
         if (source == null || target == null) { // void return type
             return false;
         }
         if (source == target) {
             return false;
         }
 
         // Output type can be null
         if (source == null && target == null) {
             return false;
         } else if (source == null || target == null) {
             return true;
         }
         String sourceDataBinding = source.getDataBinding();
         String targetDataBinding = target.getDataBinding();
         if (sourceDataBinding == targetDataBinding) {
             return false;
         }
         if (sourceDataBinding == null || targetDataBinding == null) {
             // TODO: If any of the databinding is null, then no transformation
             return false;
         }
         return !sourceDataBinding.equals(targetDataBinding);
     }
 
     public boolean isTransformationRequired(Operation sourceOperation target) {
         if (source == target) {
             return false;
         }
 
         if (source.isWrapperStyle() != target.isWrapperStyle()) {
             return true;
         }
 
         // Check output type
         List<DataTypesourceOutputType = source.getOutputType().getLogical();
         List<DataTypetargetOutputType = target.getOutputType().getLogical();
 
         int outputSize = sourceOutputType.size();
         if ( outputSize != targetOutputType.size() ) {
         	return true;
         }
         
         for (int i = 0; i < outputSizei++) {
             if (isTransformationRequired(sourceOutputType.get(i), targetOutputType.get(i))) {
                 return true;
             }
         }       
        List<DataTypesourceInputType = source.getInputType().getLogical();
        List<DataTypetargetInputType = target.getInputType().getLogical();
        int size = sourceInputType.size();
        if (size != targetInputType.size()) {
            // TUSCANY-1682: The wrapper style may have different arguments
            return true;
        }
        for (int i = 0; i < sizei++) {
            if (isTransformationRequired(sourceInputType.get(i), targetInputType.get(i))) {
                return true;
            }
        }
        return false;
    }
    private boolean isTransformationRequired(InterfaceContract sourceContract,
                                             Operation sourceOperation,
                                             InterfaceContract targetContract,
                                             Operation targetOperation) {
        if (targetContract == null) {
            targetContract = sourceContract;
        }
        if (sourceContract == targetContract) {
            return false;
        }
        return isTransformationRequired(sourceOperationtargetOperation);
    }
    public void process(RuntimeEndpoint endpoint) {
        InterfaceContract sourceContract = endpoint.getBindingInterfaceContract();
        InterfaceContract targetContract = endpoint.getComponentTypeServiceInterfaceContract();
        if (targetContract == null) {
            targetContract = sourceContract;
        }
        if (!sourceContract.getInterface().isRemotable()) {
            return;
        }
        List<InvocationChainchains = endpoint.getInvocationChains();
        for (InvocationChain chain : chains) {
            Operation sourceOperation = chain.getSourceOperation();
            Operation targetOperation = chain.getTargetOperation();
            Interceptor interceptor = null;
            if (isTransformationRequired(sourceContractsourceOperationtargetContracttargetOperation)) {
                // Add the interceptor to the source side because multiple
                // references can be wired to the same service
                interceptor = new DataTransformationInterceptor(endpointsourceOperationtargetOperation);
            }
            if (interceptor != null) {
                String phase = .;
                chain.addInterceptor(phaseinterceptor);
            }
        }
    }
    public void process(RuntimeEndpointReference endpointReference) {
        InterfaceContract sourceContract = endpointReference.getComponentTypeReferenceInterfaceContract();
        InterfaceContract targetContract = endpointReference.getBindingInterfaceContract();
        if (targetContract == null) {
            targetContract = sourceContract;
        }
        if (sourceContract == null || !sourceContract.getInterface().isRemotable()) {
            return;
        }
        List<InvocationChainchains = endpointReference.getInvocationChains();
        for (InvocationChain chain : chains) {
            Operation sourceOperation = chain.getSourceOperation();
            Operation targetOperation = chain.getTargetOperation();
            Interceptor interceptor = null;
            if (isTransformationRequired(sourceContractsourceOperationtargetContracttargetOperation)) {
                // Add the interceptor to the source side because multiple
                // references can be wired to the same service
                interceptor = new DataTransformationInterceptor(endpointReferencesourceOperationtargetOperation);
            }
            if (interceptor != null) {
                String phase = .;
                chain.addInterceptor(phaseinterceptor);
            }
        }
        
    }
New to GrepCode? Check out our FAQ X