You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by di...@apache.org on 2007/03/01 15:49:46 UTC

svn commit: r513354 [1/2] - in /webservices/axis2/trunk/java/modules: saaj-api/src/javax/xml/soap/ saaj/src/org/apache/axis2/saaj/ saaj/test/org/apache/axis2/saaj/

Author: dims
Date: Thu Mar  1 06:49:44 2007
New Revision: 513354

URL: http://svn.apache.org/viewvc?view=rev&rev=513354
Log:
Fix for AXIS2-1956 - SAAJ 1.3 implementation (Removed implementation code from saap-api module. fixed Base64 check.Code clean up.)

Modified:
    webservices/axis2/trunk/java/modules/saaj-api/src/javax/xml/soap/MessageFactory.java
    webservices/axis2/trunk/java/modules/saaj-api/src/javax/xml/soap/SAAJResult.java
    webservices/axis2/trunk/java/modules/saaj-api/src/javax/xml/soap/SOAPConnection.java
    webservices/axis2/trunk/java/modules/saaj-api/src/javax/xml/soap/SOAPFactory.java
    webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/AttachmentPartImpl.java
    webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/DetailEntryImpl.java
    webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/DetailImpl.java
    webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/MessageFactoryImpl.java
    webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SAAJMetaFactoryImpl.java
    webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPBodyElementImpl.java
    webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPBodyImpl.java
    webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPConnectionImpl.java
    webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPElementImpl.java
    webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPEnvelopeImpl.java
    webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPFactoryImpl.java
    webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPFaultImpl.java
    webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPHeaderImpl.java
    webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPMessageImpl.java
    webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPPartImpl.java
    webservices/axis2/trunk/java/modules/saaj/test/org/apache/axis2/saaj/AttachmentTest.java
    webservices/axis2/trunk/java/modules/saaj/test/org/apache/axis2/saaj/SOAPEnvelopeTest.java
    webservices/axis2/trunk/java/modules/saaj/test/org/apache/axis2/saaj/SOAPFactoryTest.java
    webservices/axis2/trunk/java/modules/saaj/test/org/apache/axis2/saaj/SOAPMessageTest.java
    webservices/axis2/trunk/java/modules/saaj/test/org/apache/axis2/saaj/SOAPPartTest.java

Modified: webservices/axis2/trunk/java/modules/saaj-api/src/javax/xml/soap/MessageFactory.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/saaj-api/src/javax/xml/soap/MessageFactory.java?view=diff&rev=513354&r1=513353&r2=513354
==============================================================================
--- webservices/axis2/trunk/java/modules/saaj-api/src/javax/xml/soap/MessageFactory.java (original)
+++ webservices/axis2/trunk/java/modules/saaj-api/src/javax/xml/soap/MessageFactory.java Thu Mar  1 06:49:44 2007
@@ -17,8 +17,6 @@
 
 import java.io.IOException;
 import java.io.InputStream;
-import java.lang.reflect.Method;
-import java.lang.reflect.InvocationTargetException;
 
 /**
  * <P>A factory for creating <CODE>SOAPMessage</CODE> objects.</P>
@@ -172,28 +170,8 @@
 
     public static MessageFactory newInstance(String soapVersion)
             throws SOAPException {
-    	
-    	if(!(SOAPConstants.SOAP_1_1_PROTOCOL.equals(soapVersion) ||
-    			SOAPConstants.SOAP_1_2_PROTOCOL.equals(soapVersion) ||
-    				SOAPConstants.DYNAMIC_SOAP_PROTOCOL.equals(soapVersion))){
-    		throw new SOAPException("Invalid SOAP Protocol Version");
-    	}
-    	
-        MessageFactory factory = newInstance();
-        if(factory.getClass().getName().equals(DEFAULT_MESSAGE_FACTORY)){
-            try {
-                Method m = factory.getClass().getMethod("setSOAPVersion", new Class[]{String.class});
-                m.invoke(factory, new Object[]{soapVersion});
-            } catch (IllegalAccessException e) {
-                throw new SOAPException(e);
-            } catch (InvocationTargetException e) {
-                throw new SOAPException(e);
-            } catch (NoSuchMethodException e) {
-                throw new SOAPException(e);
-            }
-        }
-        return factory;
-    }
+        return SAAJMetaFactory.getInstance().newMessageFactory(soapVersion);
+    }        
 
     private static final String DEFAULT_MESSAGE_FACTORY =
             "org.apache.axis2.saaj.MessageFactoryImpl";

Modified: webservices/axis2/trunk/java/modules/saaj-api/src/javax/xml/soap/SAAJResult.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/saaj-api/src/javax/xml/soap/SAAJResult.java?view=diff&rev=513354&r1=513353&r2=513354
==============================================================================
--- webservices/axis2/trunk/java/modules/saaj-api/src/javax/xml/soap/SAAJResult.java (original)
+++ webservices/axis2/trunk/java/modules/saaj-api/src/javax/xml/soap/SAAJResult.java Thu Mar  1 06:49:44 2007
@@ -1,61 +1,59 @@
-/*
- * Copyright 2004,2005 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package javax.xml.soap;
-
-import javax.xml.transform.dom.DOMResult;
-
-public class SAAJResult extends DOMResult {
-
-    public SAAJResult()
-            throws SOAPException {
-        this(MessageFactory.newInstance().createMessage());
-        org.w3c.dom.Node node = this.getNode();
-        node.removeChild(node.getFirstChild());
-        this.setNode(null);
-    }
-
-    public SAAJResult(String s)
-            throws SOAPException {
-        this(MessageFactory.newInstance(s).createMessage());
-    }
-
-    public SAAJResult(SOAPMessage soapmessage) {
-        super(soapmessage.getSOAPPart());
-    }
-
-    public SAAJResult(SOAPElement soapelement) {
-        super(soapelement);
-    }
-
-    public javax.xml.soap.Node getResult() {
-        org.w3c.dom.Node node = super.getNode();
-        //When using SAAJResult saajResult = new SAAJResult();
-        if (node == null){
-        	return null;
-        }
-        if(node instanceof SOAPPart){
-            try {
-                return ((SOAPPart)node).getEnvelope();
-            } catch (SOAPException e) {
-                throw new RuntimeException(e);
-            }
-        }
-        return (javax.xml.soap.Node) node.getFirstChild();
-    }
-
-    
-}
+/*
+ * Copyright 2004,2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package javax.xml.soap;
+
+import javax.xml.transform.dom.DOMResult;
+
+public class SAAJResult extends DOMResult {
+
+    public SAAJResult()
+            throws SOAPException {
+        this(MessageFactory.newInstance().createMessage());
+        org.w3c.dom.Node node = this.getNode();
+        node.removeChild(node.getFirstChild());
+        this.setNode(null);
+    }
+
+    public SAAJResult(String s)
+            throws SOAPException {
+        this(MessageFactory.newInstance(s).createMessage());
+    }
+
+    public SAAJResult(SOAPMessage soapmessage) {
+        super(soapmessage.getSOAPPart());
+    }
+
+    public SAAJResult(SOAPElement soapelement) {
+        super(soapelement);
+    }
+
+    public javax.xml.soap.Node getResult() {
+        org.w3c.dom.Node node = super.getNode();
+        //When using SAAJResult saajResult = new SAAJResult();
+        if (node == null){
+        	return null;
+        }
+        if(node instanceof SOAPPart){
+            try {
+                return ((SOAPPart)node).getEnvelope();
+            } catch (SOAPException e) {
+                throw new RuntimeException(e);
+            }
+        }
+        return (javax.xml.soap.Node) node.getFirstChild();
+    }
+}

Modified: webservices/axis2/trunk/java/modules/saaj-api/src/javax/xml/soap/SOAPConnection.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/saaj-api/src/javax/xml/soap/SOAPConnection.java?view=diff&rev=513354&r1=513353&r2=513354
==============================================================================
--- webservices/axis2/trunk/java/modules/saaj-api/src/javax/xml/soap/SOAPConnection.java (original)
+++ webservices/axis2/trunk/java/modules/saaj-api/src/javax/xml/soap/SOAPConnection.java Thu Mar  1 06:49:44 2007
@@ -15,11 +15,6 @@
  */
 package javax.xml.soap;
 
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.MalformedURLException;
-import java.net.URL;
-
 /**
  * A point-to-point connection that a client can use for sending messages
  * directly to a remote party (represented by a URL, for instance).
@@ -73,26 +68,8 @@
      * @return the SOAPMessage object that is the response to the get message request
      * @throws SOAPException - if there is a SOAP error
      */
-    public SOAPMessage get(Object to)
+    public SOAPMessage get(Object obj)
             throws SOAPException {
-    	URL url = null;
-    	try 
-    	{
-    		url = (to instanceof URL) ? (URL) to : new URL(to.toString());
-    		if(url != null){
-    			//InputStream in = url.openStream();
-    			//TODO : setting null for mime headers
-    			// close the connection??
-    			SOAPMessage soapMessage = null;
-    			//new SOAPMessageImpl(in,null);
-    			return soapMessage;
-    		}
-    		return null;
-    	}catch (MalformedURLException e) {
-    		throw new SOAPException(e);
-    	}catch (IOException e) {
-    		throw new SOAPException(e);
-    	}    	
-    	
+        throw new UnsupportedOperationException();
     }
 }

Modified: webservices/axis2/trunk/java/modules/saaj-api/src/javax/xml/soap/SOAPFactory.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/saaj-api/src/javax/xml/soap/SOAPFactory.java?view=diff&rev=513354&r1=513353&r2=513354
==============================================================================
--- webservices/axis2/trunk/java/modules/saaj-api/src/javax/xml/soap/SOAPFactory.java (original)
+++ webservices/axis2/trunk/java/modules/saaj-api/src/javax/xml/soap/SOAPFactory.java Thu Mar  1 06:49:44 2007
@@ -160,21 +160,10 @@
      * @throws SOAPException - if there is an error creating the specified SOAPFactory
      * @see <CODE>SAAJMetaFactory</CODE>
      */
