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.xml.wsdl.model.extensions.bpel.impl;
043:
044: import java.util.Collection;
045: import org.netbeans.modules.xml.wsdl.model.ExtensibilityElement;
046: import org.netbeans.modules.xml.wsdl.model.PortType;
047: import org.netbeans.modules.xml.wsdl.model.WSDLModel;
048: import org.netbeans.modules.xml.wsdl.model.extensions.bpel.BPELExtensibilityComponent;
049: import org.netbeans.modules.xml.wsdl.model.extensions.bpel.BPELQName;
050: import org.netbeans.modules.xml.wsdl.model.extensions.bpel.Documentation;
051: import org.netbeans.modules.xml.wsdl.model.extensions.bpel.PartnerLinkType;
052: import org.netbeans.modules.xml.wsdl.model.extensions.bpel.Role;
053: import org.netbeans.modules.xml.wsdl.model.spi.NamedExtensibilityElementBase;
054: import org.netbeans.modules.xml.xam.Component;
055: import org.netbeans.modules.xml.xam.dom.NamedComponentReference;
056: import org.w3c.dom.Element;
057:
058: /**
059: *
060: * @author Nam Nguyen
061: *
062: * changed by
063: * @author ads
064: */
065: public class RoleImpl extends NamedExtensibilityElementBase implements
066: Role {
067:
068: /** Creates a new instance of RoleImpl */
069: public RoleImpl(WSDLModel model, Element e) {
070: super (model, e);
071: }
072:
073: public RoleImpl(WSDLModel model) {
074: this (model, createPrefixedElement(BPELQName.ROLE.getQName(),
075: model));
076: }
077:
078: protected String getNamespaceURI() {
079: return BPELQName.PLNK_NS;
080: }
081:
082: public NamedComponentReference<PortType> getPortType() {
083: return resolveGlobalReference(PortType.class,
084: BPELAttribute.PORT_TYPE);
085: }
086:
087: public void setPortType(NamedComponentReference<PortType> portType) {
088: setAttribute(PORT_TYPE_PROPERTY, BPELAttribute.PORT_TYPE,
089: portType);
090: }
091:
092: public void accept(BPELExtensibilityComponent.Visitor v) {
093: v.visit(this );
094: }
095:
096: @Override
097: public void addExtensibilityElement(ExtensibilityElement ee) {
098: if (ee instanceof Documentation) {
099: addRoleDocumentation((Documentation) ee);
100: } else {
101: super .addExtensibilityElement(ee);
102: }
103: }
104:
105: public void addRoleDocumentation(Documentation doc) {
106: if (doc == null)
107: return;
108: appendChild(ROLE_DOCUMENTATION_PROPERTY, doc);
109: }
110:
111: public void removeRoleDocumentation(Documentation doc) {
112: removeChild(ROLE_DOCUMENTATION_PROPERTY, doc);
113:
114: }
115:
116: public Collection<Documentation> getRoleDocumentations() {
117: return getChildren(Documentation.class);
118: }
119:
120: @Override
121: public boolean canBeAddedTo(Component target) {
122: if (target instanceof PartnerLinkType) {
123: return true;
124: }
125: return false;
126: }
127: }
|