You are viewing a plain text version of this content. The canonical link for it is here.
Posted to muse-dev@ws.apache.org by sc...@apache.org on 2005/08/01 20:11:13 UTC
svn commit: r226850 - in /webservices/muse/trunk/src:
examples/filesystem/src/java/org/apache/ws/resource/example/filesystem/
examples/filesystem/src/java/org/apache/ws/resource/example/host/
java/org/apache/ws/muws/
Author: scamp
Date: Mon Aug 1 11:11:09 2005
New Revision: 226850
URL: http://svn.apache.org/viewcvs?rev=226850&view=rev
Log: (empty)
Removed:
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/examples/filesystem/src/java/org/apache/ws/resource/example/host/HostResource.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=226850&r1=226849&r2=226850&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 Mon Aug 1 11:11:09 2005
@@ -1,5 +1,6 @@
package org.apache.ws.resource.example.filesystem;
+import org.apache.ws.muws.MuwsUtils;
/**
@@ -124,8 +125,7 @@
* MUWS-defined properties.
*/
// init the {http://docs.oasis-open.org/wsdm/2004/12/muws/wsdm-muws-part1.xsd}ResourceId resource property
- resourceProperty = resourcePropertySet.get( FilesystemPropertyQNames.RESOURCEID );
- resourceProperty.setCallback( new org.apache.ws.muws.ResourceIdResourcePropertyCallback( this ) );
+ MuwsUtils.initResourceIdProperty(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
@@ -164,6 +164,7 @@
relationshipType = prop_relationship.addNewRelationship();
org.oasisOpen.docs.wsdm.x2004.x12.muws.wsdmMuwsPart2.RelationshipTypeType relationshipTypeType = relationshipType.addNewType();
org.apache.ws.util.XmlBeanUtils.addChildElement( relationshipTypeType, new javax.xml.namespace.QName( "http://myns.com/", "ContainedBy", "myns" ) );
+
org.oasisOpen.docs.wsdm.x2004.x12.muws.wsdmMuwsPart2.RelationshipParticipantType relationshipParticipantType = relationshipType.addNewParticipant();
org.apache.ws.resource.properties.ResourceProperty resourceIdProp = resourcePropertySet.get( FilesystemPropertyQNames.RESOURCEID );
Modified: webservices/muse/trunk/src/examples/filesystem/src/java/org/apache/ws/resource/example/host/HostResource.java
URL: http://svn.apache.org/viewcvs/webservices/muse/trunk/src/examples/filesystem/src/java/org/apache/ws/resource/example/host/HostResource.java?rev=226850&r1=226849&r2=226850&view=diff
==============================================================================
--- webservices/muse/trunk/src/examples/filesystem/src/java/org/apache/ws/resource/example/host/HostResource.java (original)
+++ webservices/muse/trunk/src/examples/filesystem/src/java/org/apache/ws/resource/example/host/HostResource.java Mon Aug 1 11:11:09 2005
@@ -1,6 +1,8 @@
package org.apache.ws.resource.example.host;
+import org.apache.ws.muws.MuwsUtils;
+
/**
* A Host WS-Resource.
* <p />
@@ -31,12 +33,9 @@
try{
- // init the {http://docs.oasis-open.org/wsdm/2004/12/muws/wsdm-muws-part1.xsd}ResourceId resource property
- resourceProperty = resourcePropertySet.get( HostPropertyQNames.RESOURCEID );
- resourceProperty.setCallback( new org.apache.ws.muws.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}ResourceId resource property
+ MuwsUtils.initResourceIdProperty(this);
+ // NOTE: it's not necessary to add a property change listener, since the ResourceId prop is immutable
}
catch (Exception e)
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=226850&r1=226849&r2=226850&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 Mon Aug 1 11:11:09 2005
@@ -1,12 +1,25 @@
package org.apache.ws.muws;
+import org.apache.commons.id.IdentifierUtils;
+import org.apache.commons.id.uuid.UUID;
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.RelationshipsCapability;
import org.apache.ws.notification.topics.Topic;
import org.apache.ws.notification.topics.TopicSpace;
import org.apache.ws.notification.topics.TopicSpaceSet;
import org.apache.ws.notification.topics.impl.TopicSpaceImpl;
+import org.apache.ws.resource.properties.ResourceProperty;
import org.apache.ws.resource.properties.ResourcePropertySet;
+import org.apache.ws.resource.Resource;
+import org.apache.ws.resource.PropertiesResource;
+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 set of utility methods to aid in initializing MUWS manageable resources.
@@ -22,13 +35,13 @@
*
* @param propSet
*/
- public static void updateRelationshipResourceProperty( ResourcePropertySet propSet, org.apache.ws.notification.base.NotificationProducerResource notifResource )
+ public static void updateRelationshipResourceProperty(ResourcePropertySet propSet, org.apache.ws.notification.base.NotificationProducerResource notifResource)
{
- if ( propSet.get( org.apache.ws.muws.v1_0.capability.RelationshipsCapability.PROP_NAME_RELATIONSHIP ) != null )
+ if (propSet.get(org.apache.ws.muws.v1_0.capability.RelationshipsCapability.PROP_NAME_RELATIONSHIP) != null)
{
- org.apache.ws.muws.v1_0.impl.XmlBeansRelationshipResourceProperty relationshipResourceProperty = new org.apache.ws.muws.v1_0.impl.XmlBeansRelationshipResourceProperty( propSet.getMetaData().getPropertyMetaData( org.apache.ws.muws.v1_0.capability.RelationshipsCapability.PROP_NAME_RELATIONSHIP ),
- (org.apache.ws.resource.properties.impl.XmlBeansResourcePropertySet) propSet, notifResource );
- ( (org.apache.ws.resource.properties.impl.XmlBeansResourcePropertySet) propSet ).set( relationshipResourceProperty );
+ org.apache.ws.muws.v1_0.impl.XmlBeansRelationshipResourceProperty relationshipResourceProperty = new org.apache.ws.muws.v1_0.impl.XmlBeansRelationshipResourceProperty(propSet.getMetaData().getPropertyMetaData(org.apache.ws.muws.v1_0.capability.RelationshipsCapability.PROP_NAME_RELATIONSHIP),
+ (org.apache.ws.resource.properties.impl.XmlBeansResourcePropertySet) propSet, notifResource);
+ ((org.apache.ws.resource.properties.impl.XmlBeansResourcePropertySet) propSet).set(relationshipResourceProperty);
}
}
@@ -36,15 +49,97 @@
* Adds the MUWS RelationshipCreated/Deleted topics to the specified topic set.
*
* @param topicSet
+ */
+ public static TopicSpace addRelationshipTopics(TopicSpaceSet topicSet)
+ {
+ TopicSpace topicSpace = new TopicSpaceImpl(MuwsConstants.NSURI_MUWS_PART2_TOPICS);
+ Topic topic = topicSpace.addTopic(RelationshipsCapability.TOPIC_NAME);
+ topic.addTopic(RelationshipsCapability.SUBTOPIC_NAME_RELATIONSHIP_CREATED);
+ topic.addTopic(RelationshipsCapability.SUBTOPIC_NAME_RELATIONSHIP_DELETED);
+ return topicSet.addTopicSpace(topicSpace);
+ }
+
+ /**
+ * Utility method for initializing the MUWS Identity ResourceId property.
*
+ * @param resource The resource to add the property to.
*/
- public static TopicSpace addRelationshipTopics( TopicSpaceSet topicSet )
+ public static void initResourceIdProperty(Resource resource)
{
- TopicSpace topicSpace = new TopicSpaceImpl( MuwsConstants.NSURI_MUWS_PART2_TOPICS );
- Topic topic = topicSpace.addTopic( RelationshipsCapability.TOPIC_NAME );
- topic.addTopic( RelationshipsCapability.SUBTOPIC_NAME_RELATIONSHIP_CREATED );
- topic.addTopic( RelationshipsCapability.SUBTOPIC_NAME_RELATIONSHIP_DELETED );
- return topicSet.addTopicSpace( topicSpace );
+ if (resource instanceof PropertiesResource)
+ {
+ ResourceProperty resourceProperty = ((PropertiesResource)resource).getResourcePropertySet().get(IdentityCapability.PROP_NAME_RESOURCE_ID);
+ if (resourceProperty != null)
+ {
+ if (resourceProperty.isEmpty()) // ResourceId prop is immutable, so it only needs to be set once
+ {
+ URI idURI = toURI(resource.getID());
+ ResourceIdDocument propElem = ResourceIdDocument.Factory.newInstance();
+ propElem.setResourceId(idURI.toString());
+ resourceProperty.add(propElem);
+ }
+ }
+ }
}
+
+ /**
+ * 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
+ */
+ private 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 {@link #toURI} will append a stringified version
+ * of a resource identifier. The default implementation returns a URN representation
+ * of a v4 UUID.
+ *
+ * @return the base URI to which {@link #toURI} will append a stringified version
+ * of a resource identifier
+ */
+ private static String getBaseURI()
+ {
+ try
+ {
+ return ((UUID) IdentifierUtils.UUID_VERSION_FOUR_GENERATOR.nextIdentifier()).toUrn();
+ }
+ catch (Exception e)
+ {
+ throw new RuntimeException("Failed to generate UUID.", e);
+ }
+ }
+
}
---------------------------------------------------------------------
To unsubscribe, e-mail: muse-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: muse-dev-help@ws.apache.org