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    }