xref: /aosp_15_r20/external/javassist/sample/evolve/DemoLoader.java (revision f1fbf3c2ab775ce834e0af96b7a85bdc7a0eac65)
1*f1fbf3c2SXin Li package sample.evolve;
2*f1fbf3c2SXin Li 
3*f1fbf3c2SXin Li import javassist.*;
4*f1fbf3c2SXin Li 
5*f1fbf3c2SXin Li /**
6*f1fbf3c2SXin Li  * DemoLoader is a class loader for running a program including
7*f1fbf3c2SXin Li  * an updatable class.  This simple loader allows only a single
8*f1fbf3c2SXin Li  * class to be updatable.  (Extending it for supporting multiple
9*f1fbf3c2SXin Li  * updatable classes is easy.)
10*f1fbf3c2SXin Li  *
11*f1fbf3c2SXin Li  * To run, type as follows:
12*f1fbf3c2SXin Li  *
13*f1fbf3c2SXin Li  * % java sample.evolve.DemoLoader <port number>
14*f1fbf3c2SXin Li  *
15*f1fbf3c2SXin Li  * Then DemoLoader launches sample.evolve.DemoServer with <port number>.
16*f1fbf3c2SXin Li  * It also translates sample.evolve.WebPage, which sample.evolve.DemoServer
17*f1fbf3c2SXin Li  * uses, so that it is an updable class.
18*f1fbf3c2SXin Li  *
19*f1fbf3c2SXin Li  * Note: JDK 1.2 or later only.
20*f1fbf3c2SXin Li  */
21*f1fbf3c2SXin Li public class DemoLoader {
22*f1fbf3c2SXin Li     private static final int initialVersion = 0;
23*f1fbf3c2SXin Li     private String updatableClassName = null;
24*f1fbf3c2SXin Li     private CtClass updatableClass = null;
25*f1fbf3c2SXin Li 
26*f1fbf3c2SXin Li     /* Creates a <code>DemoLoader</code> for making class WebPage
27*f1fbf3c2SXin Li      * updatable.  Then it runs main() in sample.evolve.DemoServer.
28*f1fbf3c2SXin Li      */
main(String[] args)29*f1fbf3c2SXin Li     public static void main(String[] args) throws Throwable {
30*f1fbf3c2SXin Li         Evolution translator = new Evolution();
31*f1fbf3c2SXin Li         ClassPool cp = ClassPool.getDefault();
32*f1fbf3c2SXin Li         Loader cl = new Loader();
33*f1fbf3c2SXin Li         cl.addTranslator(cp, translator);
34*f1fbf3c2SXin Li 
35*f1fbf3c2SXin Li         translator.makeUpdatable("sample.evolve.WebPage");
36*f1fbf3c2SXin Li         cl.run("sample.evolve.DemoServer", args);
37*f1fbf3c2SXin Li     }
38*f1fbf3c2SXin Li }
39