001 package org.mesopotamia.lang.java; 002 003 import org.mesopotamia.MesopotamiaException; 004 import org.mesopotamia.NodeData; 005 import org.mesopotamia.RepositoryLanguage; 006 import org.mesopotamia.Scan; 007 import org.mesopotamia.lang.java.ref.MethodInfo; 008 import org.mesopotamia.lang.java.ref.Scope; 009 import org.mesopotamia.lang.java.ref.TypeInfo; 010 import org.mesopotamia.lang.java.ref.VariableInfo; 011 import org.w3c.dom.Element; 012 013 import biz.hammurapi.util.Visitable; 014 import biz.hammurapi.util.Visitor; 015 016 public class Handler extends JavaLanguageElement implements Scope { 017 018 public Handler(NodeData xData, Class<?> context, Scan scan, 019 RepositoryLanguage language, Object environment) throws MesopotamiaException { 020 super(xData, context, scan, language, environment); 021 022 // Select attributes 023 ParameterDefinition = selectSingleElement(ParameterDefinition.class, 024 "PARAMETER_DEF"); 025 CompoundStatement = selectSingleElement(CompoundStatement.class, "SLIST"); 026 027 } 028 029 public void toDom(Element holder) { 030 super.toDom(holder); 031 032 // Serialize attributes 033 setElement(holder, "ParameterDefinition", ParameterDefinition); 034 setElement(holder, "CompoundStatement", CompoundStatement); 035 } 036 037 // Attributes 038 private ParameterDefinition ParameterDefinition; 039 040 private CompoundStatement CompoundStatement; 041 042 // Accessors 043 public ParameterDefinition getParameterDefinition() { 044 return ParameterDefinition; 045 } 046 047 public CompoundStatement getCompoundStatement() { 048 return CompoundStatement; 049 } 050 051 protected void acceptChildren(Visitor visitor) { 052 super.acceptChildren(visitor); 053 // Visiting non-text attributes 054 if (ParameterDefinition instanceof Visitable) { 055 ((Visitable) ParameterDefinition).accept(visitor); 056 } 057 if (CompoundStatement instanceof Visitable) { 058 ((Visitable) CompoundStatement).accept(visitor); 059 } 060 } 061 062 public MethodInfo findMethod(String name, String[] parameterTypes) { 063 Scope ec = findParent(Scope.class); 064 return ec == null ? null : ec.findMethod(name, parameterTypes); 065 } 066 067 public TypeInfo findType(String name) { 068 Scope ec = findParent(Scope.class); 069 return ec == null ? null : ec.findType(name); 070 } 071 072 public VariableInfo findVariable(String name) { 073 if (name.equals(ParameterDefinition.getName())) { 074 return ParameterDefinition; 075 } 076 077 Scope ec = findParent(Scope.class); 078 return ec == null ? null : ec.findVariable(name); 079 } 080 081 }