[jboss-svn-commits] JBL Code SVN: r31149 - in labs/jbossesb/branches/JBESB_4_7_CP/product: rosetta/src/org/jboss/soa/esb/listeners/config/mappers and 4 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Jan 19 14:53:18 EST 2010


Author: dward
Date: 2010-01-19 14:53:18 -0500 (Tue, 19 Jan 2010)
New Revision: 31149

Modified:
   labs/jbossesb/branches/JBESB_4_7_CP/product/rosetta/src/org/jboss/internal/soa/esb/publish/ActionContractPublisher.java
   labs/jbossesb/branches/JBESB_4_7_CP/product/rosetta/src/org/jboss/soa/esb/listeners/config/mappers/XMLBeansModel.java
   labs/jbossesb/branches/JBESB_4_7_CP/product/rosetta/src/org/jboss/soa/esb/listeners/config/mappers110/XMLBeansModel.java
   labs/jbossesb/branches/JBESB_4_7_CP/product/rosetta/src/org/jboss/soa/esb/listeners/config/mappers120/XMLBeansModel.java
   labs/jbossesb/branches/JBESB_4_7_CP/product/services/soap/src/main/java/org/jboss/soa/esb/actions/soap/AbstractWsdlContractPublisher.java
   labs/jbossesb/branches/JBESB_4_7_CP/product/services/soap/src/main/java/org/jboss/soa/esb/actions/soap/proxy/SOAPProxyWsdlContractPublisher.java
Log:
Fix for JBESB-3034 ( https://jira.jboss.org/jira/browse/JBESB-3034 ).


Modified: labs/jbossesb/branches/JBESB_4_7_CP/product/rosetta/src/org/jboss/internal/soa/esb/publish/ActionContractPublisher.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_7_CP/product/rosetta/src/org/jboss/internal/soa/esb/publish/ActionContractPublisher.java	2010-01-19 19:43:17 UTC (rev 31148)
+++ labs/jbossesb/branches/JBESB_4_7_CP/product/rosetta/src/org/jboss/internal/soa/esb/publish/ActionContractPublisher.java	2010-01-19 19:53:18 UTC (rev 31149)
@@ -1,5 +1,9 @@
 package org.jboss.internal.soa.esb.publish;
 
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
+import java.lang.reflect.Proxy;
+
 import org.jboss.soa.esb.ConfigurationException;
 import org.jboss.soa.esb.listeners.config.Action;
 
@@ -17,4 +21,38 @@
      * @throws org.jboss.soa.esb.ConfigurationException Configuration exception.
      */
     public void setActionConfig(Action actionConfig) throws ConfigurationException;
+    
+    // JBESB-3034
+    public static class ProxyFactory {
+    	
+    	private static final String MockContractPublisher = "org.jboss.soa.esb.listeners.config.MockContractPublisher";
+    	
+    	public static ActionContractPublisher createContextClassLoaderProxy(final ActionContractPublisher pub) {
+    		// can't use "instanceof" since it's only on the test classpath and not on the "ant dist" classpath
+    		if ( pub.getClass().getName().equals(MockContractPublisher) ) {
+    			return pub;
+    		}
+    		final Class<?>[] ifaces;
+    		if (pub instanceof ServletContractPublisher) {
+    			ifaces = new Class[]{ActionContractPublisher.class, ServletContractPublisher.class};
+    		} else {
+    			ifaces = new Class[]{ActionContractPublisher.class};
+    		}
+        	InvocationHandler handler = new InvocationHandler() {
+        		private final ClassLoader new_loader = Thread.currentThread().getContextClassLoader();
+    			public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
+    				final ClassLoader old_loader = Thread.currentThread().getContextClassLoader();
+    				Thread.currentThread().setContextClassLoader(new_loader);
+    				try {
+    					return method.invoke(pub, args);
+    				} finally {
+    					Thread.currentThread().setContextClassLoader(old_loader);
+    				}
+    			}
+        	};
+        	return (ActionContractPublisher)Proxy.newProxyInstance(pub.getClass().getClassLoader(), ifaces, handler);
+    	}
+    	
+    }
+    
 }

