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: * @(#)BindingFaultImpl.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.BindingFaultType;
034:
035: /**
036: * Implementation of WSDL 2.0 Binding Fault component.
037: *
038: * @author Sun Microsystems, Inc.
039: */
040: final class BindingFaultImpl extends BindingFault {
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 binding fault component implementation object from the given
055: * XML bean.
056: *
057: * @param bean The binding XML bean to use to construct this component.
058: * @param defs The container for this binding fault component.
059: */
060: private BindingFaultImpl(BindingFaultType bean, DescriptionImpl defs) {
061: super (bean);
062:
063: this .mContainer = defs;
064: }
065:
066: /**
067: * Get interface fault that is bound to this binding fault.
068: *
069: * @return Interface fault that is bound to this binding fault
070: */
071: public QName getRef() {
072: return getBean().getRef();
073: }
074:
075: /**
076: * Set interface fault that is bound to this binding fault.
077: *
078: * @param theRef Interface fault that is bound to this binding fault
079: */
080: public void setRef(QName theRef) {
081: getBean().setRef(theRef);
082: }
083:
084: /** Map of WSDL-defined attribute QNames. Keyed by QName.toString value */
085: private static java.util.Map sWsdlAttributeQNames = null;
086:
087: /**
088: * Worker class method for {@link #getWsdlAttributeNameMap()}.
089: *
090: * @return Map of WSDL-defined attribute QNames for this component,
091: * indexed by QName.toString()
092: */
093: static synchronized java.util.Map getAttributeNameMap() {
094: if (sWsdlAttributeQNames == null) {
095: sWsdlAttributeQNames = XmlBeansUtil
096: .getAttributesMap(BindingFaultType.type);
097: }
098:
099: return sWsdlAttributeQNames;
100: }
101:
102: /**
103: * Get map of WSDL-defined attribute QNames for this component, indexed by
104: * canonical QName string (see {@link javax.xml.namespace.QName#toString()}.
105: * <p>
106: * Implementation note: since this method is declared in the public API
107: * <code>interface</code>, it has to be a member, not static. We delegate
108: * to a class method to do the actual work.
109: *
110: * @return Map of WSDL-defined attribute QNames for this component,
111: * indexed by QName.toString()
112: */
113: public java.util.Map getWsdlAttributeNameMap() {
114: return getAttributeNameMap();
115: }
116:
117: /**
118: * A factory class for creating / finding components for given XML beans.
119: * <p>
120: * This factory guarantees that there will only be one component for each
121: * XML bean instance.
122: */
123: static class Factory {
124: /**
125: * Find the WSDL binding component associated with the given XML
126: * bean, creating a new component if necessary.
127: * <p>
128: * This is thread-safe.<p>
129: *
130: * @param bean The XML bean to find the component for.
131: * @param defs The container for the component.
132: * @return The WSDL binding fault component for the given
133: * <code>bean</code> (null if the <code>bean</code> is null).
134: */
135: static BindingFaultImpl getInstance(BindingFaultType bean,
136: DescriptionImpl defs) {
137: BindingFaultImpl result = null;
138:
139: if (bean != null) {
140: java.util.Map map = defs.getBindingFaultMap();
141:
142: synchronized (map) {
143: result = (BindingFaultImpl) map.get(bean);
144:
145: if (result == null) {
146: result = new BindingFaultImpl(bean, defs);
147: map.put(bean, result);
148: }
149: }
150: }
151:
152: return result;
153: }
154: }
155: }
|