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 2004/12/08 21:25:40 UTC

svn commit: r111305 - in incubator/apollo/trunk/src: java/org/apache/ws/resource/i18n java/org/apache/ws/resource/properties java/org/apache/ws/resource/properties/impl java/org/apache/ws/resource/properties/porttype/impl test/org/apache/ws/resource/properties/impl

Author: ips
Date: Wed Dec  8 12:25:38 2004
New Revision: 111305

URL: http://svn.apache.org/viewcvs?view=rev&rev=111305
Log:
refactored minOccurs/maxOccurs checking - now done in portTypeImpls instead of in XmlBeansResourceProperty

Modified:
   incubator/apollo/trunk/src/java/org/apache/ws/resource/i18n/Keys.java
   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/impl/XmlBeansResourcePropertySet.java
   incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/porttype/impl/AbstractResourcePropertiesPortType.java
   incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/porttype/impl/GetMultipleResourcePropertiesProvider.java
   incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/porttype/impl/GetResourcePropertyProvider.java
   incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/porttype/impl/QueryResourcePropertiesProvider.java
   incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/porttype/impl/SetResourcePropertiesProvider.java
   incubator/apollo/trunk/src/test/org/apache/ws/resource/properties/impl/XmlBeansResourcePropertyTestCase.java

Modified: incubator/apollo/trunk/src/java/org/apache/ws/resource/i18n/Keys.java
Url: http://svn.apache.org/viewcvs/incubator/apollo/trunk/src/java/org/apache/ws/resource/i18n/Keys.java?view=diff&rev=111305&p1=incubator/apollo/trunk/src/java/org/apache/ws/resource/i18n/Keys.java&r1=111304&p2=incubator/apollo/trunk/src/java/org/apache/ws/resource/i18n/Keys.java&r2=111305
==============================================================================
--- incubator/apollo/trunk/src/java/org/apache/ws/resource/i18n/Keys.java	(original)
+++ incubator/apollo/trunk/src/java/org/apache/ws/resource/i18n/Keys.java	Wed Dec  8 12:25:38 2004
@@ -443,9 +443,13 @@
      */
     String INSERT_RP_REQ = "INSERT_RP_REQ";
     /**
+     * @msg Property {0} cannot be deleted because its minOccurs is greater than zero.
+     */
+    String ERROR_PROPERTY_DELETE_VIOLATES_SCHEMA = "ERROR_PROPERTY_DELETE_VIOLATES_SCHEMA";
+    /**
      * @msg Element{0} cannot be inserted because maxOccurs for property {1} would be exceeded.
      */
-    String ERROR_PROP_CANNOT_BE_INSERTED = "ERROR_PROP_CANNOT_BE_INSERTED";
+    String ERROR_PROPERTY_INSERT_VIOLATES_SCHEMA = "ERROR_PROPERTY_INSERT_VIOLATES_SCHEMA";
     /**
      * @msg Updating ResourceProperty request: {0}
      */
@@ -453,7 +457,7 @@
     /**
      * @msg Elements cannot be inserted because maxOccurs for property {0} would be exceeded.
      */
-    String ERROR_INSRT_MAX = "ERROR_INSRT_MAX";
+    String ERROR_PROPERTY_UPDATE_VIOLATES_SCHEMA = "ERROR_PROPERTY_UPDATE_VIOLATES_SCHEMA";
     /**
      * @msg Getting Resource Property with name: {0}
      */

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=111305&p1=incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/ResourceProperty.java&r1=111304&p2=incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/ResourceProperty.java&r2=111305
==============================================================================
--- 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	Wed Dec  8 12:25:38 2004
@@ -53,14 +53,12 @@
      *
      * @param value the value to add.
      */
-    void add( Object value )
-            throws MetaDataViolationException;
+    void add( Object value ) throws MetaDataViolationException;        
 
     /**
      * Removes all values.
      */