-    public static SOAPFactory newInstance(String protocol) throws SOAPException {
-        try {
-        	if(SOAPConstants.DEFAULT_SOAP_PROTOCOL.equals(protocol) 
-        			|| SOAPConstants.SOAP_1_1_PROTOCOL.equals(protocol)
-        			|| SOAPConstants.SOAP_1_2_PROTOCOL.equals(protocol)){
-        		SAAJMetaFactory saajMetaFactory = SAAJMetaFactory.getInstance();
-        		return saajMetaFactory.newSOAPFactory(protocol);
-        	}else{
-        		throw new SOAPException("Unknown protocol :"+protocol);
-        	}
-        } catch (Exception exception) {
-            throw new SOAPException("Unable to create SOAP Factory: "
-                    + exception.getMessage());
-        }
+    public static SOAPFactory newInstance(String s) throws SOAPException {
+        return SAAJMetaFactory.getInstance().newSOAPFactory(s);
     }
+
 
     /**
      * Creates a SOAPElement object from an existing DOM Element. If the DOM Element that is

Modified: webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/AttachmentPartImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/AttachmentPartImpl.java?view=diff&rev=513354&r1=513353&r2=513354
==============================================================================
--- webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/AttachmentPartImpl.java (original)
+++ webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/AttachmentPartImpl.java Thu Mar  1 06:49:44 2007
@@ -16,15 +16,14 @@
 package org.apache.axis2.saaj;
 
 import java.awt.image.BufferedImage;
-import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
-import java.io.StringReader;
+import java.io.OutputStream;
+import java.io.PushbackInputStream;
 import java.util.Iterator;
 
 import javax.activation.DataHandler;
-import javax.activation.UnsupportedDataTypeException;
 import javax.xml.soap.AttachmentPart;
 import javax.xml.soap.MimeHeader;
 import javax.xml.soap.MimeHeaders;
@@ -35,6 +34,7 @@
 import org.apache.axiom.om.impl.dom.DOOMAbstractFactory;
 import org.apache.axiom.om.impl.dom.DocumentImpl;
 import org.apache.axiom.om.impl.dom.TextImpl;
+import org.apache.axiom.om.util.Base64;
 import org.apache.axis2.saaj.util.SAAJDataSource;
 import org.apache.axis2.transport.http.HTTPConstants;
 
@@ -164,29 +164,24 @@
         }
         try {
             String contentType = dataHandler.getContentType();
-           	if (contentType.equals("text/xml")) {
-           		StringReader stringReader = new StringReader((String)dataHandler.getContent());
-            	StreamSource streamSource = new StreamSource(stringReader);
+           	if (contentType.equals(HTTPConstants.MEDIA_TYPE_TEXT_XML) || contentType.equals(HTTPConstants.MEDIA_TYPE_APPLICATION_XML)) {
+            	StreamSource streamSource = new StreamSource();
    	        	streamSource.setInputStream(dataHandler.getInputStream());
             	return streamSource;
-            	
-                //For these content types underlying DataContentHandler surely does
-                //the conversion to appropriate java object and we will return that java object
-                //return dataHandler.getContent();
             }else if(contentType.equals("text/plain") ||
             			contentType.equals("text/html")){
             	return (String)dataHandler.getContent();
             }else {
                 try {
-                    return dataHandler.getContent();
-                } catch (UnsupportedDataTypeException e) {
+                	return dataHandler.getContent();
+                } catch (Exception e) {
                     //If the underlying DataContentHandler can't handle the object contents,
-                    //we will return an inputstream of raw bytes represneting the content data
+                    //we will return an inputstream of raw bytes representing the content data
                     return dataHandler.getDataSource().getInputStream();
                 }
             }
         } catch (IOException e) {
-            throw new SOAPException(e);
+            throw new SOAPException(e.getMessage());
         }
     }
 
@@ -221,7 +216,7 @@
                         SAAJDataSource.MAX_MEMORY_DISK_CACHED,
                         contentType, true);
                 extractFilename(source);
-                dataHandler = new DataHandler(source);
+                this.dataHandler = new DataHandler(source);
                 contentObject = object;
             } catch (java.io.IOException io) {
                 throw new java.lang.IllegalArgumentException("Illegal Argument");
@@ -233,7 +228,7 @@
                         SAAJDataSource.MIN_MEMORY_DISK_CACHED,
                         contentType, true);
                 extractFilename(source);
-                dataHandler = new DataHandler(source);
+                this.dataHandler = new DataHandler(source);
                 contentObject = null; // the stream has been consumed
             } catch (java.io.IOException io) {
                 throw new java.lang.IllegalArgumentException("Illegal Argument");
@@ -244,17 +239,17 @@
                         SAAJDataSource.MAX_MEMORY_DISK_CACHED,
                         contentType, true);
                 extractFilename(source);
-                dataHandler = new DataHandler(source);
+                this.dataHandler = new DataHandler(source);
                 contentObject = null; // the stream has been consumed
             } catch (java.io.IOException io) {
                 throw new java.lang.IllegalArgumentException("Illegal Argument");
             }
         }else if (object instanceof BufferedImage) {
             try {
-                dataHandler = new DataHandler(object,contentType);
+            	this.dataHandler = new DataHandler(object,contentType);
                 contentObject = null; // the stream has been consumed
             } catch (Exception e) {
-            	throw new java.lang.IllegalArgumentException(e);
+            	throw new java.lang.IllegalArgumentException(e.getMessage());
             }
         }
         else if (object instanceof byte[]) {
@@ -266,10 +261,10 @@
                         contentType, true);
                 extractFilename(source);
                 
-                dataHandler = new DataHandler(source);
+                this.dataHandler = new DataHandler(source);
                 contentObject = object;
             } catch (Exception e) {
-            	throw new java.lang.IllegalArgumentException(e);
+            	throw new java.lang.IllegalArgumentException(e.getMessage());
             }
         }
         else {
@@ -317,7 +312,7 @@
         if (datahandler != null) {
             this.dataHandler = datahandler;
             setMimeHeader(HTTPConstants.HEADER_CONTENT_TYPE, datahandler.getContentType());
-            omText = DOOMAbstractFactory.getOMFactory().createOMText(dataHandler, true);
+            omText = DOOMAbstractFactory.getOMFactory().createOMText(datahandler, true);
         } else {
             throw new IllegalArgumentException("Cannot set null DataHandler");
         }
@@ -514,8 +509,16 @@
     		throw new SOAPException("Content is null");
     	}
     	try {
-    		if(isValidBase64Encoding(content)){
-    			setContent(content, contentType);		
+    		int size = content.available();
+    		PushbackInputStream pushbackInputStream;
+    		if(size > 0){
+    			pushbackInputStream = new PushbackInputStream(content,size);
+    		}else{
+    			pushbackInputStream = new PushbackInputStream(content);
+    		}
+    		
+    		if(isValidBase64Encoding(pushbackInputStream)){
+    			setContent(pushbackInputStream, contentType);		
     		}else{
     			throw new SOAPException("Not a valid Base64 encoding");
     		}
@@ -527,20 +530,26 @@
     /*
      * check if the given InputStream contains valid Base64 Encoding
      */
-    private boolean isValidBase64Encoding (InputStream content) {
-    	//TODO need to add more checks
+    private boolean isValidBase64Encoding (PushbackInputStream pushbackInputStream) {
     	int size;
-		try {
-			size = content.available();
-	    	if (size%4 != 0){
-	    		//Length of Base64 encoded input string is not a multiple of 4
-	    		return false;
-	    	}else{
-	    		return true;
-	    	}
-		} catch (IOException e) {
-			return false;
-		}
+    	try {
+    		size = pushbackInputStream.available();
+    		if(size == 0){
+    			return true;
+    		}
+    		byte[] buffer = new byte[size];
+    		int read = pushbackInputStream.read(buffer, 0, size);
+    		
+    		OutputStream outputStream = new ByteArrayOutputStream();  		
+    		outputStream.write(buffer);
+    		String contentString = outputStream.toString();			
+    		outputStream.close();
+    		pushbackInputStream.unread(buffer,0,read);
+    		
+    		return Base64.isValidBase64Encoding(contentString);
+    	} catch (Exception e) {
+    		return false;
+    	}
     }
     
     /**
@@ -555,9 +564,7 @@
      *         
      */
     public void setRawContent(InputStream content, String contentType) throws SOAPException {
-    	//TODO check
     	if(content == null){
-    		//throw new NullPointerException("content is null"); 
     		throw new SOAPException("content is null");
     	}
     	setContent(content, contentType);
@@ -630,8 +637,6 @@
     }
 
     private void extractFilename(SAAJDataSource source) {
-
-        //check for there being a file
         if (source.getDiskCacheFile() != null) {
             String path = source.getDiskCacheFile().getAbsolutePath();
             setAttachmentFile(path);

Modified: webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/DetailEntryImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/DetailEntryImpl.java?view=diff&rev=513354&r1=513353&r2=513354
==============================================================================
--- webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/DetailEntryImpl.java (original)
+++ webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/DetailEntryImpl.java Thu Mar  1 06:49:44 2007
@@ -39,47 +39,38 @@
     }
 
     public SOAPElement addAttribute(QName qname, String value) throws SOAPException {
-    	//TODO - check
     	return super.addAttribute(qname, value);
     }
 
     public SOAPElement addChildElement(QName qname) throws SOAPException {
-    	//TODO - check
     	return super.addChildElement(qname);
     }
 
     public QName createQName(String localName, String prefix) throws SOAPException {
-    	//TODO - check
     	return super.createQName(localName, prefix);
     }
 
     public Iterator getAllAttributesAsQNames() {
-    	//TODO - check
     	return super.getAllAttributesAsQNames();
     }
 
     public String getAttributeValue(QName qname) {
-    	//TODO - check
     	return super.getAttributeValue(qname);
     }
 
     public Iterator getChildElements(QName qname) {
-    	//TODO - check
     	return super.getChildElements(qname);
     }
 
     public QName getElementQName() {
-    	//TODO - check
     	return super.getElementQName();
     }
 
     public boolean removeAttribute(QName qname) {
-    	//TODO - check
     	return super.removeAttribute(qname);
     }
 
     public SOAPElement setElementQName(QName newName) throws SOAPException {
-    	//TODO - check
     	return super.setElementQName(newName);
     }
 }

Modified: webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/DetailImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/DetailImpl.java?view=diff&rev=513354&r1=513353&r2=513354
==============================================================================
--- webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/DetailImpl.java (original)
+++ webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/DetailImpl.java Thu Mar  1 06:49:44 2007
@@ -113,47 +113,38 @@
     }
 
     public SOAPElement addAttribute(QName qname, String value) throws SOAPException {
-    	//TODO - check
     	return super.addAttribute(qname, value);
     }
 
     public SOAPElement addChildElement(QName qname) throws SOAPException {
-    	//TODO - check
     	return super.addChildElement(qname);
     }
 
     public QName createQName(String localName, String prefix) throws SOAPException {
-    	//TODO - check
     	return super.createQName(localName, prefix);
     }
 
     public Iterator getAllAttributesAsQNames() {
-    	//TODO - check
     	return super.getAllAttributesAsQNames();
     }
 
     public String getAttributeValue(QName qname) {
-    	//TODO - check
         return super.getAttributeValue(qname);
     }
 
     public Iterator getChildElements(QName qname) {
-    	//TODO - check
         return super.getChildElements(qname);
     }
 
     public QName getElementQName() {
-    	//TODO - check
     	return super.getElementQName();
     }
 
     public boolean removeAttribute(QName qname) {
-    	//TODO - check
     	return super.removeAttribute(qname);
     }
 
     public SOAPElement setElementQName(QName newName) throws SOAPException {
-    	//TODO - check
     	return super.setElementQName(newName);
     }
 }

