[jboss-svn-commits] JBL Code SVN: r37451 - in labs/jbossesb/branches/JBESB_4_10_CP/product/rosetta: tests/src/org/jboss/soa/esb and 2 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Sep 2 22:48:56 EDT 2011
Author: kevin.conner at jboss.com
Date: 2011-09-02 22:48:56 -0400 (Fri, 02 Sep 2011)
New Revision: 37451
Added:
labs/jbossesb/branches/JBESB_4_10_CP/product/rosetta/tests/src/org/jboss/soa/esb/smooks/
labs/jbossesb/branches/JBESB_4_10_CP/product/rosetta/tests/src/org/jboss/soa/esb/smooks/resource/
labs/jbossesb/branches/JBESB_4_10_CP/product/rosetta/tests/src/org/jboss/soa/esb/smooks/resource/SmooksResourceUnitTest.java
labs/jbossesb/branches/JBESB_4_10_CP/product/rosetta/tests/src/org/jboss/soa/esb/smooks/resource/TestObject.java
labs/jbossesb/branches/JBESB_4_10_CP/product/rosetta/tests/src/org/jboss/soa/esb/smooks/resource/smooks-resource-test.xml
Modified:
labs/jbossesb/branches/JBESB_4_10_CP/product/rosetta/src/org/jboss/soa/esb/smooks/resource/SmooksResource.java
Log:
workaround smooks context classloader issue: JBESB-3658
Modified: labs/jbossesb/branches/JBESB_4_10_CP/product/rosetta/src/org/jboss/soa/esb/smooks/resource/SmooksResource.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_10_CP/product/rosetta/src/org/jboss/soa/esb/smooks/resource/SmooksResource.java 2011-09-02 17:15:49 UTC (rev 37450)
+++ labs/jbossesb/branches/JBESB_4_10_CP/product/rosetta/src/org/jboss/soa/esb/smooks/resource/SmooksResource.java 2011-09-03 02:48:56 UTC (rev 37451)
@@ -30,6 +30,8 @@
import org.jboss.soa.esb.lifecycle.LifecycleResourceException;
import org.jboss.soa.esb.lifecycle.LifecycleResourceFactory;
import org.milyn.Smooks;
+import org.milyn.container.standalone.StandaloneApplicationContext;
+import org.milyn.resource.URIResourceLocator;
import org.xml.sax.SAXException;
/**
@@ -64,7 +66,8 @@
public static Smooks createSmooksResource()
throws LifecycleResourceException
{
- final Smooks smooks = new Smooks() ;
+ final StandaloneApplicationContext applicationContext = new DeploymentApplicationContext(true) ;
+ final Smooks smooks = new Smooks(applicationContext) ;
lifecycleSmooksResource.getLifecycleResource().put(smooks, smooks) ;
return smooks;
@@ -81,7 +84,15 @@
public static Smooks createSmooksResource(final String config)
throws SAXException, IOException, LifecycleResourceException
{
- final Smooks smooks = new Smooks(config) ;
+ final URIResourceLocator resourceLocator = new URIResourceLocator() ;
+ resourceLocator.setBaseURI(URIResourceLocator.extractBaseURI(config)) ;
+
+ final StandaloneApplicationContext applicationContext = new DeploymentApplicationContext(true) ;
+ applicationContext.setResourceLocator(resourceLocator);
+
+ final Smooks smooks = new Smooks(applicationContext) ;
+ smooks.addConfigurations(config) ;
+
lifecycleSmooksResource.getLifecycleResource().put(smooks, smooks) ;
return smooks;
@@ -98,7 +109,12 @@
public static Smooks createSmooksResource(final InputStream is)
throws SAXException, IOException, LifecycleResourceException
{
- final Smooks smooks = new Smooks(is) ;
+ final StandaloneApplicationContext applicationContext = new DeploymentApplicationContext(true) ;
+ applicationContext.setResourceLocator(new URIResourceLocator()) ;
+
+ final Smooks smooks = new Smooks(applicationContext) ;
+ smooks.addConfigurations(is) ;
+
lifecycleSmooksResource.getLifecycleResource().put(smooks, smooks) ;
return smooks;
@@ -172,4 +188,43 @@
}
}
}
+
+ private static class DeploymentApplicationContext extends StandaloneApplicationContext
+ {
+ private ClassLoader classLoader ;
+
+ public DeploymentApplicationContext(final boolean registerInstalledResources)
+ {
+ super(registerInstalledResources) ;
+ }
+
+ @Override
+ public void setClassLoader(final ClassLoader classLoader)
+ {
+ this.classLoader = classLoader ;
+ }
+
+ @Override
+ public ClassLoader getClassLoader()
+ {
+ final ClassLoader result ;
+ if (classLoader != null)
+ {
+ result = classLoader ;
+ }
+ else
+ {
+ final ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader() ;
+ if (contextClassLoader != null)
+ {
+ result = contextClassLoader ;
+ }
+ else
+ {
+ result = getClass().getClassLoader() ;
+ }
+ }
+ return result ;
+ }
+ }
}
Added: labs/jbossesb/branches/JBESB_4_10_CP/product/rosetta/tests/src/org/jboss/soa/esb/smooks/resource/SmooksResourceUnitTest.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_10_CP/product/rosetta/tests/src/org/jboss/soa/esb/smooks/resource/SmooksResourceUnitTest.java (rev 0)
+++ labs/jbossesb/branches/JBESB_4_10_CP/product/rosetta/tests/src/org/jboss/soa/esb/smooks/resource/SmooksResourceUnitTest.java 2011-09-03 02:48:56 UTC (rev 37451)
@@ -0,0 +1,122 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2011, Red Hat Middleware LLC, and others contributors as indicated
+ * by the @authors tag. All rights reserved.
+ * See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ * This program is distributed in the hope that it will be useful, but WITHOUT A
+ * 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,
+ * v.2.1 along with this distribution; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301, USA.
+ */
+package org.jboss.soa.esb.smooks.resource;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import junit.framework.JUnit4TestAdapter;
+
+import org.jboss.soa.esb.lifecycle.LifecycleResourceException;
+import org.junit.Assert;
+import org.junit.Test;
+import org.milyn.Smooks;
+import org.xml.sax.SAXException;
+
+/**
+ * Tests for SmooksResource
+ */
+public class SmooksResourceUnitTest
+{
+ @Test
+ public void smooksInputStream()
+ throws LifecycleResourceException, SAXException, IOException
+ {
+ final InputStream is = getClass().getResourceAsStream("smooks-resource-test.xml") ;
+
+ final Thread currentThread = Thread.currentThread() ;
+ final ClassLoader current = currentThread.getContextClassLoader() ;
+ final TestClassLoader testClassLoader = new TestClassLoader(current) ;
+ currentThread.setContextClassLoader(testClassLoader) ;
+ try
+ {
+ final Smooks smooks = SmooksResource.createSmooksResource(is) ;
+ try
+ {
+ Assert.assertTrue("Context ClassLoader was not used", testClassLoader.isInvoked()) ;
+ }
+ finally
+ {
+ SmooksResource.closeSmooksResource(smooks) ;
+ }
+ }
+ finally
+ {
+ currentThread.setContextClassLoader(current) ;
+ }
+ }
+
+ @Test
+ public void smooksStringConfig()
+ throws LifecycleResourceException, SAXException, IOException
+ {
+ final String config = getClass().getPackage().getName().replace('.', '/') + "/smooks-resource-test.xml" ;
+
+ final Thread currentThread = Thread.currentThread() ;
+ final ClassLoader current = currentThread.getContextClassLoader() ;
+ final TestClassLoader testClassLoader = new TestClassLoader(current) ;
+ currentThread.setContextClassLoader(testClassLoader) ;
+ try
+ {
+ final Smooks smooks = SmooksResource.createSmooksResource(config) ;
+ try
+ {
+ Assert.assertTrue("Context ClassLoader was not used", testClassLoader.isInvoked()) ;
+ }
+ finally
+ {
+ SmooksResource.closeSmooksResource(smooks) ;
+ }
+ }
+ finally
+ {
+ currentThread.setContextClassLoader(current) ;
+ }
+ }
+
+ private static class TestClassLoader extends ClassLoader
+ {
+ private boolean invoked ;
+
+ TestClassLoader(final ClassLoader parent)
+ {
+ super(parent) ;
+ }
+
+ @Override
+ protected synchronized Class<?> loadClass(String name, boolean resolve)
+ throws ClassNotFoundException
+ {
+ if (TestObject.class.getCanonicalName().equals(name))
+ {
+ invoked = true ;
+ }
+ return super.loadClass(name, resolve) ;
+ }
+
+ boolean isInvoked()
+ {
+ return invoked ;
+ }
+ }
+
+ public static junit.framework.Test suite()
+ {
+ return new JUnit4TestAdapter( SmooksResourceUnitTest.class );
+ }
+}
Added: labs/jbossesb/branches/JBESB_4_10_CP/product/rosetta/tests/src/org/jboss/soa/esb/smooks/resource/TestObject.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_10_CP/product/rosetta/tests/src/org/jboss/soa/esb/smooks/resource/TestObject.java (rev 0)
+++ labs/jbossesb/branches/JBESB_4_10_CP/product/rosetta/tests/src/org/jboss/soa/esb/smooks/resource/TestObject.java 2011-09-03 02:48:56 UTC (rev 37451)
@@ -0,0 +1,42 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2011, Red Hat Middleware LLC, and others contributors as indicated
+ * by the @authors tag. All rights reserved.
+ * See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ * This program is distributed in the hope that it will be useful, but WITHOUT A
+ * 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,
+ * v.2.1 along with this distribution; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301, USA.
+ */
+package org.jboss.soa.esb.smooks.resource;
+
+import junit.framework.JUnit4TestAdapter;
+
+import org.jboss.soa.esb.lifecycle.LifecycleResourceException;
+import org.junit.Test;
+import org.milyn.Smooks;
+
+/**
+ * Test Object for SmooksResource test
+ */
+public class TestObject
+{
+ private boolean testField ;
+
+ public boolean isTestField()
+ {
+ return testField ;
+ }
+
+ public void boolean setTestField(final boolean testField)
+ {
+ this.testField = testField ;
+ }
+}
Added: labs/jbossesb/branches/JBESB_4_10_CP/product/rosetta/tests/src/org/jboss/soa/esb/smooks/resource/smooks-resource-test.xml
===================================================================
--- labs/jbossesb/branches/JBESB_4_10_CP/product/rosetta/tests/src/org/jboss/soa/esb/smooks/resource/smooks-resource-test.xml (rev 0)
+++ labs/jbossesb/branches/JBESB_4_10_CP/product/rosetta/tests/src/org/jboss/soa/esb/smooks/resource/smooks-resource-test.xml 2011-09-03 02:48:56 UTC (rev 37451)
@@ -0,0 +1,9 @@
+<smooks-resource-list xmlns="http://www.milyn.org/xsd/smooks-1.1.xsd" xmlns:jb="http://www.milyn.org/xsd/smooks/javabean-1.2.xsd">
+ <params>
+ <param name="stream.filter.type">SAX</param>
+ </params>
+
+ <jb:bean beanId="complexObject" createOnElement="$document" class="org.jboss.soa.esb.smooks.resource.TestObject">
+ <jb:value property="booleanField" data="testField" />
+ </jb:bean>
+</smooks-resource-list>
\ No newline at end of file
More information about the jboss-svn-commits
mailing list