Author: ips
Date: Mon Feb 28 16:17:55 2005
New Revision: 155720
URL: http://svn.apache.org/viewcvs?view=rev&rev=155720
Log:
fixed insidious XmlBeansResourceProperty add/remove bug
Modified:
incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/impl/XmlBeansResourceProperty.java
incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/query/xpath/impl/XmlBeansXPathExpressionEvaluator.java
incubator/apollo/trunk/src/java/org/apache/ws/util/XmlBeanUtils.java
incubator/apollo/trunk/src/test/org/apache/ws/resource/properties/AbstractResourcePropertiesTestCase.java
incubator/apollo/trunk/src/test/org/apache/ws/resource/properties/impl/XmlBeansResourcePropertyTestCase.java
Modified:
incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/impl/XmlBeansResourceProperty.java
URL:
http://svn.apache.org/viewcvs/incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/impl/XmlBeansResourceProperty.java?view=diff&r1=155719&r2=155720
==============================================================================
---
incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/impl/XmlBeansResourceProperty.java
(original)
+++
incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/impl/XmlBeansResourceProperty.java
Mon Feb 28 16:17:55 2005
@@ -123,9 +123,9 @@
{
XmlObject propXBean = toPropXBean( propElem );
trimValue( propXBean );
+ propXBean = XmlBeanUtils.addChildElement( m_propSet.toXmlObject(),
+ propXBean );
load( propXBean );
- XmlBeanUtils.addChildElement( m_propSet.toXmlObject(),
- propXBean );
}
/**
Modified:
incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/query/xpath/impl/XmlBeansXPathExpressionEvaluator.java
URL:
http://svn.apache.org/viewcvs/incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/query/xpath/impl/XmlBeansXPathExpressionEvaluator.java?view=diff&r1=155719&r2=155720
==============================================================================
---
incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/query/xpath/impl/XmlBeansXPathExpressionEvaluator.java
(original)
+++
incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/query/xpath/impl/XmlBeansXPathExpressionEvaluator.java
Mon Feb 28 16:17:55 2005
@@ -32,16 +32,14 @@
import org.apache.ws.util.XmlBeanUtils;
import org.apache.ws.util.i18n.Messages;
import org.apache.xmlbeans.XmlObject;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
import javax.xml.rpc.JAXRPCException;
import java.net.URI;
/**
- * LOG-DONE
- * Evaluator supporting XPath queries using Xalan-J XPathAPI. The
implementation creates resource property document on
- * the fly and runs the query against it.
+ * XPath expression evaluator that leverages the XMLBeans [EMAIL PROTECTED]
XmlObject#selectPath(String)} API.
+ *
+ * @author Ian P. Springer
*/
public class XmlBeansXPathExpressionEvaluator
extends AbstractXPathExpressionEvaluator
@@ -121,11 +119,10 @@
cce ));
}
XmlObject propsDocXBean = XmlBeanUtils.getRootElement(
xBeanPropSet.toXmlObject( ) );
- Element nsContextElem = xpathExpr.getNamespaceContext( );
- if ( nsContextElem == null )
- {
- nsContextElem = ( (Document) propsDocXBean.newDomNode( )
).getDocumentElement( );
- }
+
+ // NOTE: the expression's namespace context is currently not used by
this evaluator,
+ // since XMLBeans v1 does not support specifying a namespace
context when calling
+ // selectPath()
try
{
Modified: incubator/apollo/trunk/src/java/org/apache/ws/util/XmlBeanUtils.java
URL:
http://svn.apache.org/viewcvs/incubator/apollo/trunk/src/java/org/apache/ws/util/XmlBeanUtils.java?view=diff&r1=155719&r2=155720
==============================================================================
--- incubator/apollo/trunk/src/java/org/apache/ws/util/XmlBeanUtils.java
(original)
+++ incubator/apollo/trunk/src/java/org/apache/ws/util/XmlBeanUtils.java Mon
Feb 28 16:17:55 2005
@@ -296,13 +296,14 @@
}
/**
- * TODO
+ * Adds a copy of the specified XmlBean as the last child element of the
+ * specified parent XmlBean.
*
* @param parentXBean
- * @param childXBean
+ * @param xBean
*/
- public static void addChildElement( XmlObject parentXBean,
- XmlObject childXBean )
+ public static XmlObject addChildElement( XmlObject parentXBean,
+ XmlObject xBean )
{
parentXBean = getRootElement( parentXBean );
XmlCursor xCursor = parentXBean.newCursor();
@@ -311,21 +312,24 @@
xCursor.toEndToken();
}
xCursor.toNextToken();
- childXBean = getRootElement( childXBean );
- xCursor.insertElement( getName( childXBean ) );
+ xBean = getRootElement( xBean );
+ XmlCursor yCursor = xBean.newCursor();
+ yCursor.copyXml( xCursor );
xCursor.toPrevSibling();
- xCursor.getObject().set( childXBean );
+ XmlObject childXBean = xCursor.getObject();
xCursor.dispose();
+ yCursor.dispose();
+ return childXBean;
}
/**
- * Adds a child element to the specified XmlBean with the give name.
+ * Adds an XmlBean with the specified name as the last of the specified
parent XmlBean.
*
* @param parentXBean
- * @param childName
+ * @param name
*/
public static XmlObject addChildElement( XmlObject parentXBean,
- QName childName )
+ QName name )
{
parentXBean = getRootElement( parentXBean );
XmlCursor xCursor = parentXBean.newCursor();
@@ -334,7 +338,7 @@
xCursor.toEndToken();
}
xCursor.toNextToken();
- xCursor.insertElement( childName );
+ xCursor.insertElement( name );
xCursor.toPrevSibling();
XmlObject childXBean = xCursor.getObject();
xCursor.dispose();
Modified:
incubator/apollo/trunk/src/test/org/apache/ws/resource/properties/AbstractResourcePropertiesTestCase.java
URL:
http://svn.apache.org/viewcvs/incubator/apollo/trunk/src/test/org/apache/ws/resource/properties/AbstractResourcePropertiesTestCase.java?view=diff&r1=155719&r2=155720
==============================================================================
---
incubator/apollo/trunk/src/test/org/apache/ws/resource/properties/AbstractResourcePropertiesTestCase.java
(original)
+++
incubator/apollo/trunk/src/test/org/apache/ws/resource/properties/AbstractResourcePropertiesTestCase.java
Mon Feb 28 16:17:55 2005
@@ -52,7 +52,7 @@
protected static final File SRC_DIR = new File( BASE_TMP_DIR,
"generated_src" );
protected static final File CLASSES_DIR = new File( BASE_TMP_DIR,
"generated_classes" );
- protected ResourcePropertySet m_resourcePropSet;
+ protected XmlBeansResourcePropertySet m_resourcePropSet;
protected SushiResourceContext m_resourceContext;
static
Modified:
incubator/apollo/trunk/src/test/org/apache/ws/resource/properties/impl/XmlBeansResourcePropertyTestCase.java
URL:
http://svn.apache.org/viewcvs/incubator/apollo/trunk/src/test/org/apache/ws/resource/properties/impl/XmlBeansResourcePropertyTestCase.java?view=diff&r1=155719&r2=155720
==============================================================================
---
incubator/apollo/trunk/src/test/org/apache/ws/resource/properties/impl/XmlBeansResourcePropertyTestCase.java
(original)
+++
incubator/apollo/trunk/src/test/org/apache/ws/resource/properties/impl/XmlBeansResourcePropertyTestCase.java
Mon Feb 28 16:17:55 2005
@@ -153,7 +153,27 @@
ResourceProperty prop = m_resourcePropSet.get(
SushiPropertyQNames.HAMACHI );
prop.remove( prop.get( 0 ) );
assertTrue( prop.isEmpty() );
+ assertEquals( 0, m_resourcePropSet.toXmlObject().selectPath(
"//*[local-name()='Hamachi';]" ).length );
}
+
+ /**
+ * Test for XmlBeansResourceProperty#remove.
+ */
+ public void testRemoveAddedElement()
+ throws Exception
+ {
+ ResourceProperty prop = m_resourcePropSet.get(
SushiPropertyQNames.HAMACHI );
+ prop.clear();
+ XmlObject hamachiDoc = XmlObject.Factory.parse( "<Hamachi
xmlns=\"http://ws.apache.org/resource/properties/test/sushi\">\n" +
+ " <Flavor>disgusting</Flavor>\n" +
+ "</Hamachi>" );
+ prop.add( hamachiDoc );
+ assertEquals( 1, prop.size() );
+ assertEquals( 1, m_resourcePropSet.toXmlObject().selectPath(
"//*[local-name()='Hamachi';]" ).length );
+ prop.remove( prop.get( 0 ) );
+ assertTrue( prop.isEmpty() );
+ assertEquals( 0, m_resourcePropSet.toXmlObject().selectPath(
"//*[local-name()='Hamachi';]" ).length );
+ }
/**
* Test for XmlBeansResourceProperty#set.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]