001: /*
002: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
003: *
004: * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
005: *
006: * The contents of this file are subject to the terms of either the GNU
007: * General Public License Version 2 only ("GPL") or the Common
008: * Development and Distribution License("CDDL") (collectively, the
009: * "License"). You may not use this file except in compliance with the
010: * License. You can obtain a copy of the License at
011: * http://www.netbeans.org/cddl-gplv2.html
012: * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
013: * specific language governing permissions and limitations under the
014: * License. When distributing the software, include this License Header
015: * Notice in each file and include the License file at
016: * nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this
017: * particular file as subject to the "Classpath" exception as provided
018: * by Sun in the GPL Version 2 section of the License file that
019: * accompanied this code. If applicable, add the following below the
020: * License Header, with the fields enclosed by brackets [] replaced by
021: * your own identifying information:
022: * "Portions Copyrighted [year] [name of copyright owner]"
023: *
024: * Contributor(s):
025: *
026: * The Original Software is NetBeans. The Initial Developer of the Original
027: * Software is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun
028: * Microsystems, Inc. All Rights Reserved.
029: *
030: * If you wish your version of this file to be governed by only the CDDL
031: * or only the GPL Version 2, indicate your decision by adding
032: * "[Contributor] elects to include this software in this distribution
033: * under the [CDDL or GPL Version 2] license." If you do not indicate a
034: * single choice of license, a recipient has the option to distribute
035: * your version of this file under either the CDDL, the GPL Version 2 or
036: * to extend the choice of license to its licensees as provided above.
037: * However, if you add GPL Version 2 code and therefore, elected the GPL
038: * Version 2 license, then the option applies only if the new code is
039: * made subject to such option by the copyright holder.
040: */
041:
042: package org.netbeans.modules.compapp.javaee.sunresources.tool.cmap;
043:
044: import java.util.ArrayList;
045:
046: import org.netbeans.modules.classfile.ClassFile;
047: import org.netbeans.modules.classfile.ClassName;
048:
049: import org.netbeans.modules.compapp.javaee.sunresources.tool.annotation.EJBAnnotation;
050: import org.netbeans.modules.compapp.javaee.sunresources.tool.annotation.JavaEEAnnotationProcessor;
051: import org.netbeans.modules.compapp.javaee.sunresources.tool.cmap.EJBInterface.EJBInterfaceType;
052:
053: /**
054: * EJBNode could represent a Stateless, Stateful, or WebService node
055: *
056: * @author echou
057: *
058: */
059: public class EJBNode extends CMapNode {
060:
061: private ArrayList<EJBInterface> implementedIntfs = new ArrayList<EJBInterface>();
062:
063: private boolean isWebService = false;
064:
065: /**
066: * This constructor is invoked from EJB 2.1 style DD processing
067: *
068: */
069: public EJBNode() {
070: super ();
071: }
072:
073: public boolean isWebService() {
074: return this .isWebService;
075: }
076:
077: public void setIsWebService(boolean isWebService) {
078: this .isWebService = isWebService;
079: }
080:
081: /**
082: * This constructor is invoked from EJB 3.0 style annotation processing
083: *
084: * @param cls
085: * @param type
086: */
087: /*
088: public EJBNode(Class<?> cls, CMapNodeType type) {
089: super(cls.getSimpleName(), cls.getName(), type);
090: EJBInterfaceType intfType =
091: cls.isAnnotationPresent(Remote.class) ? EJBInterfaceType.REMOTE : EJBInterfaceType.LOCAL;
092: ArrayList<Class> aList = EJBAnnotation.filterExcludedEJBIntf(cls.getInterfaces());
093: for (int i = 0; i < aList.size(); i++) {
094: implementedIntfs.add(new EJBInterface(aList.get(i).getName(), intfType));
095: }
096: }
097: **/
098:
099: public EJBNode(ClassFile cls, CMapNodeType type) {
100: super (cls.getName().getSimpleName(), cls.getName()
101: .getExternalName(), type);
102: EJBInterfaceType intfType = cls
103: .isAnnotationPresent(ClassName
104: .getClassName(JavaEEAnnotationProcessor.REMOTE_CLASSTYPE)) ? EJBInterfaceType.REMOTE
105: : EJBInterfaceType.LOCAL;
106: ArrayList<String> aList = EJBAnnotation
107: .filterExcludedEJBIntf(cls.getInterfaces());
108: for (int i = 0; i < aList.size(); i++) {
109: implementedIntfs.add(new EJBInterface(aList.get(i),
110: intfType));
111: }
112: }
113:
114: public ArrayList<EJBInterface> getImplementedIntfs() {
115: return implementedIntfs;
116: }
117:
118: public void addImplementedIntfs(EJBInterface intf) {
119: implementedIntfs.add(intf);
120: }
121:
122: public boolean implements Interface(String intfName) {
123: for (int i = 0; i < implementedIntfs.size(); i++) {
124: EJBInterface ejbIntf = implementedIntfs.get(i);
125: if (ejbIntf.getIntf().equals(intfName)) {
126: return true;
127: }
128: }
129: return false;
130: }
131:
132: @Override
133: public String toString() {
134: StringBuffer sb = new StringBuffer();
135: sb.append(super .toString());
136: sb.append("\tisWebService=" + isWebService + "\n"); // NOI18N
137: sb.append("\timplementedIntfs=" + implementedIntfs + "\n"); // NOI18N
138: return sb.toString();
139: }
140:
141: }
|