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: * @(#)BindingOperationFaultImpl.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 com.sun.jbi.wsdl2.Direction;
032:
033: import java.util.Map;
034:
035: import javax.xml.namespace.QName;
036:
037: import org.apache.xmlbeans.XmlCursor;
038:
039: import org.w3.ns.wsdl.BindingOperationFaultType;
040:
041: /**
042: * Implementation of WSDL 2.0 Fault Binding Operation Component.
043: *
044: * @author Sun Microsystems, Inc.
045: */
046: final class BindingOperationFaultImpl extends BindingOperationFault {
047: /** The container for this component */
048: private DescriptionImpl mContainer;
049:
050: /**
051: * Get the container for this component.
052: *
053: * @return The component for this component
054: */
055: protected DescriptionImpl getContainer() {
056: return this .mContainer;
057: }
058:
059: /**
060: * Get fault component describing the fault referred to by the component.
061: *
062: * @return Name of the fault component describing the fault referred to by
063: * the component
064: */
065: public QName getRef() {
066: return getBean().getRef();
067: }
068:
069: /**
070: * Set fault component reference describing the fault referred to by the
071: * component.
072: *
073: * @param theRef Name of the Fault component describing the fault
074: * referred to by the component
075: */
076: public void setRef(QName theRef) {
077: getBean().setRef(theRef);
078: }
079:
080: /**
081: * Construct a message fault reference component implementation from an
082: * XML Bean.
083: * @param bean The message reference fault XML bean to construct this
084: * component from.
085: * @param defs The container for the component.
086: */
087: BindingOperationFaultImpl(BindingOperationFaultType bean,
088: DescriptionImpl defs) {
089: super (bean);
090: this .mContainer = defs;
091: }
092:
093: /** Map of WSDL-defined attribute QNames. Keyed by QName.toString value */
094: private static java.util.Map sWsdlAttributeQNames = null;
095:
096: /**
097: * Worker class method for {@link #getWsdlAttributeNameMap()}.
098: *
099: * @return Map of WSDL-defined attribute QNames for this component,
100: * indexed by QName.toString()
101: */
102: static synchronized java.util.Map getAttributeNameMap() {
103: if (sWsdlAttributeQNames == null) {
104: sWsdlAttributeQNames = XmlBeansUtil
105: .getAttributesMap(BindingOperationFaultType.type);
106: }
107:
108: return sWsdlAttributeQNames;
109: }
110:
111: /**
112: * Get map of WSDL-defined attribute QNames for this component, indexed by
113: * canonical QName string (see {@link javax.xml.namespace.QName#toString()}.
114: *
115: * @return Map of WSDL-defined attribute QNames for this component,
116: * indexed by QName.toString()
117: */
118: public java.util.Map getWsdlAttributeNameMap() {
119: return getAttributeNameMap();
120: }
121:
122: /**
123: * Get message exchange pattern role identifier.
124: *
125: * @return Message exchange pattern role identifier
126: */
127: public String getMessageLabel() {
128: return getBean().getMessageLabel();
129: }
130:
131: /**
132: * Set message exchange pattern role identifier.
133: *
134: * @param theMessageLabel Message exchange pattern role identifier
135: */
136: public void setMessageLabel(String theMessageLabel) {
137: if (theMessageLabel != null) {
138: getBean().setMessageLabel(theMessageLabel);
139: } else {
140: getBean().unsetMessageLabel();
141: }
142: }
143:
144: /**
145: * Get direction of this message in the exchange.
146: *
147: * @return Direction of this message in the exchange
148: */
149: public Direction getDirection() {
150: XmlCursor cursor = getBean().newCursor();
151: QName name = cursor.getName();
152:
153: cursor.dispose();
154:
155: return INFAULT.equals(name.getLocalPart()) ? Direction.IN
156: : Direction.OUT;
157: }
158:
159: /** WSDL element local name for in-faults */
160: private static final String INFAULT = "infault";
161:
162: /** WSDL element local name for out-faults */
163: private static final String OUTFAULT = "outfault";
164:
165: /**
166: * Set direction of this message in the exchange.
167: *
168: * @param theDirection Direction of this message in the exchange
169: */
170: public void setDirection(Direction theDirection) {
171: XmlCursor cursor = getBean().newCursor();
172: QName name = cursor.getName();
173: QName newName = new QName(name.getNamespaceURI(),
174: theDirection == Direction.IN ? INFAULT : OUTFAULT);
175:
176: cursor.setName(newName);
177: cursor.dispose();
178: }
179:
180: /**
181: * A factory class for creating / finding components for given XML beans.
182: * <p>
183: * This factory guarantees that there will only be one component for each
184: * XML bean instance.
185: */
186: static class Factory {
187: /**
188: * Find the WSDL message fault reference component associated with the given XML
189: * bean, creating a new component if necessary.
190: * <p>
191: * This is thread-safe.<p>
192: *
193: * @param bean The XML bean to find the component for.
194: * @param defs The container for the component.
195: * @return The WSDL message fault reference component for the given
196: * <code>bean</code> (null if the <code>bean</code> is null).
197: */
198: static BindingOperationFaultImpl getInstance(
199: BindingOperationFaultType bean, DescriptionImpl defs) {
200: BindingOperationFaultImpl result;
201:
202: if (bean != null) {
203: Map map = defs.getMessageFaultReferenceMap();
204:
205: synchronized (map) {
206: result = (BindingOperationFaultImpl) map.get(bean);
207:
208: if (result == null) {
209: result = new BindingOperationFaultImpl(bean,
210: defs);
211: map.put(bean, result);
212: }
213: }
214: } else {
215: result = null;
216: }
217:
218: return result;
219: }
220: }
221: }
222:
223: // End-of-file: BindingOperationFaultImpl.java
|