KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > geronimo > classloaderserver > http > HTTPClassLoaderServerTest


1 /**
2  *
3  * Copyright 2005 The Apache Software Foundation
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */

17
18 package org.apache.geronimo.classloaderserver.http;
19
20 import java.io.InputStream JavaDoc;
21 import java.net.URI JavaDoc;
22 import java.net.URL JavaDoc;
23 import java.net.URLClassLoader JavaDoc;
24 import java.util.HashSet JavaDoc;
25 import java.util.Set JavaDoc;
26
27 import javax.management.ObjectName JavaDoc;
28
29 import junit.framework.TestCase;
30
31 import org.apache.geronimo.classloaderserver.ClassLoaderInfo;
32 import org.apache.geronimo.gbean.GBeanData;
33 import org.apache.geronimo.jetty.JettyContainerImpl;
34 import org.apache.geronimo.jetty.connector.HTTPConnector;
35 import org.apache.geronimo.kernel.KernelFactory;
36 import org.apache.geronimo.kernel.Kernel;
37
38
39 /**
40  *
41  * @version $Rev: 109957 $ $Date: 2004-12-06 18:52:06 +1100 (Mon, 06 Dec 2004) $
42  */

43 public class HTTPClassLoaderServerTest extends TestCase {
44     private ClassLoader JavaDoc cl = this.getClass().getClassLoader();
45     private ObjectName JavaDoc containerName;
46     private ObjectName JavaDoc connectorName;
47     private ObjectName JavaDoc classLoaderServerName;
48     private MockClassLoaderInfo clInfo;
49     private Kernel kernel;
50     
51     public void testURLs() throws Exception JavaDoc {
52         assertEquals(1, clInfo.urls.length);
53     }
54     
55     public void testOK() throws Exception JavaDoc {
56         URLClassLoader JavaDoc urlCL = new URLClassLoader JavaDoc(clInfo.urls, null);
57         String JavaDoc className = HTTPClassLoaderServerTest.class.getName();
58         Class JavaDoc clazz = urlCL.loadClass(className);
59         assertEquals(className, clazz.getName());
60     }
61     
62     public void testNOK() throws Exception JavaDoc {
63         URLClassLoader JavaDoc urlCL = new URLClassLoader JavaDoc(clInfo.urls, null);
64         try {
65             urlCL.loadClass("Test");
66             fail();
67         } catch (ClassNotFoundException JavaDoc e) {
68         }
69     }
70     
71     private void start(GBeanData instance) throws Exception JavaDoc {
72         kernel.loadGBean(instance, cl);
73         kernel.startGBean(instance.getName());
74     }
75
76     private void stop(ObjectName JavaDoc name) throws Exception JavaDoc {
77         kernel.stopGBean(name);
78         kernel.unloadGBean(name);
79     }
80
81     protected void setUp() throws Exception JavaDoc {
82         containerName = new ObjectName JavaDoc("geronimo.jetty:role=Container");
83         Set JavaDoc containerPatterns = new HashSet JavaDoc();
84         containerPatterns.add(containerName);
85         connectorName = new ObjectName JavaDoc("geronimo.jetty:role=Connector");
86         Set JavaDoc connectorPatterns = new HashSet JavaDoc();
87         connectorPatterns.add(connectorName);
88         kernel = KernelFactory.newInstance().createKernel("test.kernel");
89         kernel.boot();
90         GBeanData container = new GBeanData(containerName, JettyContainerImpl.GBEAN_INFO);
91         start(container);
92         
93         int port = 5678;
94         GBeanData connector = new GBeanData(connectorName, HTTPConnector.GBEAN_INFO);
95         connector.setAttribute("port", new Integer JavaDoc(port));
96         connector.setReferencePatterns("JettyContainer", containerPatterns);
97         start(connector);
98         
99         classLoaderServerName = new ObjectName JavaDoc("geronimo.jetty:role=ClassLoaderServer");
100         GBeanData classLoaderServer = new GBeanData(classLoaderServerName, HTTPClassLoaderServer.GBEAN_INFO);
101         classLoaderServer.setReferencePatterns("JettyContainer", containerPatterns);
102         classLoaderServer.setReferencePatterns("JettyConnector", connectorPatterns);
103         start(classLoaderServer);
104         
105         clInfo = new MockClassLoaderInfo(new URI JavaDoc("test"), getClass().getClassLoader());
106         kernel.invoke(classLoaderServerName, "export", new Object JavaDoc[] {clInfo}, new String JavaDoc[] {ClassLoaderInfo.class.getName()});
107     }
108
109     protected void tearDown() throws Exception JavaDoc {
110         stop(containerName);
111         stop(connectorName);
112         stop(classLoaderServerName);
113         kernel.shutdown();
114     }
115     
116     private static class MockClassLoaderInfo extends ClassLoader JavaDoc implements ClassLoaderInfo {
117         private final Object JavaDoc id;
118         private final ClassLoader JavaDoc delegate;
119         private URL JavaDoc[] urls;
120         
121         private MockClassLoaderInfo(Object JavaDoc id, ClassLoader JavaDoc delegate) {
122             this.id = id;
123             this.delegate = delegate;
124         }
125         
126         public InputStream JavaDoc getResourceAsStream(String JavaDoc name) {
127             return delegate.getResourceAsStream(name);
128         }
129         
130         public ClassLoader JavaDoc getClassLoader() {
131             return this;
132         }
133
134         public Object JavaDoc getID() {
135             return id;
136         }
137
138         public void setClassLoaderServerURLs(URL JavaDoc[] urls) {
139             this.urls = urls;
140         }
141     }
142 }
143
144
Popular Tags