Author: ips
Date: Tue Jul 26 11:02:37 2005
New Revision: 225364

URL: http://svn.apache.org/viewcvs?rev=225364&view=rev
Log:
added a standardized callback that can be used to initialize the ResourceId 
prop based on a resource's ID field

Added:
    
webservices/muse/trunk/src/java/org/apache/ws/muws/ResourceIdResourcePropertyCallback.java
Modified:
    
webservices/muse/trunk/src/examples/filesystem/src/java/org/apache/ws/resource/example/filesystem/FilesystemResource.java
    webservices/muse/trunk/src/java/org/apache/ws/muws/MuwsUtils.java

Modified: 
webservices/muse/trunk/src/examples/filesystem/src/java/org/apache/ws/resource/example/filesystem/FilesystemResource.java
URL: 
http://svn.apache.org/viewcvs/webservices/muse/trunk/src/examples/filesystem/src/java/org/apache/ws/resource/example/filesystem/FilesystemResource.java?rev=225364&r1=225363&r2=225364&view=diff
==============================================================================
--- 
webservices/muse/trunk/src/examples/filesystem/src/java/org/apache/ws/resource/example/filesystem/FilesystemResource.java
 (original)
+++ 
webservices/muse/trunk/src/examples/filesystem/src/java/org/apache/ws/resource/example/filesystem/FilesystemResource.java
 Tue Jul 26 11:02:37 2005
@@ -3,7 +3,7 @@
 import example.filesystem.callback.OperationalStatusCallback;

 import org.apache.axis.message.addressing.Constants;

 import org.apache.ws.addressing.XmlBeansEndpointReference;

-import org.apache.ws.muws.MuwsUtils;

+import org.apache.ws.muws.ResourceIdResourcePropertyCallback;

 import org.apache.ws.muws.v1_0.MuwsConstants;

 import org.apache.ws.muws.v1_0.capability.IdentityCapability;

 import 
org.apache.ws.muws.v1_0.capability.ManageabilityCharacteristicsCapability;

