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 sc...@apache.org on 2004/12/09 23:30:26 UTC

svn commit: r111441 - in incubator/apollo/trunk/src/java/org/apache/ws: resource/properties resource/properties/impl resource/properties/porttype/impl util

Author: scamp
Date: Thu Dec  9 14:30:25 2004
New Revision: 111441

URL: http://svn.apache.org/viewcvs?view=rev&rev=111441
Log:
updated for any's
Modified:
   incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/ResourcePropertyMetaData.java
   incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/impl/AnyResourcePropertyMetaData.java
   incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/impl/XmlBeansResourcePropertyMetaData.java
   incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/porttype/impl/SetResourcePropertiesProvider.java
   incubator/apollo/trunk/src/java/org/apache/ws/util/XmlBeanUtils.java

Modified: incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/ResourcePropertyMetaData.java
Url: http://svn.apache.org/viewcvs/incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/ResourcePropertyMetaData.java?view=diff&rev=111441&p1=incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/ResourcePropertyMetaData.java&r1=111440&p2=incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/ResourcePropertyMetaData.java&r2=111441
==============================================================================
--- incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/ResourcePropertyMetaData.java	(original)
+++ incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/ResourcePropertyMetaData.java	Thu Dec  9 14:30:25 2004
@@ -71,4 +71,9 @@
     * container.
     */
    ResourceProperty create( ResourcePropertySet propSet );
+
+   /**
+    * Determines if the ResourceProperty is an XSD:Any    
+    */
+   boolean isAny();
 }

