Package org.apache.yoko.bindings.corba.interceptors

Source Code of org.apache.yoko.bindings.corba.interceptors.CorbaOutInterceptorTest

/**
* 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.yoko.bindings.corba.interceptors;

import java.lang.reflect.Method;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import javax.xml.namespace.QName;
import javax.xml.stream.XMLEventWriter;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLOutputFactory;

import junit.framework.TestCase;

import org.apache.cxf.Bus;
import org.apache.cxf.BusFactory;
import org.apache.cxf.binding.BindingFactory;
import org.apache.cxf.binding.BindingFactoryManager;
import org.apache.cxf.databinding.DataBinding;
import org.apache.cxf.databinding.DataWriter;
import org.apache.cxf.endpoint.Endpoint;
import org.apache.cxf.endpoint.EndpointImpl;
import org.apache.cxf.jaxb.io.EventDataReader;
import org.apache.cxf.jaxb.io.EventDataWriter;
import org.apache.cxf.message.Exchange;
import org.apache.cxf.message.ExchangeImpl;
import org.apache.cxf.message.Message;
import org.apache.cxf.message.MessageImpl;
import org.apache.cxf.service.Service;
import org.apache.cxf.service.ServiceImpl;
import org.apache.cxf.service.model.AbstractMessageContainer;
import org.apache.cxf.service.model.BindingInfo;
import org.apache.cxf.service.model.BindingOperationInfo;
import org.apache.cxf.service.model.EndpointInfo;
import org.apache.cxf.service.model.InterfaceInfo;
import org.apache.cxf.service.model.MessageInfo;
import org.apache.cxf.service.model.MessagePartInfo;
import org.apache.cxf.service.model.OperationInfo;
import org.apache.cxf.service.model.ServiceInfo;
import org.apache.cxf.service.model.ServiceModelUtil;
import org.apache.cxf.transport.MessageObserver;
import org.apache.cxf.ws.addressing.EndpointReferenceType;
import org.apache.cxf.wsdl11.WSDLServiceFactory;
import org.omg.CORBA.ORB;
import org.omg.CORBA.TypeCode;

import org.apache.schemas.yoko.bindings.corba.ArgType;
import org.apache.schemas.yoko.bindings.corba.OperationType;
import org.apache.schemas.yoko.bindings.corba.ParamType;
import org.apache.schemas.yoko.bindings.corba.TypeMappingType;
import org.apache.yoko.bindings.corba.ContextUtils;
import org.apache.yoko.bindings.corba.CorbaBindingFactory;
import org.apache.yoko.bindings.corba.CorbaConduit;
import org.apache.yoko.bindings.corba.CorbaDestination;
import org.apache.yoko.bindings.corba.CorbaMessage;
import org.apache.yoko.bindings.corba.CorbaStaxObject;
import org.apache.yoko.bindings.corba.CorbaStreamable;
import org.apache.yoko.bindings.corba.CorbaTypeMap;
import org.apache.yoko.bindings.corba.CorbaUtils;
import org.apache.yoko.bindings.corba.TestUtils;
import org.apache.yoko.bindings.corba.types.CorbaHandlerUtils;
import org.apache.yoko.bindings.corba.types.CorbaObjectHandler;
import org.apache.yoko.bindings.corba.types.CorbaPrimitiveHandler;
import org.apache.yoko.bindings.corba.CorbaBinding;
import org.apache.yoko.wsdl.CorbaConstants;
import org.easymock.classextension.EasyMock;
import org.easymock.classextension.IMocksControl;

public class CorbaOutInterceptorTest extends TestCase {
   
    private static IMocksControl control;
    protected Bus bus;
    protected EndpointInfo endpointInfo;
    protected EndpointReferenceType target;   
    protected MessageObserver observer;
    protected Message inMessage;
    TestUtils testUtils;
    BindingFactory factory;
    ORB orb;
   
    public CorbaOutInterceptorTest(String arg0) {
        super(arg0);
    }
   
    public static void main(String[] args) {
        junit.textui.TestRunner.run(CorbaInInterceptorTest.class);
    }
   
    protected void setUp() throws Exception {
        super.setUp();
        control = EasyMock.createNiceControl();
        bus = BusFactory.newInstance().getDefaultBus();      
        BindingFactoryManager bfm = bus.getExtension(BindingFactoryManager.class);       
        factory = (BindingFactory)bfm.getBindingFactory("http://schemas.apache.org/yoko/bindings/corba");
        bfm.registerBindingFactory(CorbaConstants.NU_WSDL_CORBA, factory);
       
        testUtils = new TestUtils();
   
    }
   
    public void tearDown() {
        bus.shutdown(true);
        if (orb != null) {
            try {
                orb.destroy();
            } catch (Exception ex) {
                // Do nothing.  Throw an Exception?
            }
        }

    }           
    /*
    public void testHandleMessage() throws Exception {       
        Method m = CorbaOutInterceptor.class.getDeclaredMethod("handleInBoundMessage",
                new Class[] {CorbaMessage.class, OperationType.class});                                                      
        Method m2 = CorbaOutInterceptor.class.getDeclaredMethod("getDataWriter",
                                               new Class[] {CorbaMessage.class});                                                      
         CorbaOutInterceptor outInterceptor = EasyMock.createMock(CorbaOutInterceptor.class, new Method[] {m, m2});      
                                                   
        CorbaMessage msg = control.createMock(CorbaMessage.class);
        ORB mOrb = control.createMock(ORB.class);
        EasyMock.expect(msg.get("orb")).andReturn(mOrb);       
        Exchange exg = control.createMock(Exchange.class);
        EasyMock.expect(msg.getExchange()).andReturn(exg);
        ServiceInfo service = control.createMock(ServiceInfo.class);
        EasyMock.expect(exg.get(ServiceInfo.class)).andReturn(service);                    
        BindingOperationInfo bInfo = control.createMock(BindingOperationInfo.class);
        OperationType opType = control.createMock(OperationType.class);
        OperationInfo opInfo = control.createMock(OperationInfo.class);
        EasyMock.expect(exg.get(BindingOperationInfo.class)).andReturn(bInfo);
        EasyMock.expect(bInfo.getExtensor(OperationType.class)).andReturn(opType);
                     
        outInterceptor.handleInBoundMessage(msg, opType, opInfo);
        EasyMock.expectLastCall();
       
        control.replay();
        outInterceptor.handleMessage(msg);
        control.verify();
    }
   
    public void testHandleMessage2() throws Exception {
        Method m = CorbaOutInterceptor.class.getDeclaredMethod("handleOutBoundMessage",
                new Class[] {CorbaMessage.class, OperationType.class});
        Method m2 = CorbaOutInterceptor.class.getDeclaredMethod("getDataWriter",
                                               new Class[] {CorbaMessage.class});                                                      
        CorbaOutInterceptor outInterceptor = EasyMock.createMock(CorbaOutInterceptor.class, new Method[] {m, m2});      
       
        CorbaMessage msg = control.createMock(CorbaMessage.class);
        EasyMock.expect(msg.containsKey(Message.REQUESTOR_ROLE)).andReturn(true);
        ORB mOrb = control.createMock(ORB.class);
        EasyMock.expect(msg.get("orb")).andReturn(mOrb);              
       
        Exchange exg = control.createMock(Exchange.class);
        EasyMock.expect(msg.getExchange()).andReturn(exg);
        ServiceInfo service = control.createMock(ServiceInfo.class);
        EasyMock.expect(exg.get(ServiceInfo.class)).andReturn(service);                            
        BindingOperationInfo bInfo = control.createMock(BindingOperationInfo.class);
        OperationType opType = control.createMock(OperationType.class);
        OperationInfo opInfo = control.createMock(OperationInfo.class);
        EasyMock.expect(exg.get(BindingOperationInfo.class)).andReturn(bInfo);
        EasyMock.expect(bInfo.getExtensor(OperationType.class)).andReturn(opType);
                     
        outInterceptor.handleOutBoundMessage(msg, opType, opInfo);
        EasyMock.expectLastCall();
              
        control.replay();
        outInterceptor.handleMessage(msg);
        control.verify();
    }
    */
    // NEED TO REVISIT
    /*public void testHandleOutBoundMessage() throws Exception {
        Method m = CorbaOutInterceptor.class.getDeclaredMethod("getDataWriter",
                               new Class[] {CorbaMessage.class});
        Method m1 = CorbaOutInterceptor.class.getDeclaredMethod("addMarshalParams",
                        new Class[] {CorbaMessage.class, List.class,
                                     MessageInfo.class, List.class,
                                     XMLInputFactory.class, XMLOutputFactory.class,
                                     EventDataWriter.class});
                                       
        CorbaOutInterceptor outInterceptor =
            EasyMock.createMock(CorbaOutInterceptor.class, new Method[] {m, m1});
               
        CorbaMessage message = control.createMock(CorbaMessage.class);            
        EventDataWriter writer = control.createMock(EventDataWriter.class);
        outInterceptor.getDataWriter(message);
        EasyMock.expectLastCall().andReturn(writer);      
       
        OperationType opType = control.createMock(OperationType.class);

        OperationInfo opInfo = control.createMock(OperationInfo.class);

        List<ParamType> paramTypes = control.createMock(List.class);
        EasyMock.expect(opType.getParam()).andReturn(paramTypes);
       
        Exchange exchange = control.createMock(Exchange.class);
        Service service = control.createMock(Service.class);
        DataBinding databinding = control.createMock(DataBinding.class);               
        EasyMock.expect(message.getExchange()).andReturn(exchange);
        EasyMock.expect(ServiceModelUtil.getService(exchange)).andReturn(service);
        EasyMock.expect(service.getDataBinding()).andReturn(databinding);
        EasyMock.expect(databinding.getDataWriterFactory()).andReturn(null);       
       
        List<Object> args = control.createMock(List.class);
        MessageInfo msgInfo = control.createMock(MessageInfo.class);
        XMLInputFactory xif = control.createMock(XMLInputFactory.class);
        XMLOutputFactory xof = control.createMock(XMLOutputFactory.class);       

        EasyMock.expect(message.getContent(List.class)).andReturn(args);
        EasyMock.expect(message.get(MessageInfo.class)).andReturn(msgInfo);
       
        outInterceptor.addMarshalParams(message, args, msgInfo, paramTypes, xif, xof, writer);
        EasyMock.expectLastCall();

        ArgType returnParam = EasyMock.createMock(ArgType.class);
        EasyMock.expect(opType.getReturn()).andReturn(returnParam);
               
        QName name = new QName("", "reason", "");
        EasyMock.expect(returnParam.getName()).andReturn("reason");
        EasyMock.expect(returnParam.getIdltype()).andReturn(name);
               
        List<CorbaTypeMap> typeMaps = control.createMock(List.class);
       
        //CorbaObjectHandler obj = CorbaHandlerUtils
          //  .initializeObjectHandler(orb, name, name, typeMaps);
       
        CorbaStreamable streamable = EasyMock.createMock(CorbaStreamable.class);
        message.setStreamableReturn(streamable);
        EasyMock.expectLastCall();     

        control.replay();
        outInterceptor.handleOutBoundMessage(message, opType, opInfo);
        control.verify();
    }
   
    public void testHandleOutBoundMessage2() throws Exception {
        CorbaOutInterceptor outInterceptor = new CorbaOutInterceptor();
        CorbaDestination destination = testUtils.getSimpleTypesTestDestination();
        endpointInfo = destination.getEndPointInfo();
       
        Message msg = new MessageImpl();
        Exchange exg = new ExchangeImpl();
        exg.setDestination(destination);      
       
        Service service = new ServiceImpl(endpointInfo.getBinding().getService());       
        Service ser = (Service)service;
       
        Endpoint endpoint = new EndpointImpl(bus, null, endpointInfo);
        //exg.put("Service.class", service);
        exg.put("org.apache.cxf.service.Service", ser);
        exg.put("Endpoint.class", endpoint);
        msg.setExchange(exg);
        CorbaMessage message = new CorbaMessage(msg);
       
       
        EventDataWriter writer = (EventDataWriter)outInterceptor.getDataWriter(message);       
       
    }*/

    /* NEED TO DO
    public void testHandleInBoundMessage() throws Exception {
       
    }
   
    public void testAddMarshalParams()  throws Exception {
       
    }*/
           

   
   
    public void testgetDataWriter() throws Exception {
        CorbaOutInterceptor outInterceptor = new CorbaOutInterceptor();       
        CorbaMessage message = control.createMock(CorbaMessage.class);
        Exchange exchange = control.createMock(Exchange.class);
        Service service = control.createMock(Service.class);
        DataBinding databinding = control.createMock(DataBinding.class);       
       
        EasyMock.expect(message.getExchange()).andReturn(exchange);
        EasyMock.expect(ServiceModelUtil.getService(exchange)).andReturn(service);
        EasyMock.expect(service.getDataBinding()).andReturn(databinding);
       
        control.replay();
        outInterceptor.getDataWriter(message);
        control.verify();       
    }
   
}
TOP

Related Classes of org.apache.yoko.bindings.corba.interceptors.CorbaOutInterceptorTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.