pl.slawas.clazz
Class ClassCreator

java.lang.Object
  extended by pl.slawas.clazz.ClassCreator
All Implemented Interfaces:
java.io.Serializable

public class ClassCreator
extends java.lang.Object
implements java.io.Serializable

ClassCreator - dynamiczne tworzenie klas, na podstawie źródła danych zawartego w StringBuffer. Przykład zastosowania można znaleźć w implementacji testów:

 Date today = new Date();
 String todayMillis = Long.toString(today.getTime());
 String todayClass = "z_" + todayMillis;
 
 StringBuffer source = new StringBuffer();
 source.append("public class " + todayClass + "{");
 source.append(" public void doit() {");
 source.append(" System.out.println(\"" + todayMillis + "\");");
 source.append(" }}\n");
 
 try {
        ClassCreator cc = new ClassCreator("./target/",
                        ClassCreatorTest.class.getClassLoader());
        System.out.println("Running " + todayClass + ":\n\n");
        Class<?> params[] = {};
        Object paramsObj[] = {};
        Class<?> thisClass = cc.generate(todayClass, source);
        Object iClass = thisClass.newInstance();
        Method thisMethod = thisClass.getDeclaredMethod("doit", params);
        thisMethod.invoke(iClass, paramsObj);
 } catch (Exception e) {
        logger.error("Blad testu:", e);
        result = "BAD";
 }
 

Version:
$Revision: 1.1.2.2 $
Author:
Slawomir Cichy <slawas@slawas.pl>
See Also:
Serialized Form

Field Summary
protected static Logger logger
           
 
Constructor Summary
ClassCreator(java.lang.String dynamicClassLocation, java.lang.ClassLoader externalLoader)
           
 
Method Summary
 java.lang.Class<?> generate(java.lang.String className, java.lang.StringBuffer source)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

logger

protected static final Logger logger
Constructor Detail

ClassCreator

public ClassCreator(java.lang.String dynamicClassLocation,
                    java.lang.ClassLoader externalLoader)
             throws java.net.MalformedURLException
Throws:
java.net.MalformedURLException
Method Detail

generate

public java.lang.Class<?> generate(java.lang.String className,
                                   java.lang.StringBuffer source)
                            throws java.io.IOException,
                                   java.lang.ClassNotFoundException
Throws:
java.io.IOException
java.lang.ClassNotFoundException


Copyright © 2014 Sci Software. All Rights Reserved.