@@ -82,7 +82,7 @@
         }

         catch ( Exception e )

         {

-            throw new RuntimeException( "Failed to add MUWS capability topics 
to topic set.", e );

+            throw new RuntimeException( "Failed to add MUWS capability topics 
to topic set of " + this.getClass().getName() + " resource with ID " + getID() 
+ ".", e );

         }

 

         org.apache.ws.resource.properties.ResourcePropertySet 
resourcePropertySet = getResourcePropertySet();

@@ -146,10 +146,8 @@
              */

             // init the 
{http://docs.oasis-open.org/wsdm/2004/12/muws/wsdm-muws-part1.xsd}ResourceId 
resource property

             resourceProperty = resourcePropertySet.get( 
FilesystemPropertyQNames.RESOURCEID );

-            
org.oasisOpen.docs.wsdm.x2004.x12.muws.wsdmMuwsPart1.ResourceIdDocument 
prop_resourceid = 
org.oasisOpen.docs.wsdm.x2004.x12.muws.wsdmMuwsPart1.ResourceIdDocument.Factory.newInstance();

-            prop_resourceid.setResourceId( MuwsUtils.toURI( getID() 
).toString() );

-            resourceProperty.add( prop_resourceid );

-            resourceProperty.addChangeListener( identityCapabilityTopic ); // 
add for property-value-changed management events

+            resourceProperty.setCallback( new 
ResourceIdResourcePropertyCallback( this ) );

+            // NOTE: it's not necessary to add a property change listener, 
since the ResourceId prop is immutable

 

             // init the 
{http://docs.oasis-open.org/wsdm/2004/12/muws/wsdm-muws-part1.xsd}ManageabilityCapability
 resource property

             resourceProperty = resourcePropertySet.get( 
FilesystemPropertyQNames.MANAGEABILITYCAPABILITY );

@@ -170,8 +168,7 @@
             ManageabilityCapabilityDocument relationshipsCapabilityPropElem = 
ManageabilityCapabilityDocument.Factory.newInstance();

             relationshipsCapabilityPropElem.setManageabilityCapability( 
RelationshipsCapability.URI );

             resourceProperty.add( relationshipsCapabilityPropElem );

-

-            resourceProperty.addChangeListener( 
manageabilityCharacteristicsCapabilityTopic ); // add for 
property-value-changed management events

+            // NOTE: it's not necessary to add a property change listener, 
since the ManageabilityCapability prop is immutable

 

             // init the 
{http://docs.oasis-open.org/wsdm/2004/12/muws/wsdm-muws-part2.xsd}OperationalStatus
 resource property

             resourceProperty = resourcePropertySet.get( 
FilesystemPropertyQNames.OPERATIONALSTATUS );


Modified: webservices/muse/trunk/src/java/org/apache/ws/muws/MuwsUtils.java
URL: 
http://svn.apache.org/viewcvs/webservices/muse/trunk/src/java/org/apache/ws/muws/MuwsUtils.java?rev=225364&r1=225363&r2=225364&view=diff
==============================================================================
--- webservices/muse/trunk/src/java/org/apache/ws/muws/MuwsUtils.java (original)
+++ webservices/muse/trunk/src/java/org/apache/ws/muws/MuwsUtils.java Tue Jul 
26 11:02:37 2005
@@ -8,12 +8,9 @@
 import org.apache.ws.notification.topics.impl.TopicSpaceImpl;

 import org.apache.ws.resource.properties.ResourcePropertySet;

 

-import java.net.URI;

-import java.net.URISyntaxException;

-import java.net.URLEncoder;

-import java.io.UnsupportedEncodingException;

-

 /**

+ * A set of utility methods to aid in initializing MUWS manageable resources.

+ *

  * @author Sal Campana

  */

 public class MuwsUtils

@@ -49,44 +46,6 @@
         topic.addTopic( 
RelationshipsCapability.SUBTOPIC_NAME_RELATIONSHIP_CREATED );

         topic.addTopic( 
RelationshipsCapability.SUBTOPIC_NAME_RELATIONSHIP_DELETED );

         return topicSet.addTopicSpace( topicSpace );

-    }

-

-    /**

-     * Converts the specified resource identifier into a URI that can be used 
as the value

-     * for the MUWS ResourceId property.

-     *

-     * @param resourceId a resource identifier

-     *

-     * @return URI that can be used as the value for the MUWS ResourceId 
property

-     */ 

-    public static URI toURI( Object resourceId )

-    {

-        String idString = null;

-        try

-        {

-            idString = URLEncoder.encode( String.valueOf( resourceId ), 
"UTF-8" );

-        }

-        catch ( UnsupportedEncodingException uee )

-        {

-            throw new IllegalStateException( uee.getLocalizedMessage() );

-        }

-        URI idURI;

-        try

-        {

-            idURI = new URI( idString );

-        }

-        catch ( URISyntaxException urise )

-        {

-            try

-            {

-                idURI = new URI( "urn:" + idString );

-            }

-            catch ( URISyntaxException urise2 )

-            {

-                throw new IllegalStateException( urise2.getLocalizedMessage() 
);

-            }

-        }

-        return idURI;

     }

 

 }


Added: 
webservices/muse/trunk/src/java/org/apache/ws/muws/ResourceIdResourcePropertyCallback.java
URL: 
http://svn.apache.org/viewcvs/webservices/muse/trunk/src/java/org/apache/ws/muws/ResourceIdResourcePropertyCallback.java?rev=225364&view=auto
==============================================================================
--- 
webservices/muse/trunk/src/java/org/apache/ws/muws/ResourceIdResourcePropertyCallback.java
 (added)
+++ 
webservices/muse/trunk/src/java/org/apache/ws/muws/ResourceIdResourcePropertyCallback.java
 Tue Jul 26 11:02:37 2005
@@ -0,0 +1,126 @@
+/*=============================================================================*

+ *  Copyright 2005 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.muws;

+

+import org.apache.ws.muws.v1_0.capability.IdentityCapability;

+import org.apache.ws.resource.Resource;

+import org.apache.ws.resource.properties.ResourceProperty;

+import org.apache.ws.resource.properties.ResourcePropertyCallback;

+import org.apache.ws.resource.properties.impl.CallbackFailedException;

+import org.apache.ws.addressing.uuid.UUIdGeneratorFactory;

+import org.oasisOpen.docs.wsdm.x2004.x12.muws.wsdmMuwsPart1.ResourceIdDocument;

+

+import javax.xml.namespace.QName;

+import java.io.UnsupportedEncodingException;

+import java.net.URI;

+import java.net.URISyntaxException;

+import java.net.URLEncoder;

+

+/**

+ * A callback for the MUWS ResourceId resource property.

+ */

+public class ResourceIdResourcePropertyCallback implements 
ResourcePropertyCallback

+{

+

+    private Resource m_resource;

+

+    /**

+     * Creates a new [EMAIL PROTECTED] ResourceIdResourcePropertyCallback} for 
the specified MUWS manageable resource.

+     *

+     * @param resource a MUWS manageable resource

+     */

+    public ResourceIdResourcePropertyCallback( Resource resource )

+    {

+        m_resource = resource;

+    }

+

+    /**

+     * @param prop the MUWS ResourceId resource property

+     *

+     * @return the MUWS ResourceId resource property

+     *

+     * @throws CallbackFailedException

+     */

+    public ResourceProperty refreshProperty( ResourceProperty prop ) throws 
CallbackFailedException

+    {

+        if ( prop.isEmpty() )  // ResourceId prop is immutable, so it only 
needs to be set once

+        {

+            QName propName = prop.getMetaData().getName();

+            if ( !propName.equals( IdentityCapability.PROP_NAME_RESOURCE_ID ) )

+            {

+                throw new IllegalArgumentException( "Unsupported property: " + 
propName );

+            }

+            URI idURI = toURI( m_resource.getID() );

+            ResourceIdDocument propElem = 
ResourceIdDocument.Factory.newInstance();

+            propElem.setResourceId( idURI.toString() );

+            prop.add( propElem );

+        }

+        return prop;

+    }

+

+    /**

+     * Converts the specified resource identifier into a globally unique URI 
that can

+     * be used as the value for the MUWS ResourceId property.

+     *

+     * @param resourceId a resource identifier

+     *

+     * @return URI that can be used as the value for the MUWS ResourceId 
property

+     */

+    protected static URI toURI( Object resourceId )

+    {

+        try

+        {

+            return new URI( String.valueOf( resourceId ) );

+        }

+        catch ( URISyntaxException urise )

+        {

+            // resource identifier is not already a URI - convert it to one...

+        }

+        String idString;

+        if ( resourceId != null )

+        {

+            idString = resourceId.toString();

+            // URL-encode the id in case it contains any unsafe characters

+            try

+            {

+                idString = URLEncoder.encode( idString, "UTF-8" );

+            }

+            catch ( UnsupportedEncodingException uee )

+            {

+                // will never happen - all JDKs support UTF-8

+                throw new IllegalStateException( uee.getLocalizedMessage() );

+            }

+        }

+        else

+        {

+            idString = "SINGLETON";

+        }

+        return URI.create( getBaseURI() + "/" + idString );

+    }

+

+    /**

+     * Returns the base URI to which [EMAIL PROTECTED] #toURI} will append a 
stringified version

+     * of a resource identifier.

+     *

+     * @return the base URI to which [EMAIL PROTECTED] #toURI} will append a 
stringified version

+     *         of a resource identifier

+     */

+    protected static String getBaseURI()

+    {

+        return "urn:" + 
UUIdGeneratorFactory.createUUIdGenerator().generateUUId();

+    }

+

+}




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to