001 package org.mesopotamia.lang.java; 002 003 import java.util.List; 004 005 import org.mesopotamia.MesopotamiaException; 006 import org.mesopotamia.NodeData; 007 import org.mesopotamia.RepositoryLanguage; 008 import org.mesopotamia.Scan; 009 import org.w3c.dom.Element; 010 011 import biz.hammurapi.util.CollectionVisitable; 012 import biz.hammurapi.util.Visitable; 013 import biz.hammurapi.util.Visitor; 014 015 public class TryBlock extends JavaLanguageElement implements Statement { 016 017 public TryBlock(NodeData xData, Class<?> context, Scan scan, 018 RepositoryLanguage language, Object environment) throws MesopotamiaException { 019 super(xData, context, scan, language, environment); 020 021 // Select attributes 022 CompoundStatement = selectSingleElement(CompoundStatement.class, "SLIST"); 023 Handlers = select(Handler.class, "LITERAL_catch"); 024 FinallyClause = selectSingleElement(CompoundStatement.class, 025 "LITERAL_finally/SLIST"); 026 027 } 028 029 public void toDom(Element holder) { 030 super.toDom(holder); 031 032 // Serialize attributes 033 setElement(holder, "CompoundStatement", CompoundStatement); 034 setElement(holder, "Handlers", Handlers); 035 setElement(holder, "FinallyClause", FinallyClause); 036 } 037 038 // Attributes 039 private CompoundStatement CompoundStatement; 040 041 private List<Handler> Handlers; 042 043 private CompoundStatement FinallyClause; 044 045 // Accessors 046 public CompoundStatement getCompoundStatement() { 047 return CompoundStatement; 048 } 049 050 public List<Handler> getHandlers() { 051 return Handlers; 052 } 053 054 public CompoundStatement getFinallyClause() { 055 return FinallyClause; 056 } 057 058 protected void acceptChildren(Visitor visitor) { 059 super.acceptChildren(visitor); 060 // Visiting non-text attributes 061 if (CompoundStatement instanceof Visitable) { 062 ((Visitable) CompoundStatement).accept(visitor); 063 } 064 new CollectionVisitable(Handlers, false).accept(visitor); 065 if (FinallyClause instanceof Visitable) { 066 ((Visitable) FinallyClause).accept(visitor); 067 } 068 } 069 070 }