/* * 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.interfacedef.java.introspection.impl; import static org.easymock.EasyMock.createMock; import static org.easymock.EasyMock.expectLastCall; import static org.easymock.EasyMock.replay; import static org.easymock.EasyMock.verify; import java.io.IOException; import java.util.List; import javax.xml.namespace.QName; import junit.framework.TestCase; import org.apache.tuscany.sca.interfacedef.DataType; import org.apache.tuscany.sca.interfacedef.InvalidInterfaceException; import org.apache.tuscany.sca.interfacedef.Operation; import org.apache.tuscany.sca.interfacedef.java.DefaultJavaInterfaceFactory; import org.apache.tuscany.sca.interfacedef.java.JavaInterface; import org.apache.tuscany.sca.interfacedef.java.JavaInterfaceFactory; import org.apache.tuscany.sca.interfacedef.java.introspect.JavaInterfaceVisitor; import org.apache.tuscany.sca.interfacedef.util.XMLType; import org.easymock.EasyMock; /** * @version $Rev$ $Date$ */ public class JavaInterfaceProcessorRegistryImplTestCase extends TestCase { private JavaInterfaceFactory factory; @SuppressWarnings("unchecked") public void testSimpleInterface() throws InvalidInterfaceException { JavaInterface intf = factory.createJavaInterface(Simple.class); assertEquals(Simple.class, intf.getJavaClass()); List operations = intf.getOperations(); assertEquals(1, operations.size()); Operation baseInt = operations.get(0); assertEquals("baseInt", baseInt.getName()); QName element = new QName("http://impl.introspection.java.interfacedef.sca.tuscany.apache.org/", "return"); DataType returnType = baseInt.getOutputType(); assertEquals(Integer.TYPE, returnType.getPhysical()); assertEquals(element, returnType.getLogical().getElementName()); List parameterTypes = baseInt.getInputType().getLogical(); assertEquals(1, parameterTypes.size()); DataType arg0 = parameterTypes.get(0); assertEquals(Integer.TYPE, arg0.getPhysical()); element = new QName("http://impl.introspection.java.interfacedef.sca.tuscany.apache.org/", "arg0"); assertEquals(element, arg0.getLogical().getElementName()); List faultTypes = baseInt.getFaultTypes(); assertEquals(1, faultTypes.size()); DataType> fault0 = faultTypes.get(0); assertEquals(IOException.class, fault0.getPhysical()); element = new QName("http://impl.introspection.java.interfacedef.sca.tuscany.apache.org/", "IOException"); assertEquals(element, fault0.getLogical().getLogical().getElementName()); } public void testUnregister() throws Exception { JavaInterfaceVisitor extension = createMock(JavaInterfaceVisitor.class); extension.visitInterface(EasyMock.isA(JavaInterface.class)); expectLastCall().once(); replay(extension); factory.addInterfaceVisitor(extension); factory.createJavaInterface(Base.class); factory.removeInterfaceVisitor(extension); factory.createJavaInterface(Base.class); verify(extension); } @Override protected void setUp() throws Exception { super.setUp(); factory = new DefaultJavaInterfaceFactory(); } private static interface Base { int baseInt(int param) throws IllegalArgumentException, IOException; } private static interface Simple extends Base { } }