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 Development
008: * and Distribution License("CDDL") (collectively, the "License"). You
009: * may not use this file except in compliance with the License. You can obtain
010: * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
011: * or glassfish/bootstrap/legal/LICENSE.txt. See the License for the specific
012: * language governing permissions and limitations under the License.
013: *
014: * When distributing the software, include this License Header Notice in each
015: * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
016: * Sun designates this particular file as subject to the "Classpath" exception
017: * as provided by Sun in the GPL Version 2 section of the License file that
018: * accompanied this code. If applicable, add the following below the License
019: * Header, with the fields enclosed by brackets [] replaced by your own
020: * identifying information: "Portions Copyrighted [year]
021: * [name of copyright owner]"
022: *
023: * Contributor(s):
024: *
025: * If you wish your version of this file to be governed by only the CDDL or
026: * only the GPL Version 2, indicate your decision by adding "[Contributor]
027: * elects to include this software in this distribution under the [CDDL or GPL
028: * Version 2] license." If you don't indicate a single choice of license, a
029: * recipient has the option to distribute your version of this file under
030: * either the CDDL, the GPL Version 2 or to extend the choice of license to
031: * its licensees as provided above. However, if you add GPL Version 2 code
032: * and therefore, elected the GPL Version 2 license, then the option applies
033: * only if the new code is made subject to such option by the copyright
034: * holder.
035: */
036:
037: package com.sun.tools.ws.processor.model;
038:
039: import com.sun.tools.ws.processor.model.jaxb.JAXBModel;
040: import com.sun.tools.ws.wsdl.framework.Entity;
041:
042: import javax.xml.namespace.QName;
043: import java.util.*;
044:
045: /**
046: * The model is used to represent the entire Web Service. The JAX-WS ProcessorActions can process
047: * this Model to generate Java artifacts such as the service interface.
048: *
049: * @author WS Development Team
050: */
051: public class Model extends ModelObject {
052:
053: public Model(Entity entity) {
054: super (entity);
055: }
056:
057: public Model(QName name, Entity entity) {
058: super (entity);
059: this .name = name;
060: }
061:
062: public QName getName() {
063: return name;
064: }
065:
066: public void setName(QName n) {
067: name = n;
068: }
069:
070: public String getTargetNamespaceURI() {
071: return targetNamespace;
072: }
073:
074: public void setTargetNamespaceURI(String s) {
075: targetNamespace = s;
076: }
077:
078: public void addService(Service service) {
079: if (servicesByName.containsKey(service.getName())) {
080: throw new ModelException("model.uniqueness");
081: }
082: services.add(service);
083: servicesByName.put(service.getName(), service);
084: }
085:
086: public Service getServiceByName(QName name) {
087: if (servicesByName.size() != services.size()) {
088: initializeServicesByName();
089: }
090: return (Service) servicesByName.get(name);
091: }
092:
093: /* serialization */
094: public List<Service> getServices() {
095: return services;
096: }
097:
098: /* serialization */
099: public void setServices(List<Service> l) {
100: services = l;
101: }
102:
103: private void initializeServicesByName() {
104: servicesByName = new HashMap();
105: if (services != null) {
106: for (Service service : services) {
107: if (service.getName() != null
108: && servicesByName
109: .containsKey(service.getName())) {
110:
111: throw new ModelException("model.uniqueness");
112: }
113: servicesByName.put(service.getName(), service);
114: }
115: }
116: }
117:
118: public void addExtraType(AbstractType type) {
119: extraTypes.add(type);
120: }
121:
122: public Iterator getExtraTypes() {
123: return extraTypes.iterator();
124: }
125:
126: /* serialization */
127: public Set<AbstractType> getExtraTypesSet() {
128: return extraTypes;
129: }
130:
131: /* serialization */
132: public void setExtraTypesSet(Set<AbstractType> s) {
133: extraTypes = s;
134: }
135:
136: public void accept(ModelVisitor visitor) throws Exception {
137: visitor.visit(this );
138: }
139:
140: /**
141: * @return the source version
142: */
143: public String getSource() {
144: return source;
145: }
146:
147: /**
148: * @param string
149: */
150: public void setSource(String string) {
151: source = string;
152: }
153:
154: public void setJAXBModel(JAXBModel jaxBModel) {
155: this .jaxBModel = jaxBModel;
156: }
157:
158: public JAXBModel getJAXBModel() {
159: return jaxBModel;
160: }
161:
162: private QName name;
163: private String targetNamespace;
164: private List<Service> services = new ArrayList<Service>();
165: private Map<QName, Service> servicesByName = new HashMap<QName, Service>();
166: private Set<AbstractType> extraTypes = new HashSet<AbstractType>();
167: private String source;
168: private JAXBModel jaxBModel = null;
169: }
|