You are viewing a plain text version of this content. The canonical link for it is here.
Posted to wsrf-commits@ws.apache.org by ip...@apache.org on 2005/10/17 20:38:12 UTC

svn commit: r325952 - in /webservices/wsrf/trunk/src: examples/filesystem/src/java/example/filesystem/callback/CommentCallback.java java/org/apache/ws/util/spring/SpringBeansXmlMergeTask.java

Author: ips
Date: Mon Oct 17 11:38:07 2005
New Revision: 325952

URL: http://svn.apache.org/viewcvs?rev=325952&view=rev
Log:
fixed bug

Modified:
    webservices/wsrf/trunk/src/examples/filesystem/src/java/example/filesystem/callback/CommentCallback.java
    webservices/wsrf/trunk/src/java/org/apache/ws/util/spring/SpringBeansXmlMergeTask.java

Modified: webservices/wsrf/trunk/src/examples/filesystem/src/java/example/filesystem/callback/CommentCallback.java
URL: http://svn.apache.org/viewcvs/webservices/wsrf/trunk/src/examples/filesystem/src/java/example/filesystem/callback/CommentCallback.java?rev=325952&r1=325951&r2=325952&view=diff
==============================================================================
--- webservices/wsrf/trunk/src/examples/filesystem/src/java/example/filesystem/callback/CommentCallback.java (original)
+++ webservices/wsrf/trunk/src/examples/filesystem/src/java/example/filesystem/callback/CommentCallback.java Mon Oct 17 11:38:07 2005
@@ -5,6 +5,7 @@
 import org.apache.ws.resource.properties.SetResourcePropertyCallback;
 import org.apache.ws.resource.properties.impl.CallbackFailedException;
 import org.apache.xmlbeans.XmlString;
+import org.apache.ws.resource.example.filesystem.CommentDocument;
 
 import javax.xml.namespace.QName;
 
@@ -22,25 +23,38 @@
 
     public void deleteProperty( QName propQName ) throws CallbackFailedException
     {
-        return; // no need to implement - Apollo will never call delete for a prop whose minOccurs != 0
+        m_fileSystem.setComment( null );
     }
 
     public void insertProperty( Object[] propElems ) throws CallbackFailedException
     {
-        // Comment prop has cardinality of 1, so passed array will always have exactly one element 
+        // Comment prop has cardinality of 0..1, so passed array will always have exactly one element
         XmlString xString = (XmlString) propElems[0];
         m_fileSystem.setComment( xString.getStringValue() );
     }
 
-    public void updateProperty( Object[] prop ) throws CallbackFailedException
+    public void updateProperty( Object[] propElems ) throws CallbackFailedException
     {
-        insertProperty( prop );
+        insertProperty( propElems );
     }
 
     public ResourceProperty refreshProperty( ResourceProperty prop )  throws CallbackFailedException
     {
-        XmlString xString = (XmlString) prop.get( 0 );
-        xString.setStringValue( m_fileSystem.getComment() );
+        String comment = m_fileSystem.getComment();
+        if ( comment != null )
+        {
+            if ( prop.isEmpty() )
+            {
+                CommentDocument commentDocXBean = CommentDocument.Factory.newInstance();
+                commentDocXBean.setComment( comment );
+                prop.add( commentDocXBean );
+            }
+            else
+            {
+                XmlString xString = (XmlString) prop.get( 0 );
+                xString.setStringValue( comment );
+            }
+        }
         return prop;
     }
 }

Modified: webservices/wsrf/trunk/src/java/org/apache/ws/util/spring/SpringBeansXmlMergeTask.java
URL: http://svn.apache.org/viewcvs/webservices/wsrf/trunk/src/java/org/apache/ws/util/spring/SpringBeansXmlMergeTask.java?rev=325952&r1=325951&r2=325952&view=diff
==============================================================================
--- webservices/wsrf/trunk/src/java/org/apache/ws/util/spring/SpringBeansXmlMergeTask.java (original)
+++ webservices/wsrf/trunk/src/java/org/apache/ws/util/spring/SpringBeansXmlMergeTask.java Mon Oct 17 11:38:07 2005
@@ -137,11 +137,11 @@
     {
         System.out.println( "Merging " + srcFile + " into target spring-beans document ..." );
         Document srcDoc = parseSpringBeansXmlFile( srcFile );
-        Element srcDocElem = srcDoc.getDocumentElement();
-        NodeList beanNodeList = srcDocElem.getElementsByTagName( "bean" );
-        for ( int i = 0; i < beanNodeList.getLength(); i++ )
+        Element srcBeansElem = srcDoc.getDocumentElement();
+        Element[] beanElems = getChildElementsByTagName( srcBeansElem, "bean" );
+        for ( int i = 0; i < beanElems.length; i++ )
         {
-            Element srcBeanElem = (Element) beanNodeList.item( i );
+            Element srcBeanElem = beanElems[i];
             String srcBeanId = getBeanId( srcBeanElem );
             Element existingBeanElem = getBeanElementById( targetBeansElem, srcBeanId );
             Node importedSrcBeanElem = targetBeansElem.getOwnerDocument().importNode( srcBeanElem, true );
@@ -164,17 +164,31 @@
         {
             return null;
         }
-        NodeList beanNodeList = beansElem.getElementsByTagName( "bean" );
-        for ( int i = 0; i < beanNodeList.getLength(); i++ )
+        Element[] beanElems = getChildElementsByTagName( beansElem, "bean" );
+        for ( int i = 0; i < beanElems.length; i++ )
         {
-            Element beanElem = (Element) beanNodeList.item( i );
-            String aBeanId = getBeanId( beanElem );
-            if ( beanId.equals( aBeanId ) )
+            Element beanElem = beanElems[i];
+            if ( beanId.equals( getBeanId( beanElem ) ) )
             {
                 return beanElem;
             }
         }
         return null;
+    }
+
+    private Element[] getChildElementsByTagName( Element parentElem, String name )
+    {
+        List matchingElems = new ArrayList();
+        NodeList childNodes = parentElem.getChildNodes();
+        for ( int i = 0; i < childNodes.getLength(); i++ )
+        {
+            Node node = childNodes.item( i );
+            if ( node.getNodeType() == Node.ELEMENT_NODE && node.getNodeName().equals( name ) )
+            {
+                matchingElems.add( node );
+            }
+        }
+        return (Element[]) matchingElems.toArray( new Element[matchingElems.size()] );
     }
 
     private String getBeanId( Element beanElem )