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

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

/**
* 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.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.lang.reflect.Array;
import java.lang.reflect.Method;
import java.net.URL;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import javax.xml.namespace.QName;
import javax.xml.stream.XMLEventFactory;
import javax.xml.stream.XMLEventReader;
import javax.xml.stream.XMLEventWriter;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLOutputFactory;
import javax.xml.stream.XMLStreamException;
import javax.xml.ws.Holder;

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.DataReader;
import org.apache.cxf.jaxb.io.EventDataReader;
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.BindingInfo;
import org.apache.cxf.service.model.BindingOperationInfo;
import org.apache.cxf.service.model.DescriptionInfo;
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.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.Any;
import org.omg.CORBA.NVList;
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.MemberType;
import org.apache.schemas.yoko.bindings.corba.ModeType;
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.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.orb.CORBA.ServerRequest;
import org.apache.yoko.wsdl.CorbaConstants;
import org.easymock.classextension.EasyMock;
import org.easymock.classextension.IMocksControl;

public class CorbaInInterceptorTest extends TestCase {
   
    private static IMocksControl control;
    protected Bus bus;
    protected EndpointInfo endpointInfo;
    protected EndpointReferenceType target;   
    protected MessageObserver observer;
    protected Message inMessage;
    BindingFactory factory;
    ORB orb;
    TestUtils testUtils;
   
    public CorbaInInterceptorTest(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();     
        java.util.Properties props = System.getProperties();
        props.put("org.omg.CORBA.ORBClass", "org.apache.yoko.orb.CORBA.ORB");
        props.put("org.omg.CORBA.ORBSingletonClass", "org.apache.yoko.orb.CORBA.ORBSingleton");
        props.put("yoko.orb.id", "Yoko-Server-Binding");
        orb = ORB.init(new String[0], props);
       
        testUtils = new TestUtils();
    }
   
    public void tearDown() {
        if (orb != null) {
            try {
                orb.destroy();
            } catch (Exception ex) {
                // Do nothing.  Throw an Exception?
            }
        }        
    }
   
    public void testHandleMessage() throws Exception {       
        Method m = CorbaInInterceptor.class.getDeclaredMethod("handleNotRequestMessage",
                new Class[] {CorbaMessage.class, CorbaDestination.class});                                                      
        CorbaInInterceptor inInterceptor = EasyMock.createMock(CorbaInInterceptor.class, new Method[] {m});      
                                                   
        CorbaMessage msg = control.createMock(CorbaMessage.class);
        CorbaDestination destination = control.createMock(CorbaDestination.class);
        BindingInfo bInfo = control.createMock(BindingInfo.class);
        ServiceInfo sInfo = control.createMock(ServiceInfo.class);
        DescriptionInfo dInfo = control.createMock(DescriptionInfo.class)
        EasyMock.expect(msg.getDestination()).andReturn(destination).times(2);       
        EasyMock.expect(destination.getBindingInfo()).andReturn(bInfo);
        EasyMock.expect(bInfo.getService()).andReturn(sInfo);
        EasyMock.expect(dInfo.getExtensors(TypeMappingType.class)).andReturn(null);
        EasyMock.expect(sInfo.getDescription()).andReturn(dInfo);
       
        inInterceptor.handleNotRequestMessage(msg, destination);
        EasyMock.expectLastCall();
       
        control.replay();
        inInterceptor.handleMessage(msg);
        control.verify();
    }
   
    public void testHandleMessage1() throws Exception {       
        Method m = CorbaInInterceptor.class.getDeclaredMethod("handleRequestMessage",
                new Class[] {CorbaMessage.class, CorbaDestination.class});                                                      
        CorbaInInterceptor inInterceptor = EasyMock.createMock(CorbaInInterceptor.class, new Method[] {m});      
                                                   
        CorbaMessage msg = control.createMock(CorbaMessage.class);
        CorbaDestination destination = control.createMock(CorbaDestination.class);
        BindingInfo bInfo = control.createMock(BindingInfo.class);
        ServiceInfo sInfo = control.createMock(ServiceInfo.class);
        DescriptionInfo dInfo = control.createMock(DescriptionInfo.class);  
        EasyMock.expect(msg.getDestination()).andReturn(destination).times(2);       
        EasyMock.expect(destination.getBindingInfo()).andReturn(bInfo);
        EasyMock.expect(bInfo.getService()).andReturn(sInfo);
        EasyMock.expect(dInfo.getExtensors(TypeMappingType.class)).andReturn(null);
        EasyMock.expect(sInfo.getDescription()).andReturn(dInfo);
        EasyMock.expect(msg.containsKey(Message.REQUESTOR_ROLE)).andReturn(true);
       
        inInterceptor.handleRequestMessage(msg, destination);
        EasyMock.expectLastCall();
       
        control.replay();
        inInterceptor.handleMessage(msg);
        control.verify();
    }
   
    public void testHandleMessage2() throws Exception {       
        Method m = CorbaInInterceptor.class.getDeclaredMethod("handleRequestMessage",
                new Class[] {CorbaMessage.class, CorbaDestination.class});                                                      
         CorbaInInterceptor inInterceptor = EasyMock.createMock(CorbaInInterceptor.class, new Method[] {m});      
                                                   
        CorbaMessage msg = control.createMock(CorbaMessage.class);
        CorbaDestination destination = control.createMock(CorbaDestination.class);
        BindingInfo bInfo = control.createMock(BindingInfo.class);
        ServiceInfo sInfo = control.createMock(ServiceInfo.class);
        DescriptionInfo dInfo = control.createMock(DescriptionInfo.class)
        EasyMock.expect(msg.getDestination()).andReturn(null);
        Exchange exchange = control.createMock(Exchange.class);
        EasyMock.expect(msg.getExchange()).andReturn(exchange);
        EasyMock.expect(exchange.getDestination()).andReturn(destination);       
        EasyMock.expect(destination.getBindingInfo()).andReturn(bInfo);
        EasyMock.expect(bInfo.getService()).andReturn(sInfo);
        EasyMock.expect(dInfo.getExtensors(TypeMappingType.class)).andReturn(null);
        EasyMock.expect(sInfo.getDescription()).andReturn(dInfo);
        EasyMock.expect(msg.containsKey(Message.REQUESTOR_ROLE)).andReturn(true);
       
        inInterceptor.handleRequestMessage(msg, destination);
        EasyMock.expectLastCall();
       
        control.replay();
        inInterceptor.handleMessage(msg);
        control.verify();
    }
       
   
    /*public void testHandleNotRequestMessage() throws Exception {
       
        Method m = CorbaInInterceptor.class.getDeclaredMethod("getDataReader",
                            new Class[] {CorbaMessage.class});     
        Method m2 = CorbaInInterceptor.class.getDeclaredMethod("prepareArguments",
                            new Class[] {CorbaMessage.class, CorbaDestination.class,
                                         InterfaceInfo.class, ServiceInfo.class,
                                         OperationType.class, QName.class});     
        Method m3 = CorbaInInterceptor.class.getDeclaredMethod("addUnmarshalParams",
                         new Class[] {CorbaMessage.class, CorbaMessage.class,                                      
                                      List.class, InterfaceInfo.class,
                                      OperationType.class, EventDataReader.class});     
                                                                            
        CorbaInInterceptor inInterceptor = control.createMock(CorbaInInterceptor.class, new Method[] {m, m2, m3});                                                                   
        CorbaDestination destination = control.createMock(CorbaDestination.class);
        BindingInfo bInfo = control.createMock(BindingInfo.class);
        EasyMock.expect(destination.getBindingInfo()).andReturn(bInfo);       
        InterfaceInfo info = control.createMock(InterfaceInfo.class);
        EasyMock.expect(bInfo.getInterface()).andReturn(info);       
        CorbaMessage message = control.createMock(CorbaMessage.class);
        EventDataReader reader = control.createMock(EventDataReader.class);
        inInterceptor.getDataReader(message);
        EasyMock.expectLastCall().andReturn(reader);       
        Exchange exchange = control.createMock(Exchange.class);                                  
        EasyMock.expect(message.getExchange()).andReturn(exchange).times(2);
        EasyMock.expect(exchange.get(String.class)).andReturn("opName");       
        Collection<BindingOperationInfo> bopInfo = control.createMock(Collection.class);
        Iterator iterator = control.createMock(Iterator.class);
        EasyMock.expect(bInfo.getOperations()).andReturn(bopInfo);
        EasyMock.expect(bopInfo.iterator()).andReturn(iterator);          
        ServerRequest request = control.createMock(ServerRequest.class);
        EasyMock.expect(exchange.get(org.omg.CORBA.ServerRequest.class)).andReturn(request);        
        ServiceInfo sInfo = control.createMock(ServiceInfo.class);                     
        EasyMock.expectLastCall();
       
        control.replay();
        inInterceptor.handleNotRequestMessage(message, destination, sInfo);
        control.verify();          
       }
   
    public void testHandleRequestMessage() throws Exception {   
        Method m2 = CorbaInInterceptor.class.getDeclaredMethod("writeReturnValue",
                                   new Class[] {CorbaMessage.class,
                                                CorbaMessage.class,
                                                ArgType.class,
                                                EventDataReader.class});                                  
        Method m3 = CorbaInInterceptor.class.getDeclaredMethod("addUnmarshalParams",
                    new Class[] {CorbaMessage.class, CorbaMessage.class, List.class,
                        InterfaceInfo.class, OperationType.class, EventDataReader.class});                                                                                                                   
        CorbaInInterceptor inInterceptor =
            control.createMock(CorbaInInterceptor.class, new Method[] {m2, m3});
       
        CorbaDestination destination = control.createMock(CorbaDestination.class);
        BindingInfo bInfo = control.createMock(BindingInfo.class);
        CorbaMessage message = control.createMock(CorbaMessage.class);            
        EventDataReader reader = control.createMock(EventDataReader.class);
        inInterceptor.getDataReader(message);
        EasyMock.expectLastCall().andReturn(reader);       
        EasyMock.expect(destination.getBindingInfo()).andReturn(bInfo);       
        InterfaceInfo info = control.createMock(InterfaceInfo.class);
        EasyMock.expect(bInfo.getInterface()).andReturn(info);                                                         
        Exchange exchange = control.createMock(Exchange.class);              
        EasyMock.expect(message.getExchange()).andReturn(exchange);       
        BindingOperationInfo bopInfo = control.createMock(BindingOperationInfo.class);
        OperationType opType = control.createMock(OperationType.class);
        EasyMock.expect(exchange.get(BindingOperationInfo.class)).andReturn(bopInfo);
        EasyMock.expect(bopInfo.getExtensor(OperationType.class)).andReturn(opType);       
        EasyMock.expect(exchange.getOutMessage()).andReturn(message);
        ServiceInfo sInfo = control.createMock(ServiceInfo.class);
                                        
        control.replay();
        inInterceptor.handleRequestMessage(message, destination, sInfo);
        control.verify();          
    }*/
   
    /*
    public void testWriteReturnValue() throws Exception {
        CorbaInInterceptor inInterceptor = new CorbaInInterceptor();       
        CorbaMessage message = control.createMock(CorbaMessage.class);
        CorbaStreamable streamable = control.createMock(CorbaStreamable.class);
        EventDataReader reader = control.createMock(EventDataReader .class);
        ArgType argType = control.createMock(ArgType.class);
        BindingOperationInfo bopInfo = control.createMock(BindingOperationInfo.class);
        EasyMock.expect(message.getStreamableReturn()).andReturn(streamable);
        EasyMock.expect(streamable.getObject()).andReturn(null);
        EasyMock.expect(argType.getName()).andReturn(null);      
       
        control.replay();
        inInterceptor.writeReturnValue(message, message, bopInfo, argType, reader);
        control.verify();                
    }
    */
   
    /*public void testAddUnmarshalParams() throws Exception {
       // NEED TO DO
    }*/
   
   
    public void testPrepareArguments() throws Exception {   
        Method m = CorbaInInterceptor.class.getDeclaredMethod("prepareDIIArgsList",
                            new Class[] {CorbaMessage.class,
                                         CorbaStreamable[].class,
                                         List.class, List.class});                                                                                  
        CorbaInInterceptor inInterceptor = control.createMock(CorbaInInterceptor.class,
                                             new Method[] {m});
                                                                                                                      
        CorbaDestination destination = control.createMock(CorbaDestination.class);
        EndpointInfo endpointInfo = control.createMock(EndpointInfo.class);
        ServiceInfo sInfo = control.createMock(ServiceInfo.class);
        BindingInfo bInfo = control.createMock(BindingInfo.class);
        InterfaceInfo info = control.createMock(InterfaceInfo.class);
        BindingOperationInfo bopInfo = control.createMock(BindingOperationInfo.class);
        OperationInfo opInfo = control.createMock(OperationInfo.class);
        EasyMock.expect(destination.getBindingInfo()).andReturn(bInfo);
        EasyMock.expect(destination.getEndPointInfo()).andReturn(endpointInfo);               
        QName qname = new QName("" , "Test", "");
        EasyMock.expect(bInfo.getOperation(qname)).andReturn(bopInfo);
        EasyMock.expect(bopInfo.getOperationInfo()).andReturn(opInfo);                       
        CorbaMessage message = control.createMock(CorbaMessage.class);
        Exchange exchange = control.createMock(Exchange.class);
        EndpointReferenceType etype = control.createMock(EndpointReferenceType.class);
        MessageInfo mInfo = control.createMock(MessageInfo.class);
        EasyMock.expect(message.getExchange()).andReturn(exchange);     
        EasyMock.expect(destination.getAddress()).andReturn(etype);
        EasyMock.expect(opInfo.getInput()).andReturn(mInfo);
        exchange.setInMessage(message);
        EasyMock.expectLastCall();       
        OperationType opType = control.createMock(OperationType.class);
        List<ParamType> paramTypes = control.createMock(List.class);
        EasyMock.expect(opType.getParam()).andReturn(paramTypes);
        EasyMock.expect(paramTypes.size()).andReturn(0);
       
        control.replay();
        inInterceptor.prepareArguments(message, destination, info, opType, qname);
        control.verify();   
    }
   
    public void testprepareDIIArgsList() throws Exception {                       
        CorbaInInterceptor inInterceptor = new CorbaInInterceptor();
        CorbaStaxObject corbaStaxObject = new CorbaStaxObject();
        Message msg = new MessageImpl();
        CorbaMessage message = new CorbaMessage(msg);
        List<CorbaTypeMap> typeMaps = new ArrayList<CorbaTypeMap>();
        CorbaDestination destination = testUtils.getExceptionTypesTestDestination();
        ServiceInfo service = destination.getBindingInfo().getService();       
        List<TypeMappingType> corbaTypes = service.getDescription().getExtensors(TypeMappingType.class);
        if (corbaTypes != null) {
            CorbaUtils.createCorbaTypeMap(typeMaps, corbaTypes);
            corbaStaxObject.setTypeMaps(typeMaps);
        }
       
        QName name = new QName("http://schemas.apache.org/idl/except", "review_data", "");
        BindingInfo bInfo = destination.getBindingInfo();
        BindingOperationInfo bopInfo = bInfo.getOperation(name);       
        OperationType opType = bopInfo.getExtensor(OperationType.class);
        List<ParamType> paramTypes = opType.getParam();
                       
        inInterceptor.setOrb(orb);               
        CorbaStreamable[] streamables = new CorbaStreamable[1];   
        NVList nvlist = inInterceptor.prepareDIIArgsList(message, streamables, paramTypes, typeMaps);
        assertNotNull("NVList should not be null", nvlist != null);       
        assertEquals("There should be one item in the list", nvlist.count(), 1);
        assertEquals("Item name should be data", nvlist.item(0).name(), "data");
        assertEquals("Item flags should be 1", nvlist.item(0).flags(), 1);    
    }
    
    public void testprepareArgs() throws Exception {
        CorbaInInterceptor inInterceptor = new CorbaInInterceptor()
        Message msg = new MessageImpl();
        CorbaMessage message = new CorbaMessage(msg);       
        List<ParamType> paramTypes  = new ArrayList<ParamType>(1);
        ParamType param = new ParamType();
        QName type = new QName("", "structure", "");
        param.setName("param1");
        param.setIdltype(type);
        paramTypes.add(param);              
       
        inInterceptor.prepareArgs(message, paramTypes);
        List<Object> args = message.getContent(List.class);
        assertNotNull("args should exist and be empty", args !=  null);
    }
              
}
TOP

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

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.