You are viewing a plain text version of this content. The canonical link for it is here.
Posted to wsrf-dev@ws.apache.org by ip...@apache.org on 2005/01/23 01:18:42 UTC

svn commit: r126169 - in incubator/apollo/trunk/src/java/org/apache/ws/resource/properties: . impl v1_2/porttype/impl

Author: ips
Date: Sat Jan 22 16:18:40 2005
New Revision: 126169

URL: http://svn.apache.org/viewcvs?view=rev&rev=126169
Log:
added generic event/listener interfaces for propChange notif

Added:
   incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/ResourcePropertyValueChangeEvent.java
   incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/ResourcePropertyValueChangeListener.java
   incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/v1_2/porttype/impl/XmlBeansResourcePropertyValueChangeEvent.java
Modified:
   incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/ResourceProperty.java
   incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/impl/XmlBeansResourceProperty.java
   incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/v1_2/porttype/impl/SetResourcePropertiesProvider.java

Modified: incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/ResourceProperty.java
Url: http://svn.apache.org/viewcvs/incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/ResourceProperty.java?view=diff&rev=126169&p1=incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/ResourceProperty.java&r1=126168&p2=incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/ResourceProperty.java&r2=126169
==============================================================================
--- incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/ResourceProperty.java	(original)
+++ incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/ResourceProperty.java	Sat Jan 22 16:18:40 2005
@@ -145,4 +145,7 @@
      */
     ResourcePropertyCallback getCallBack();
 
+    ResourcePropertyValueChangeListener getChangeListener();
+
+    void setChangeListener( ResourcePropertyValueChangeListener listenerValue );
 }

Added: incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/ResourcePropertyValueChangeEvent.java
Url: http://svn.apache.org/viewcvs/incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/ResourcePropertyValueChangeEvent.java?view=auto&rev=126169
==============================================================================
--- (empty file)
+++ incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/ResourcePropertyValueChangeEvent.java	Sat Jan 22 16:18:40 2005
@@ -0,0 +1,38 @@
+/*
+ * Copyright 2004 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 org.apache.ws.resource.properties;
+
+/**
+ * @author Ian P. Springer (Hewlett-Packard Company)
+ */
+public interface ResourcePropertyValueChangeEvent
+{
+
+    /**
+     * Returns the old value of the property, as an array of property elements; may be null.
+     *
+     * @return the old value of the property, as an array of property elements; may be null
+     */
+    Object[] getOldValue();
+
+    /**
+     * Returns the new value of the property, as an array of property elements; may be null.
+     *
+     * @return the new value of the property, as an array of property elements; may be null
+     */
+    Object[] getNewValue();
+
+}

Added: incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/ResourcePropertyValueChangeListener.java
Url: http://svn.apache.org/viewcvs/incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/ResourcePropertyValueChangeListener.java?view=auto&rev=126169
==============================================================================
--- (empty file)
+++ incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/ResourcePropertyValueChangeListener.java	Sat Jan 22 16:18:40 2005
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2004 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 org.apache.ws.resource.properties;
+
+import java.util.EventListener;
+
+/**
+ * @author Ian P. Springer (Hewlett-Packard Company)
+ */
+public interface ResourcePropertyValueChangeListener extends EventListener
+{
+
+    /**
+     * A method that is called whenever a particular resource property's value changes as
+     * the result of the Insert, Delete, or Update component of a SetResourceProperties
+     * request.
+     *
+     * @param propValueChangeEvent
+     */
+    void propertyChanged( ResourcePropertyValueChangeEvent propValueChangeEvent );
+
+}

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&rev=126169&p1=incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/impl/XmlBeansResourceProperty.java&r1=126168&p2=incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/impl/XmlBeansResourceProperty.java&r2=126169
==============================================================================
--- 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	Sat Jan 22 16:18:40 2005
@@ -23,12 +23,14 @@
 import org.apache.ws.resource.properties.ResourcePropertyCallback;
 import org.apache.ws.resource.properties.ResourcePropertyMetaData;
 import org.apache.ws.resource.properties.ResourcePropertySet;
