package agg.attribute.handler.impl.javaExpr; import java.io.IOException; import java.util.Vector; import agg.attribute.handler.AttrHandler; import agg.attribute.handler.AttrHandlerException; import agg.attribute.handler.HandlerExpr; import agg.attribute.handler.HandlerType; import agg.attribute.parser.javaExpr.ClassResolver; import agg.attribute.parser.javaExpr.ClassResolverException; import agg.attribute.parser.javaExpr.SimpleNode; /** * @version $Id: JexHandler.java,v 1.6 2010/09/23 08:13:35 olga Exp $ * @author $Author: olga $ */ public class JexHandler implements AttrHandler { static final long serialVersionUID = 9042008410571344426L; protected ClassResolver classResolver; // transient protected ConfigEditor configEditor = null; public JexHandler() { this.classResolver = new ClassResolver(); } /** * Getting the name of this handler as known by the attribute manager. Used * to obtain the instance of this handler from the manager using its * getHandler() method. */ static public String getLabelName() { return "Java Expr"; } /** * Called by #see ConfigEditor */ public ClassResolver getClassResolver() { return this.classResolver; } public String getName() { return getLabelName(); } public HandlerType newHandlerType(String typeString) throws AttrHandlerException { Class<?> clazz; try { clazz = this.classResolver.forName(typeString); } catch (ClassResolverException ex) { throw new AttrHandlerException(ex.getMessage()); } if (clazz == null) { throw new AttrHandlerException("Type not found"); } return new JexType(this, typeString, clazz); } public HandlerExpr newHandlerExpr(HandlerType type, String exprString) throws AttrHandlerException { // AttrSession.logPrintln(VerboseControl.logTrace, // "JexHandler:\n->newHandlerExpr"); SimpleNode.setClassResolver(this.classResolver); try { return new JexExpr(exprString, false, (JexType) type); } catch (AttrHandlerException ex1) { throw ex1; } finally { // AttrSession.logPrintln(VerboseControl.logTrace, // "JexHandler:\n<-newHandlerExpr"); } } public HandlerExpr newHandlerValue(HandlerType type, Object value) throws AttrHandlerException { try { return new JexExpr(value, (JexType) type); } catch (AttrHandlerException ex1) { throw ex1; } } /* * public void configEdit( Frame parent ){ * * if( configEditor == null ){ configEditor = new ConfigEditor( null, * getName(),10, 200, this.classResolver ); } configEditor.edit( getName(), 10, * 200 ); } */ /** * Appending a package path to the package list. * * @param packageName * The path name, e.g. "java.io" */ public void appendPackage(String packageName) { Vector<String> packages = this.classResolver.getPackages(); packages.addElement(packageName); this.classResolver.setPackages(packages); } public void adaptParser() { SimpleNode.setClassResolver(this.classResolver); } // **************************************************************************** private void readObject(java.io.ObjectInputStream in) throws IOException, ClassNotFoundException { /* * if(this.classResolver == null) System.out.println("ClassResolver == * null"); else System.out.println(this.classResolver); */ in.defaultReadObject(); /* * System.out.println(this.classResolver); */ } } /* * $Log: JexHandler.java,v $ * Revision 1.6 2010/09/23 08:13:35 olga * tuning * * Revision 1.5 2010/03/31 21:07:29 olga * tuning * * Revision 1.4 2007/11/01 09:58:19 olga * Code refactoring: generic types- done * * Revision 1.3 2007/09/10 13:05:46 olga * In this update: * - package xerces2.5.0 is not used anymore; * - class com.objectspace.jgl.Pair is replaced by the agg own generic class agg.util.Pair; * - bugs fixed in: usage of PACs in rules; match completion; * usage of static method calls in attr. conditions * - graph editing: added some new features * Revision 1.2 2006/12/13 13:32:59 enrico * reimplemented code * * Revision 1.1 2005/08/25 11:57:00 enrico *** empty log message *** * * Revision 1.1 2005/05/30 12:58:04 olga Version with Eclipse * * Revision 1.3 2005/03/03 13:48:42 olga - Match with NACs and attr. conditions * with mixed variables - error corrected - save/load class packages written by * user - PACs : creating T-equivalents - improved - save/load matches of the * rules (only one match of a rule) - more friendly graph/rule editor GUI - more * syntactical checks in attr. editor * * Revision 1.2 2003/03/05 18:24:28 komm sorted/optimized import statements * * Revision 1.1.1.1 2002/07/11 12:17:00 olga Imported sources * * Revision 1.9 2001/03/14 17:30:08 olga Test * * Revision 1.8 2000/04/05 12:08:45 shultzke serialVersionUID aus V1.0.0 * generiert * * Revision 1.7 2000/03/14 10:57:16 shultzke Transformieren von Variablen auf * Variablen sollte jetzt funktionieren * * Revision 1.6 2000/03/03 11:39:43 shultzke Aus der Expression den String durch * abstrakten Syntaxbaum ersetzt */