1
// **********************************************************************
3
// Copyright (c) 2003-2010 ZeroC, Inc. All rights reserved.
5
// This copy of Ice is licensed to you under the terms described in the
6
// ICE_LICENSE file included in this distribution.
8
// **********************************************************************
10
package test.Ice.classLoader;
12
import java.io.PrintWriter;
14
import test.Ice.classLoader.Test.AbstractClass;
15
import test.Ice.classLoader.Test.ConcreteClass;
16
import test.Ice.classLoader.Test.E;
17
import test.Ice.classLoader.Test.InitialPrx;
18
import test.Ice.classLoader.Test.InitialPrxHelper;
22
private static class MyObjectFactory implements Ice.ObjectFactory
24
public Ice.Object create(String type)
26
if(type.equals("::Test::AbstractClass"))
28
return new AbstractClassI();
31
assert (false); // Should never be reached
41
private static class MyClassLoader extends ClassLoader
43
protected Class<?> loadClass(String name, boolean resolve)
44
throws ClassNotFoundException
47
return super.loadClass(name, resolve);
55
boolean check(String name)
57
return _names.contains(name);
60
private java.util.List<String> _names = new java.util.LinkedList<String>();
68
throw new RuntimeException();
73
allTests(boolean collocated, PrintWriter out, Ice.InitializationData initData)
76
// Verify that the class loader is used for Slice packages.
79
out.print("testing package... ");
81
Ice.InitializationData init = (Ice.InitializationData)initData.clone();
82
MyClassLoader classLoader = new MyClassLoader();
83
init.classLoader = classLoader;
84
Ice.Communicator communicator = Ice.Util.initialize(init);
85
test(classLoader.check("test.Ice.classLoader.Test._Marker"));
86
communicator.destroy();
91
// Verify that the class loader is used for Ice plug-ins.
94
out.print("testing plug-in... ");
96
Ice.InitializationData init = (Ice.InitializationData)initData.clone();
97
init.properties = (Ice.Properties)initData.properties._clone();
98
init.properties.setProperty("Ice.Plugin.Test", "test.Ice.classLoader.PluginFactoryI");
99
MyClassLoader classLoader = new MyClassLoader();
100
init.classLoader = classLoader;
101
Ice.Communicator communicator = Ice.Util.initialize(init);
102
test(classLoader.check("test.Ice.classLoader.PluginFactoryI"));
103
communicator.destroy();
108
// Verify that the class loader is used for IceSSL certificate verifiers and password callbacks.
110
if(initData.properties.getProperty("Ice.Default.Protocol").equals("ssl"))
112
out.print("testing IceSSL certificate verifier and password callback... ");
114
Ice.InitializationData init = (Ice.InitializationData)initData.clone();
115
init.properties = (Ice.Properties)initData.properties._clone();
116
init.properties.setProperty("IceSSL.CertVerifier", "test.Ice.classLoader.CertificateVerifierI");
117
init.properties.setProperty("IceSSL.PasswordCallback", "test.Ice.classLoader.PasswordCallbackI");
118
MyClassLoader classLoader = new MyClassLoader();
119
init.classLoader = classLoader;
120
Ice.Communicator communicator = Ice.Util.initialize(init);
121
test(classLoader.check("test.Ice.classLoader.CertificateVerifierI"));
122
test(classLoader.check("test.Ice.classLoader.PasswordCallbackI"));
123
communicator.destroy();
131
Ice.InitializationData init = (Ice.InitializationData)initData.clone();
132
MyClassLoader classLoader = new MyClassLoader();
133
init.classLoader = classLoader;
134
Ice.Communicator communicator = Ice.Util.initialize(init);
136
String ref = "initial:default -p 12010";
137
Ice.ObjectPrx base = communicator.stringToProxy(ref);
140
InitialPrx initial = InitialPrxHelper.checkedCast(base);
141
test(initial != null);
144
// Verify that the class loader is used for concrete classes.
147
out.print("testing concrete class... ");
149
ConcreteClass cc = initial.getConcreteClass();
151
test(classLoader.check("Test.ConcreteClass"));
152
test(classLoader.check("test.Ice.classLoader.Test.ConcreteClass"));
158
// Verify that the class loader is invoked when a factory is not installed, and is
159
// not invoked when a factory is installed.
162
out.print("testing abstract class... ");
167
initial.getAbstractClass();
169
catch(Ice.NoObjectFactoryException ex)
173
test(classLoader.check("Test.AbstractClass"));
174
test(classLoader.check("test.Ice.classLoader.Test.AbstractClass"));
177
communicator.addObjectFactory(new MyObjectFactory(), "::Test::AbstractClass");
178
AbstractClass ac = initial.getAbstractClass();
180
test(!classLoader.check("Test.AbstractClass"));
181
test(!classLoader.check("test.Ice.classLoader.Test.AbstractClass"));
188
// Verify that the class loader is used for user exceptions.
190
out.print("testing user exception... ");
194
initial.throwException();
200
test(classLoader.check("Test.E"));
201
test(classLoader.check("test.Ice.classLoader.Test.E"));
205
communicator.destroy();