+import org.apache.ws.resource.properties.ResourcePropertyValueChangeListener;
 import org.apache.ws.util.XmlBeanUtils;
 import org.apache.ws.util.i18n.Messages;
 import org.apache.xmlbeans.XmlAnySimpleType;
 import org.apache.xmlbeans.XmlObject;
 import org.apache.xmlbeans.XmlOptions;
 import org.w3c.dom.Element;
+
 import javax.xml.soap.SOAPElement;
 import java.util.ArrayList;
 import java.util.Iterator;
@@ -41,307 +43,318 @@
  * @author Ian P. Springer
  */
 public class XmlBeansResourceProperty
-   implements ResourceProperty
+        implements ResourceProperty
 {
 
-   private static final Messages        MSG         = MessagesImpl.getInstance(  );
+    private static final Messages MSG = MessagesImpl.getInstance();
 
-   private ResourcePropertyMetaData    m_metaData;
-   private XmlBeansResourcePropertySet m_propSet;
-   private List                        m_propElems = new ArrayList(  );
-   private ResourcePropertyCallback    m_callBack;
-
-   /**
-    * Creates a new {@link XmlBeansResourceProperty} object.
-    *
-    * @param metaData DOCUMENT_ME
-    * @param propSet  DOCUMENT_ME
-    */
-   public XmlBeansResourceProperty( ResourcePropertyMetaData    metaData,
-                             XmlBeansResourcePropertySet propSet )
-   {
-      m_metaData    = metaData;
-      m_propSet     = propSet;
-   }
-
-   /**
-    * DOCUMENT_ME
-    *
-    * @return DOCUMENT_ME
-    */
-   public ResourcePropertyCallback getCallBack(  )
-   {
-      return m_callBack;
-   }
-
-   /**
-    * DOCUMENT_ME
-    *
-    * @param callback DOCUMENT_ME
-    */
-   public void setCallback( ResourcePropertyCallback callback )
-   {
-      m_callBack = callback;      
-   }
-
-   /**
-    * @return
-    */
-   public boolean isEmpty(  )
-   {
-      return m_propElems.isEmpty(  );
-   }
-
-   /**
-    * DOCUMENT_ME
-    *
-    * @return DOCUMENT_ME
-    */
-   public ResourcePropertyMetaData getMetaData(  )
-   {
-      return m_metaData;
-   }
-
-   /**
-    * @return
-    */
-   public ResourcePropertySet getSet(  )
-   {
-      return m_propSet;
-   }
-
-   /**
-    * DOCUMENT_ME
-    *
-    * @param propElem DOCUMENT_ME
-    *
-    * @throws MetaDataViolationException if the name of the element to be added does not match the name associated with this property
-    */
-   public void add( Object propElem )
-   {
-      XmlObject propXBean = toPropXBean( propElem );
-      trimValue( propXBean );
-      load( propXBean );
-      XmlBeanUtils.addChildElement( m_propSet.toXmlObject(  ),
-                                    propXBean );
-   }
-
-   /**
-    * @see org.apache.ws.resource.properties.ResourceProperty#clear()
-    */
-   public void clear(  )
-   {
-      XmlBeanUtils.removeChildElements( m_propSet.toXmlObject(  ),
-                                        m_metaData.getName(  ) );
-      m_propElems.clear(  );
-   }
-
-   /**
-    * DOCUMENT_ME
-    *
-    * @param index DOCUMENT_ME
-    *
-    * @return DOCUMENT_ME
-    */
-   public Object get( int index )
-   {
-      return m_propElems.get( index );
-   }
-
-   /**
-    * DOCUMENT_ME
-    *
-    * @return DOCUMENT_ME
-    */
-   public Iterator iterator(  )
-   {
-      return m_propElems.iterator(  );
-   }
-
-   /**
-    * This method loads a property element XMLBean, which is already in the resource properties document, into this
-    * {@link XmlBeansResourceProperty}. It is called by {@link XmlBeansResourcePropertySet#XmlBeansResourcePropertySet(org.apache.xmlbeans.XmlObject)}
-    * to populate newly created {@link XmlBeansResourceProperty} objects.
-    *
-    * @param propXBean a property element XMLBean that is already in the resource properties document
-    *
-    * @throws MetaDataViolationException if the name of the element to be added does not match the name associated with this property
-    */
-   public void load( XmlObject propXBean )
-   {
-      if ( !XmlBeanUtils.getName( propXBean ).equals( m_metaData.getName(  ) ) )
-      {
-         throw new MetaDataViolationException( MSG.getMessage( Keys.PROP_MUST_BE_NAMED,
-                                                               m_metaData.getName(  ) ) );
-      }
-      m_propElems.add( propXBean );
-   }
-
-   /**
-    * DOCUMENT_ME
-    *
-    * @param propElem DOCUMENT_ME
-    *
-    * @return DOCUMENT_ME
-    */
-   public boolean remove( Object propElem )
-   {
-      XmlObject propXBeanToRemove;
-      try
-      {
-         propXBeanToRemove = XmlBeanUtils.toXmlObject( propElem );
-      }
-      catch ( Exception e )
-      {
-         throw new IllegalArgumentException( MSG.getMessage( Keys.UNABLE_TO_CONVERT_TO_XMLOBJECT ) );
-      }
-
-      if ( propXBeanToRemove.schemaType(  ).getName(  ).equals( m_metaData.getName(  ) ) )
-      {
-         throw new IllegalArgumentException( MSG.getMessage( Keys.PROP_ELEM_TO_REMOVE_MST_B_NAMED,
-                                                             m_metaData.getName(  ) ) );
-      }
-
-      for ( int index = 0; index < m_propElems.size(  ); index++ )
-      {
-         XmlObject propXBean = (org.apache.xmlbeans.XmlObject) m_propElems.get( index );
-         if ( propXBean.valueEquals( propXBeanToRemove ) )
-         {
-            XmlBeanUtils.remove( propXBean );
-            m_propElems.remove( index );
-            return true;
-         }
-      }
-
-      return false;
-   }
-
-   /**
-    * @see ResourceProperty#set(int, Object)
-    */
-   public void set( int    index,
-                    Object propElem )
-   {
-      XmlObject propXBean = toPropXBean( propElem );
-      if ( !XmlBeanUtils.getName( propXBean ).equals( m_metaData.getName(  ) ) )
-      {
-         throw new IllegalArgumentException( MSG.getMessage( Keys.PROP_SET_MST_B_NAMED,
-                                                             m_metaData.getName(  ) ) );
-      }
-
-      if ( index >= m_propElems.size(  ) )
-      {
-         throw new IndexOutOfBoundsException( MSG.getMessage( Keys.INDEX_MST_B_GTR0,
-                                                              Integer.toString( m_propElems.size(  ) ) ) );
-      }
-
-      XmlObject currentPropXBean = (XmlObject) m_propElems.get( index );
-      trimValue( propXBean );
-      currentPropXBean.set( propXBean );
-   }
-
-   /**
-    * @see ResourceProperty#size()
-    */
-   public int size(  )
-   {
-      return m_propElems.size(  );
-   }
-
-   /**
-    * @see ResourceProperty#toElements()
-    */
-   public Element[] toElements(  )
-   throws SerializationException
-   {
-      List elems = new ArrayList(  );
-      for ( int i = 0; i < m_propElems.size(  ); i++ )
-      {
-         XmlObject propXBean = (XmlObject) m_propElems.get( i );
-         elems.add( propXBean.newDomNode(  ) );
-      }
-
-      return (Element[]) elems.toArray( new Element[0] );
-   }
-
-   /**
-    * DOCUMENT_ME
-    *
-    * @return DOCUMENT_ME
-    *
-    * @throws SerializationException DOCUMENT_ME
-    */
-   public SOAPElement[] toSOAPElements(  )
-   throws SerializationException
-   {
-      try
-      {
-         return XmlBeanUtils.toSOAPElementArray( (XmlObject[]) m_propElems.toArray( new XmlObject[0] ) );
-      }
-      catch ( Exception e )
-      {
-         throw new SerializationException( e );
-      }
-   }
-
-   /**
-    * DOCUMENT_ME
-    *
-    * @return DOCUMENT_ME
-    */
-   public String toString(  )
-   {
-      return toXML(  );
-   }
-
-   /**
-    * DOCUMENT_ME
-    *
-    * @return DOCUMENT_ME
-    */
-   public String toXML(  )
-   {
-      StringBuffer buf = new StringBuffer(  );
-      for ( int i = 0; i < m_propElems.size(  ); i++ )
-      {
-         XmlObject propXBean = (XmlObject) m_propElems.get( i );
-         buf.append( propXBean.xmlText( new XmlOptions().setSaveOuter().setSavePrettyPrint() ) );
-      }
-      return buf.toString(  );
-   }
-
-   /**
-    * @return
-    */
-   public XmlObject[] toXmlObjects(  )
-   {
-      return (XmlObject[]) m_propElems.toArray( new XmlObject[0] );
-   }
-
-   private XmlObject toPropXBean( Object propElem )
-   {
-      XmlObject propXBean;
-      try
-      {
-         propXBean = XmlBeanUtils.getRootElement( XmlBeanUtils.toXmlObject( propElem ) );
-      }
-      catch ( Exception e )
-      {
-         throw new IllegalArgumentException( MSG.getMessage( Keys.UNABLE_TO_CONVERT_TO_XMLOBJECT ) );
-      }
-
-      return propXBean;
-   }
-
-   private void trimValue( XmlObject propXBean )
-   {
-      // TODO: make this a configurable option
-      if ( propXBean instanceof XmlAnySimpleType )
-      {
-         XmlAnySimpleType simplePropXBean = (XmlAnySimpleType) propXBean;
-         String           untrimmedValue = simplePropXBean.getStringValue(  );
-         String           trimmedValue   = ( untrimmedValue != null ) ? untrimmedValue.trim(  ) : null;
-         simplePropXBean.setStringValue( trimmedValue );
-      }
-   }
+    private ResourcePropertyMetaData m_metaData;
+    private XmlBeansResourcePropertySet m_propSet;
+    private List m_propElems = new ArrayList();
+    private ResourcePropertyCallback m_callBack;
+    private ResourcePropertyValueChangeListener m_changeListener;
+
+    /**
+     * Creates a new {@link XmlBeansResourceProperty} object.
+     *
+     * @param metaData DOCUMENT_ME
+     * @param propSet  DOCUMENT_ME
+     */
+    public XmlBeansResourceProperty( ResourcePropertyMetaData metaData,
+                                     XmlBeansResourcePropertySet propSet )
+    {
+        m_metaData = metaData;
+        m_propSet = propSet;
+    }
+
+    /**
+     * DOCUMENT_ME
+     *
+     * @return DOCUMENT_ME
+     */
+    public ResourcePropertyCallback getCallBack()
+    {
+        return m_callBack;
+    }
+
+    /**
+     * DOCUMENT_ME
+     *
+     * @param callback DOCUMENT_ME
+     */
+    public void setCallback( ResourcePropertyCallback callback )
+    {
+        m_callBack = callback;
+    }
+
+    /**
+     * @return
+     */
+    public boolean isEmpty()
+    {
+        return m_propElems.isEmpty();
+    }
+
+    /**
+     * DOCUMENT_ME
+     *
+     * @return DOCUMENT_ME
+     */
+    public ResourcePropertyMetaData getMetaData()
+    {
+        return m_metaData;
+    }
+
+    /**
+     * @return
+     */
+    public ResourcePropertySet getSet()
+    {
+        return m_propSet;
+    }
+
+    /**
+     * DOCUMENT_ME
+     *
+     * @param propElem DOCUMENT_ME
+     *
+     * @throws MetaDataViolationException if the name of the element to be added does not match the name associated with this property
+     */
+    public void add( Object propElem )
+    {
+        XmlObject propXBean = toPropXBean( propElem );
+        trimValue( propXBean );
+        load( propXBean );
+        XmlBeanUtils.addChildElement( m_propSet.toXmlObject(),
+                propXBean );
+    }
+
+    /**
+     * @see org.apache.ws.resource.properties.ResourceProperty#clear()
+     */
+    public void clear()
+    {
+        XmlBeanUtils.removeChildElements( m_propSet.toXmlObject(),
+                m_metaData.getName() );
+        m_propElems.clear();
+    }
+
+    /**
+     * DOCUMENT_ME
+     *
+     * @param index DOCUMENT_ME
+     *
+     * @return DOCUMENT_ME
+     */
+    public Object get( int index )
+    {
+        return m_propElems.get( index );
+    }
+
+    /**
+     * DOCUMENT_ME
+     *
+     * @return DOCUMENT_ME
+     */
+    public Iterator iterator()
+    {
+        return m_propElems.iterator();
+    }
+
+    /**
+     * This method loads a property element XMLBean, which is already in the resource properties document, into this
+     * {@link XmlBeansResourceProperty}. It is called by {@link XmlBeansResourcePropertySet#XmlBeansResourcePropertySet(org.apache.xmlbeans.XmlObject)}
+     * to populate newly created {@link XmlBeansResourceProperty} objects.
+     *
+     * @param propXBean a property element XMLBean that is already in the resource properties document
+     *
+     * @throws MetaDataViolationException if the name of the element to be added does not match the name associated with this property
+     */
+    public void load( XmlObject propXBean )
+    {
+        if ( !XmlBeanUtils.getName( propXBean ).equals( m_metaData.getName() ) )
+        {
+            throw new MetaDataViolationException( MSG.getMessage( Keys.PROP_MUST_BE_NAMED,
+                    m_metaData.getName() ) );
+        }
+        m_propElems.add( propXBean );
+    }
+
+    /**
+     * DOCUMENT_ME
+     *
+     * @param propElem DOCUMENT_ME
+     *
+     * @return DOCUMENT_ME
+     */
+    public boolean remove( Object propElem )
+    {
+        XmlObject propXBeanToRemove;
+        try
+        {
+            propXBeanToRemove = XmlBeanUtils.toXmlObject( propElem );
+        }
+        catch ( Exception e )
+        {
+            throw new IllegalArgumentException( MSG.getMessage( Keys.UNABLE_TO_CONVERT_TO_XMLOBJECT ) );
+        }
+
+        if ( propXBeanToRemove.schemaType().getName().equals( m_metaData.getName() ) )
+        {
+            throw new IllegalArgumentException( MSG.getMessage( Keys.PROP_ELEM_TO_REMOVE_MST_B_NAMED,
+                    m_metaData.getName() ) );
+        }
+
+        for ( int index = 0; index < m_propElems.size(); index++ )
+        {
+            XmlObject propXBean = (org.apache.xmlbeans.XmlObject) m_propElems.get( index );
+            if ( propXBean.valueEquals( propXBeanToRemove ) )
+            {
+                XmlBeanUtils.remove( propXBean );
+                m_propElems.remove( index );
+                return true;
+            }
+        }
+
+        return false;
+    }
+
+    /**
+     * @see ResourceProperty#set(int, Object)
+     */
+    public void set( int index,
+                     Object propElem )
+    {
+        XmlObject propXBean = toPropXBean( propElem );
+        if ( !XmlBeanUtils.getName( propXBean ).equals( m_metaData.getName() ) )
+        {
+            throw new IllegalArgumentException( MSG.getMessage( Keys.PROP_SET_MST_B_NAMED,
+                    m_metaData.getName() ) );
+        }
+
+        if ( index >= m_propElems.size() )
+        {
+            throw new IndexOutOfBoundsException( MSG.getMessage( Keys.INDEX_MST_B_GTR0,
+                    Integer.toString( m_propElems.size() ) ) );
+        }
+
+        XmlObject currentPropXBean = (XmlObject) m_propElems.get( index );
+        trimValue( propXBean );
+        currentPropXBean.set( propXBean );
+    }
+
+    /**
+     * @see ResourceProperty#size()
+     */
+    public int size()
+    {
+        return m_propElems.size();
+    }
+
+    /**
+     * @see ResourceProperty#toElements()
+     */
+    public Element[] toElements()
+            throws SerializationException
+    {
+        List elems = new ArrayList();
+        for ( int i = 0; i < m_propElems.size(); i++ )
+        {
+            XmlObject propXBean = (XmlObject) m_propElems.get( i );
+            elems.add( propXBean.newDomNode() );
+        }
+
+        return (Element[]) elems.toArray( new Element[0] );
+    }
+
+    /**
+     * DOCUMENT_ME
+     *
+     * @return DOCUMENT_ME
+     *
+     * @throws SerializationException DOCUMENT_ME
+     */
+    public SOAPElement[] toSOAPElements()
+            throws SerializationException
+    {
+        try
+        {
+            return XmlBeanUtils.toSOAPElementArray( (XmlObject[]) m_propElems.toArray( new XmlObject[0] ) );
+        }
+        catch ( Exception e )
+        {
+            throw new SerializationException( e );
+        }
+    }
+
+    /**
+     * DOCUMENT_ME
+     *
+     * @return DOCUMENT_ME
+     */
+    public String toString()
+    {
+        return toXML();
+    }
+
+    /**
+     * DOCUMENT_ME
+     *
+     * @return DOCUMENT_ME
+     */
+    public String toXML()
+    {
+        StringBuffer buf = new StringBuffer();
+        for ( int i = 0; i < m_propElems.size(); i++ )
+        {
+            XmlObject propXBean = (XmlObject) m_propElems.get( i );
+            buf.append( propXBean.xmlText( new XmlOptions().setSaveOuter().setSavePrettyPrint() ) );
+        }
+        return buf.toString();
+    }
+
+    /**
+     * @return
+     */
+    public XmlObject[] toXmlObjects()
+    {
+        return (XmlObject[]) m_propElems.toArray( new XmlObject[0] );
+    }
+
+    public ResourcePropertyValueChangeListener getChangeListener()
+    {
+        return m_changeListener;
+    }
+
+    public void setChangeListener( ResourcePropertyValueChangeListener changeListener )
+    {
+        m_changeListener = changeListener;
+    }
+
+    private XmlObject toPropXBean( Object propElem )
+    {
+        XmlObject propXBean;
+        try
+        {
+            propXBean = XmlBeanUtils.getRootElement( XmlBeanUtils.toXmlObject( propElem ) );
+        }
+        catch ( Exception e )
+        {
+            throw new IllegalArgumentException( MSG.getMessage( Keys.UNABLE_TO_CONVERT_TO_XMLOBJECT ) );
+        }
+
+        return propXBean;
+    }
+
+    private void trimValue( XmlObject propXBean )
+    {
+        // TODO: make this a configurable option
+        if ( propXBean instanceof XmlAnySimpleType )
+        {
+            XmlAnySimpleType simplePropXBean = (XmlAnySimpleType) propXBean;
+            String untrimmedValue = simplePropXBean.getStringValue();
+            String trimmedValue = ( untrimmedValue != null ) ? untrimmedValue.trim() : null;
+            simplePropXBean.setStringValue( trimmedValue );
+        }
+    }
 }