Modified: incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/impl/AnyResourcePropertyMetaData.java
Url: http://svn.apache.org/viewcvs/incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/impl/AnyResourcePropertyMetaData.java?view=diff&rev=111441&p1=incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/impl/AnyResourcePropertyMetaData.java&r1=111440&p2=incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/impl/AnyResourcePropertyMetaData.java&r2=111441
==============================================================================
--- incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/impl/AnyResourcePropertyMetaData.java	(original)
+++ incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/impl/AnyResourcePropertyMetaData.java	Thu Dec  9 14:30:25 2004
@@ -34,8 +34,30 @@
     */
    public AnyResourcePropertyMetaData( QName name )
    {
-      super( null, false );
+      this( name, false );
+   }
+
+   /**
+    * Creates a new {@link AnyResourcePropertyMetaData} object.
+    *
+    * @param name DOCUMENT_ME
+    * @param isReadOnly DOCUMENT_ME
+    */
+   public AnyResourcePropertyMetaData( QName   name,
+                                       boolean isReadOnly )
+   {
+      super( null, isReadOnly );
       m_name = name;
+   }
+
+   /**
+    * DOCUMENT_ME
+    *
+    * @return DOCUMENT_ME
+    */
+   public boolean isAny(  )
+   {
+      return true;
    }
 
    /**

Modified: incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/impl/XmlBeansResourcePropertyMetaData.java
Url: http://svn.apache.org/viewcvs/incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/impl/XmlBeansResourcePropertyMetaData.java?view=diff&rev=111441&p1=incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/impl/XmlBeansResourcePropertyMetaData.java&r1=111440&p2=incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/impl/XmlBeansResourcePropertyMetaData.java&r2=111441
==============================================================================
--- incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/impl/XmlBeansResourcePropertyMetaData.java	(original)
+++ incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/impl/XmlBeansResourcePropertyMetaData.java	Thu Dec  9 14:30:25 2004
@@ -150,4 +150,9 @@
    {
       return new XmlBeansResourceProperty( this, (XmlBeansResourcePropertySet) propSet );
    }
+
+    public boolean isAny()
+    {
+        return false;
+    }
 }

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=111441&p1=incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/porttype/impl/SetResourcePropertiesProvider.java&r1=111440&p2=incubator/apollo/trunk/src/java/org/apache/ws/resource/properties/porttype/impl/SetResourcePropertiesProvider.java&r2=111441
==============================================================================
--- 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	Thu Dec  9 14:30:25 2004
@@ -163,15 +163,25 @@
         {
             return; // nothing to do
         }
+        throwFaultIfElementNamesHeterogenous( propElemsToBeInserted );
 
         QName propName = XmlBeanUtils.getName( propElemsToBeInserted[0] );
         ResourceProperty prop = getProperty( propName );
 
-        //refreshProperty( prop );
+        if(prop == null)
+        {
+            prop = createAnyProperty(propName);
+            getProperties().add(prop);
+        }
+
+        if(!prop.getMetaData().isAny())
+        {
+            //todo probably need to check this for xsd:any to check for possible violations
+            //refreshProperty( prop );
+            throwFaultIfInsertionViolatesSchema( prop, propElemsToBeInserted );
+        }
 
         throwFaultIfPropertyIsReadOnly( prop );
-        throwFaultIfElementNamesHeterogenous( propElemsToBeInserted );
-        throwFaultIfInsertionViolatesSchema( prop, propElemsToBeInserted );
 
         try
         {
@@ -195,6 +205,14 @@
         }
     }
 
+    private ResourceProperty createAnyProperty(QName propName)
+    {
+        ResourceProperty prop;
+        ResourcePropertyMetaData propMetaData = new AnyResourcePropertyMetaData( propName );
+        prop = propMetaData.create( getProperties() );
+        return prop;
+    }
+
     /**
      * DOCUMENT_ME
      *
@@ -258,9 +276,6 @@
             {
                 throw new InvalidResourcePropertyQNameFaultException( propName );
             }
-
-            ResourcePropertyMetaData propMetaData = new AnyResourcePropertyMetaData( propName );
-            prop = propMetaData.create( getProperties() );
         }
 
         return prop;
@@ -292,7 +307,7 @@
     }
 
     private void throwFaultIfInsertionViolatesSchema( ResourceProperty prop, XmlObject[] propElemsToBeInserted )
-    {
+    {    //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,

Modified: incubator/apollo/trunk/src/java/org/apache/ws/util/XmlBeanUtils.java
Url: http://svn.apache.org/viewcvs/incubator/apollo/trunk/src/java/org/apache/ws/util/XmlBeanUtils.java?view=diff&rev=111441&p1=incubator/apollo/trunk/src/java/org/apache/ws/util/XmlBeanUtils.java&r1=111440&p2=incubator/apollo/trunk/src/java/org/apache/ws/util/XmlBeanUtils.java&r2=111441
==============================================================================
--- incubator/apollo/trunk/src/java/org/apache/ws/util/XmlBeanUtils.java	(original)
+++ incubator/apollo/trunk/src/java/org/apache/ws/util/XmlBeanUtils.java	Thu Dec  9 14:30:25 2004
@@ -66,7 +66,7 @@
       XmlCursor xCursor = xBean.newCursor(  );
       for ( boolean hasNext = xCursor.toFirstChild(  ); hasNext; hasNext = xCursor.toNextSibling(  ) )
       {
-         if ( ( name == null ) || xCursor.getName(  ).equals( name ) )
+         if ( ( name == null ) || getName(xCursor).equals( name ) )
          {
             foundElems.add( xCursor.getObject(  ) );
          }
@@ -129,14 +129,31 @@
       else
       {
          XmlCursor xCursor = xBean.newCursor(  );
-         name = xCursor.getName(  );
-         xCursor.dispose(  );
+          name = getName(xCursor);
+        xCursor.dispose(  );
       }
       LOG.debug(MSG.getMessage( Keys.QNAME_OF_XMLOBJ,name.toString()));
       return name;
    }
 
-   /**
+    /**
+     * Note. this method does not dispose of the cursor
+     *
+     * @param xCursor
+     * @return
+     */
+    public static QName getName(XmlCursor xCursor)
+    {
+        QName name;
+        if(xCursor.currentTokenType().equals(XmlCursor.TokenType.STARTDOC))
+         {
+            xCursor.toFirstChild();
+         }
+        name = xCursor.getName(  );
+        return name;
+    }
+
+    /**
     * DOCUMENT_ME
     *
     * @param docXBean DOCUMENT_ME
@@ -246,7 +263,7 @@
       xCursor.toEndDoc(  );
       childXBean = getRootElement( childXBean );
       xCursor.toPrevToken(  );
-      xCursor.insertElement( childXBean.newCursor(  ).getName(  ) );
+      xCursor.insertElement( getName(childXBean.newCursor(  )));
       xCursor.toPrevSibling(  );
       xCursor.getObject(  ).set( childXBean );
       xCursor.dispose(  );
@@ -280,7 +297,7 @@
       XmlCursor xCursor = xBean.newCursor(  );
       for ( boolean hasNext = xCursor.toFirstChild(  ); hasNext; hasNext = xCursor.toNextSibling(  ) )
       {
-         if ( xCursor.getName(  ).equals( name ) )
+         if ( getName( xCursor ).equals( name ) )
          {
             succeeded = succeeded && xCursor.removeXml(  );
          }

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