You are viewing a plain text version of this content. The canonical link for it is here.
Posted to woden-dev@ws.apache.org by jk...@apache.org on 2005/11/27 19:04:38 UTC
svn commit: r349267 -
/incubator/woden/java/src/org/apache/woden/internal/wsdl20/BindingImpl.java
Author: jkaputin
Date: Sun Nov 27 10:04:32 2005
New Revision: 349267
URL: http://svn.apache.org/viewcvs?rev=349267&view=rev
Log:
Modified how binding faults are stored and retrieved
within binding.
Modified:
incubator/woden/java/src/org/apache/woden/internal/wsdl20/BindingImpl.java
Modified: incubator/woden/java/src/org/apache/woden/internal/wsdl20/BindingImpl.java
URL: http://svn.apache.org/viewcvs/incubator/woden/java/src/org/apache/woden/internal/wsdl20/BindingImpl.java?rev=349267&r1=349266&r2=349267&view=diff
==============================================================================
--- incubator/woden/java/src/org/apache/woden/internal/wsdl20/BindingImpl.java (original)
+++ incubator/woden/java/src/org/apache/woden/internal/wsdl20/BindingImpl.java Sun Nov 27 10:04:32 2005
@@ -51,17 +51,22 @@
* TODO determine type of retrieval required for binding faults and operations
* as this may influence the choice of collection type - e.g. Map for keyed access,
* or a List for sequential access.
- * A Map of binding faults or operations is keyed by the 'ref' attribute qname.
- * When the 'ref' qname is missing, we can store these objects in the Map
- * inside a List keyed by null rather than as individual objects keyed by qname.
+ *
+ * Binding faults and operations could be accessed by their 'ref' attribute qname, which
+ * typically suggests a Map implementation keyed by 'ref' qname. However, with these
+ * objects we have a null key problem when their 'ref' qname is missing. These 'null key'
+ * objects could be stored in a List, separately to the 'keyed' objects stored in the Map -
+ * i.e. they cannot be looked up in a Map because they have no key, but they must be stored
+ * so we store them in a list.
*
* TODO Final implementation choice will probably depend on what the resulting code
* looks like, its readability, etc. It may be that List is a better implementation choice,
* even for retrieval based on a 'ref' qname key, because the null key problem does not arise.
- * For now, I have implemented binding faults as a Map and binding operations as a List
- * to compare the implementations.
+ * For now, I have implemented binding faults as a Map of keyed objects AND a list of null key
+ * objects, and have implemented binding operations as a List to compare the implementations.
*/
- private Map fFaults = new HashMap();
+ private Map fFaultsWithRef = new HashMap();
+ private List fFaultsWithoutRef = new Vector();
private List fOperations = new Vector();
/* ************************************************************
@@ -113,14 +118,12 @@
public BindingFault[] getBindingFaults()
{
Collection coll = null;
- if(fFaults.containsKey(null)) {
- coll = (Collection)fFaults.get(null); //collect faults without a 'ref' qname
- Map map = new HashMap();
- map.putAll(fFaults);
- map.remove(null); //collect faults with a 'ref' qname
- coll.addAll(map.values()); //collect all faults (with and without 'ref')
+ if(fFaultsWithoutRef.isEmpty()) {
+ coll = fFaultsWithRef.values();
} else {
- coll = fFaults.values(); //all faults have a 'ref' qname
+ coll = new Vector();
+ coll.addAll(fFaultsWithoutRef);
+ coll.addAll(fFaultsWithRef.values());
}
BindingFault[] array = new BindingFault[coll.size()];
@@ -188,24 +191,18 @@
* TODO see previous comments for fFaults and getBindingFaults() about the null key problem
* with the use of Map, rather than List.
*
+ * Binding faults are stored in a Map keyed by their 'ref' attribute qname.
+ * If they are missing their 'ref' qname, they are stored in a list instead of the map.
+ *
* @see org.apache.woden.wsdl20.xml.BindingElement#addBindingFaultElement(org.apache.woden.wsdl20.xml.BindingFaultElement)
*/
public void addBindingFaultElement(BindingFaultElement fault)
{
QName qname = fault.getRef();
- if(qname != null)
- {
- fFaults.put(qname, fault);
- }
- else
- {
- //Any binding faults missing their 'ref' qname, are stored in a list keyed by null.
- List list = (List)fFaults.get(null);
- if(list == null) {
- list = new Vector();
- fFaults.put(null, list);
- }
- list.add(fault);
+ if(qname != null) {
+ fFaultsWithRef.put(qname, fault);
+ } else {
+ fFaultsWithoutRef.add(fault);
}
}
@@ -218,14 +215,12 @@
public BindingFaultElement[] getBindingFaultElements()
{
Collection coll = null;
- if(fFaults.containsKey(null)) {
- coll = (Collection)fFaults.get(null); //collect faults without a 'ref' qname
- Map map = new HashMap();
- map.putAll(fFaults);
- map.remove(null); //collect faults with a 'ref' qname
- coll.addAll(map.values()); //collect all faults (with and without 'ref')
+ if(fFaultsWithoutRef.isEmpty()) {
+ coll = fFaultsWithRef.values();
} else {
- coll = fFaults.values(); //all faults have a 'ref' qname
+ coll = new Vector();
+ coll.addAll(fFaultsWithoutRef);
+ coll.addAll(fFaultsWithRef.values());
}
BindingFaultElement[] array = new BindingFaultElement[coll.size()];
@@ -263,11 +258,7 @@
*/
public BindingFaultElement getBindingFaultElement(QName qname)
{
- if(qname != null) {
- return (BindingFaultElement)fFaults.get(qname);
- } else {
- return null;
- }
+ return (BindingFaultElement)fFaultsWithRef.get(qname);
}
/*
---------------------------------------------------------------------
To unsubscribe, e-mail: woden-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: woden-dev-help@ws.apache.org