Modified: incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/v1_2/porttype/impl/SetResourcePropertiesProvider.java
Url: http://svn.apache.org/viewcvs/incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/v1_2/porttype/impl/SetResourcePropertiesProvider.java?view=diff&rev=126169&p1=incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/v1_2/porttype/impl/SetResourcePropertiesProvider.java&r1=126168&p2=incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/v1_2/porttype/impl/SetResourcePropertiesProvider.java&r2=126169
==============================================================================
--- incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/v1_2/porttype/impl/SetResourcePropertiesProvider.java	(original)
+++ incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/v1_2/porttype/impl/SetResourcePropertiesProvider.java	Sat Jan 22 16:18:40 2005
@@ -41,6 +41,7 @@
 import org.oasisOpen.docs.wsrf.x2004.x06.wsrfWSResourceProperties12Draft01.UpdateType;
 
 import javax.xml.namespace.QName;
+import java.util.Iterator;
 
 /**
  * LOG-DONE An operation provider for wsrp:SetResourceProperties.
@@ -139,7 +140,6 @@
         }
         throwFaultIfPropertyIsReadOnly( prop );
         throwFaultIfDeletionViolatesSchema( prop );
-        //refreshProperty( prop );
         try
         {
             deletePropertyCallback( prop );
@@ -148,7 +148,13 @@
         {
             throw new SetResourcePropertyRequestFailedFaultException( re.toString() );
         }
+        Object[] oldValue = getValue( prop );
         prop.clear();
+        Object[] newValue = null;
+        if ( prop.getChangeListener() != null )
+        {
+            firePropChangeEvent( prop, oldValue, newValue );
+        }
     }
 
     /**
@@ -198,6 +204,7 @@
             throw new SetResourcePropertyRequestFailedFaultException( re.toString() );
         }
 
+        Object[] oldValue = getValue( prop );
         for ( int i = 0; i < propElemsToBeInserted.length; i++ )
         {
             try
@@ -209,14 +216,16 @@
                 throw new InvalidSetResourcePropertiesRequestContentFaultException( mdve );
             }
         }
+        Object[] newValue = getValue( prop );
+        if ( prop.getChangeListener() != null )
+        {
+            firePropChangeEvent( prop, oldValue, newValue );
+        }
     }
 
-    private ResourceProperty createAnyProperty(QName propName)
+    private void firePropChangeEvent( ResourceProperty prop, Object[] oldValue, Object[] newValue )
     {
-        ResourceProperty prop;
-        ResourcePropertyMetaData propMetaData = new AnyResourcePropertyMetaData( propName );
-        prop = propMetaData.create( getProperties() );
-        return prop;
+        prop.getChangeListener().propertyChanged( new XmlBeansResourcePropertyValueChangeEvent( oldValue, newValue ) );
     }
 
     /**
@@ -241,8 +250,6 @@
         QName propName = XmlBeanUtils.getName( newPropElems[0] );
         ResourceProperty prop = getProperty( propName );
 
-        //refreshProperty( prop );
-
         throwFaultIfPropertyIsReadOnly( prop );
         throwFaultIfElementNamesHeterogenous( newPropElems );
         throwFaultIfUpdateViolatesSchema( prop, newPropElems );
@@ -256,9 +263,10 @@
             throw new SetResourcePropertyRequestFailedFaultException( re.toString() );
         }
 
+        Object[] oldValue = getValue( prop );
+        // TODO: we might need to clone the oldValue elems, since we might be destroying them when we call clear() below
         try
         {
-
             prop.clear();
             for ( int i = 0; i < newPropElems.length; i++ )
             {
@@ -269,6 +277,29 @@
         {
             throw new InvalidSetResourcePropertiesRequestContentFaultException( mdve );
         }
+        Object[] newValue = getValue( prop );
+        if ( prop.getChangeListener() != null )
+        {
+            firePropChangeEvent( prop, oldValue, newValue );
+        }
+    }
+
+    private ResourceProperty createAnyProperty(QName propName)
+    {
+        ResourcePropertyMetaData propMetaData = new AnyResourcePropertyMetaData( propName );
+        return propMetaData.create( getProperties() );
+    }
+
+    private Object[] getValue( ResourceProperty prop )
+    {
+        Object[] value = new Object[prop.size()];
+        Iterator propElemIter = prop.iterator();
+        int i = 0;
+        while ( propElemIter.hasNext() )
+        {
+            value[i++] = propElemIter.next();
+        }
+        return value;
     }
 
     private ResourceProperty getProperty( QName propName )
@@ -283,7 +314,6 @@
                 throw new InvalidResourcePropertyQNameFaultException( propName );
             }
         }
-
         return prop;
     }
 
@@ -313,7 +343,8 @@
     }
 
     private void throwFaultIfInsertionViolatesSchema( ResourceProperty prop, XmlObject[] propElemsToBeInserted )
-    {    //todo probably need to check this for xsd:any to check for possible violations
+    {
+        //todo probably need to check this for xsd:any to check for possible violations
         if ( prop.getMetaData().getMaxOccurs() != -1 &&( prop.size() + propElemsToBeInserted.length ) > prop.getMetaData().getMaxOccurs() )
         {
             throw new InvalidSetResourcePropertiesRequestContentFaultException( MSG.getMessage( Keys.ERROR_PROPERTY_INSERT_VIOLATES_SCHEMA,

Added: incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/v1_2/porttype/impl/XmlBeansResourcePropertyValueChangeEvent.java
Url: http://svn.apache.org/viewcvs/incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/v1_2/porttype/impl/XmlBeansResourcePropertyValueChangeEvent.java?view=auto&rev=126169
==============================================================================
--- (empty file)
+++ incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/v1_2/porttype/impl/XmlBeansResourcePropertyValueChangeEvent.java	Sat Jan 22 16:18:40 2005
@@ -0,0 +1,88 @@
+/*
+ * Copyright 2004 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 org.apache.ws.resource.properties.v1_2.porttype.impl;
+
+import org.apache.ws.XmlObjectWrapper;
+import org.apache.ws.resource.properties.ResourcePropertyValueChangeEvent;
+import org.apache.ws.util.XmlBeanUtils;
+import org.apache.xmlbeans.XmlObject;
+import org.oasisOpen.docs.wsrf.x2004.x06.wsrfWSResourceProperties12Draft01.ResourcePropertyValueChangeNotificationDocument;
+import org.oasisOpen.docs.wsrf.x2004.x06.wsrfWSResourceProperties12Draft01.ResourcePropertyValueChangeNotificationType;
+
+/**
+ * @author Ian P. Springer (Hewlett-Packard Company)
+ */
+public class XmlBeansResourcePropertyValueChangeEvent implements ResourcePropertyValueChangeEvent, XmlObjectWrapper
+{
+
+    private Object[] m_oldValue;
+    private Object[] m_newValue;
+    private ResourcePropertyValueChangeNotificationDocument m_propValueChangeNotifDocXBean;
+
+    public XmlBeansResourcePropertyValueChangeEvent( Object[] oldValue, Object[] newValue )
+    {
+        m_oldValue = oldValue;
+        m_newValue = newValue;
+        m_propValueChangeNotifDocXBean = buildPropValueChangeNotifDocXmlBean( oldValue, newValue );
+    }
+
+    public Object[] getOldValue()
+    {
+        return m_oldValue;
+    }
+
+    public Object[] getNewValue()
+    {
+        return m_newValue;
+    }
+
+    public XmlObject getXmlObject()
+    {
+        return m_propValueChangeNotifDocXBean;
+    }
+
+    private ResourcePropertyValueChangeNotificationDocument buildPropValueChangeNotifDocXmlBean( Object[] oldValue, Object[] newValue )
+    {
+        ResourcePropertyValueChangeNotificationDocument propValueChangeNotifDocXBean = ResourcePropertyValueChangeNotificationDocument.Factory.newInstance();
+        ResourcePropertyValueChangeNotificationType propValueChangeNotifXBean = propValueChangeNotifDocXBean.addNewResourcePropertyValueChangeNotification();
+        ResourcePropertyValueChangeNotificationType.OldValue oldValueXBean = propValueChangeNotifXBean.addNewOldValue();
+        if ( oldValue != null )
+        {
+            for ( int i = 0; i < oldValue.length; i++ )
+            {
+                XmlBeanUtils.addChildElement( oldValueXBean, (XmlObject) oldValue[i] );
+            }
+        }
+        else
+        {
+            oldValueXBean.setNil();
+        }
+        ResourcePropertyValueChangeNotificationType.NewValue newValueXBean = propValueChangeNotifXBean.addNewNewValue();
+        if ( newValue != null )
+        {
+            for ( int i = 0; i < oldValue.length; i++ )
+            {
+                XmlBeanUtils.addChildElement( newValueXBean, (XmlObject) newValue[i] );
+            }
+        }
+        else
+        {
+            newValueXBean.setNil();
+        }
+        return propValueChangeNotifDocXBean;
+    }
+
+}

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