/** * * Copyright 2004-2005 The Apache Software Foundation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.geronimo.interop.generator; import java.lang.reflect.Modifier; import java.util.Vector; public class JClass extends JEntity { private JPackage pkg; private Vector imports; private Vector impls; private String baseClassName; private Vector constructors; private Vector methods; private Vector fields; private Vector classes = new Vector(); private JClass parent; protected JClass(String name) { super(name, Modifier.PUBLIC); imports = new Vector(); impls = new Vector(); baseClassName = ""; constructors = new Vector(); methods = new Vector(); fields = new Vector(); } protected JClass(String name, JPackage pkg) { this(name); if (pkg == null) { pkg = new JPackage(""); } this.pkg = pkg; } protected JClass(String name, JClass parent) { this(name); this.parent = parent; } public JConstructor newConstructor(JParameter parms[], Class thrown[]) { JConstructor c = new JConstructor(parms, thrown); c.setParent(this); constructors.add(c); return c; } public void deleteConstructor(JConstructor m) { constructors.removeElement(m); } public Vector getConstructors() { return constructors; } public JMethod newMethod(JReturnType rt, String name, JParameter parms[], Class thrown[]) { JMethod m = new JMethod(rt, name, parms, thrown); m.setParent(this); methods.add(m); return m; } public void deleteMethod(JMethod m) { methods.removeElement(m); } public Vector getMethods() { return methods; } protected void setFieldParentAndModifier(JField f) { f.setParent(this); if (Modifier.isPublic(this.getModifiers())) { f.setModifiers(f.getModifiers() | Modifier.PUBLIC); } if (Modifier.isProtected(this.getModifiers())) { f.setModifiers(f.getModifiers() | Modifier.PROTECTED); } if (Modifier.isPrivate(this.getModifiers())) { f.setModifiers(f.getModifiers() | Modifier.PRIVATE); } } public JField newField(Class type, String name) { return newField(type, name, null); } public JField newField(Class type, String name, JExpression initExpr) { return newField(type, name, initExpr, false); } public JField newField(Class type, String name, JExpression initExpr, boolean isArray) { JField f = new JField(type, name); setFieldParentAndModifier(f); f.setInitExpression(initExpr); fields.add(f); return f; } public void deleteField(JField f) { fields.remove(f); } public Vector getFields() { return fields; } public JClass newClass(String name) { JClass c = new JClass(name, this); classes.add(c); return c; } public JPackage getPackage() { if (parent != null) { return parent.getPackage(); } else { return pkg; } } public String getName() { if (parent != null) { return parent.getName() + "$" + super.getName(); } else { return super.getName(); } } public void setExtends(String bcl) { setBaseClassName(bcl); } public String getExtends() { return getBaseClassName(); } public void setBaseClassName(String bcl) { baseClassName = bcl; } public String getBaseClassName() { return baseClassName; } public void addImplements(String className) { impls.add(className); } public void removeImplements(String className) { impls.remove(className); } public Vector getImplements() { return impls; } /* * Adding Imports */ public void addImport(Package pkg, String itemName) { if (pkg != null) { addImport(pkg.getName(), itemName); } } public void addImport(Package pkg) { if (pkg != null) { addImport(pkg.getName(), "*"); } } public void addImport(String name, String itemName) { addImport(name + "." + itemName); } public void addImport(String fqName) { imports.add(fqName); } public void removeImport(Package pkg, String itemName) { if (pkg != null) { removeImport(pkg.getName(), itemName); } } public void removeImport(Package pkg) { if (pkg != null) { removeImport(pkg.getName()); } } public void removeImport(String name, String itemName) { removeImport(name + "." + itemName); } public void removeImport(String name) { imports.remove(name); } public Vector getImports() { return imports; } }