-    void clear()
-            throws MetaDataViolationException;
+    void clear();
 
     /**
      * Retrieves a value at a specific index.
@@ -145,7 +143,7 @@
 
     /**
      * Returns the callback for this property, or null if no callback has been set.
-     * 
+     *
      * @return the callback for this property, or null if no callback has been set
      */
     ResourcePropertyCallback getCallBack();

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=111305&p1=incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/impl/XmlBeansResourceProperty.java&r1=111304&p2=incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/impl/XmlBeansResourceProperty.java&r2=111305
==============================================================================
--- 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	Wed Dec  8 12:25:38 2004
@@ -42,8 +42,9 @@
 public class XmlBeansResourceProperty
    implements ResourceProperty
 {
-   /** DOCUMENT_ME */
-   public 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(  );
@@ -113,8 +114,7 @@
     *
     * @param propElem DOCUMENT_ME
     */
-   public void add( Object propElem )
-   throws MetaDataViolationException
+   public void add( Object propElem ) throws MetaDataViolationException
    {
       XmlObject propXBean = toPropXBean( propElem );
       trimValue( propXBean );
@@ -128,13 +128,6 @@
     */
    public void clear(  )
    {
-      if ( m_metaData.getMinOccurs(  ) != 0 )
-      {
-         throw new IllegalStateException( MSG.getMessage( Keys.CANNOT_CLEAR_SCHEMA_CONSTRAINT,
-                                                          m_metaData.getName(  ).toString(  ),
-                                                          Integer.toString( m_metaData.getMinOccurs(  ) ) ) );
-      }
-
       XmlBeanUtils.removeChildElements( m_propSet.toXmlObject(  ),
                                         m_metaData.getName(  ) );
       m_propElems.clear(  );
@@ -172,18 +165,11 @@
    public void load( XmlObject propXBean )
    throws MetaDataViolationException
    {
-      if ( m_propElems.size(  ) == m_metaData.getMaxOccurs(  ) )
-      {
-         throw new MetaDataViolationException( MSG.getMessage( Keys.MAX_ALLOWED_BY_SCHEMA,
-                                                               Integer.toString( m_metaData.getMaxOccurs(  ) ) ) );
-      }
-
       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 );
    }
 

Modified: incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/impl/XmlBeansResourcePropertySet.java
Url: http://svn.apache.org/viewcvs/incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/impl/XmlBeansResourcePropertySet.java?view=diff&rev=111305&p1=incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/impl/XmlBeansResourcePropertySet.java&r1=111304&p2=incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/impl/XmlBeansResourcePropertySet.java&r2=111305
==============================================================================
--- incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/impl/XmlBeansResourcePropertySet.java	(original)
+++ incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/impl/XmlBeansResourcePropertySet.java	Wed Dec  8 12:25:38 2004
@@ -47,9 +47,11 @@
 public class XmlBeansResourcePropertySet
    implements ResourcePropertySet
 {
+
     private static final Log LOG = LogFactory.getLog( XmlBeansResourcePropertySet.class );
-    public static final Messages MSG = MessagesImpl.getInstance();
-   private XmlObject                   m_propsDocXBean;
+    private static final Messages MSG = MessagesImpl.getInstance();
+
+    private XmlObject                   m_propsDocXBean;
    private XmlObject                   m_propsXBean;
    private Document                    m_propsDocDOM;
    private Map                         m_propsMap = new HashMap(  );

Modified: incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/porttype/impl/AbstractResourcePropertiesPortType.java
Url: http://svn.apache.org/viewcvs/incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/porttype/impl/AbstractResourcePropertiesPortType.java?view=diff&rev=111305&p1=incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/porttype/impl/AbstractResourcePropertiesPortType.java&r1=111304&p2=incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/porttype/impl/AbstractResourcePropertiesPortType.java&r2=111305
==============================================================================
--- incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/porttype/impl/AbstractResourcePropertiesPortType.java	(original)
+++ incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/porttype/impl/AbstractResourcePropertiesPortType.java	Wed Dec  8 12:25:38 2004
@@ -35,7 +35,9 @@
 public abstract class AbstractResourcePropertiesPortType
    extends AbstractPortType
 {
-   public static final Messages MSG = MessagesImpl.getInstance();
+
+   protected static final Messages MSG = MessagesImpl.getInstance();
+    
    /**
     * Creates a new {@link AbstractResourcePropertiesPortType} object.
     *

Modified: incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/porttype/impl/GetMultipleResourcePropertiesProvider.java
Url: http://svn.apache.org/viewcvs/incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/porttype/impl/GetMultipleResourcePropertiesProvider.java?view=diff&rev=111305&p1=incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/porttype/impl/GetMultipleResourcePropertiesProvider.java&r1=111304&p2=incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/porttype/impl/GetMultipleResourcePropertiesProvider.java&r2=111305
==============================================================================
--- incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/porttype/impl/GetMultipleResourcePropertiesProvider.java	(original)
+++ incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/porttype/impl/GetMultipleResourcePropertiesProvider.java	Wed Dec  8 12:25:38 2004
@@ -42,10 +42,9 @@
    extends AbstractResourcePropertiesPortType
    implements GetMultipleResourcePropertiesPortType
 {
+    
    private static final Log     LOG = LogFactory.getLog( GetMultipleResourcePropertiesProvider.class );
-
-   /** DOCUMENT_ME */
-   public static final Messages MSG = MessagesImpl.getInstance(  );
+   private static final Messages MSG = MessagesImpl.getInstance(  );
 
    /**
     * Creates a new {@link GetMultipleResourcePropertiesProvider} object.

Modified: incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/porttype/impl/GetResourcePropertyProvider.java
Url: http://svn.apache.org/viewcvs/incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/porttype/impl/GetResourcePropertyProvider.java?view=diff&rev=111305&p1=incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/porttype/impl/GetResourcePropertyProvider.java&r1=111304&p2=incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/porttype/impl/GetResourcePropertyProvider.java&r2=111305
==============================================================================
--- incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/porttype/impl/GetResourcePropertyProvider.java	(original)
+++ incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/porttype/impl/GetResourcePropertyProvider.java	Wed Dec  8 12:25:38 2004
@@ -32,7 +32,6 @@
 import java.util.Iterator;
 
 /**
- * LOG-DONE
  * An operation provider for wsrp:GetResourceProperty.
  *
  * @author Ian P. Springer
@@ -41,8 +40,9 @@
    extends AbstractResourcePropertiesPortType
    implements GetResourcePropertyPortType
 {
+    
     private static final Log LOG = LogFactory.getLog( GetResourcePropertyProvider.class );
-    public static final Messages MSG = MessagesImpl.getInstance();
+    private static final Messages MSG = MessagesImpl.getInstance();
 
    /**
     * Creates a new {@link GetResourcePropertyProvider} object.
@@ -64,7 +64,6 @@
     * @throws InvalidResourcePropertyQNameFaultException
     *
     * @throws org.apache.ws.resource.faults.ResoureKeyHeaderNotFoundFaultException
-    *
     */
    public GetResourcePropertyResponseDocument getResourceProperty( GetResourcePropertyDocument requestDoc )
    {
@@ -74,14 +73,12 @@
       }
       GetResourcePropertyResponseDocument responseDoc = createResponseDocument(  );
       QName                               propName = requestDoc.getGetResourceProperty(  );
-
       ResourceProperty                    prop     = getProperties(  ).get( propName );
-      refreshProperty(prop);
       if ( prop == null )
       {
          throw new InvalidResourcePropertyQNameFaultException( requestDoc.getGetResourceProperty(  ) );
       }
-
+      refreshProperty(prop);
       Iterator propElemIter = prop.iterator(  );
       while ( propElemIter.hasNext(  ) )
       {
@@ -89,7 +86,6 @@
          XmlBeanUtils.addChildElement( responseDoc.getGetResourcePropertyResponse(  ),
                                        propElem );
       }
-
       return responseDoc;
    }
 

Modified: incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/porttype/impl/QueryResourcePropertiesProvider.java
Url: http://svn.apache.org/viewcvs/incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/porttype/impl/QueryResourcePropertiesProvider.java?view=diff&rev=111305&p1=incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/porttype/impl/QueryResourcePropertiesProvider.java&r1=111304&p2=incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/porttype/impl/QueryResourcePropertiesProvider.java&r2=111305
==============================================================================
--- incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/porttype/impl/QueryResourcePropertiesProvider.java	(original)
+++ incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/porttype/impl/QueryResourcePropertiesProvider.java	Wed Dec  8 12:25:38 2004
@@ -52,10 +52,9 @@
    extends AbstractResourcePropertiesPortType
    implements QueryResourcePropertiesPortType
 {
-   private static final Log     LOG = LogFactory.getLog( QueryResourcePropertiesProvider.class );
 
-   /** DOCUMENT_ME */
-   public static final Messages MSG = MessagesImpl.getInstance(  );
+   private static final Log     LOG = LogFactory.getLog( QueryResourcePropertiesProvider.class );
+   private static final Messages MSG = MessagesImpl.getInstance(  );
 
    /**
     * DOCUMENT_ME

Modified: incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/porttype/impl/SetResourcePropertiesProvider.java
Url: http://svn.apache.org/viewcvs/incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/porttype/impl/SetResourcePropertiesProvider.java?view=diff&rev=111305&p1=incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/porttype/impl/SetResourcePropertiesProvider.java&r1=111304&p2=incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/porttype/impl/SetResourcePropertiesProvider.java&r2=111305
==============================================================================
--- incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/porttype/impl/SetResourcePropertiesProvider.java	(original)
+++ incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/porttype/impl/SetResourcePropertiesProvider.java	Wed Dec  8 12:25:38 2004
@@ -27,6 +27,7 @@
 import org.apache.ws.resource.properties.SetResourcePropertyCallback;
 import org.apache.ws.resource.properties.faults.InvalidResourcePropertyQNameFaultException;
 import org.apache.ws.resource.properties.faults.InvalidSetResourcePropertiesRequestContentFaultException;
+import org.apache.ws.resource.properties.faults.SetResourcePropertyRequestFailedFaultException;
 import org.apache.ws.resource.properties.faults.UnableToModifyResourcePropertyFaultException;
 import org.apache.ws.resource.properties.impl.AnyResourcePropertyMetaData;
 import org.apache.ws.resource.properties.porttype.SetResourcePropertiesPortType;
@@ -38,285 +39,317 @@
 import org.oasisOpen.docs.wsrf.x2004.x06.wsrfWSResourceProperties12Draft01.SetResourcePropertiesDocument;
 import org.oasisOpen.docs.wsrf.x2004.x06.wsrfWSResourceProperties12Draft01.SetResourcePropertiesResponseDocument;
 import org.oasisOpen.docs.wsrf.x2004.x06.wsrfWSResourceProperties12Draft01.UpdateType;
+
 import javax.xml.namespace.QName;
 
 /**
- * LOG-DONE
- * An operation provider for wsrp:SetResourceProperties.
+ * LOG-DONE An operation provider for wsrp:SetResourceProperties.
  *
  * @author Ian P. Springer
  */
 public class SetResourcePropertiesProvider
-   extends AbstractResourcePropertiesPortType
-   implements SetResourcePropertiesPortType
+        extends AbstractResourcePropertiesPortType
+        implements SetResourcePropertiesPortType
 {
-   private static final Log     LOG = LogFactory.getLog( SetResourcePropertiesProvider.class );
 
-   /** DOCUMENT_ME */
-   public static final Messages MSG = MessagesImpl.getInstance(  );
+    private static final Log LOG = LogFactory.getLog( SetResourcePropertiesProvider.class );
+    private static final Messages MSG = MessagesImpl.getInstance();
 
-   /**
-    * Creates a new {@link SetResourcePropertiesProvider} object.
-    *
-    * @param resourceContext DOCUMENT_ME
-    */
-   public SetResourcePropertiesProvider( ResourceContext resourceContext )
-   {
-      super( resourceContext );
-   }
-
-   /**
-    * Implementation of the wsrp:SetResourceProperties operation.
-    *
-    * @param requestDoc the requestDoc XMLBean
-    *
-    * @return the response XMLBean
-    *
-    * @throws org.apache.ws.resource.properties.faults.InvalidResourcePropertyQNameFaultException
-    *
-    * @throws org.apache.ws.resource.faults.ResoureKeyHeaderNotFoundFaultException
-    *
-    */
-   public SetResourcePropertiesResponseDocument setResourceProperties( SetResourcePropertiesDocument requestDoc )
-   {
-      if ( LOG.isDebugEnabled(  ) )
-      {
-         LOG.debug( MSG.getMessage( Keys.SET_RP_REQ,
-                                    requestDoc.toString(  ) ) );
-      }
-
-      SetResourcePropertiesResponseDocument               responseDoc = createResponseDocument(  );
-      SetResourcePropertiesDocument.SetResourceProperties requestElem = requestDoc.getSetResourceProperties(  );
-
-      InsertType[]                                        insertElems = requestElem.getInsertArray(  );
-      for ( int i = 0; i < insertElems.length; i++ )
-      {
-         insertResourceProperty( insertElems[i] );
-      }
-
-      DeleteType[] deleteElems = requestElem.getDeleteArray(  );
-      for ( int i = 0; i < deleteElems.length; i++ )
-      {
-         deleteResourceProperty( deleteElems[i] );
-      }
-
-      UpdateType[] updateElems = requestElem.getUpdateArray(  );
-      for ( int i = 0; i < updateElems.length; i++ )
-      {
-         updateResourceProperty( updateElems[i] );
-      }
-
-      return responseDoc;
-   }
-
-   /**
-    * DOCUMENT_ME
-    *
-    * @param deleteElem DOCUMENT_ME
-    */
-   protected void deleteResourceProperty( DeleteType deleteElem )
-   {
-      if ( LOG.isDebugEnabled(  ) )
-      {
-         LOG.debug( MSG.getMessage( Keys.DEL_RP_REQ,
-                                    deleteElem.toString(  ) ) );
-      }
-
-      QName nameOfPropToBeDeleted = deleteElem.getResourceProperty(  );
-      if ( nameOfPropToBeDeleted == null )
-      {
-         throw new InvalidSetResourcePropertiesRequestContentFaultException( MSG.getMessage( Keys.DEL_MISSING_RP_ATTRIB ) );
-      }
-
-      ResourceProperty prop = getProperties(  ).get( nameOfPropToBeDeleted );
-
-      if ( prop == null )
-      {
-         throw new InvalidResourcePropertyQNameFaultException( nameOfPropToBeDeleted );
-      }
-
-      refreshProperty( prop );
-      throwFaultIfPropertyIsReadOnly( prop );
-      try
-      {
-         deleteProperty( prop );
-         prop.clear(  );
-      }
-      catch ( MetaDataViolationException mdve )
-      {
-         throw new InvalidSetResourcePropertiesRequestContentFaultException( mdve );
-      }
-   }
-
-   /**
-    * DOCUMENT_ME
-    *
-    * @param insertElem DOCUMENT_ME
-    */
-   protected void insertResourceProperty( InsertType insertElem )
-   {
-      if ( LOG.isDebugEnabled(  ) )
-      {
-         LOG.debug( MSG.getMessage( Keys.INSERT_RP_REQ,
-                                    insertElem.toString(  ) ) );
-      }
-
-      XmlObject[] propElemsToBeInserted = XmlBeanUtils.getChildElements( insertElem );
-      if ( propElemsToBeInserted.length == 0 )
-      {
-         return; // nothing to do
-      }
-
-      QName            propName = XmlBeanUtils.getName( propElemsToBeInserted[0] );
-      ResourceProperty prop = getProperty( propName );
-      refreshProperty( prop );
-      throwFaultIfPropertyIsReadOnly( prop );
-      if ( ( prop.size(  ) + propElemsToBeInserted.length ) > prop.getMetaData(  ).getMaxOccurs(  ) )
-      {
-         throw new InvalidSetResourcePropertiesRequestContentFaultException( MSG.getMessage( Keys.ERROR_PROP_CANNOT_BE_INSERTED,
-                                                                                             ( ( propElemsToBeInserted.length > 1 )
-                                                                                               ? "s" : "" ),
-                                                                                             propName ) );
-      }
-
-      insertProperty( prop, propElemsToBeInserted );
-      for ( int i = 0; i < propElemsToBeInserted.length; i++ )
-      {
-         try
-         {
-            prop.add( propElemsToBeInserted[i] );
-         }
-         catch ( MetaDataViolationException mdve )
-         {
+    /**
+     * Creates a new {@link SetResourcePropertiesProvider} object.
+     *
+     * @param resourceContext DOCUMENT_ME
+     */
+    public SetResourcePropertiesProvider( ResourceContext resourceContext )
+    {
+        super( resourceContext );
+    }
+
+    /**
+     * Implementation of the wsrp:SetResourceProperties operation.
+     *
+     * @param requestDoc the requestDoc XMLBean
+     *
+     * @return the response XMLBean
+     *
+     * @throws org.apache.ws.resource.properties.faults.InvalidResourcePropertyQNameFaultException
+     *
+     * @throws org.apache.ws.resource.faults.ResoureKeyHeaderNotFoundFaultException
+     *
+     */
+    public SetResourcePropertiesResponseDocument setResourceProperties( SetResourcePropertiesDocument requestDoc )
+    {
+        if ( LOG.isDebugEnabled() )
+        {
+            LOG.debug( MSG.getMessage( Keys.SET_RP_REQ,
+                    requestDoc.toString() ) );
+        }
+
+        SetResourcePropertiesResponseDocument responseDoc = createResponseDocument();
+        SetResourcePropertiesDocument.SetResourceProperties requestElem = requestDoc.getSetResourceProperties();
+
+        InsertType[] insertElems = requestElem.getInsertArray();
+        for ( int i = 0; i < insertElems.length; i++ )
+        {
+            insertResourceProperty( insertElems[i] );
+        }
+
+        DeleteType[] deleteElems = requestElem.getDeleteArray();
+        for ( int i = 0; i < deleteElems.length; i++ )
+        {
+            deleteResourceProperty( deleteElems[i] );
+        }
+
+        UpdateType[] updateElems = requestElem.getUpdateArray();
+        for ( int i = 0; i < updateElems.length; i++ )
+        {
+            updateResourceProperty( updateElems[i] );
+        }
+
+        return responseDoc;
+    }
+
+    /**
+     * DOCUMENT_ME
+     *
+     * @param deleteElem DOCUMENT_ME
+     */
+    protected void deleteResourceProperty( DeleteType deleteElem )
+    {
+
+        if ( LOG.isDebugEnabled() )
+        {
+            LOG.debug( MSG.getMessage( Keys.DEL_RP_REQ,
+                    deleteElem.toString() ) );
+        }
+
+        QName nameOfPropToBeDeleted = deleteElem.getResourceProperty();
+        if ( nameOfPropToBeDeleted == null )
+        {
+            throw new InvalidSetResourcePropertiesRequestContentFaultException( MSG.getMessage( Keys.DEL_MISSING_RP_ATTRIB ) );
+        }
+
+        ResourceProperty prop = getProperties().get( nameOfPropToBeDeleted );
+
+        if ( prop == null )
+        {
+            throw new InvalidResourcePropertyQNameFaultException( nameOfPropToBeDeleted );
+        }
+
+        throwFaultIfPropertyIsReadOnly( prop );
+
+        if ( prop.getMetaData().getMinOccurs() != 0 )
+        {
+            throw new InvalidSetResourcePropertiesRequestContentFaultException( MSG.getMessage( Keys.ERROR_PROPERTY_DELETE_VIOLATES_SCHEMA,
+                      nameOfPropToBeDeleted ) );
+        }
+
+        //refreshProperty( prop );
+
+        try
+        {
+            deletePropertyCallback( prop );
+        }
+        catch ( RuntimeException re )
+        {
+            throw new SetResourcePropertyRequestFailedFaultException( re.toString() );
+        }
+
+        prop.clear();
+
+    }
+
+    /**
+     * DOCUMENT_ME
+     *
+     * @param insertElem DOCUMENT_ME
+     */
+    protected void insertResourceProperty( InsertType insertElem )
+    {
+        if ( LOG.isDebugEnabled() )
+        {
+            LOG.debug( MSG.getMessage( Keys.INSERT_RP_REQ,
+                    insertElem.toString() ) );
+        }
+
+        XmlObject[] propElemsToBeInserted = XmlBeanUtils.getChildElements( insertElem );
+        if ( propElemsToBeInserted.length == 0 )
+        {
+            return; // nothing to do
+        }
+
+        QName propName = XmlBeanUtils.getName( propElemsToBeInserted[0] );
+        ResourceProperty prop = getProperty( propName );
+
+        //refreshProperty( prop );
+
+        throwFaultIfPropertyIsReadOnly( prop );
+        if ( ( prop.size() + propElemsToBeInserted.length ) > prop.getMetaData().getMaxOccurs() )
+        {
+            throw new InvalidSetResourcePropertiesRequestContentFaultException( MSG.getMessage( Keys.ERROR_PROPERTY_INSERT_VIOLATES_SCHEMA,
+                    ( ( propElemsToBeInserted.length > 1 )
+                    ? "s" : "" ),
+                    propName ) );
+        }
+
+        try
+        {
+            insertPropertyCallback( prop, propElemsToBeInserted );
+        }
+        catch ( RuntimeException re )
+        {
+            throw new SetResourcePropertyRequestFailedFaultException( re.toString() );
+        }
+
+        for ( int i = 0; i < propElemsToBeInserted.length; i++ )
+        {
+            try
+            {
+                prop.add( propElemsToBeInserted[i] );
+            }
+            catch ( MetaDataViolationException mdve )
+            {
+                throw new InvalidSetResourcePropertiesRequestContentFaultException( mdve );
+            }
+        }
+    }
+
+    /**
+     * DOCUMENT_ME
+     *
+     * @param updateElem DOCUMENT_ME
+     */
+    protected void updateResourceProperty( UpdateType updateElem )
+    {
+        if ( LOG.isDebugEnabled() )
+        {
+            LOG.debug( MSG.getMessage( Keys.UPDATE_RP_REQ,
+                    updateElem.toString() ) );
+        }
+
+        XmlObject[] newPropElems = XmlBeanUtils.getChildElements( updateElem );
+        if ( newPropElems.length == 0 )
+        {
+            return; // nothing to do
+        }
+
+        QName propName = XmlBeanUtils.getName( newPropElems[0] );
+        ResourceProperty prop = getProperty( propName );
+
+        //refreshProperty( prop );
+
+        throwFaultIfPropertyIsReadOnly( prop );
+        if ( prop.getMetaData().getMaxOccurs() != -1 && newPropElems.length > prop.getMetaData().getMaxOccurs() )
+        {
+            throw new InvalidSetResourcePropertiesRequestContentFaultException( MSG.getMessage( Keys.ERROR_PROPERTY_UPDATE_VIOLATES_SCHEMA,
+                    propName ) );
+        }
+
+        try
+        {
+            updatePropertyCallback( prop, newPropElems );
+        }
+        catch ( RuntimeException re )
+        {
+            throw new SetResourcePropertyRequestFailedFaultException( re.toString() );
+        }
+
+        try
+        {
+
+            prop.clear();
+            for ( int i = 0; i < newPropElems.length; i++ )
+            {
+                prop.add( newPropElems[i] );
+            }
+        }
+        catch ( MetaDataViolationException mdve )
+        {
             throw new InvalidSetResourcePropertiesRequestContentFaultException( mdve );
-         }
-      }
-   }
-
-   /**
-    * DOCUMENT_ME
-    *
-    * @param updateElem DOCUMENT_ME
-    */
-   protected void updateResourceProperty( UpdateType updateElem )
-   {
-      if ( LOG.isDebugEnabled(  ) )
-      {
-         LOG.debug( MSG.getMessage( Keys.UPDATE_RP_REQ,
-                                    updateElem.toString(  ) ) );
-      }
-
-      XmlObject[] newPropElems = XmlBeanUtils.getChildElements( updateElem );
-      if ( newPropElems.length == 0 )
-      {
-         return; // nothing to do
-      }
-
-      QName            propName = XmlBeanUtils.getName( newPropElems[0] );
-      ResourceProperty prop = getProperty( propName );
-      refreshProperty( prop );
-      throwFaultIfPropertyIsReadOnly( prop );
-      if ( prop.getMetaData(  ).getMaxOccurs(  ) != -1 && newPropElems.length > prop.getMetaData(  ).getMaxOccurs(  ) )
-      {
-         throw new InvalidSetResourcePropertiesRequestContentFaultException( MSG.getMessage( Keys.ERROR_INSRT_MAX,
-                                                                                             propName ) );
-      }
-
-      try
-      {
-         updateProperty( prop, newPropElems );
-         prop.clear(  );
-         for ( int i = 0; i < newPropElems.length; i++ )
-         {
-            prop.add( newPropElems[i] );
-         }
-      }
-      catch ( MetaDataViolationException mdve )
-      {
-         throw new InvalidSetResourcePropertiesRequestContentFaultException( mdve );
-      }
-   }
-
-   private ResourceProperty getProperty( QName propName )
-   {
-      LOG.debug( MSG.getMessage( Keys.GET_RP_WITH_NAME,
-                                 propName.toString(  ) ) );
-      ResourceProperty prop = getProperties(  ).get( propName );
-      if ( prop == null )
-      {
-         if ( !getProperties(  ).getMetaData(  ).isOpenContent(  ) )
-         {
-            throw new InvalidResourcePropertyQNameFaultException( propName );
-         }
-
-         ResourcePropertyMetaData propMetaData = new AnyResourcePropertyMetaData( propName );
-         prop = propMetaData.create( getProperties(  ) );
-      }
-
-      return prop;
-   }
-
-   /**
-    * Returns SetResourcePropertyCallback or null
-    *
-    * @param prop
-    * @return SetResourcePropertyCallback or null
-    */
-   private SetResourcePropertyCallback getSetResourcePropertyCallback( ResourceProperty prop )
-   {
-      SetResourcePropertyCallback setResourcePropertyCallback = null;
-      ResourcePropertyCallback    callBack = prop.getCallBack(  );
-      if ( callBack instanceof SetResourcePropertyCallback )
-      {
-         setResourcePropertyCallback = (SetResourcePropertyCallback) callBack;
-      }
-
-      return setResourcePropertyCallback;
-   }
-
-   private SetResourcePropertiesResponseDocument createResponseDocument(  )
-   {
-      SetResourcePropertiesResponseDocument responseDoc =
-         SetResourcePropertiesResponseDocument.Factory.newInstance(  );
-      responseDoc.addNewSetResourcePropertiesResponse(  );
-      return responseDoc;
-   }
-
-   private void deleteProperty( ResourceProperty prop )
-   {
-      QName                       nameOfPropToBeDeleted       = prop.getMetaData(  ).getName(  );
-      SetResourcePropertyCallback setResourcePropertyCallback = getSetResourcePropertyCallback( prop );
-      if ( setResourcePropertyCallback != null )
-      {
-         setResourcePropertyCallback.deleteProperty( nameOfPropToBeDeleted );
-      }
-   }
-
-   private void insertProperty( ResourceProperty prop,
-                                XmlObject[]      propElemsToBeInserted )
-   {
-      SetResourcePropertyCallback setResourcePropertyCallback = getSetResourcePropertyCallback( prop );
-      if ( setResourcePropertyCallback != null )
-      {
-         setResourcePropertyCallback.insertProperty( propElemsToBeInserted );
-      }
-   }
-
-   private void throwFaultIfPropertyIsReadOnly( ResourceProperty prop )
-   {
-      if ( prop.getMetaData(  ).isReadOnly(  ) )
-      {
-         throw new UnableToModifyResourcePropertyFaultException( prop.getMetaData(  ).getName(  ) );
-      }
-   }
-
-   private void updateProperty( ResourceProperty prop,
-                                XmlObject[]      newPropElems )
-   {
-      SetResourcePropertyCallback setResourcePropertyCallback = getSetResourcePropertyCallback( prop );
-      if ( setResourcePropertyCallback != null )
-      {
-         setResourcePropertyCallback.updateProperty( newPropElems );
-      }
-   }
+        }
+    }
+
+    private ResourceProperty getProperty( QName propName )
+    {
+        LOG.debug( MSG.getMessage( Keys.GET_RP_WITH_NAME,
+                propName.toString() ) );
+        ResourceProperty prop = getProperties().get( propName );
+        if ( prop == null )
+        {
+            if ( !getProperties().getMetaData().isOpenContent() )
+            {
+                throw new InvalidResourcePropertyQNameFaultException( propName );
+            }
+
+            ResourcePropertyMetaData propMetaData = new AnyResourcePropertyMetaData( propName );
+            prop = propMetaData.create( getProperties() );
+        }
+
+        return prop;
+    }
+
+    /**
+     * Returns SetResourcePropertyCallback or null
+     *
+     * @param prop
+     *
+     * @return SetResourcePropertyCallback or null
+     */
+    private SetResourcePropertyCallback getSetResourcePropertyCallback( ResourceProperty prop )
+    {
+        SetResourcePropertyCallback setResourcePropertyCallback = null;
+        ResourcePropertyCallback callBack = prop.getCallBack();
+        if ( callBack instanceof SetResourcePropertyCallback )
+        {
+            setResourcePropertyCallback = (SetResourcePropertyCallback) callBack;
+        }
+
+        return setResourcePropertyCallback;
+    }
+
+    private SetResourcePropertiesResponseDocument createResponseDocument()
+    {
+        SetResourcePropertiesResponseDocument responseDoc =
+                SetResourcePropertiesResponseDocument.Factory.newInstance();
+        responseDoc.addNewSetResourcePropertiesResponse();
+        return responseDoc;
+    }
+
+    private void deletePropertyCallback( ResourceProperty prop )
+    {
+        QName nameOfPropToBeDeleted = prop.getMetaData().getName();
+        SetResourcePropertyCallback setResourcePropertyCallback = getSetResourcePropertyCallback( prop );
+        if ( setResourcePropertyCallback != null )
+        {
+            setResourcePropertyCallback.deleteProperty( nameOfPropToBeDeleted );
+        }
+    }
+
+    private void insertPropertyCallback( ResourceProperty prop,
+                                 XmlObject[] propElemsToBeInserted )
+    {
+        SetResourcePropertyCallback setResourcePropertyCallback = getSetResourcePropertyCallback( prop );
+        if ( setResourcePropertyCallback != null )
+        {
+            setResourcePropertyCallback.insertProperty( propElemsToBeInserted );
+        }
+    }
+
+    private void throwFaultIfPropertyIsReadOnly( ResourceProperty prop )
+    {
+        if ( prop.getMetaData().isReadOnly() )
+        {
+            throw new UnableToModifyResourcePropertyFaultException( prop.getMetaData().getName() );
+        }
+    }
+
+    private void updatePropertyCallback( ResourceProperty prop,
+                                 XmlObject[] newPropElems )
+    {
+        SetResourcePropertyCallback setResourcePropertyCallback = getSetResourcePropertyCallback( prop );
+        if ( setResourcePropertyCallback != null )
+        {
+            setResourcePropertyCallback.updateProperty( newPropElems );
+        }
+    }
 }

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&rev=111305&p1=incubator/apollo/trunk/src/test/org/apache/ws/resource/properties/impl/XmlBeansResourcePropertyTestCase.java&r1=111304&p2=incubator/apollo/trunk/src/test/org/apache/ws/resource/properties/impl/XmlBeansResourcePropertyTestCase.java&r2=111305
==============================================================================
--- 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	Wed Dec  8 12:25:38 2004
@@ -91,16 +91,6 @@
    public void testClear()
          throws Exception
    {
-      try
-      {
-         m_resourcePropSet.get( SushiPropertyQNames.AKAGI ).clear();
-         fail();
-      }
-      catch ( IllegalStateException iae )
-      {
-         // success
-      }
-
       ResourceProperty manufacturerProp = m_resourcePropSet.get( SushiPropertyQNames.IKA );
       manufacturerProp.clear();
       assertTrue( manufacturerProp.isEmpty() );

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