Author: thomas.diesler(a)jboss.com
Date: 2006-11-14 13:57:35 -0500 (Tue, 14 Nov 2006)
New Revision: 1426
Removed:
branches/jbossws-1.0/src/main/java/org/jboss/ws/jaxrpc/MetaDataSynchronization.java
Modified:
branches/jbossws-1.0/src/main/java/org/jboss/ws/jaxrpc/ServiceImpl.java
branches/jbossws-1.0/src/main/java/org/jboss/ws/metadata/EndpointMetaData.java
branches/jbossws-1.0/src/main/java/org/jboss/ws/metadata/OperationMetaData.java
branches/jbossws-1.0/src/main/java/org/jboss/ws/metadata/ParameterMetaData.java
branches/jbossws-1.0/src/test/java/org/jboss/test/ws/jaxrpc/webserviceref/WebServiceRefClientTestCase.java
Log:
Fix CTS expected ServiceException on unsynchronized sei
Deleted:
branches/jbossws-1.0/src/main/java/org/jboss/ws/jaxrpc/MetaDataSynchronization.java
===================================================================
---
branches/jbossws-1.0/src/main/java/org/jboss/ws/jaxrpc/MetaDataSynchronization.java 2006-11-14
16:44:04 UTC (rev 1425)
+++
branches/jbossws-1.0/src/main/java/org/jboss/ws/jaxrpc/MetaDataSynchronization.java 2006-11-14
18:57:35 UTC (rev 1426)
@@ -1,64 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source
-* Copyright 2005, JBoss Inc., and individual contributors as indicated
-* by the @authors tag. See the copyright.txt in the distribution for a
-* full listing of individual contributors.
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
-*/
-// $Id$
-package org.jboss.ws.jaxrpc;
-
-import java.lang.reflect.Method;
-
-import javax.xml.rpc.ServiceException;
-
-import org.jboss.logging.Logger;
-import org.jboss.ws.metadata.EndpointMetaData;
-import org.jboss.ws.metadata.OperationMetaData;
-
-/** A helper that synchronizes the SEI with the endpoint meta data
- *
- * @author Thomas.Diesler(a)jboss.org
- * @author <a href="mailto:jason.greene@jboss.com">Jason T.
Greene</a>
- * @since 19-May-2005
- */
-public class MetaDataSynchronization
-{
- // provide logging
- private static final Logger log = Logger.getLogger(MetaDataSynchronization.class);
-
- public static void synchronizeServiceEndpointInterface(EndpointMetaData epMetaData,
Class seiClass) throws ServiceException
- {
- log.debug("synchronize: [epMetaData=" + epMetaData.getQName() +
",sei=" + seiClass.getName() + "]");
-
- if (epMetaData.getServiceEndpointInterface() != seiClass)
- throw new IllegalArgumentException("Endpoint meta data SEI missmatch,
expected: " + epMetaData.getServiceEndpointInterfaceName());
-
- /*
- Method[] methods = seiClass.getMethods();
- for (int i = 0; i < methods.length; i++)
- {
- Method method = methods[i];
- log.debug("synchronize method: " + method);
-
- OperationMetaData opMetaData = epMetaData.getOperation(method);
- if (opMetaData == null)
- throw new ServiceException("Cannot obtain operation meta data for
method: " + method);
- }
- */
- }
-}
Modified: branches/jbossws-1.0/src/main/java/org/jboss/ws/jaxrpc/ServiceImpl.java
===================================================================
--- branches/jbossws-1.0/src/main/java/org/jboss/ws/jaxrpc/ServiceImpl.java 2006-11-14
16:44:04 UTC (rev 1425)
+++ branches/jbossws-1.0/src/main/java/org/jboss/ws/jaxrpc/ServiceImpl.java 2006-11-14
18:57:35 UTC (rev 1426)
@@ -112,7 +112,7 @@
serviceMetaData = builder.buildMetaData(serviceName, wsdlURL, mappingURL,
securityConfig, serviceRefMetaData);
handlerRegistry = new HandlerRegistryImpl(serviceMetaData);
}
-
+
public ServiceMetaData getServiceMetaData()
{
return serviceMetaData;
@@ -316,17 +316,28 @@
if (serviceMetaData == null)
throw new ServiceException("Service meta data not available");
- EndpointMetaData epMetaData =
serviceMetaData.getEndpointByServiceEndpointInterface(seiName);
- if (epMetaData == null && serviceMetaData.getEndpoints().size() == 1)
+ try
{
- epMetaData = serviceMetaData.getEndpoints().get(0);
- epMetaData.setServiceEndpointInterfaceName(seiName);
- }
+ EndpointMetaData epMetaData =
serviceMetaData.getEndpointByServiceEndpointInterface(seiName);
+ if (epMetaData == null && serviceMetaData.getEndpoints().size() == 1)
+ {
+ epMetaData = serviceMetaData.getEndpoints().get(0);
+ epMetaData.setServiceEndpointInterfaceName(seiName);
+ }
- if (epMetaData == null)
- throw new ServiceException("Cannot find endpoint meta data for: " +
seiName);
+ if (epMetaData == null)
+ throw new ServiceException("Cannot find endpoint meta data for: " +
seiName);
- return createProxy(seiClass, epMetaData);
+ return createProxy(seiClass, epMetaData);
+ }
+ catch (ServiceException ex)
+ {
+ throw ex;
+ }
+ catch (Exception ex)
+ {
+ throw new ServiceException("Cannot create proxy", ex);
+ }
}
/**
@@ -352,24 +363,12 @@
if (epMetaData == null)
throw new ServiceException("Cannot obtain endpoint meta data for: " +
portName);
- if (epMetaData.getServiceEndpointInterfaceName() == null)
- epMetaData.setServiceEndpointInterfaceName(seiName);
-
- return createProxy(seiClass, epMetaData);
- }
-
- private Remote createProxy(Class seiClass, EndpointMetaData epMetaData) throws
ServiceException
- {
try
{
- MetaDataSynchronization.synchronizeServiceEndpointInterface(epMetaData,
seiClass);
- CallImpl call = new CallImpl(this, epMetaData);
+ if (epMetaData.getServiceEndpointInterfaceName() == null)
+ epMetaData.setServiceEndpointInterfaceName(seiName);
- CallProxy handler = new CallProxy(call);
- ClassLoader cl = epMetaData.getClassLoader();
- Remote proxy = (Remote)Proxy.newProxyInstance(cl, new Class[] { seiClass,
StubExt.class }, handler);
-
- return proxy;
+ return createProxy(seiClass, epMetaData);
}
catch (ServiceException ex)
{
@@ -381,6 +380,17 @@
}
}
+ private Remote createProxy(Class seiClass, EndpointMetaData epMetaData) throws
Exception
+ {
+ CallImpl call = new CallImpl(this, epMetaData);
+
+ CallProxy handler = new CallProxy(call);
+ ClassLoader cl = epMetaData.getClassLoader();
+ Remote proxy = (Remote)Proxy.newProxyInstance(cl, new Class[] { seiClass,
StubExt.class }, handler);
+
+ return proxy;
+ }
+
/**
* Get the handler chain for the given endpoint name, maybe null.
*/
Modified: branches/jbossws-1.0/src/main/java/org/jboss/ws/metadata/EndpointMetaData.java
===================================================================
---
branches/jbossws-1.0/src/main/java/org/jboss/ws/metadata/EndpointMetaData.java 2006-11-14
16:44:04 UTC (rev 1425)
+++
branches/jbossws-1.0/src/main/java/org/jboss/ws/metadata/EndpointMetaData.java 2006-11-14
18:57:35 UTC (rev 1426)
@@ -176,6 +176,9 @@
public void setServiceEndpointInterfaceName(String seiName)
{
+ this.seiName = seiName;
+ this.seiClass = null;
+
UnifiedMetaData wsMetaData = serviceMetaData.getUnifiedMetaData();
if (wsMetaData.isEagerInitialized())
{
@@ -185,9 +188,6 @@
// reinitialize
initializeInternal();
}
-
- this.seiName = seiName;
- this.seiClass = null;
}
/** Get the class loader associated with the endpoint meta data */
@@ -456,6 +456,9 @@
private void initializeInternal()
{
+ // reset sei class
+ seiClass = null;
+
// Initialize handlers
for (HandlerMetaData handler : handlers)
handler.eagerInitialize();
Modified: branches/jbossws-1.0/src/main/java/org/jboss/ws/metadata/OperationMetaData.java
===================================================================
---
branches/jbossws-1.0/src/main/java/org/jboss/ws/metadata/OperationMetaData.java 2006-11-14
16:44:04 UTC (rev 1425)
+++
branches/jbossws-1.0/src/main/java/org/jboss/ws/metadata/OperationMetaData.java 2006-11-14
18:57:35 UTC (rev 1426)
@@ -530,6 +530,9 @@
*/
public void eagerInitialize(List<Method> unsynchronizedMethods)
{
+ // reset java method
+ javaMethod = null;
+
for (ParameterMetaData parameter : parameters)
parameter.eagerInitialize();
Modified: branches/jbossws-1.0/src/main/java/org/jboss/ws/metadata/ParameterMetaData.java
===================================================================
---
branches/jbossws-1.0/src/main/java/org/jboss/ws/metadata/ParameterMetaData.java 2006-11-14
16:44:04 UTC (rev 1425)
+++
branches/jbossws-1.0/src/main/java/org/jboss/ws/metadata/ParameterMetaData.java 2006-11-14
18:57:35 UTC (rev 1426)
@@ -300,6 +300,9 @@
*/
public void eagerInitialize()
{
+ // reset java type
+ javaType = null;
+
TypesMetaData typesMetaData =
getOperationMetaData().getEndpointMetaData().getServiceMetaData().getTypesMetaData();
if (getOperationMetaData().isDocumentWrapped() && isMessageType() ==
false)
{
Modified:
branches/jbossws-1.0/src/test/java/org/jboss/test/ws/jaxrpc/webserviceref/WebServiceRefClientTestCase.java
===================================================================
---
branches/jbossws-1.0/src/test/java/org/jboss/test/ws/jaxrpc/webserviceref/WebServiceRefClientTestCase.java 2006-11-14
16:44:04 UTC (rev 1425)
+++
branches/jbossws-1.0/src/test/java/org/jboss/test/ws/jaxrpc/webserviceref/WebServiceRefClientTestCase.java 2006-11-14
18:57:35 UTC (rev 1426)
@@ -27,6 +27,8 @@
import javax.xml.namespace.QName;
import javax.xml.rpc.Service;
+import javax.xml.rpc.ServiceException;
+import javax.xml.rpc.ServiceFactory;
import junit.framework.Test;
@@ -45,7 +47,7 @@
public class WebServiceRefClientTestCase extends JBossWSTest
{
public final String TARGET_ENDPOINT_ADDRESS = "http://" + getServerHost() +
":8080/jaxrpc-webserviceref";
-
+
public static Test suite()
{
return JBossWSTestSetup.newTestSetup(WebServiceRefClientTestCase.class,
"jaxrpc-webserviceref.war, jaxrpc-webserviceref-client.jar");
@@ -58,7 +60,7 @@
WSDLDefinitions wsdlDefinitions = factory.parse(wsdlURL);
assertNotNull(wsdlDefinitions);
}
-
+
public void testDynamicProxy() throws Exception
{
URL wsdlURL = new
File("resources/jaxrpc/webserviceref/META-INF/wsdl/TestEndpoint.wsdl").toURL();
@@ -72,11 +74,31 @@
assertEquals(helloWorld, retObj);
}
+ public void testDynamicProxyNeg() throws Exception
+ {
+ URL wsdlURL = new
File("resources/jaxrpc/webserviceref/META-INF/wsdl/TestEndpoint.wsdl").toURL();
+ QName qname = new QName("http://org.jboss.ws/wsref",
"TestEndpointService");
+ Service service = ServiceFactory.newInstance().createService(wsdlURL, qname);
+ try
+ {
+ TestEndpoint port =
(TestEndpoint)service.getPort(java.rmi.activation.Activator.class);
+ fail("Expected ServiceException, but got: " + port);
+ }
+ catch (ServiceException ex)
+ {
+ // this is tested by the CTS
+ }
+ catch (Exception ex)
+ {
+ fail("Expected ServiceException, but got: " + ex);
+ }
+ }
+
public void testApplicationClient() throws Exception
{
String helloWorld = "Hello World!";
ApplicationClient.encCtx = getInitialContext();
- ApplicationClient.main(new String[]{helloWorld});
+ ApplicationClient.main(new String[] { helloWorld });
assertEquals(helloWorld, ApplicationClient.retStr);
}
}