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.Visitor; 013 014 @SuppressWarnings("unchecked") 015 public class PackageDefinition extends Identifier { 016 017 public PackageDefinition(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 if (language.supportsTokenName("ANNOTATIONS")) { 023 Annotations = select(Annotation.class, "ANNOTATIONS/ANNOTATION"); 024 firstChild=(Identifier) getChild(1); 025 } else { 026 firstChild=(Identifier) getChild(0); 027 } 028 } 029 030 Identifier firstChild; 031 032 public void toDom(Element holder) { 033 super.toDom(holder); 034 035 // Serialize attributes 036 setElement(holder, "Annotations", Annotations); 037 } 038 039 // Attributes 040 private List<Annotation> Annotations = emptyList; 041 042 // Accessors 043 public List<Annotation> getAnnotations() { 044 return Annotations; 045 } 046 047 protected void acceptChildren(Visitor visitor) { 048 super.acceptChildren(visitor); 049 // Visiting non-text attributes 050 new CollectionVisitable(Annotations, false).accept(visitor); 051 } 052 053 public String getPath() { 054 return firstChild.getPath(); 055 } 056 057 }