001: /*
002: * BEGIN_HEADER - DO NOT EDIT
003: *
004: * The contents of this file are subject to the terms
005: * of the Common Development and Distribution License
006: * (the "License"). You may not use this file except
007: * in compliance with the License.
008: *
009: * You can obtain a copy of the license at
010: * https://open-esb.dev.java.net/public/CDDLv1.0.html.
011: * See the License for the specific language governing
012: * permissions and limitations under the License.
013: *
014: * When distributing Covered Code, include this CDDL
015: * HEADER in each file and include the License file at
016: * https://open-esb.dev.java.net/public/CDDLv1.0.html.
017: * If applicable add the following below this CDDL HEADER,
018: * with the fields enclosed by brackets "[]" replaced with
019: * your own identifying information: Portions Copyright
020: * [year] [name of copyright owner]
021: */
022:
023: /*
024: * @(#)InterfaceFaultImpl.java
025: * Copyright 2004-2007 Sun Microsystems, Inc. All Rights Reserved.
026: *
027: * END_HEADER - DO NOT EDIT
028: */
029: package com.sun.jbi.wsdl2.impl;
030:
031: import javax.xml.namespace.QName;
032:
033: import org.w3.ns.wsdl.InterfaceFaultType;
034:
035: /**
036: * Implementation of WSDL 2.0 Interface Fault component.
037: *
038: * @author Sun Microsystems, Inc.
039: */
040: final class InterfaceFaultImpl extends InterfaceFault {
041: /** The definitions component this binding belongs to */
042: private DescriptionImpl mContainer;
043:
044: /**
045: * Get the container for this component.
046: *
047: * @return The component for this component
048: */
049: protected DescriptionImpl getContainer() {
050: return this .mContainer;
051: }
052:
053: /**
054: * Construct a interface fault component implementation object from the
055: * given XML bean.
056: *
057: * @param bean The interface XML bean to use to construct this component.
058: * @param defs The container for this interface fault component.
059: */
060: private InterfaceFaultImpl(InterfaceFaultType bean,
061: DescriptionImpl defs) {
062: super (bean);
063:
064: this .mContainer = defs;
065: }
066:
067: /** Map of WSDL-defined attribute QNames. Keyed by QName.toString value */
068: private static java.util.Map sWsdlAttributeQNames = null;
069:
070: /**
071: * Worker class method for {@link #getWsdlAttributeNameMap()}.
072: *
073: * @return Map of WSDL-defined attribute QNames for this component,
074: * indexed by QName.toString()
075: */
076: static synchronized java.util.Map getAttributeNameMap() {
077: if (sWsdlAttributeQNames == null) {
078: sWsdlAttributeQNames = XmlBeansUtil
079: .getAttributesMap(InterfaceFaultType.type);
080: }
081:
082: return sWsdlAttributeQNames;
083: }
084:
085: /**
086: * Get map of WSDL-defined attribute QNames for this component, indexed by
087: * canonical QName string (see {@link javax.xml.namespace.QName#toString()}.
088: *
089: * @return Map of WSDL-defined attribute QNames for this component,
090: * indexed by QName.toString()
091: */
092: public java.util.Map getWsdlAttributeNameMap() {
093: return getAttributeNameMap();
094: }
095:
096: /**
097: * Get the name of this component.
098: *
099: * @return The name of this component
100: */
101: public String getName() {
102: return getBean().getName();
103: }
104:
105: /**
106: * Set the name of this component.
107: *
108: * @param theName The name of this component
109: */
110: public void setName(String theName) {
111: getBean().setName(theName);
112: }
113:
114: /**
115: * Get qualified name referring to the element declaration of the payload
116: * of the fault.
117: *
118: * @return Qualified name referring to the element declaration of the
119: * payload of the fault
120: */
121: public QName getElement() {
122: return getBean().getElement();
123: }
124:
125: /**
126: * Set qualified name referring to the element declaration of the payload
127: * of the fault.
128: *
129: * @param theElement Qualified name referring to the element declaration
130: * of the payload of the fault
131: */
132: public void setElement(QName theElement) {
133: if (theElement != null) {
134: getBean().setElement(theElement);
135: } else {
136: getBean().unsetElement();
137: }
138: }
139:
140: /**
141: * Get qualified name of this component.
142: *
143: * @return Qualified name of this component
144: */
145: public QName getQualifiedName() {
146: return new QName(getContainer().getTargetNamespace(), getName());
147: }
148:
149: /**
150: * A factory class for creating / finding components for given XML beans.
151: * <p>
152: * This factory guarantees that there will only be one component for each
153: * XML bean instance.
154: */
155: static class Factory {
156: /**
157: * Find the WSDL interface component associated with the given XML
158: * bean, creating a new component if necessary.
159: * <p>
160: * This is thread-safe.<p>
161: *
162: * @param bean The XML bean to find the component for.
163: * @param defs The container for the component.
164: * @return The WSDL interface fault component for the given
165: * <code>bean</code> (null if the <code>bean</code> is null).
166: */
167: static InterfaceFaultImpl getInstance(InterfaceFaultType bean,
168: DescriptionImpl defs) {
169: InterfaceFaultImpl result = null;
170:
171: if (bean != null) {
172: java.util.Map map = defs.getInterfaceFaultMap();
173:
174: synchronized (map) {
175: result = (InterfaceFaultImpl) map.get(bean);
176:
177: if (result == null) {
178: result = new InterfaceFaultImpl(bean, defs);
179: map.put(bean, result);
180: }
181: }
182: }
183:
184: return result;
185: }
186: }
187: }
|