You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by jb...@apache.org on 2006/09/29 17:02:16 UTC
svn commit: r451319 - in /incubator/tuscany/java/sca/runtime/webapp/src:
main/java/org/apache/tuscany/runtime/webapp/
test/java/org/apache/tuscany/runtime/webapp/
Author: jboynes
Date: Fri Sep 29 08:02:15 2006
New Revision: 451319
URL: http://svn.apache.org/viewvc?view=rev&rev=451319
Log:
refactor webapp property support into a utility class
Added:
incubator/tuscany/java/sca/runtime/webapp/src/main/java/org/apache/tuscany/runtime/webapp/WebappUtil.java (with props)
incubator/tuscany/java/sca/runtime/webapp/src/main/java/org/apache/tuscany/runtime/webapp/WebappUtilImpl.java (with props)
incubator/tuscany/java/sca/runtime/webapp/src/test/java/org/apache/tuscany/runtime/webapp/WebappUtilTestCase.java (with props)
Modified:
incubator/tuscany/java/sca/runtime/webapp/src/main/java/org/apache/tuscany/runtime/webapp/TuscanyContextListener.java
incubator/tuscany/java/sca/runtime/webapp/src/test/java/org/apache/tuscany/runtime/webapp/TuscanyContextListenerTestCase.java
Modified: incubator/tuscany/java/sca/runtime/webapp/src/main/java/org/apache/tuscany/runtime/webapp/TuscanyContextListener.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/runtime/webapp/src/main/java/org/apache/tuscany/runtime/webapp/TuscanyContextListener.java?view=diff&rev=451319&r1=451318&r2=451319
==============================================================================
--- incubator/tuscany/java/sca/runtime/webapp/src/main/java/org/apache/tuscany/runtime/webapp/TuscanyContextListener.java (original)
+++ incubator/tuscany/java/sca/runtime/webapp/src/main/java/org/apache/tuscany/runtime/webapp/TuscanyContextListener.java Fri Sep 29 08:02:15 2006
@@ -20,22 +20,12 @@
import java.net.MalformedURLException;
import java.net.URL;
-import java.net.URLClassLoader;
-import java.util.Set;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import org.apache.tuscany.api.TuscanyRuntimeException;
-import static org.apache.tuscany.runtime.webapp.Constants.APPLICATION_SCDL_PATH_DEFAULT;
-import static org.apache.tuscany.runtime.webapp.Constants.APPLICATION_SCDL_PATH_PARAM;
-import static org.apache.tuscany.runtime.webapp.Constants.BOOTDIR_DEFAULT;
-import static org.apache.tuscany.runtime.webapp.Constants.BOOTDIR_PARAM;
import static org.apache.tuscany.runtime.webapp.Constants.RUNTIME_ATTRIBUTE;
-import static org.apache.tuscany.runtime.webapp.Constants.RUNTIME_DEFAULT;
-import static org.apache.tuscany.runtime.webapp.Constants.RUNTIME_PARAM;
-import static org.apache.tuscany.runtime.webapp.Constants.SYSTEM_SCDL_PATH_DEFAULT;
-import static org.apache.tuscany.runtime.webapp.Constants.SYSTEM_SCDL_PATH_PARAM;
/**
* Launches a Tuscany runtime in a web application, loading information from servlet context parameters. This listener
@@ -60,15 +50,16 @@
public void contextInitialized(ServletContextEvent event) {
ServletContext servletContext = event.getServletContext();
+ WebappUtil utils = getUtils(servletContext);
try {
ClassLoader webappClassLoader = Thread.currentThread().getContextClassLoader();
- ClassLoader bootClassLoader = getBootClassLoader(servletContext, webappClassLoader);
- WebappRuntime runtime = getRuntime(servletContext, bootClassLoader);
+ ClassLoader bootClassLoader = utils.getBootClassLoader(webappClassLoader);
+ WebappRuntime runtime = utils.getRuntime(bootClassLoader);
WebappRuntimeInfo info = new WebappRuntimeInfoImpl(servletContext,
servletContext.getResource("/WEB-INF/tuscany/"));
- URL systemScdl = getSystemScdl(servletContext, bootClassLoader);
- URL applicationScdl = getApplicationScdl(servletContext, webappClassLoader);
- String name = getApplicationName(servletContext);
+ URL systemScdl = utils.getSystemScdl(bootClassLoader);
+ URL applicationScdl = utils.getApplicationScdl(webappClassLoader);
+ String name = utils.getApplicationName();
runtime.setServletContext(servletContext);
runtime.setMonitorFactory(runtime.createDefaultMonitorFactory());
@@ -89,6 +80,10 @@
}
}
+ protected WebappUtil getUtils(ServletContext servletContext) {
+ return new WebappUtilImpl(servletContext);
+ }
+
public void contextDestroyed(ServletContextEvent event) {
ServletContext servletContext = event.getServletContext();
WebappRuntime runtime = (WebappRuntime) servletContext.getAttribute(RUNTIME_ATTRIBUTE);
@@ -100,98 +95,4 @@
runtime.destroy();
}
- /**
- * Return the classloader that should be used to boot the Tuscany runtime.
- * This will be a child of the web application's ClassLoader.
- *
- * @param servletContext the servlet context for the webapp containing the bootstrap classes
- * @param webappClassLoader the web application's classloader
- * @return a classloader that can be used to load the Tuscany runtime classes
- */
- protected ClassLoader getBootClassLoader(ServletContext servletContext, ClassLoader webappClassLoader) {
- String bootDirName = getInitParameter(servletContext, BOOTDIR_PARAM, BOOTDIR_DEFAULT);
- Set paths = servletContext.getResourcePaths(bootDirName);
- if (paths == null) {
- // nothing in boot directory, assume everything is in the webapp classloader
- return webappClassLoader;
- }
- URL[] urls = new URL[paths.size()];
- int i = 0;
- for (Object path : paths) {
- try {
- urls[i++] = servletContext.getResource((String) path);
- } catch (MalformedURLException e) {
- throw new AssertionError("getResourcePaths returned an invalid path: " + path);
- }
- }
- return new URLClassLoader(urls, webappClassLoader);
- }
-
- protected WebappRuntime getRuntime(ServletContext servletContext, ClassLoader bootClassLoader) {
- try {
- String className = getInitParameter(servletContext, RUNTIME_PARAM, RUNTIME_DEFAULT);
- Class<?> runtimeClass = bootClassLoader.loadClass(className);
- return (WebappRuntime) runtimeClass.newInstance();
- } catch (InstantiationException e) {
- throw new TuscanyInitException("Invalid runtime class", e);
- } catch (IllegalAccessException e) {
- throw new TuscanyInitException("Invalid runtime class", e);
- } catch (ClassNotFoundException e) {
- throw new TuscanyInitException("Runtime Implementation not found", e);
- }
- }
-
- protected URL getSystemScdl(ServletContext servletContext, ClassLoader bootClassLoader) {
- String path = getInitParameter(servletContext, SYSTEM_SCDL_PATH_PARAM, SYSTEM_SCDL_PATH_DEFAULT);
- try {
- return getScdlURL(path, servletContext, bootClassLoader);
- } catch (MalformedURLException e) {
- throw new TuscanyInitException("Invalid resource path for " + SYSTEM_SCDL_PATH_PARAM + " : " + path, e);
- }
- }
-
- protected String getApplicationName(ServletContext servletContext) {
- String name = servletContext.getServletContextName();
- if (name == null) {
- name = "application";
- }
- return name;
- }
-
- protected URL getApplicationScdl(ServletContext servletContext, ClassLoader bootClassLoader) {
- String path = getInitParameter(servletContext, APPLICATION_SCDL_PATH_PARAM, APPLICATION_SCDL_PATH_DEFAULT);
- try {
- return getScdlURL(path, servletContext, bootClassLoader);
- } catch (MalformedURLException e) {
- throw new TuscanyInitException("Invalid resource path for " + APPLICATION_SCDL_PATH_PARAM + " : " + path,
- e);
- }
- }
-
- protected URL getScdlURL(String path, ServletContext servletContext, ClassLoader classLoader)
- throws MalformedURLException {
- if (path.charAt(0) == '/') {
- // user supplied an absolute path - look up as a webapp resource
- return servletContext.getResource(path);
- } else {
- // user supplied a relative path - look up as a boot classpath resource
- return classLoader.getResource(path);
- }
- }
-
- /**
- * Return a init parameter from the servlet context or provide a default.
- *
- * @param servletContext the servlet context for the application
- * @param name the name of the parameter
- * @param value the default value
- * @return the value of the specified parameter, or the default if not defined
- */
- protected String getInitParameter(ServletContext servletContext, String name, String value) {
- String result = servletContext.getInitParameter(name);
- if (result != null && result.length() != 0) {
- return result;
- }
- return value;
- }
}
Added: incubator/tuscany/java/sca/runtime/webapp/src/main/java/org/apache/tuscany/runtime/webapp/WebappUtil.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/runtime/webapp/src/main/java/org/apache/tuscany/runtime/webapp/WebappUtil.java?view=auto&rev=451319
==============================================================================
--- incubator/tuscany/java/sca/runtime/webapp/src/main/java/org/apache/tuscany/runtime/webapp/WebappUtil.java (added)
+++ incubator/tuscany/java/sca/runtime/webapp/src/main/java/org/apache/tuscany/runtime/webapp/WebappUtil.java Fri Sep 29 08:02:15 2006
@@ -0,0 +1,57 @@
+/*
+ * 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.runtime.webapp;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public interface WebappUtil {
+ /**
+ * Return the classloader that should be used to boot the Tuscany runtime.
+ * This will be a child of the web application's ClassLoader.
+ *
+ * @param servletContext the servlet context for the webapp containing the bootstrap classes
+ * @param webappClassLoader the web application's classloader
+ * @return a classloader that can be used to load the Tuscany runtime classes
+ */
+ ClassLoader getBootClassLoader(ClassLoader webappClassLoader);
+
+ WebappRuntime getRuntime(ClassLoader bootClassLoader);
+
+ URL getSystemScdl(ClassLoader bootClassLoader);
+
+ String getApplicationName();
+
+ URL getApplicationScdl(ClassLoader bootClassLoader);
+
+ URL getScdlURL(String path, ClassLoader classLoader)
+ throws MalformedURLException;
+
+ /**
+ * Return a init parameter from the servlet context or provide a default.
+ *
+ * @param name the name of the parameter
+ * @param value the default value
+ * @return the value of the specified parameter, or the default if not defined
+ */
+ String getInitParameter(String name, String value);
+}
Propchange: incubator/tuscany/java/sca/runtime/webapp/src/main/java/org/apache/tuscany/runtime/webapp/WebappUtil.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/runtime/webapp/src/main/java/org/apache/tuscany/runtime/webapp/WebappUtil.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: incubator/tuscany/java/sca/runtime/webapp/src/main/java/org/apache/tuscany/runtime/webapp/WebappUtilImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/runtime/webapp/src/main/java/org/apache/tuscany/runtime/webapp/WebappUtilImpl.java?view=auto&rev=451319
==============================================================================
--- incubator/tuscany/java/sca/runtime/webapp/src/main/java/org/apache/tuscany/runtime/webapp/WebappUtilImpl.java (added)
+++ incubator/tuscany/java/sca/runtime/webapp/src/main/java/org/apache/tuscany/runtime/webapp/WebappUtilImpl.java Fri Sep 29 08:02:15 2006
@@ -0,0 +1,124 @@
+/*
+ * 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.runtime.webapp;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.util.Set;
+import javax.servlet.ServletContext;
+
+import static org.apache.tuscany.runtime.webapp.Constants.APPLICATION_SCDL_PATH_DEFAULT;
+import static org.apache.tuscany.runtime.webapp.Constants.APPLICATION_SCDL_PATH_PARAM;
+import static org.apache.tuscany.runtime.webapp.Constants.BOOTDIR_DEFAULT;
+import static org.apache.tuscany.runtime.webapp.Constants.BOOTDIR_PARAM;
+import static org.apache.tuscany.runtime.webapp.Constants.RUNTIME_DEFAULT;
+import static org.apache.tuscany.runtime.webapp.Constants.RUNTIME_PARAM;
+import static org.apache.tuscany.runtime.webapp.Constants.SYSTEM_SCDL_PATH_DEFAULT;
+import static org.apache.tuscany.runtime.webapp.Constants.SYSTEM_SCDL_PATH_PARAM;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class WebappUtilImpl implements WebappUtil {
+ private final ServletContext servletContext;
+
+ public WebappUtilImpl(ServletContext servletContext) {
+ this.servletContext = servletContext;
+ }
+
+ public ClassLoader getBootClassLoader(ClassLoader webappClassLoader) {
+ String bootDirName = getInitParameter(BOOTDIR_PARAM, BOOTDIR_DEFAULT);
+ Set paths = servletContext.getResourcePaths(bootDirName);
+ if (paths == null) {
+ // nothing in boot directory, assume everything is in the webapp classloader
+ return webappClassLoader;
+ }
+ URL[] urls = new URL[paths.size()];
+ int i = 0;
+ for (Object path : paths) {
+ try {
+ urls[i++] = servletContext.getResource((String) path);
+ } catch (MalformedURLException e) {
+ throw new AssertionError("getResourcePaths returned an invalid path: " + path);
+ }
+ }
+ return new URLClassLoader(urls, webappClassLoader);
+ }
+
+ public WebappRuntime getRuntime(ClassLoader bootClassLoader) {
+ try {
+ String className = getInitParameter(RUNTIME_PARAM, RUNTIME_DEFAULT);
+ Class<?> runtimeClass = bootClassLoader.loadClass(className);
+ return (WebappRuntime) runtimeClass.newInstance();
+ } catch (InstantiationException e) {
+ throw new TuscanyInitException("Invalid runtime class", e);
+ } catch (IllegalAccessException e) {
+ throw new TuscanyInitException("Invalid runtime class", e);
+ } catch (ClassNotFoundException e) {
+ throw new TuscanyInitException("Runtime Implementation not found", e);
+ }
+ }
+
+ public URL getSystemScdl(ClassLoader bootClassLoader) {
+ String path = getInitParameter(SYSTEM_SCDL_PATH_PARAM, SYSTEM_SCDL_PATH_DEFAULT);
+ try {
+ return getScdlURL(path, bootClassLoader);
+ } catch (MalformedURLException e) {
+ throw new TuscanyInitException("Invalid resource path for " + SYSTEM_SCDL_PATH_PARAM + " : " + path, e);
+ }
+ }
+
+ public String getApplicationName() {
+ String name = servletContext.getServletContextName();
+ if (name == null) {
+ name = "application";
+ }
+ return name;
+ }
+
+ public URL getApplicationScdl(ClassLoader bootClassLoader) {
+ String path = getInitParameter(APPLICATION_SCDL_PATH_PARAM, APPLICATION_SCDL_PATH_DEFAULT);
+ try {
+ return getScdlURL(path, bootClassLoader);
+ } catch (MalformedURLException e) {
+ throw new TuscanyInitException("Invalid resource path for " + APPLICATION_SCDL_PATH_PARAM + " : " + path,
+ e);
+ }
+ }
+
+ public URL getScdlURL(String path, ClassLoader classLoader)
+ throws MalformedURLException {
+ if (path.charAt(0) == '/') {
+ // user supplied an absolute path - look up as a webapp resource
+ return servletContext.getResource(path);
+ } else {
+ // user supplied a relative path - look up as a boot classpath resource
+ return classLoader.getResource(path);
+ }
+ }
+
+ public String getInitParameter(String name, String value) {
+ String result = servletContext.getInitParameter(name);
+ if (result != null && result.length() != 0) {
+ return result;
+ }
+ return value;
+ }
+}
Propchange: incubator/tuscany/java/sca/runtime/webapp/src/main/java/org/apache/tuscany/runtime/webapp/WebappUtilImpl.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/runtime/webapp/src/main/java/org/apache/tuscany/runtime/webapp/WebappUtilImpl.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified: incubator/tuscany/java/sca/runtime/webapp/src/test/java/org/apache/tuscany/runtime/webapp/TuscanyContextListenerTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/runtime/webapp/src/test/java/org/apache/tuscany/runtime/webapp/TuscanyContextListenerTestCase.java?view=diff&rev=451319&r1=451318&r2=451319
==============================================================================
--- incubator/tuscany/java/sca/runtime/webapp/src/test/java/org/apache/tuscany/runtime/webapp/TuscanyContextListenerTestCase.java (original)
+++ incubator/tuscany/java/sca/runtime/webapp/src/test/java/org/apache/tuscany/runtime/webapp/TuscanyContextListenerTestCase.java Fri Sep 29 08:02:15 2006
@@ -19,7 +19,6 @@
package org.apache.tuscany.runtime.webapp;
import java.net.URL;
-import java.net.MalformedURLException;
import java.lang.reflect.Method;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
@@ -36,147 +35,67 @@
private ServletContext context;
private TuscanyContextListener listener;
private ClassLoader cl;
+ private ClassLoader bootClassLoader;
private URL systemUrl;
private URL applicationUrl;
- private Method getRuntimeMethod;
+ private Method getUtilsMethod;
private MonitorFactory monitorFactory;
+ private WebappUtil utils;
public void testInitializationUsingDefaults() throws Exception {
+ ServletContextEvent event = createMock(ServletContextEvent.class);
+ expect(event.getServletContext()).andReturn(context);
+ replay(event);
+
+ WebappRuntime runtime = createMock(WebappRuntime.class);
+ expect(utils.getBootClassLoader(cl)).andReturn(bootClassLoader);
+ expect(utils.getRuntime(bootClassLoader)).andReturn(runtime);
+ expect(utils.getSystemScdl(bootClassLoader)).andReturn(systemUrl);
+ expect(utils.getApplicationScdl(cl)).andReturn(applicationUrl);
+ expect(utils.getApplicationName()).andReturn("application");
+ replay(utils);
+
+ expect(context.getResource("/WEB-INF/tuscany/")).andReturn(null);
+ context.setAttribute(eq(Constants.RUNTIME_ATTRIBUTE), isA(WebappRuntime.class));
+ replay(context);
+ replay(cl);
+ replay(bootClassLoader);
+ expect(listener.getUtils(context)).andReturn(utils);
+ replay(listener);
+ runtime.setServletContext(context);
+ expect(runtime.createDefaultMonitorFactory()).andReturn(monitorFactory);
+ runtime.setMonitorFactory(monitorFactory);
+ runtime.setRuntimeInfo(isA(WebappRuntimeInfo.class));
+ runtime.setHostClassLoader(cl);
+ runtime.setSystemScdl(systemUrl);
+ runtime.setApplicationName("application");
+ runtime.setApplicationScdl(applicationUrl);
+ runtime.initialize();
+ replay(runtime);
+
ClassLoader oldCl = Thread.currentThread().getContextClassLoader();
- listener = createMock(TuscanyContextListener.class, new Method[]{getRuntimeMethod});
try {
Thread.currentThread().setContextClassLoader(cl);
- ServletContextEvent event = createMock(ServletContextEvent.class);
- WebappRuntime runtime = createMock(WebappRuntime.class);
- expect(event.getServletContext()).andReturn(context);
- replay(event);
- expect(context.getInitParameter("tuscany.bootDir")).andReturn(null);
- expect(context.getResourcePaths("/WEB-INF/tuscany/boot")).andReturn(null);
- expect(context.getResource("/WEB-INF/tuscany/")).andReturn(null);
- expect(context.getInitParameter("tuscany.systemScdlPath")).andReturn(null);
- expect(context.getServletContextName()).andReturn(null);
- expect(context.getInitParameter("tuscany.applicationScdlPath")).andReturn(null);
- expect(context.getResource("/WEB-INF/default.scdl")).andReturn(applicationUrl);
- context.setAttribute(eq(Constants.RUNTIME_ATTRIBUTE), isA(WebappRuntime.class));
- replay(context);
- expect(cl.getResource("META-INF/tuscany/webapp.scdl")).andReturn(systemUrl);
- replay(cl);
- expect(listener.getRuntime(context, cl)).andReturn(runtime);
- replay(listener);
- runtime.setServletContext(context);
- expect(runtime.createDefaultMonitorFactory()).andReturn(monitorFactory);
- runtime.setMonitorFactory(monitorFactory);
- runtime.setRuntimeInfo(isA(WebappRuntimeInfo.class));
- runtime.setHostClassLoader(cl);
- runtime.setSystemScdl(systemUrl);
- runtime.setApplicationName("application");
- runtime.setApplicationScdl(applicationUrl);
- runtime.initialize();
- replay(runtime);
listener.contextInitialized(event);
- verify(event);
- verify(context);
- verify(listener);
- verify(cl);
- verify(runtime);
} finally {
Thread.currentThread().setContextClassLoader(oldCl);
}
- }
-
- public void testGetInitParameterWhenSpecified() {
- String name = "name";
- String value = "default";
- expect(context.getInitParameter(name)).andReturn(value);
- replay(context);
-
- assertEquals(value, listener.getInitParameter(context, name, "default"));
- verify(context);
- }
-
- public void testGetInitParameterUsingDefault() {
- String name = "name";
- String value = "default";
- expect(context.getInitParameter(name)).andReturn(null);
- replay(context);
-
- assertEquals(value, listener.getInitParameter(context, name, value));
- verify(context);
- }
-
- public void testGetInitParameterWithZeroLength() {
- String name = "name";
- String value = "default";
- expect(context.getInitParameter(name)).andReturn("");
- replay(context);
-
- assertEquals(value, listener.getInitParameter(context, name, value));
- verify(context);
- }
-
- public void testGetScdlFromWebapp() throws MalformedURLException {
- String path = "/WEB-INF/test";
- expect(context.getResource(path)).andReturn(systemUrl);
- replay(context);
- replay(cl);
- assertSame(systemUrl, listener.getScdlURL(path, context, cl));
- verify(context);
- verify(cl);
- }
-
- public void testGetScdlFromWebappMissing() throws MalformedURLException {
- String path = "/WEB-INF/test";
- expect(context.getResource(path)).andReturn(null);
- replay(context);
- replay(cl);
- assertNull(listener.getScdlURL(path, context, cl));
- verify(context);
- verify(cl);
- }
-
- public void testGetScdlFromWebappMalformed() throws MalformedURLException {
- String path = "/WEB-INF/test";
- expect(context.getResource(path)).andThrow(new MalformedURLException());
- replay(context);
- replay(cl);
- try {
- listener.getScdlURL(path, context, cl);
- fail();
- } catch (MalformedURLException e) {
- // OK
- }
- verify(context);
- verify(cl);
- }
-
- public void testGetScdlFromClasspath() throws MalformedURLException {
- String path = "META-INF/test";
- replay(context);
- expect(cl.getResource(path)).andReturn(systemUrl);
- replay(cl);
- assertSame(systemUrl, listener.getScdlURL(path, context, cl));
- verify(context);
- verify(cl);
- }
-
- public void testGetScdlFromClasspathMissing() throws MalformedURLException {
- String path = "META-INF/test";
- replay(context);
- expect(cl.getResource(path)).andReturn(null);
- replay(cl);
- assertNull(listener.getScdlURL(path, context, cl));
+ verify(event);
verify(context);
+ verify(listener);
verify(cl);
+ verify(bootClassLoader);
+ verify(runtime);
}
protected void setUp() throws Exception {
super.setUp();
- getRuntimeMethod = TuscanyContextListener.class.getDeclaredMethod("getRuntime",
- ServletContext.class,
- ClassLoader.class);
- listener = new TuscanyContextListener();
+ getUtilsMethod = TuscanyContextListener.class.getDeclaredMethod("getUtils", ServletContext.class);
+ utils = createMock(WebappUtil.class);
+ listener = createMock(TuscanyContextListener.class, new Method[]{getUtilsMethod});
context = createMock(ServletContext.class);
cl = createMock(ClassLoader.class);
+ bootClassLoader = createMock(ClassLoader.class);
systemUrl = new URL("file:/system.scdl");
applicationUrl = new URL("file:/application.scdl");
monitorFactory = createMock(MonitorFactory.class);
Added: incubator/tuscany/java/sca/runtime/webapp/src/test/java/org/apache/tuscany/runtime/webapp/WebappUtilTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/runtime/webapp/src/test/java/org/apache/tuscany/runtime/webapp/WebappUtilTestCase.java?view=auto&rev=451319
==============================================================================
--- incubator/tuscany/java/sca/runtime/webapp/src/test/java/org/apache/tuscany/runtime/webapp/WebappUtilTestCase.java (added)
+++ incubator/tuscany/java/sca/runtime/webapp/src/test/java/org/apache/tuscany/runtime/webapp/WebappUtilTestCase.java Fri Sep 29 08:02:15 2006
@@ -0,0 +1,130 @@
+/*
+ * 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.runtime.webapp;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+import javax.servlet.ServletContext;
+
+import junit.framework.TestCase;
+import static org.easymock.classextension.EasyMock.*;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class WebappUtilTestCase extends TestCase {
+ private ServletContext context;
+ private WebappUtilImpl listener;
+ private ClassLoader cl;
+ private URL systemUrl;
+
+
+ public void testGetInitParameterWhenSpecified() {
+ String name = "name";
+ String value = "default";
+ expect(context.getInitParameter(name)).andReturn(value);
+ replay(context);
+
+ assertEquals(value, listener.getInitParameter(name, "default"));
+ verify(context);
+ }
+
+ public void testGetInitParameterUsingDefault() {
+ String name = "name";
+ String value = "default";
+ expect(context.getInitParameter(name)).andReturn(null);
+ replay(context);
+
+ assertEquals(value, listener.getInitParameter(name, value));
+ verify(context);
+ }
+
+ public void testGetInitParameterWithZeroLength() {
+ String name = "name";
+ String value = "default";
+ expect(context.getInitParameter(name)).andReturn("");
+ replay(context);
+
+ assertEquals(value, listener.getInitParameter(name, value));
+ verify(context);
+ }
+
+ public void testGetScdlFromWebapp() throws MalformedURLException {
+ String path = "/WEB-INF/test";
+ expect(context.getResource(path)).andReturn(systemUrl);
+ replay(context);
+ replay(cl);
+ assertSame(systemUrl, listener.getScdlURL(path, cl));
+ verify(context);
+ verify(cl);
+ }
+
+ public void testGetScdlFromWebappMissing() throws MalformedURLException {
+ String path = "/WEB-INF/test";
+ expect(context.getResource(path)).andReturn(null);
+ replay(context);
+ replay(cl);
+ assertNull(listener.getScdlURL(path, cl));
+ verify(context);
+ verify(cl);
+ }
+
+ public void testGetScdlFromWebappMalformed() throws MalformedURLException {
+ String path = "/WEB-INF/test";
+ expect(context.getResource(path)).andThrow(new MalformedURLException());
+ replay(context);
+ replay(cl);
+ try {
+ listener.getScdlURL(path, cl);
+ fail();
+ } catch (MalformedURLException e) {
+ // OK
+ }
+ verify(context);
+ verify(cl);
+ }
+
+ public void testGetScdlFromClasspath() throws MalformedURLException {
+ String path = "META-INF/test";
+ replay(context);
+ expect(cl.getResource(path)).andReturn(systemUrl);
+ replay(cl);
+ assertSame(systemUrl, listener.getScdlURL(path, cl));
+ verify(context);
+ verify(cl);
+ }
+
+ public void testGetScdlFromClasspathMissing() throws MalformedURLException {
+ String path = "META-INF/test";
+ replay(context);
+ expect(cl.getResource(path)).andReturn(null);
+ replay(cl);
+ assertNull(listener.getScdlURL(path, cl));
+ verify(context);
+ verify(cl);
+ }
+
+ protected void setUp() throws Exception {
+ super.setUp();
+ context = createMock(ServletContext.class);
+ listener = new WebappUtilImpl(context);
+ cl = createMock(ClassLoader.class);
+ systemUrl = new URL("file:/system.scdl");
+ }
+}
Propchange: incubator/tuscany/java/sca/runtime/webapp/src/test/java/org/apache/tuscany/runtime/webapp/WebappUtilTestCase.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/runtime/webapp/src/test/java/org/apache/tuscany/runtime/webapp/WebappUtilTestCase.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org