Modified: webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/MessageFactoryImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/MessageFactoryImpl.java?view=diff&rev=513354&r1=513353&r2=513354
==============================================================================
--- webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/MessageFactoryImpl.java (original)
+++ webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/MessageFactoryImpl.java Thu Mar  1 06:49:44 2007
@@ -15,18 +15,17 @@
  */
 package org.apache.axis2.saaj;
 
-import org.apache.axiom.soap.impl.dom.soap11.SOAP11Factory;
-import org.apache.axiom.soap.impl.dom.soap12.SOAP12Factory;
-import org.apache.axis2.saaj.util.IDGenerator;
+import java.io.IOException;
+import java.io.InputStream;
 
 import javax.xml.soap.MessageFactory;
 import javax.xml.soap.MimeHeaders;
+import javax.xml.soap.SOAPConstants;
 import javax.xml.soap.SOAPException;
 import javax.xml.soap.SOAPMessage;
-import javax.xml.soap.SOAPConstants;
 
-import java.io.IOException;
-import java.io.InputStream;
+import org.apache.axiom.soap.impl.dom.soap11.SOAP11Factory;
+import org.apache.axiom.soap.impl.dom.soap12.SOAP12Factory;
 
 /**
  * <P>A factory for creating <CODE>SOAPMessage</CODE> objects.</P>
@@ -137,7 +136,8 @@
                     new SOAPEnvelopeImpl((org.apache.axiom.soap.impl.dom.SOAPEnvelopeImpl)
                             new SOAP12Factory().getDefaultEnvelope());
         }else if(soapVersion.equals(SOAPConstants.DYNAMIC_SOAP_PROTOCOL)){
-        	throw new UnsupportedOperationException("createMessage() is not supported for DYNAMIC_SOAP_PROTOCOL");
+        	throw new UnsupportedOperationException("createMessage() is not supported for " +
+        			"DYNAMIC_SOAP_PROTOCOL");
         }else {
         	//SOAP 1.1
             soapEnvelope =

Modified: webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SAAJMetaFactoryImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SAAJMetaFactoryImpl.java?view=diff&rev=513354&r1=513353&r2=513354
==============================================================================
--- webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SAAJMetaFactoryImpl.java (original)
+++ webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SAAJMetaFactoryImpl.java Thu Mar  1 06:49:44 2007
@@ -1,20 +1,31 @@
-package org.apache.axis2.saaj;
-
-import javax.xml.soap.SAAJMetaFactory;
-import javax.xml.soap.MessageFactory;
-import javax.xml.soap.SOAPException;
-import javax.xml.soap.SOAPFactory;
-
-public class SAAJMetaFactoryImpl extends SAAJMetaFactory {
-    protected MessageFactory newMessageFactory(String s) throws SOAPException {
-        MessageFactoryImpl factory = new  MessageFactoryImpl();
-        factory.setSOAPVersion(s);
-        return factory;
-    }
-
-    protected SOAPFactory newSOAPFactory(String s) throws SOAPException {
-        SOAPFactoryImpl factory = new SOAPFactoryImpl();
-        factory.setSOAPVersion(s);
-        return factory;
-    }
-}
+package org.apache.axis2.saaj;
+
+import javax.xml.soap.SAAJMetaFactory;
+import javax.xml.soap.MessageFactory;
+import javax.xml.soap.SOAPConstants;
+import javax.xml.soap.SOAPException;
+import javax.xml.soap.SOAPFactory;
+
+public class SAAJMetaFactoryImpl extends SAAJMetaFactory {
+    protected MessageFactory newMessageFactory(String soapVersion) throws SOAPException {
+    	if(!(SOAPConstants.SOAP_1_1_PROTOCOL.equals(soapVersion) ||
+    			SOAPConstants.SOAP_1_2_PROTOCOL.equals(soapVersion) ||
+    				SOAPConstants.DYNAMIC_SOAP_PROTOCOL.equals(soapVersion))){
+    		throw new SOAPException("Invalid SOAP Protocol Version");
+    	}    	
+        MessageFactoryImpl factory = new  MessageFactoryImpl();
+        factory.setSOAPVersion(soapVersion);
+        return factory;
+    }
+
+    protected SOAPFactory newSOAPFactory(String soapVersion) throws SOAPException {
+    	if(!(SOAPConstants.SOAP_1_1_PROTOCOL.equals(soapVersion) ||
+    			SOAPConstants.SOAP_1_2_PROTOCOL.equals(soapVersion) ||
+    				SOAPConstants.DYNAMIC_SOAP_PROTOCOL.equals(soapVersion))){
+    		throw new SOAPException("Invalid SOAP Protocol Version");
+    	}    	
+        SOAPFactoryImpl factory = new SOAPFactoryImpl();
+        factory.setSOAPVersion(soapVersion);
+        return factory;
+    }
+}

Modified: webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPBodyElementImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPBodyElementImpl.java?view=diff&rev=513354&r1=513353&r2=513354
==============================================================================
--- webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPBodyElementImpl.java (original)
+++ webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPBodyElementImpl.java Thu Mar  1 06:49:44 2007
@@ -42,47 +42,38 @@
     }
 
     public SOAPElement addAttribute(QName qname, String value) throws SOAPException {
-    	//TODO - check
     	return super.addAttribute(qname, value);
     }
 
     public SOAPElement addChildElement(QName qname) throws SOAPException {
-    	//TODO - check
     	return super.addChildElement(qname);
     }
 
     public QName createQName(String localName, String prefix) throws SOAPException {
-    	//TODO - check
     	return super.createQName(localName, prefix);
     }
 
     public Iterator getAllAttributesAsQNames() {
-    	//TODO - check
     	return super.getAllAttributesAsQNames();
     }
 
     public String getAttributeValue(QName qname) {
-    	//TODO - check
     	return super.getAttributeValue(qname);
     }
 
     public Iterator getChildElements(QName qname) {
-    	//TODO - check
     	return super.getChildElements(qname);
     }
 
     public QName getElementQName() {
-    	//TODO - check
     	return super.getElementQName();
     }
 
     public boolean removeAttribute(QName qname) {
-    	//TODO - check
     	return super.removeAttribute(qname);
     }
 
     public SOAPElement setElementQName(QName newName) throws SOAPException {
-    	//TODO - check
     	return super.setElementQName(newName);
     }
 }

Modified: webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPBodyImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPBodyImpl.java?view=diff&rev=513354&r1=513353&r2=513354
==============================================================================
--- webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPBodyImpl.java (original)
+++ webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPBodyImpl.java Thu Mar  1 06:49:44 2007
@@ -28,7 +28,6 @@
 import javax.xml.soap.Node;
 import javax.xml.soap.SOAPBody;
 import javax.xml.soap.SOAPBodyElement;
-import javax.xml.soap.SOAPConstants;
 import javax.xml.soap.SOAPElement;
 import javax.xml.soap.SOAPException;
 import javax.xml.soap.SOAPFault;
@@ -39,16 +38,11 @@
 import org.apache.axiom.om.impl.dom.ElementImpl;
 import org.apache.axiom.om.impl.dom.NamespaceImpl;
 import org.apache.axiom.om.impl.dom.NodeImpl;
-import org.apache.axiom.soap.SOAP11Constants;
-import org.apache.axiom.soap.SOAP12Constants;
 import org.apache.axiom.soap.SOAPFactory;
 import org.apache.axiom.soap.impl.dom.soap11.SOAP11Factory;
 import org.apache.axiom.soap.impl.dom.soap11.SOAP11FaultImpl;
-import org.apache.axiom.soap.impl.dom.soap11.SOAP11HeaderBlockImpl;
 import org.apache.axiom.soap.impl.dom.soap12.SOAP12Factory;
 import org.apache.axiom.soap.impl.dom.soap12.SOAP12FaultImpl;
-import org.apache.axiom.soap.impl.dom.soap12.SOAP12HeaderBlockImpl;
-import org.apache.axis2.namespace.Constants;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.w3c.dom.NamedNodeMap;
@@ -169,17 +163,12 @@
         if (isBodyElementAdded) {
             throw new SOAPException("A SOAPBodyElement has been already added to this SOAPBody");
         }
-        //TODO : check, added soap version check
-        OMNamespace omNamespace = omSOAPBody.getNamespace();
         SOAPFaultImpl saajSOAPFault = null;
 
-        if (omNamespace.getNamespaceURI().equals(SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI) &&
-            omNamespace.getPrefix().equals(SOAP11Constants.SOAP_DEFAULT_NAMESPACE_PREFIX)) {
+        if(this.element.getOMFactory() instanceof SOAP11Factory){
             SOAP11FaultImpl fault = new SOAP11FaultImpl(omSOAPBody, (SOAPFactory) this.element.getOMFactory());
             saajSOAPFault = new SOAPFaultImpl(fault);
-        } else
-        if (omNamespace.getNamespaceURI().equals(SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI) &&
-            omNamespace.getPrefix().equals(SOAP12Constants.SOAP_DEFAULT_NAMESPACE_PREFIX)) {
+        }else if (this.element.getOMFactory() instanceof SOAP12Factory){
             SOAP12FaultImpl fault = new SOAP12FaultImpl(omSOAPBody, (SOAPFactory) this.element.getOMFactory());
             saajSOAPFault = new SOAPFaultImpl(fault);
         }
@@ -244,24 +233,25 @@
      * @throws SOAPException if there is a SOAP error
      */
     public SOAPFault addFault(Name faultCode, String faultString, Locale locale)
