|
What this is
Other links
The source code
/*
* Sun Public License Notice
*
* The contents of this file are subject to the Sun Public License
* Version 1.0 (the "License"). You may not use this file except in
* compliance with the License. A copy of the License is available at
* http://www.sun.com/
*
* The Original Code is NetBeans. The Initial Developer of the Original
* Code is Sun Microsystems, Inc. Portions Copyright 1997-2001 Sun
* Microsystems, Inc. All Rights Reserved.
*/
package org.netbeans.mdrshell;
import java.util.*;
import java.io.*;
import koala.dynamicjava.interpreter.*;
import koala.dynamicjava.parser.wrapper.*;
import org.netbeans.api.mdr.MDRManager;
import org.netbeans.mdr.handlers.*;
import org.netbeans.mdr.persistence.StorageException;
import org.netbeans.mdr.persistence.memoryimpl.StorageFactoryImpl;
import org.openide.ErrorManager;
/**
*
* @author Petr Hrebejk
* @version
*/
public class DJava extends Object {
/** Creates new DJava */
public DJava() {
}
static koala.dynamicjava.interpreter.Interpreter interpreter;
/**
* Initialize the engine.
*/
public static void initialize ( ) {
// create an interpreter
interpreter = new TreeInterpreter(new JavaCCParserFactory());
BaseObjectHandler.setClassLoaderProvider(new CLProviderImpl());
// this is here just to make MDR boot when starting up the shell (not lazily)
MDRManager.getDefault().getDefaultRepository().getExtentNames();
String storageName = System.getProperty("MDRStorageProperty." + StorageFactoryImpl.STORAGE_ID);
if (storageName != null) {
try {
StorageFactoryImpl.serialize(storageName);
} catch (StorageException e) {
}
}
}
public static Object eval ( String line ) throws Exception {
try {
Reader r = new StringReader(line + ";");
return interpreter.interpret(r, line );
} catch (Exception e) {
ErrorManager.getDefault().notify(e);
throw e;
}
}
/**
* Declare a bean
*/
public static void declareVariable ( String name, Object object ) {
interpreter.defineVariable( name, object );
}
private static class CLProviderImpl implements ClassLoaderProvider {
public ClassLoader getClassLoader() {
return interpreter.getClassLoader();
}
/** Implementation of this method can define a given class.
* The defined class should be then visible from the ClassLoader returned
* from {@link #getClassLoader} method.
* @param className name of the class to define.
* @param
* @return Defined class or null (if null is return, MDR will define the
* class in its own classloader. This class will then not be accessible from outside
* of MDR
*/
public Class defineClass(String className, byte[] classFile) {
return interpreter.defineClass(className, classFile);
}
}
}
|
| ... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.