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