Modified: labs/jbossesb/branches/JBESB_4_7_CP/product/rosetta/src/org/jboss/soa/esb/listeners/config/mappers/XMLBeansModel.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_7_CP/product/rosetta/src/org/jboss/soa/esb/listeners/config/mappers/XMLBeansModel.java	2010-01-19 19:43:17 UTC (rev 31148)
+++ labs/jbossesb/branches/JBESB_4_7_CP/product/rosetta/src/org/jboss/soa/esb/listeners/config/mappers/XMLBeansModel.java	2010-01-19 19:53:18 UTC (rev 31149)
@@ -392,6 +392,8 @@
 
                     if(actionInfo.getProperties().getProperty("publishContract", "true").equals("true")) {
                         publisher.setActionConfig(actionInfo);
+                        // JBESB-3034
+                        publisher = ActionContractPublisher.ProxyFactory.createContextClassLoaderProxy(publisher);
                         return publisher;
                     }
                 } catch (ClassCastException e) {

Modified: labs/jbossesb/branches/JBESB_4_7_CP/product/rosetta/src/org/jboss/soa/esb/listeners/config/mappers110/XMLBeansModel.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_7_CP/product/rosetta/src/org/jboss/soa/esb/listeners/config/mappers110/XMLBeansModel.java	2010-01-19 19:43:17 UTC (rev 31148)
+++ labs/jbossesb/branches/JBESB_4_7_CP/product/rosetta/src/org/jboss/soa/esb/listeners/config/mappers110/XMLBeansModel.java	2010-01-19 19:53:18 UTC (rev 31149)
@@ -392,6 +392,8 @@
 
                     if(actionInfo.getProperties().getProperty("publishContract", "true").equals("true")) {
                         publisher.setActionConfig(actionInfo);
+                        // JBESB-3034
+                        publisher = ActionContractPublisher.ProxyFactory.createContextClassLoaderProxy(publisher);
                         return publisher;
                     }
                 } catch (ClassCastException e) {

Modified: labs/jbossesb/branches/JBESB_4_7_CP/product/rosetta/src/org/jboss/soa/esb/listeners/config/mappers120/XMLBeansModel.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_7_CP/product/rosetta/src/org/jboss/soa/esb/listeners/config/mappers120/XMLBeansModel.java	2010-01-19 19:43:17 UTC (rev 31148)
+++ labs/jbossesb/branches/JBESB_4_7_CP/product/rosetta/src/org/jboss/soa/esb/listeners/config/mappers120/XMLBeansModel.java	2010-01-19 19:53:18 UTC (rev 31149)
@@ -444,6 +444,8 @@
 
                     if(actionInfo.getProperties().getProperty("publishContract", "true").equals("true")) {
                         publisher.setActionConfig(actionInfo);
+                        // JBESB-3034
+                        publisher = ActionContractPublisher.ProxyFactory.createContextClassLoaderProxy(publisher);
                         return publisher;
                     }
                 } catch (ClassCastException e) {

Modified: labs/jbossesb/branches/JBESB_4_7_CP/product/services/soap/src/main/java/org/jboss/soa/esb/actions/soap/AbstractWsdlContractPublisher.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_7_CP/product/services/soap/src/main/java/org/jboss/soa/esb/actions/soap/AbstractWsdlContractPublisher.java	2010-01-19 19:43:17 UTC (rev 31148)
+++ labs/jbossesb/branches/JBESB_4_7_CP/product/services/soap/src/main/java/org/jboss/soa/esb/actions/soap/AbstractWsdlContractPublisher.java	2010-01-19 19:53:18 UTC (rev 31149)
@@ -143,12 +143,7 @@
                 if (data != null) {
                 	contract.setData( updateWsdl(data, epr, targetServiceCat, targetServiceName, targetProtocol) );
                 } else {
-                	if ( wsdlAddress.startsWith("classpath://") ) {
-                    	contract.setMimeType("text/plain");
-                    	contract.setData("'" + wsdlAddress + "' unavailable: WSDL address URI format unsupported by contract application unless 'http-gateway' is employed.");
-                	} else {
-                		throw new Exception("null Contract data");
-                	}
+                	throw new Exception("null Contract data");
                 }
             } catch (Exception e) {
                 logger.error("Failed to load WSDL contract information from address '" + wsdlAddress + "'.", e);

Modified: labs/jbossesb/branches/JBESB_4_7_CP/product/services/soap/src/main/java/org/jboss/soa/esb/actions/soap/proxy/SOAPProxyWsdlContractPublisher.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_7_CP/product/services/soap/src/main/java/org/jboss/soa/esb/actions/soap/proxy/SOAPProxyWsdlContractPublisher.java	2010-01-19 19:43:17 UTC (rev 31148)
+++ labs/jbossesb/branches/JBESB_4_7_CP/product/services/soap/src/main/java/org/jboss/soa/esb/actions/soap/proxy/SOAPProxyWsdlContractPublisher.java	2010-01-19 19:53:18 UTC (rev 31149)
@@ -104,7 +104,9 @@
 		}
 		else
 		{
-			contract = new ContractInfo( "text/xml", getWsdl(getWsdlAddress()) );
+			// !!! *HAS* TO BE THE *SUPER* CLASS' IMPLEMENTATION !!!
+			// --> AbstractWsdlContractPublisher.getContractInfo(String) <--
+			contract = super.getContractInfo( getWsdlAddress() );
 		}
 		return contract; 
 	}



More information about the jboss-svn-commits mailing list