-            throws SOAPException {
-        org.apache.axiom.soap.SOAPFault fault;
-        if (this.element.getOMFactory() instanceof SOAP11Factory) {
-            fault = new SOAP11FaultImpl(omSOAPBody, new Exception(
-                    faultString), (SOAPFactory) this.element.getOMFactory());
-        } else {
-            fault = new SOAP12FaultImpl(omSOAPBody, new Exception(
-                    faultString), (SOAPFactory) this.element.getOMFactory());
-        }
-        SOAPFaultImpl faultImpl = new SOAPFaultImpl(fault);
-        faultImpl.setFaultCode(faultCode);
-        if (locale != null) {
-            faultImpl.setFaultString(faultString, locale);
-        } else {
-            faultImpl.setFaultString(faultString);
-        }
+    		throws SOAPException {
+    	org.apache.axiom.soap.SOAPFault fault;
+    	if (this.element.getOMFactory() instanceof SOAP11Factory) {
+    		fault = new SOAP11FaultImpl(omSOAPBody, new Exception(
+    				faultString), (SOAPFactory) this.element.getOMFactory());
+    	}else{
+    		fault = new SOAP12FaultImpl(omSOAPBody, new Exception(
+    				faultString), (SOAPFactory) this.element.getOMFactory());
+    	}
+    	SOAPFaultImpl faultImpl = new SOAPFaultImpl(fault);
+    	faultImpl.setFaultCode(faultCode);
+    	
+    	if(locale != null) {
+    		faultImpl.setFaultString(faultString, locale);
+    	}else{
+    		faultImpl.setFaultString(faultString);
+    	}
 
-        return faultImpl;
+    	return faultImpl;
     }
 
     /**
@@ -318,7 +308,6 @@
      * @throws SOAPException if a SOAP error occurs
      */
     public SOAPBodyElement addBodyElement(QName qname) throws SOAPException {
-        //TODO : check
         return (SOAPBodyElement) addChildElement(qname);
     }
 
@@ -344,14 +333,13 @@
      */
     public SOAPFault addFault(QName faultCode, String faultString, Locale locale)
             throws SOAPException {
-        //TODO : check
         SOAPFaultImpl faultImpl = null;
 
-        if (SOAPConstants.SOAP_1_1_PROTOCOL.equals(getSOAPVersion(this.element))) {
+        if(this.element.getOMFactory() instanceof SOAP11Factory){
             SOAP11FaultImpl fault = new SOAP11FaultImpl(omSOAPBody, new Exception(
                     faultString), (SOAPFactory) this.element.getOMFactory());
             faultImpl = new SOAPFaultImpl(fault);
-        } else if (SOAPConstants.SOAP_1_2_PROTOCOL.equals(getSOAPVersion(this.element))) {
+        }else if(this.element.getOMFactory() instanceof SOAP12Factory){
             SOAP12FaultImpl fault = new SOAP12FaultImpl(omSOAPBody, new Exception(
                     faultString), (SOAPFactory) this.element.getOMFactory());
             faultImpl = new SOAPFaultImpl(fault);
@@ -376,7 +364,6 @@
      * @throws SOAPException - if there is not exactly one child SOAPElement of the SOAPBody.
      */
     public Document extractContentAsDocument() throws SOAPException {
-        //TODO - check
         Iterator childElements = this.getChildElements();
         org.w3c.dom.Node domNode = null;
         int childCount = 0;
@@ -398,15 +385,10 @@
         try {
             DocumentBuilder builder = factory.newDocumentBuilder();
             document = builder.newDocument();
-            //Element element = document.createElement(domNode.getLocalName());
-            //TODO: WIP
-            //element.setAttribute(domNode.getNodeName(), domNode.getNodeValue());
             Element element = document.createElementNS(domNode.getNamespaceURI(), domNode.getLocalName());
             element.setNodeValue(domNode.getNodeValue());
             document.appendChild(element);
-
-
-        } catch (ParserConfigurationException e) {
+        }catch (ParserConfigurationException e){
             throw new SOAPException(e);
         }
         return document;
@@ -431,7 +413,6 @@
         String localname;
         if (indexOfColon != -1) {
             localname = domEle.getTagName().substring(indexOfColon + 1);
-
             ns = new NamespaceImpl(domEle.getNamespaceURI(),
                                    domEle.getTagName().substring(0, indexOfColon));
         } else {
@@ -481,13 +462,12 @@
     }
 
     public SOAPElement addAttribute(QName qname, String value) throws SOAPException {
-        //TODO - check
         OMNamespace omNamespace = null;
         SOAPFactory soapFactory;
-        if (SOAPConstants.SOAP_1_1_PROTOCOL.equals(getSOAPVersion(this.element))) {
+        if (this.element.getOMFactory() instanceof SOAP11Factory) {
             soapFactory = new SOAP11Factory();
             omNamespace = soapFactory.createOMNamespace(qname.getNamespaceURI(), qname.getPrefix());
-        } else if (SOAPConstants.SOAP_1_2_PROTOCOL.equals(getSOAPVersion(this.element))) {
+        }else if (this.element.getOMFactory() instanceof SOAP12Factory) {
             soapFactory = new SOAP12Factory();
             omNamespace = soapFactory.createOMNamespace(qname.getNamespaceURI(), qname.getPrefix());
         }
@@ -496,7 +476,6 @@
     }
 
     public SOAPElement addChildElement(QName qname) throws SOAPException {
-        //TODO - check
         if (omSOAPBody.hasFault()) {
             throw new SOAPException("A SOAPFault has been already added to this SOAPBody");
         }
@@ -507,10 +486,12 @@
         } else {
             childEle = new SOAPBodyElementImpl(
                     (ElementImpl) getOwnerDocument().createElementNS(qname.getNamespaceURI(),
-                                                                     qname.getPrefix() + ":" + qname.getLocalPart()));
+                    		qname.getPrefix() + ":" + qname.getLocalPart()));
         }
         childEle.element.setUserData(SAAJ_NODE, childEle, null);
-        childEle.element.setNamespace(childEle.element.declareNamespace(qname.getNamespaceURI(), qname.getPrefix()));
+        childEle.element.setNamespace(childEle.element.declareNamespace(
+        		qname.getNamespaceURI(), qname.getPrefix()));
+
         element.appendChild(childEle.element);
         ((NodeImpl) childEle.element.getParentNode()).setUserData(SAAJ_NODE, this, null);
         isBodyElementAdded = true;
@@ -519,50 +500,41 @@
     }
 
     public QName createQName(String localName, String prefix) throws SOAPException {
-        if (this.element.getOMFactory() instanceof SOAP11Factory) {
-        	return super.createQName(localName, prefix);
-        }
-        else if(this.element.getOMFactory() instanceof SOAP12Factory) {
-        {
-        	if(this.element.findNamespaceURI(prefix) == null){
-        		throw new SOAPException("Only Namespace Qualified elements are allowed");
-        	}else{
-        		return super.createQName(localName, prefix);
-        	}
-        }
-        }else{
-        	throw new UnsupportedOperationException();
-        }
+    	if (this.element.getOMFactory() instanceof SOAP11Factory) {
+    		return super.createQName(localName, prefix);
+    	}else if(this.element.getOMFactory() instanceof SOAP12Factory) {
+    		if(this.element.findNamespaceURI(prefix) == null){
+    			throw new SOAPException("Only Namespace Qualified elements are allowed");
+    		}else{
+    			return super.createQName(localName, prefix);
+    		}
+    	}else{
+    		throw new UnsupportedOperationException();
+    	}
     }
 
 
     public Iterator getAllAttributesAsQNames() {
-        //TODO : check
         return super.getAllAttributesAsQNames();
     }
 
     public String getAttributeValue(QName qname) {
-        //TODO : check
         return super.getAttributeValue(qname);
     }
 
     public Iterator getChildElements(QName qname) {
-        //TODO : check
         return super.getChildElements(qname);
     }
 
     public QName getElementQName() {
-        //TODO : check
         return super.getElementQName();
     }
 
     public boolean removeAttribute(QName qname) {
-        //TODO : check
         return super.removeAttribute(qname);
     }
 
     public SOAPElement setElementQName(QName qname) throws SOAPException {
-        //TODO : check
         return super.setElementQName(qname);
     }
 

Modified: webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPConnectionImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPConnectionImpl.java?view=diff&rev=513354&r1=513353&r2=513354
==============================================================================
--- webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPConnectionImpl.java (original)
+++ webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPConnectionImpl.java Thu Mar  1 06:49:44 2007
@@ -17,6 +17,7 @@
 
 import java.io.IOException;
 import java.io.InputStream;
+import java.net.HttpURLConnection;
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.util.Collection;
@@ -24,11 +25,13 @@
 import java.util.Iterator;
 import java.util.Map;
 import java.util.Set;
+import java.util.StringTokenizer;
 
 import javax.activation.DataHandler;
 import javax.xml.namespace.QName;
 import javax.xml.soap.AttachmentPart;
 import javax.xml.soap.MessageFactory;
+import javax.xml.soap.MimeHeaders;
 import javax.xml.soap.SOAPBody;
 import javax.xml.soap.SOAPConnection;
 import javax.xml.soap.SOAPElement;
@@ -40,7 +43,6 @@
 
 import org.apache.axiom.om.OMAttribute;
 import org.apache.axiom.om.OMElement;
-import org.apache.axiom.om.OMException;
 import org.apache.axiom.om.OMNode;
 import org.apache.axiom.om.OMText;
 import org.apache.axiom.om.impl.llom.OMTextImpl;
@@ -54,8 +56,7 @@
 import org.apache.axis2.saaj.util.IDGenerator;
 import org.apache.axis2.saaj.util.SAAJUtil;
 import org.apache.axis2.wsdl.WSDLConstants;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
+
 
 /**
  *
@@ -70,7 +71,7 @@
     private ServiceClient serviceClient;
     private HashMap unaccessedAttachments = new HashMap();
 
-	private static final Log log = LogFactory.getLog(SOAPConnectionImpl.class);
+
 
     /**
      * Sends the given message to the specified endpoint and
@@ -90,7 +91,6 @@
      *                                      or this SOAPConnection is already closed
      */
     public SOAPMessage call(SOAPMessage request, Object endpoint) throws SOAPException {
-
         if (closed) {
             throw new SOAPException("SOAPConnection closed");
         }
@@ -100,7 +100,7 @@
         try {
             url = (endpoint instanceof URL) ? (URL) endpoint : new URL(endpoint.toString());
         } catch (MalformedURLException e) {
-            throw new SOAPException(e);
+            throw new SOAPException(e.getMessage());
         }
 
         // initialize and set Options
@@ -156,10 +156,9 @@
             opClient.execute(true);
 
             MessageContext msgCtx = opClient.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
-            //TODO: get attachments
             return getSOAPMessage(msgCtx.getEnvelope());
         } catch (AxisFault e) {
-            throw new SOAPException(e);
+            throw new SOAPException(e.getMessage());
         }
     }
 
@@ -171,57 +170,56 @@
      * @throws SOAPException If an exception occurs during this conversion
      */
     private SOAPMessage getSOAPMessage(org.apache.axiom.soap.SOAPEnvelope respOMSoapEnv)
-            throws SOAPException {
+    throws SOAPException {
 
-        // Create the basic SOAP Message
-        MessageFactory mf = MessageFactory.newInstance();
-        SOAPMessage response = mf.createMessage();
-        SOAPPart sPart = response.getSOAPPart();
-        javax.xml.soap.SOAPEnvelope env = sPart.getEnvelope();
-        SOAPBody body = env.getBody();
-        SOAPHeader header = env.getHeader();
-
-        // Convert all header blocks
-		org.apache.axiom.soap.SOAPHeader header2 = respOMSoapEnv.getHeader();
-		if (header2 != null) {
-			for (Iterator hbIter = header2.examineAllHeaderBlocks(); hbIter.hasNext();) {
-
-				// Converting a single OM SOAP HeaderBlock to a SAAJ SOAP
-				// HeaderBlock
-				org.apache.axiom.soap.SOAPHeaderBlock hb = (org.apache.axiom.soap.SOAPHeaderBlock) hbIter
-						.next();
-				final QName hbQName = hb.getQName();
-				final SOAPHeaderElement headerEle = header.addHeaderElement(env.createName(hbQName
-						.getLocalPart(), hbQName.getPrefix(), hbQName.getNamespaceURI()));
-				for (Iterator attribIter = hb.getAllAttributes(); attribIter.hasNext();) {
-					OMAttribute attr = (OMAttribute) attribIter.next();
-					final QName attrQName = attr.getQName();
-					headerEle.addAttribute(env.createName(attrQName.getLocalPart(), attrQName
-							.getPrefix(), attrQName.getNamespaceURI()), attr.getAttributeValue());
-				}
-				final String role = hb.getRole();
-				if (role != null) {
-					headerEle.setActor(role);
-				}
-				headerEle.setMustUnderstand(hb.getMustUnderstand());
-
-				toSAAJElement(headerEle, hb, response);
-			}
-		}
-
-        // Convert the body
-        toSAAJElement(body, respOMSoapEnv.getBody(), response);
-        // if there are unrefferenced attachments, add that to response
-        if(!unaccessedAttachments.isEmpty()){
-        	Collection attachments = unaccessedAttachments.values();
-        	Iterator attachementsIterator = attachments.iterator();
-        	while (attachementsIterator.hasNext()) {
-				AttachmentPart  attachment = (AttachmentPart) attachementsIterator.next();
-				response.addAttachmentPart(attachment);
-			}
-        }
+    	// Create the basic SOAP Message
+    	MessageFactory mf = MessageFactory.newInstance();
+    	SOAPMessage response = mf.createMessage();
+    	SOAPPart sPart = response.getSOAPPart();
+    	javax.xml.soap.SOAPEnvelope env = sPart.getEnvelope();
+    	SOAPBody body = env.getBody();
+    	SOAPHeader header = env.getHeader();
+
+    	// Convert all header blocks
+    	org.apache.axiom.soap.SOAPHeader header2 = respOMSoapEnv.getHeader();
+    	if (header2 != null) {
+    		for (Iterator hbIter = header2.examineAllHeaderBlocks(); hbIter.hasNext();) {
+    			// Converting a single OM SOAP HeaderBlock to a SAAJ SOAP
+    			// HeaderBlock
+    			org.apache.axiom.soap.SOAPHeaderBlock hb = (org.apache.axiom.soap.SOAPHeaderBlock) 
+    							hbIter.next();
+    			final QName hbQName = hb.getQName();
+    			final SOAPHeaderElement headerEle = header.addHeaderElement(env.createName(hbQName
+    					.getLocalPart(), hbQName.getPrefix(), hbQName.getNamespaceURI()));
+    			for (Iterator attribIter = hb.getAllAttributes(); attribIter.hasNext();) {
+    				OMAttribute attr = (OMAttribute) attribIter.next();
+    				final QName attrQName = attr.getQName();
+    				headerEle.addAttribute(env.createName(attrQName.getLocalPart(), attrQName
+    						.getPrefix(), attrQName.getNamespaceURI()), attr.getAttributeValue());
+    			}
+    			final String role = hb.getRole();
+    			if (role != null) {
+    				headerEle.setActor(role);
+    			}
+    			headerEle.setMustUnderstand(hb.getMustUnderstand());
+
+    			toSAAJElement(headerEle, hb, response);
+    		}
+    	}
+
+    	// Convert the body
+    	toSAAJElement(body, respOMSoapEnv.getBody(), response);
+    	// if there are unrefferenced attachments, add that to response
+    	if(!unaccessedAttachments.isEmpty()){
+    		Collection attachments = unaccessedAttachments.values();
+    		Iterator attachementsIterator = attachments.iterator();
+    		while (attachementsIterator.hasNext()) {
+    			AttachmentPart  attachment = (AttachmentPart) attachementsIterator.next();
+    			response.addAttachmentPart(attachment);
+    		}
+    	}
 
-        return response;
+    	return response;
     }
 
     /**
@@ -300,7 +298,7 @@
 
         final org.apache.axiom.soap.SOAPEnvelope omSOAPEnv =
                 SAAJUtil.toOMSOAPEnvelope(saajSOAPMsg.getSOAPPart().getDocumentElement());
-        System.err.println("#### req OM Soap Env=" + omSOAPEnv);
+
 
         Map attachmentMap = new HashMap();
         final Iterator attachments = saajSOAPMsg.getAttachments();
@@ -416,55 +414,80 @@
      * overrided SOAPConnection's get() method 
      */
 	
-	public SOAPMessage get(Object to) throws SOAPException {
+    public SOAPMessage get(Object to) throws SOAPException {
     	URL url = null;
-    	try 
-    	{
+    	try{
     		url = (to instanceof URL) ? (URL) to : new URL(to.toString());
-    		if(url != null){
-    			InputStream in = url.openStream();
-    			//TODO : setting null for mime headers
-    			// close the connection??
-    			SOAPMessage soapMessage = new SOAPMessageImpl(in,null);
-    			return soapMessage;
-    		}
-    		return null;
     	}catch (MalformedURLException e) {
     		throw new SOAPException(e);
+    	}
+
+    	int responseCode;
+    	boolean isFailure = false;
+    	HttpURLConnection httpCon = null;
+    	try {
+    		httpCon = (HttpURLConnection) url.openConnection();
+    		httpCon.setDoOutput(true);
+    		httpCon.setDoInput(true);
+    		httpCon.setUseCaches(false);
+    		httpCon.setRequestMethod("GET");
+    		HttpURLConnection.setFollowRedirects(true);
+
+    		httpCon.connect();
+    		responseCode = httpCon.getResponseCode();
+    		// 500 is allowed for SOAP faults
+    		if (responseCode == HttpURLConnection.HTTP_INTERNAL_ERROR) {
+    			isFailure = true;
+    		} else if ((responseCode / 100) != 2) {
+    			throw new SOAPException("Error response: ("+responseCode 
+    					+ httpCon.getResponseMessage());
+    		}
     	}catch (IOException e) {
     		throw new SOAPException(e);
-    	}catch (OMException e){
-    		throw new SOAPException(e);
     	}
-    	
-	}
 
-    
-
-    
-    /* private void printOMSOAPEnvelope(final org.apache.axiom.soap.SOAPEnvelope omSOAPEnv) {
-        ByteArrayOutputStream baos = new ByteArrayOutputStream();
-        try {
-            omSOAPEnv.serialize(baos);
-            log.info("---------------------------------------------------------------------------");
-            log.info(baos);
-            log.info("---------------------------------------------------------------------------");
-            System.err.println("---------------------------------------------------------------------------");
-            System.err.println(baos);
-            System.err.println("---------------------------------------------------------------------------");
-        } catch (XMLStreamException e) {
-            e.printStackTrace();
-        }
+    	//Construct the soapmessage from http response
+    	SOAPMessage soapMessage = null;
+    	if (responseCode == HttpURLConnection.HTTP_OK) {
+    		try {
+    			//read http headers & load mimeheaders
+    			MimeHeaders mimeHeaders = new MimeHeaders();
+    			String key, value;
+    			// skip status line
+    			int i = 1;
+    			while (true) {
+    				key = httpCon.getHeaderFieldKey(i);
+    				value = httpCon.getHeaderField(i);
+    				if (key == null && value == null){
+    					break;
+    				}
+
+    				if (key != null) {
+    					StringTokenizer values = new StringTokenizer(value, ",");
+    					while (values.hasMoreTokens()){
+    						mimeHeaders.addHeader(key, values.nextToken().trim());
+    					}
+    				}
+    				i++;
+    			}
+    			InputStream httpInputStream;
+    			if(isFailure){
+    				httpInputStream = httpCon.getErrorStream();
+    			}else{
+    				httpInputStream = httpCon.getInputStream();
+    			}
+
+    			soapMessage = new SOAPMessageImpl(httpInputStream,mimeHeaders);
+    			httpInputStream.close();
+    			httpCon.disconnect();
+
+    		} catch (SOAPException e) {
+    			throw e;
+    		} catch (Exception e) {
+    			throw new SOAPException(e.getMessage());
+    		}
+    	}
+    	return soapMessage;
     }
 
-    private String printSAAJSOAPMessage(final SOAPMessage msg) throws SOAPException, IOException {
-        ByteArrayOutputStream baos = new ByteArrayOutputStream();
-        msg.writeTo(baos);
-        String responseStr = baos.toString();
-
-        System.out.println("\n\n----------------------SAAJ Message-------------------------\n" +
-                           responseStr);
-        System.out.println("-------------------------------------------------------\n\n");
-        return responseStr;
-    }*/
 }

Modified: webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPElementImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPElementImpl.java?view=diff&rev=513354&r1=513353&r2=513354
==============================================================================
--- webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPElementImpl.java (original)
+++ webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPElementImpl.java Thu Mar  1 06:49:44 2007
@@ -15,6 +15,8 @@
  */
 package org.apache.axis2.saaj;
 
+import java.net.URI;
+import java.net.URISyntaxException;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Iterator;
@@ -38,11 +40,8 @@
 import org.apache.axiom.om.impl.dom.TextImpl;
 import org.apache.axiom.soap.SOAP11Constants;
 import org.apache.axiom.soap.SOAP12Constants;
-import org.apache.axiom.soap.SOAPFactory;
 import org.apache.axiom.soap.impl.dom.soap11.SOAP11Factory;
-import org.apache.axiom.soap.impl.dom.soap11.SOAP11HeaderBlockImpl;
 import org.apache.axiom.soap.impl.dom.soap12.SOAP12Factory;
-import org.apache.axiom.soap.impl.dom.soap12.SOAP12HeaderBlockImpl;
 import org.w3c.dom.Attr;
 import org.w3c.dom.DOMException;
 import org.w3c.dom.Document;
@@ -386,21 +385,21 @@
         return returnList.iterator();
     }
 
+    
     public SOAPElement addAttribute(QName qname, String value) throws SOAPException {
-    	//TODO - check
         if (qname.getNamespaceURI() == null || qname.getNamespaceURI().trim().length() == 0) {
             element.setAttribute(qname.getLocalPart(), value);
         } else {
-            element.setAttributeNS(qname.getNamespaceURI(), qname.getPrefix() + ":" + qname.getLocalPart(), value);
+            element.setAttributeNS(qname.getNamespaceURI(), qname.getPrefix() + ":" + 
+            		qname.getLocalPart(), value);
         }
         return this;
-        
     }
 
     public SOAPElement addChildElement(QName qname) throws SOAPException {
-    	//TODO - check
         String prefix = qname.getPrefix();
-        return addChildElement(qname.getLocalPart(), "".equals(prefix) ? null : prefix  , qname.getNamespaceURI());
+        return addChildElement(qname.getLocalPart(), "".equals(prefix) ? 
+        		null : prefix  , qname.getNamespaceURI());
     }
 
     /**
@@ -422,17 +421,16 @@
     		throw new SOAPException("Invalid prefix");
     	}
     	QName qname = null;
-    	if(SOAPConstants.SOAP_1_1_PROTOCOL.equals(getSOAPVersion(this.element))){
+    	if(this.element.getOMFactory() instanceof SOAP11Factory){
     		qname = new QName(SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI,localName,prefix);   		
     	}
-    	else if(SOAPConstants.SOAP_1_2_PROTOCOL.equals(getSOAPVersion(this.element))){
+    	else if(this.element.getOMFactory() instanceof SOAP12Factory){
     		qname = new QName(SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI,localName,prefix);
     	}
     	return qname;
     }
 
     public Iterator getAllAttributesAsQNames() {
-    	//TODO - check,test ok
     	final Iterator attribIter = element.getAllAttributes();
         Collection attributesAsQNames = new ArrayList();
         Attr attr;
@@ -447,7 +445,6 @@
     }
 
     public String getAttributeValue(QName qname) {
-    	//TODO - check,test ok
         final OMAttribute attribute = element.getAttribute(qname);
         if (attribute == null) {
         	return null;
@@ -456,7 +453,6 @@
     }
 
     public Iterator getChildElements(QName qname) {
-    	//TODO - check,test ok
         Iterator childIter = element.getChildrenWithName(qname);
         Collection childElements = new ArrayList();
         while (childIter.hasNext()) {
@@ -466,12 +462,10 @@
     }
 
     public QName getElementQName() {
-    	//TODO - check
         return element.getQName();
     }
 
     public boolean removeAttribute(QName qname) {
-    	//TODO - check
         org.apache.axiom.om.OMAttribute attr = element.getAttribute(qname);
         if (attr != null) {
         	element.removeAttribute(attr);
@@ -481,7 +475,6 @@
     }
 
     public SOAPElement setElementQName(QName newName) throws SOAPException {
-        //TODO - check
     	String localName = this.element.getLocalName();
     	if(org.apache.axiom.soap.SOAPConstants.BODY_LOCAL_NAME.equals(localName)
     			|| org.apache.axiom.soap.SOAPConstants.HEADER_LOCAL_NAME.equals(localName)
@@ -540,11 +533,17 @@
      */
     public void setEncodingStyle(String encodingStyle) throws SOAPException {
     	if(this.element.getOMFactory() instanceof SOAP11Factory){
-        	if (!encodingStyle.equals(SOAPConstants.URI_NS_SOAP_ENCODING)) {
-            	throw new IllegalArgumentException("Invalid Encoding style : " + encodingStyle);
-            }else{
-            	((DocumentImpl) getOwnerDocument()).setCharsetEncoding(encodingStyle);
-            }
+    		try{
+    			URI uri = new URI(encodingStyle);
+	        	//if (!encodingStyle.equals(SOAPConstants.URI_NS_SOAP_ENCODING)) {
+	            //	throw new IllegalArgumentException("Invalid Encoding style : " + encodingStyle);
+	            //}else{
+	            ((DocumentImpl) getOwnerDocument()).setCharsetEncoding(encodingStyle);
+	            //}				
+			} catch (URISyntaxException e) {
+				throw new IllegalArgumentException("Invalid Encoding style : " 
+						+ encodingStyle+":"+e);
+			} 
     	}else if(this.element.getOMFactory() instanceof SOAP12Factory){
     		if(SOAPConstants.URI_NS_SOAP_1_2_ENCODING.equals(encodingStyle)){
     			throw new SOAPException("Illegal value : "+SOAPConstants.URI_NS_SOAP_1_2_ENCODING);
@@ -839,26 +838,4 @@
     public NamedNodeMap getAttributes() {
         return element.getAttributes();
     }
-    
-    /**
-     * @param rootElement
-     * @return SOAP version of the element using SOAPConstants.SOAP_1_1_PROTOCOL
-     * 		   or SOAPConstants.SOAP_1_2_PROTOCOL
-     */
-    //TODO : check 
-    protected String getSOAPVersion(ElementImpl rootElement){
-    	OMNamespace omNamespace = rootElement.getNamespace();
-        if(omNamespace.getNamespaceURI().equals(SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI) &&
-        		omNamespace.getPrefix().equals(SOAP11Constants.SOAP_DEFAULT_NAMESPACE_PREFIX))
-        {
-        	return SOAPConstants.SOAP_1_1_PROTOCOL;
-        }
-        else if(omNamespace.getNamespaceURI().equals(SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI) &&
-        		omNamespace.getPrefix().equals(SOAP12Constants.SOAP_DEFAULT_NAMESPACE_PREFIX))
-        {
-        	return SOAPConstants.SOAP_1_2_PROTOCOL;
-        }
-    	return null;
-    }
-    
 }

Modified: webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPEnvelopeImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPEnvelopeImpl.java?view=diff&rev=513354&r1=513353&r2=513354
==============================================================================
--- webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPEnvelopeImpl.java (original)
+++ webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPEnvelopeImpl.java Thu Mar  1 06:49:44 2007
@@ -207,13 +207,10 @@
     }
 
     public SOAPElement addTextNode(String text) throws SOAPException {
-
-        //TODO: Method implementation
         Node firstChild = element.getFirstChild();
         if (firstChild instanceof org.w3c.dom.Text) {
             ((org.w3c.dom.Text) firstChild).setData(text);
         } else {
-
             // Else this is a header
             TextImpl doomText = new TextImpl(text, this.element.getOMFactory());
             doomText.setNextOMSibling((NodeImpl) firstChild);
@@ -254,9 +251,7 @@
 	 * SOAP 1.2 should not allow element to be added after body element
 	 */
 	public SOAPElement addChildElement(Name name) throws SOAPException {
-		//TODO : complete
         if(this.element.getOMFactory() instanceof SOAP12Factory) {
-        	//return super.addChildElement(name);
         	throw new SOAPException("Cannot add elements after body element");
         }else if(this.element.getOMFactory() instanceof SOAP11Factory){
         	//Let elements to be added any where.
@@ -264,7 +259,4 @@
         }
 		return null;
 	}  
-    
-    
-	
 }

Modified: webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPFactoryImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPFactoryImpl.java?view=diff&rev=513354&r1=513353&r2=513354
==============================================================================
--- webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPFactoryImpl.java (original)
+++ webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPFactoryImpl.java Thu Mar  1 06:49:44 2007
@@ -57,9 +57,11 @@
         String uri = name.getURI();
         OMElement omElement = null;
         if (soapVersion.equals(SOAPConstants.SOAP_1_2_PROTOCOL)) {
-            omElement = DOOMAbstractFactory.getSOAP12Factory().createOMElement(localName, uri, prefix);
+            omElement = DOOMAbstractFactory.getSOAP12Factory().createOMElement(localName
+            		, uri, prefix);
         } else {
-            omElement = DOOMAbstractFactory.getSOAP11Factory().createOMElement(localName, uri, prefix);
+            omElement = DOOMAbstractFactory.getSOAP11Factory().createOMElement(localName
+            		, uri, prefix);
         }
         DOOMAbstractFactory.getOMFactory().createOMElement(localName, uri, prefix);
         return new SOAPElementImpl((ElementImpl) omElement);
@@ -102,12 +104,15 @@
      * @throws javax.xml.soap.SOAPException if there is an error in creating the
      *                                      <code>SOAPElement</code> object
      */
-    public SOAPElement createElement(String localName, String prefix, String uri) throws SOAPException {
+    public SOAPElement createElement(String localName, String prefix, String uri) 
+    throws SOAPException {
         OMElement omElement = null;
         if (soapVersion.equals(SOAPConstants.SOAP_1_2_PROTOCOL)) {
-            omElement = DOOMAbstractFactory.getSOAP12Factory().createOMElement(localName, uri, prefix);
+            omElement = DOOMAbstractFactory.getSOAP12Factory().createOMElement(localName
+            		, uri, prefix);
         } else {
-            omElement = DOOMAbstractFactory.getSOAP11Factory().createOMElement(localName, uri, prefix);
+            omElement = DOOMAbstractFactory.getSOAP11Factory().createOMElement(localName
+            		, uri, prefix);
         }
         return new SOAPElementImpl((ElementImpl) omElement);
     }
@@ -173,8 +178,6 @@
 	 * @throws SOAPException - if there is a SOAP error 
      */
     public SOAPFault createFault() throws SOAPException {
-        //TODO - check
-    	OMDOMFactory omdomFactory = null;
     	org.apache.axiom.soap.SOAPFactory soapFactory;
         if (soapVersion.equals(SOAPConstants.SOAP_1_2_PROTOCOL)) {
         	soapFactory = DOOMAbstractFactory.getSOAP12Factory();
@@ -194,15 +197,21 @@
      * @throws: SOAPException - if there is a SOAP error
      */
     public SOAPFault createFault(String reasonText, QName faultCode) throws SOAPException {
-        //TODO - check
     	SOAPFault soapFault;
         if (soapVersion.equals(SOAPConstants.SOAP_1_2_PROTOCOL)) {
-        	soapFault =  new SOAPFaultImpl(DOOMAbstractFactory.getSOAP12Factory().createSOAPFault());
+        	soapFault =  new SOAPFaultImpl(DOOMAbstractFactory.getSOAP12Factory()
+        			.createSOAPFault());
         } else {
-        	soapFault =  new SOAPFaultImpl(DOOMAbstractFactory.getSOAP11Factory().createSOAPFault());
+        	soapFault =  new SOAPFaultImpl(DOOMAbstractFactory.getSOAP11Factory()
+        			.createSOAPFault());
         }
     	soapFault.setFaultCode(faultCode);
-    	soapFault.addFaultReasonText(reasonText, Locale.getDefault());
+    	try{
+    		soapFault.addFaultReasonText(reasonText, Locale.getDefault());
+    	}catch(UnsupportedOperationException e){
+    		throw new SOAPException(e.getMessage());
+    	}
+    	
     	return soapFault;
     }
 
@@ -215,7 +224,8 @@
         String localName = qname.getLocalPart();
         String prefix = qname.getPrefix();
         String uri = qname.getNamespaceURI();
-        OMElement omElement = DOOMAbstractFactory.getOMFactory().createOMElement(localName, uri, prefix);
+        OMElement omElement = DOOMAbstractFactory.getOMFactory().createOMElement(localName
+        		, uri, prefix);
         return new SOAPElementImpl((ElementImpl) omElement);
 	}
 
@@ -226,12 +236,10 @@
         } else {
             omdomFactory = (OMDOMFactory) DOOMAbstractFactory.getSOAP11Factory();
         }
-        OMNamespace ns = omdomFactory.createOMNamespace(element.getNamespaceURI(),element.getPrefix());
+        OMNamespace ns = omdomFactory.createOMNamespace(element.getNamespaceURI()
+        		,element.getPrefix());
         OMElement omElement = omdomFactory.createOMElement(element.getLocalName(), ns);
         return new SOAPElementImpl((ElementImpl) omElement);
 	}
-    
-	
-	
     
 }

Modified: webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPFaultImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPFaultImpl.java?view=diff&rev=513354&r1=513353&r2=513354
==============================================================================
--- webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPFaultImpl.java (original)
+++ webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPFaultImpl.java Thu Mar  1 06:49:44 2007
@@ -405,7 +405,6 @@
      *        the SOAP 1.2 concept of Fault Reason.
      */
     public void addFaultReasonText(String text, Locale locale) throws SOAPException {
-        //TODO - check
     	if(locale == null){
     		throw new SOAPException("Received null for locale");
     	}
@@ -417,7 +416,6 @@
     		if(existingReasonText == null)
     		{
         		org.apache.axiom.soap.SOAPFactory soapFactory = null;
-        		//soapFactory = DOOMAbstractFactory.getSOAP12Factory();
         		soapFactory = (SOAP12Factory)this.element.getOMFactory();
             	if(this.fault.getReason() == null){
             		SOAPFaultReason soapFaultReason = soapFactory.createSOAPFaultReason(this.fault);
@@ -459,17 +457,16 @@
      */
     
     public void appendFaultSubcode(QName subcode) throws SOAPException {
-        //TODO - check
     	org.apache.axiom.soap.SOAPFactory soapFactory = null;
     	SOAPFaultSubCode soapFaultSubCode = null;
     	
     	if(subcode.getNamespaceURI() == null || subcode.getNamespaceURI().trim().length() == 0){
     		throw new SOAPException("Unqualified QName object : "+subcode);
     	}
-    	if(SOAPConstants.SOAP_1_1_PROTOCOL.equals(getSOAPVersion(this.element))){
+    	if(this.element.getOMFactory() instanceof SOAP11Factory){
     		throw new UnsupportedOperationException();    		
     	}
-    	else if(SOAPConstants.SOAP_1_2_PROTOCOL.equals(getSOAPVersion(this.element))){
+    	else if(this.element.getOMFactory() instanceof SOAP12Factory){
     		soapFactory = DOOMAbstractFactory.getSOAP12Factory();
     	}
     	
@@ -510,7 +507,6 @@
      * <p/>
      */
     public QName getFaultCodeAsQName() {
-        //TODO - check
     	SOAPFaultCode soapFaultCode = this.fault.getCode();
     	if(soapFaultCode != null){
             String prefix = "";
@@ -740,7 +736,6 @@
         if (factory instanceof SOAP11Factory) {
         	throw new UnsupportedOperationException();
         } else {
-        	//TODO : sumedha complete
         	fault.getCode().getSubCode().detach();
         }
     }
@@ -797,11 +792,11 @@
     		
     public void setFaultNode(String s) throws SOAPException {
     	org.apache.axiom.soap.SOAPFactory soapFactory = null;
-    	if(SOAPConstants.SOAP_1_1_PROTOCOL.equals(getSOAPVersion(this.element))){
+    	if(this.element.getOMFactory() instanceof SOAP11Factory){
     		throw new UnsupportedOperationException("message does not support " +
     				"the SOAP 1.2 concept of Fault Node");    		
     	}
-    	else if(SOAPConstants.SOAP_1_2_PROTOCOL.equals(getSOAPVersion(this.element))){
+    	else if(this.element.getOMFactory() instanceof SOAP12Factory){
     		soapFactory = DOOMAbstractFactory.getSOAP12Factory();
     	}
         SOAPFaultNode soapFaultNode = soapFactory.createSOAPFaultNode(this.fault);
@@ -820,11 +815,10 @@
      */
     public void setFaultRole(String uri) throws SOAPException {
     	org.apache.axiom.soap.SOAPFactory soapFactory = null;
-    	if(SOAPConstants.SOAP_1_1_PROTOCOL.equals(getSOAPVersion(this.element))){
+    	if(this.element.getOMFactory() instanceof SOAP11Factory){
     		throw new UnsupportedOperationException("message does not support the " +
     				"SOAP 1.2 concept of Fault Role");   		
-    	}
-    	else if(SOAPConstants.SOAP_1_2_PROTOCOL.equals(getSOAPVersion(this.element))){
+    	}else if(this.element.getOMFactory() instanceof SOAP12Factory){
     		soapFactory = DOOMAbstractFactory.getSOAP12Factory();
     	}
         SOAPFaultRole soapFaultRole = soapFactory.createSOAPFaultRole(this.fault);

Modified: webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPHeaderImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPHeaderImpl.java?view=diff&rev=513354&r1=513353&r2=513354
==============================================================================
--- webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPHeaderImpl.java (original)
+++ webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPHeaderImpl.java Thu Mar  1 06:49:44 2007
@@ -76,7 +76,8 @@
     /* (non-Javadoc)
     * @see javax.xml.soap.SOAPElement#addChildElement(java.lang.String, java.lang.String, java.lang.String)
     */
-    public SOAPElement addChildElement(String localName, String prefix, String uri) throws SOAPException {
+    public SOAPElement addChildElement(String localName, String prefix, String uri) 
+    throws SOAPException {
         OMNamespace ns = new NamespaceImpl(uri, prefix);
         SOAPHeaderBlock headerBlock = null;
         if (this.element.getOMFactory() instanceof SOAP11Factory) {
@@ -271,7 +272,8 @@
     }
 
     public SOAPHeaderElement addHeaderElement(QName qname) throws SOAPException {
-        return (SOAPHeaderElement) addChildElement(qname.getLocalPart(), qname.getPrefix(), qname.getNamespaceURI());
+        return (SOAPHeaderElement) addChildElement(qname.getLocalPart(), qname.getPrefix()
+        		, qname.getNamespaceURI());
     }
 
     
@@ -325,15 +327,15 @@
 				SOAP11HeaderBlockImpl supportedEnvelop = 
 					new SOAP11HeaderBlockImpl(Constants.ELEM_SUPPORTEDENVELOPE,
 							namespace,(SOAPFactory) this.element.getOMFactory());
-				supportedEnvelop.addAttribute(Constants.ATTR_QNAME, prefix+index+":"+Constants.ELEM_ENVELOPE, null);
+				supportedEnvelop.addAttribute(Constants.ATTR_QNAME, prefix+index+":"
+						+Constants.ELEM_ENVELOPE, null);
 		    	upgrade.addChild(supportedEnvelop);
-	        }
-	        else 
-	        {
+	        }else{
 				SOAP12HeaderBlockImpl supportedEnvelop = 
 					new SOAP12HeaderBlockImpl(Constants.ELEM_SUPPORTEDENVELOPE,
 							namespace,(SOAPFactory) this.element.getOMFactory());
-				supportedEnvelop.addAttribute(Constants.ATTR_QNAME, prefix+index+":"+Constants.ELEM_ENVELOPE, null);
+				supportedEnvelop.addAttribute(Constants.ATTR_QNAME, prefix+index+":"
+						+Constants.ELEM_ENVELOPE, null);
 		    	upgrade.addChild(supportedEnvelop);
 	        }
 		}

Modified: webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPMessageImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPMessageImpl.java?view=diff&rev=513354&r1=513353&r2=513354
==============================================================================
--- webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPMessageImpl.java (original)
+++ webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPMessageImpl.java Thu Mar  1 06:49:44 2007
@@ -35,6 +35,8 @@
 import javax.xml.soap.SOAPPart;
 
 import org.apache.axiom.om.OMOutputFormat;
+import org.apache.axiom.soap.impl.dom.soap11.SOAP11Factory;
+import org.apache.axiom.soap.impl.dom.soap12.SOAP12Factory;
 import org.apache.axis2.transport.http.HTTPConstants;
 
 public class SOAPMessageImpl extends SOAPMessage {
@@ -48,27 +50,48 @@
 
     public SOAPMessageImpl(SOAPEnvelopeImpl soapEnvelope) {
         String contentType = null;
+        
+        
         if (mimeHeaders != null) {
-            String contentTypes[] = mimeHeaders.getHeader("Content-Type");
+            String contentTypes[] = mimeHeaders.getHeader(HTTPConstants.CONTENT_TYPE);
             contentType = (contentTypes != null) ? contentTypes[0] : null;
+        }else{
+        	this.mimeHeaders = new MimeHeadersEx();   
+        	if(soapEnvelope.getOMFactory() instanceof SOAP11Factory){
+        		contentType = HTTPConstants.MEDIA_TYPE_TEXT_XML;
+        		this.mimeHeaders.addHeader("content-type", contentType);
+        	}else if(soapEnvelope.getOMFactory() instanceof SOAP12Factory){
+        		contentType = HTTPConstants.MEDIA_TYPE_APPLICATION_SOAP_XML;
+        		this.mimeHeaders.addHeader("content-type", contentType);        		
+        	}
         }
 
         setCharsetEncoding(contentType);
         soapPart = new SOAPPartImpl(this, soapEnvelope);
-        this.mimeHeaders = new MimeHeadersEx();
     }
 
     public SOAPMessageImpl(InputStream inputstream,javax.xml.soap.MimeHeaders mimeHeaders) 
-    		throws SOAPException 
+    throws SOAPException 
     {
     	String contentType = null;
+    	String tmpContentType = "";
     	if (mimeHeaders != null) {
-    		String contentTypes[] = mimeHeaders.getHeader("Content-Type");
-    		contentType = (contentTypes != null) ? contentTypes[0] : null;
+    		String contentTypes[] = mimeHeaders.getHeader(HTTPConstants.CONTENT_TYPE);
+    		if(contentTypes != null && contentTypes.length > 0){
+    			tmpContentType = contentTypes[0];
+    			//tmpContentType can be like 'application/soap+xml; charset=UTF-8;'
+    			//Only the first part is important
+    			if(tmpContentType.indexOf(";") > -1){
+    				contentType = tmpContentType.substring(0, tmpContentType.indexOf(";"));    			
+    			}else{
+    				contentType = tmpContentType;
+    			}
+    		}
     	}
-
-    	setCharsetEncoding(contentType);
-    	if (contentType != null && contentType.indexOf("multipart/related;") == 0) {
+    	//Setting the whole content-type string to CharsetEncoding.
+    	//Is this correct?
+    	setCharsetEncoding(tmpContentType);
+    	if (contentType != null) {    		
     		soapPart = new SOAPPartImpl(this, inputstream, mimeHeaders);
     	} else {
     		soapPart = new SOAPPartImpl(this, inputstream);
@@ -196,7 +219,7 @@
     public void addAttachmentPart(AttachmentPart attachmentPart) {
         if (attachmentPart != null) {
             attachmentParts.add(attachmentPart);
-            mimeHeaders.setHeader("Content-Type", "multipart/related");
+            mimeHeaders.setHeader(HTTPConstants.CONTENT_TYPE, "multipart/related");
         }
     }
 
@@ -379,8 +402,8 @@
             	attachmentPart = (AttachmentPartImpl) iterator.next();
             	String[] contentIds = attachmentPart.getMimeHeader("Content-Id");
             	
-            	//References can be made via an href attribute as described in SOAP Messages with Attachments
-            	//or via a single Text child node containing a URI          	
+            	//References can be made via an href attribute as described in SOAP Messages 
+            	//with Attachments or via a single Text child node containing a URI          	
             	String reference = soapelement.getAttribute("href");
             	if(reference == null || reference.trim().length() == 0){
             		reference = soapelement.getValue();

Modified: webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPPartImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPPartImpl.java?view=diff&rev=513354&r1=513353&r2=513354
==============================================================================
--- webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPPartImpl.java (original)
+++ webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPPartImpl.java Thu Mar  1 06:49:44 2007
@@ -40,6 +40,8 @@
 
 import org.apache.axiom.attachments.Attachments;
 import org.apache.axiom.om.util.StAXUtils;
+import org.apache.axiom.soap.SOAP11Constants;
+import org.apache.axiom.soap.SOAP12Constants;
 import org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder;
 import org.apache.axiom.soap.impl.dom.soap11.SOAP11Factory;
 import org.apache.axiom.soap.impl.dom.soap12.SOAP12Factory;
@@ -74,10 +76,9 @@
 
     public SOAPPartImpl(SOAPMessageImpl parentSoapMsg,
                         SOAPEnvelopeImpl soapEnvelope) {
-
-        setMimeHeader(HTTPConstants.HEADER_CONTENT_ID, IDGenerator.generateID());
-        setMimeHeader(HTTPConstants.HEADER_CONTENT_TYPE, "text/xml");
-
+        //setMimeHeader(HTTPConstants.HEADER_CONTENT_ID, IDGenerator.generateID());
+        //setMimeHeader(HTTPConstants.HEADER_CONTENT_TYPE, "text/xml");
+        this.mimeHeaders = (MimeHeadersEx)parentSoapMsg.getMimeHeaders();
         soapMessage = parentSoapMsg;
         envelope = soapEnvelope;
         document = soapEnvelope.getOwnerDocument();
@@ -86,28 +87,38 @@
     public SOAPPartImpl(SOAPMessageImpl parentSoapMsg,
                         InputStream inputStream,javax.xml.soap.MimeHeaders mimeHeaders
                         ) throws SOAPException {
-    	boolean mimeHeaderSet = true;
+    	String contentType = ""; 
+    	String fullContentTypeStr = "";
     	if(mimeHeaders == null){
-    		mimeHeaderSet = false;
-        	mimeHeaders = new MimeHeaders();
-        	mimeHeaders.addHeader("Content-ID", IDGenerator.generateID());
-        	mimeHeaders.addHeader(HTTPConstants.HEADER_CONTENT_TYPE, "text/xml");
+    		//TODO : read string from constants
+    		mimeHeaders = new MimeHeaders();
+    		mimeHeaders.addHeader("Content-ID", IDGenerator.generateID());
+    		mimeHeaders.addHeader("content-type", HTTPConstants.MEDIA_TYPE_APPLICATION_SOAP_XML);
+    	}else{
+    		String contentTypes[] = mimeHeaders.getHeader(HTTPConstants.CONTENT_TYPE);
+    		if(contentTypes != null && contentTypes.length > 0){
+    			fullContentTypeStr = contentTypes[0];
+    			//tmpContentType can be like 'application/soap+xml; charset=UTF-8;'
+    			//Only the first part is important
+    			if(fullContentTypeStr.indexOf(";") > -1){
+    				contentType = fullContentTypeStr.substring(0, fullContentTypeStr.indexOf(";"));    			
+    			}else{
+    				contentType = fullContentTypeStr;
+    			}
+    		}    		
     	}
     	
     	Iterator mimeHeaderIterator = mimeHeaders.getAllHeaders();
-    	String contentType = "";
     	while (mimeHeaderIterator.hasNext()) {
 			MimeHeader mimeHeader = (MimeHeader) mimeHeaderIterator.next();
 			String value = mimeHeader.getValue();
-			if("content-type".equals(mimeHeader.getName())){
-				contentType = value;
-			}
 			setMimeHeader(mimeHeader.getName(), value);
 		}
     	InputStream modifiedInputStream = null;
-    	if(mimeHeaderSet){
+    	if(contentType.indexOf("multipart/related") == 0){
+    		//This contains attachements
         	try {
-                Attachments attachments = new Attachments(inputStream, contentType,false, "","");
+                Attachments attachments = new Attachments(inputStream,fullContentTypeStr,false, "","");
                 modifiedInputStream = attachments.getSOAPPartInputStream();
       		} catch (Exception e) {
 	            throw new SOAPException(e);
@@ -119,10 +130,27 @@
 
         try {
             InputStreamReader isReader = new InputStreamReader(modifiedInputStream);
-            StAXSOAPModelBuilder builder =
-                    new StAXSOAPModelBuilder(StAXUtils.createXMLStreamReader(isReader),
-                                             new SOAP11Factory(),
-                                             null);
+            StAXSOAPModelBuilder builder = null;
+            
+            if(HTTPConstants.MEDIA_TYPE_TEXT_XML.equals(contentType)){
+                builder = new StAXSOAPModelBuilder(StAXUtils.createXMLStreamReader(isReader),
+                        new SOAP11Factory(),
+                        SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI);
+            	
+            }else if(HTTPConstants.MEDIA_TYPE_APPLICATION_SOAP_XML.equals(contentType)){
+                builder = new StAXSOAPModelBuilder(StAXUtils.createXMLStreamReader(isReader),
+                        new SOAP12Factory(),
+                        SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI);
+            	
+            }else if(HTTPConstants.MEDIA_TYPE_MULTIPART_RELATED.equals(contentType)){
+                builder = new StAXSOAPModelBuilder(StAXUtils.createXMLStreamReader(isReader),
+                        new SOAP11Factory(),
+                        null);            	
+            }else{
+                builder = new StAXSOAPModelBuilder(StAXUtils.createXMLStreamReader(isReader),
+                        new SOAP11Factory(),
+                        null);             	
+            }
             org.apache.axiom.soap.SOAPEnvelope soapEnvelope = builder.getSOAPEnvelope();
             envelope = new SOAPEnvelopeImpl((org.apache.axiom.soap.impl.dom.SOAPEnvelopeImpl)soapEnvelope);
             envelope.element.build();
@@ -315,13 +343,16 @@
 			
 			StAXSOAPModelBuilder builder1 = null;
 			if(this.envelope.element.getOMFactory() instanceof SOAP11Factory){
-				builder1 = new StAXSOAPModelBuilder(reader,(SOAP11Factory)this.envelope.element.getOMFactory(),null);
+				builder1 = new StAXSOAPModelBuilder(reader,
+						(SOAP11Factory)this.envelope.element.getOMFactory(),null);
 			}else if(this.envelope.element.getOMFactory() instanceof SOAP12Factory){
-				builder1 = new StAXSOAPModelBuilder(reader,(SOAP12Factory)this.envelope.element.getOMFactory(),null);
+				builder1 = new StAXSOAPModelBuilder(reader,
+						(SOAP12Factory)this.envelope.element.getOMFactory(),null);
 			}
 
             org.apache.axiom.soap.SOAPEnvelope soapEnvelope = builder1.getSOAPEnvelope();
-            envelope = new SOAPEnvelopeImpl((org.apache.axiom.soap.impl.dom.SOAPEnvelopeImpl)soapEnvelope);
+            envelope = new SOAPEnvelopeImpl(
+            		(org.apache.axiom.soap.impl.dom.SOAPEnvelopeImpl)soapEnvelope);
             envelope.element.build();
             this.document = envelope.getOwnerDocument();
 		} catch (Exception e) {
@@ -455,7 +486,8 @@
      *                      illegal character.
      *                      <br>NOT_SUPPORTED_ERR: Raised if this document is an HTML document.
      */
-    public ProcessingInstruction createProcessingInstruction(String target, String data) throws DOMException {
+    public ProcessingInstruction createProcessingInstruction(String target, String data) 
+    throws DOMException {
         return document.createProcessingInstruction(target, data);
     }
 
@@ -778,7 +810,6 @@
         // TODO - Fixme.
     	//return ((DeferredDocumentImpl)(((DOMSource)this.source).getNode())).getInputEncoding();
     	return this.envelope.getEncodingStyle();
-        //throw new UnsupportedOperationException("TODO");
     }
 
     public String getXmlEncoding() {
@@ -1310,7 +1341,8 @@
 
     public String getValue() {
         return null;  //TODO - Not yet implemented
-    }
+    }    	//if(mimeHeaderSet){
+
 
     public void setParentElement(SOAPElement parent) throws SOAPException {
         //TODO - Not yet implemented



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org