Modified: incubator/muse/trunk/src/site/content/interop/src/java/org/everestWeather/wsdm/samples/x2005/x04/schema/WeatherstationResource.java URL: http://svn.apache.org/viewcvs/incubator/muse/trunk/src/site/content/interop/src/java/org/everestWeather/wsdm/samples/x2005/x04/schema/WeatherstationResource.java?rev=178231&r1=178230&r2=178231&view=diff ============================================================================== --- incubator/muse/trunk/src/site/content/interop/src/java/org/everestWeather/wsdm/samples/x2005/x04/schema/WeatherstationResource.java (original) +++ incubator/muse/trunk/src/site/content/interop/src/java/org/everestWeather/wsdm/samples/x2005/x04/schema/WeatherstationResource.java Tue May 24 11:34:57 2005 @@ -2,8 +2,8 @@ import org.apache.ws.mows.v1_0.MowsConstants; import org.apache.ws.mows.v1_0.capability.IdentificationCapability; -import org.apache.ws.mows.v1_0.capability.MetricsCapability; import org.apache.ws.mows.v1_0.capability.ManageabilityReferencesCapability; +import org.apache.ws.mows.v1_0.capability.MetricsCapability; import org.apache.ws.mows.v1_0.capability.RequestProcessingStateCapability; import org.apache.ws.muws.v1_0.MuwsConstants; import org.apache.ws.muws.v1_0.capability.CorrelatablePropertiesCapability; @@ -18,8 +18,8 @@ import org.apache.ws.resource.properties.ResourceProperty; import org.apache.ws.util.XmlBeanUtils; import org.apache.xmlbeans.GDurationBuilder; -import org.apache.xmlbeans.XmlObject; import org.apache.xmlbeans.XmlException; +import org.apache.xmlbeans.XmlObject; import org.oasisOpen.docs.wsdm.x2004.x12.mows.wsdmMows.CurrentOperationalStateDocument; import org.oasisOpen.docs.wsdm.x2004.x12.mows.wsdmMows.DurationMetric; import org.oasisOpen.docs.wsdm.x2004.x12.mows.wsdmMows.EndpointDescriptionsDocument; @@ -41,8 +41,8 @@ import org.oasisOpen.docs.wsdm.x2004.x12.muws.wsdmMuwsPart2.RelationshipDocument; import org.oasisOpen.docs.wsdm.x2004.x12.muws.wsdmMuwsPart2.RelationshipParticipantType; import org.oasisOpen.docs.wsdm.x2004.x12.muws.wsdmMuwsPart2.RelationshipType; -import org.oasisOpen.docs.wsdm.x2004.x12.muws.wsdmMuwsPart2.StateTransitionType; import org.oasisOpen.docs.wsdm.x2004.x12.muws.wsdmMuwsPart2.RelationshipTypeType; +import org.oasisOpen.docs.wsdm.x2004.x12.muws.wsdmMuwsPart2.StateTransitionType; import org.oasisOpen.docs.wsdm.x2004.x12.muws.wsdmPbm.MatchDocument; import org.xmlsoap.schemas.ws.x2004.x08.addressing.AttributedURI; import org.xmlsoap.schemas.ws.x2004.x08.addressing.EndpointReferenceType; @@ -64,8 +64,9 @@ /** * A NamespaceVerionHolder which maintains the QNames of Spec Wsdls */ - public static final org.apache.ws.notification.base.v2004_6.impl.WsnNamespaceVersionHolderImpl SPEC_NAMESPACE_SET = new org.apache.ws.notification.base.v2004_6.impl.WsnNamespaceVersionHolderImpl(); - public static final QName RELATIONSHIP_RELATION = new QName(WeatherstationPropertyQNames.FCCID.getNamespaceURI(),"containment", "R"); + public static final org.apache.ws.muws.v1_0.impl.WsdmNamespaceVersionHolderImpl SPEC_NAMESPACE_SET = new org.apache.ws.muws.v1_0.impl.WsdmNamespaceVersionHolderImpl(); + + public static final QName RELATIONSHIP_RELATION = new QName(WeatherstationPropertyQNames.FCCID.getNamespaceURI(), "containment", "R"); /** * Initializes this resource's state (properties, etc.). @@ -74,288 +75,308 @@ { super.init(); - /** Topics **/ - org.apache.ws.notification.topics.TopicSpaceSet topicSpaceSet = getTopicSpaceSet(); /** - * This method call will make all resource properties be exposed - * as Topics. If you would like to change that behaviour you can - * call TopicUtils.addResourcePropertyValueChangeTopic for each - * Topic you'd like to expose property change notifications for. + * The ResourcePropertySet which contains all the defined ResourceProperties */ - org.apache.ws.notification.topics.util.TopicUtils.addResourcePropertyValueChangeTopics( - getResourcePropertySet(), topicSpaceSet ); + org.apache.ws.resource.properties.ResourcePropertySet resourcePropertySet = getResourcePropertySet(); + org.apache.ws.resource.properties.ResourceProperty resourceProperty = null; - //MUWS TopicSpace - TopicSpace muwsTopicSpace = new TopicSpaceImpl( MuwsConstants.NSURI_MUWS_PART2_TOPICS ); - getTopicSpaceSet().addTopicSpace( muwsTopicSpace ); - - ManagementEventTopic identityCapability = new XmlBeansManagementEventTopicImpl( "IdentityCapability" ); - muwsTopicSpace.addTopic( identityCapability ); - ManagementEventTopic manageabilityCharacteristicsCapability = new XmlBeansManagementEventTopicImpl( - "ManageabilityCharacteristicsCapability" ); - muwsTopicSpace.addTopic( manageabilityCharacteristicsCapability ); - ManagementEventTopic correlatablePropertiesCapability = new XmlBeansManagementEventTopicImpl( - "CorrelatablePropertiesCapability" ); - muwsTopicSpace.addTopic( correlatablePropertiesCapability ); - ManagementEventTopic metricsCapability = new XmlBeansManagementEventTopicImpl( "MetricsCapability" ); - muwsTopicSpace.addTopic( metricsCapability ); - ManagementEventTopic relationshipCapability = new XmlBeansManagementEventTopicImpl( "RelationshipCapability" ); - muwsTopicSpace.addTopic( relationshipCapability ); - ManagementEventTopic operationalStatusCapability = new XmlBeansManagementEventTopicImpl( - "OperationalStatusCapability" ); - muwsTopicSpace.addTopic( operationalStatusCapability ); - - //MOWS TopicSpace - TopicSpace mowsTopicSpace = new TopicSpaceImpl( MowsConstants.NSURI_MOWS_TOPICS ); - getTopicSpaceSet().addTopicSpace( mowsTopicSpace ); - - ManagementEventTopic mowsIdentificationCapability = new XmlBeansManagementEventTopicImpl( - "IdentificationCapability" ); - mowsTopicSpace.addTopic( mowsIdentificationCapability ); - ManagementEventTopic mowsMetricsCapability = new XmlBeansManagementEventTopicImpl( "MetricsCapability" ); - mowsTopicSpace.addTopic( mowsMetricsCapability ); - - ManagementEventTopic mowsRequestProcessingStateCapability = new XmlBeansManagementEventTopicImpl( - "RequestProcessingStateCapability" ); - mowsTopicSpace.addTopic( mowsRequestProcessingStateCapability ); - - ManagementEventTopic mowsRequestProcessingObservations = new XmlBeansManagementEventTopicImpl( - "RequestProcessingObservations" ); - mowsTopicSpace.addTopic( mowsRequestProcessingObservations ); - org.apache.ws.resource.properties.ResourcePropertySet resourcePropertySet = getResourcePropertySet(); + try + { + //MUWS TopicSpace + TopicSpace muwsTopicSpace = new TopicSpaceImpl(MuwsConstants.NSURI_MUWS_PART2_TOPICS); + getTopicSpaceSet().addTopicSpace(muwsTopicSpace); + + ManagementEventTopic identityCapability = new XmlBeansManagementEventTopicImpl("IdentityCapability"); + muwsTopicSpace.addTopic(identityCapability); + ManagementEventTopic manageabilityCharacteristicsCapability = new XmlBeansManagementEventTopicImpl("ManageabilityCharacteristicsCapability"); + muwsTopicSpace.addTopic(manageabilityCharacteristicsCapability); + ManagementEventTopic correlatablePropertiesCapability = new XmlBeansManagementEventTopicImpl("CorrelatablePropertiesCapability"); + muwsTopicSpace.addTopic(correlatablePropertiesCapability); + ManagementEventTopic metricsCapability = new XmlBeansManagementEventTopicImpl("MetricsCapability"); + muwsTopicSpace.addTopic(metricsCapability); + ManagementEventTopic relationshipCapability = new XmlBeansManagementEventTopicImpl("RelationshipCapability"); + muwsTopicSpace.addTopic(relationshipCapability); + ManagementEventTopic operationalStatusCapability = new XmlBeansManagementEventTopicImpl("OperationalStatusCapability"); + muwsTopicSpace.addTopic(operationalStatusCapability); + + //MOWS TopicSpace + TopicSpace mowsTopicSpace = new TopicSpaceImpl(MowsConstants.NSURI_MOWS_TOPICS); + getTopicSpaceSet().addTopicSpace(mowsTopicSpace); + + ManagementEventTopic mowsIdentificationCapability = new XmlBeansManagementEventTopicImpl("IdentificationCapability"); + mowsTopicSpace.addTopic(mowsIdentificationCapability); + ManagementEventTopic mowsMetricsCapability = new XmlBeansManagementEventTopicImpl("MetricsCapability"); + mowsTopicSpace.addTopic(mowsMetricsCapability); + + ManagementEventTopic mowsRequestProcessingStateCapability = new XmlBeansManagementEventTopicImpl("RequestProcessingStateCapability"); + mowsTopicSpace.addTopic(mowsRequestProcessingStateCapability); + + ManagementEventTopic mowsRequestProcessingObservations = new XmlBeansManagementEventTopicImpl("RequestProcessingObservations"); + mowsTopicSpace.addTopic(mowsRequestProcessingObservations); + + /** Capabilities **/ + //Management Characteristics + resourceProperty = resourcePropertySet.get(WeatherstationPropertyQNames.MANAGEABILITYCAPABILITY); + resourceProperty.addChangeListener(manageabilityCharacteristicsCapability); + + //Identity Capability + ManageabilityCapabilityDocument manageabilityCapabilityDocument = ManageabilityCapabilityDocument.Factory.newInstance(); + manageabilityCapabilityDocument.setManageabilityCapability(IdentityCapability.URI); + resourceProperty.add(manageabilityCapabilityDocument); + + + //Identification Capability + manageabilityCapabilityDocument = ManageabilityCapabilityDocument.Factory.newInstance(); + manageabilityCapabilityDocument.setManageabilityCapability(IdentificationCapability.URI); + resourceProperty.add(manageabilityCapabilityDocument); + + //MUWS2 Metrics Capability + manageabilityCapabilityDocument = ManageabilityCapabilityDocument.Factory.newInstance(); + manageabilityCapabilityDocument.setManageabilityCapability(org.apache.ws.muws.v1_0.capability.MetricsCapability.URI); + resourceProperty.add(manageabilityCapabilityDocument); + + + //MOWS Metrics Capability + manageabilityCapabilityDocument = ManageabilityCapabilityDocument.Factory.newInstance(); + manageabilityCapabilityDocument.setManageabilityCapability(MetricsCapability.URI); + resourceProperty.add(manageabilityCapabilityDocument); + + + //Status Capability + manageabilityCapabilityDocument = ManageabilityCapabilityDocument.Factory.newInstance(); + manageabilityCapabilityDocument.setManageabilityCapability(OperationalStatusCapability.URI); + resourceProperty.add(manageabilityCapabilityDocument); + + + //Request Processing State Capability + manageabilityCapabilityDocument = ManageabilityCapabilityDocument.Factory.newInstance(); + manageabilityCapabilityDocument.setManageabilityCapability(RequestProcessingStateCapability.URI); + resourceProperty.add(manageabilityCapabilityDocument); + + + //Relationship Capability + manageabilityCapabilityDocument = ManageabilityCapabilityDocument.Factory.newInstance(); + manageabilityCapabilityDocument.setManageabilityCapability(RelationshipsCapability.URI); + resourceProperty.add(manageabilityCapabilityDocument); + + + //Correlateable Properties Capability + manageabilityCapabilityDocument = ManageabilityCapabilityDocument.Factory.newInstance(); + manageabilityCapabilityDocument.setManageabilityCapability(CorrelatablePropertiesCapability.URI); + resourceProperty.add(manageabilityCapabilityDocument); + + manageabilityCapabilityDocument = ManageabilityCapabilityDocument.Factory.newInstance(); + manageabilityCapabilityDocument.setManageabilityCapability(ManageabilityReferencesCapability.URI); + resourceProperty.add(manageabilityCapabilityDocument); + + /** Properties **/ + resourceProperty = resourcePropertySet.get(WeatherstationPropertyQNames.RESOURCEID); + ResourceIdDocument resourceIdDocument = ResourceIdDocument.Factory.newInstance(); + resourceIdDocument.setResourceId("urn:" + (String) getID()); + resourceProperty.add(resourceIdDocument); + resourceProperty.addChangeListener(identityCapability);//add for management events + + //current time is done like in Apollo + resourceProperty = resourcePropertySet.get(WeatherstationPropertyQNames.CURRENTTIME); + CurrentTimeDocument currentTimeDocument = CurrentTimeDocument.Factory.newInstance(); + currentTimeDocument.setCurrentTime(Calendar.getInstance()); + resourceProperty.add(currentTimeDocument); + resourceProperty.setCallback(new org.apache.ws.resource.lifetime.callback.CurrentTimeCallback()); + resourceProperty.addChangeListener(metricsCapability);//add for management events + + resourceProperty = resourcePropertySet.get(WeatherstationPropertyQNames.OPERATIONALSTATUS); + OperationalStatusDocument operationalStatusDocument = OperationalStatusDocument.Factory.newInstance(); + operationalStatusDocument.setOperationalStatus(OperationalStatusDocument.OperationalStatus.AVAILABLE); + resourceProperty.add(operationalStatusDocument); + resourceProperty.addChangeListener(operationalStatusCapability);//add for management events + + resourceProperty = resourcePropertySet.get(WeatherstationPropertyQNames.CORRELATABLEPROPERTIES); + CorrelatablePropertiesDocument correlatablePropertiesDocument = CorrelatablePropertiesDocument.Factory.newInstance(); + CorrelatablePropertiesType correlatablePropertiesType = correlatablePropertiesDocument.addNewCorrelatableProperties(); + correlatablePropertiesType.setDialect(MuwsConstants.PBM_DIALECT); + correlatablePropertiesType.setNegativeAssertionPossible(false); + MatchDocument matchDocument = MatchDocument.Factory.newInstance(); + matchDocument.setMatch(WeatherstationPropertyQNames.FCCID); + XmlBeanUtils.addChildElement(correlatablePropertiesType, matchDocument); + resourceProperty.add(correlatablePropertiesDocument); + resourceProperty.addChangeListener(correlatablePropertiesCapability);//add for management events + + /*----------------- MUWS Relationships props -----------------*/ + resourceProperty = resourcePropertySet.get(WeatherstationPropertyQNames.RELATIONSHIP); + resourceProperty.addChangeListener(relationshipCapability);//add for management events + + RelationshipDocument relationshipDocument = RelationshipDocument.Factory.newInstance(); + + //add new type + RelationshipType relationshipType = null; + try + { + relationshipType = relationshipDocument.addNewRelationship(); + RelationshipTypeType relationshipTypeType = relationshipType.addNewType(); + XmlObject relationType = XmlObject.Factory.parse("<" + RELATIONSHIP_RELATION.getPrefix() + ":" + RELATIONSHIP_RELATION.getLocalPart() + " xmlns:" + RELATIONSHIP_RELATION.getPrefix() + "=" + "\"" + RELATIONSHIP_RELATION.getNamespaceURI() + "\" />"); + XmlBeanUtils.addChildElement(relationshipTypeType, relationType); + } + catch (XmlException e) + { + e.printStackTrace(); + } + + QName qName = QName.valueOf("{" + WeatherstationPropertyQNames.FCCID.getNamespaceURI() + "}ResourceID"); + //add a participant + RelationshipParticipantType relationshipParticipantType = relationshipType.addNewParticipant(); + relationshipParticipantType.setResourceId("urn:" + InteropConstants.WEATHERSTATION_KEY1); + relationshipParticipantType.setRole("urn://parent");//uri + EndpointReferenceType manageabilityEndpointReferenceType = relationshipParticipantType.addNewManageabilityEndpointReference(); + manageabilityEndpointReferenceType.addNewAddress().setStringValue(InteropConstants.SERVICES_URL + "/" + InteropConstants.WEATHERSTATION_SERVICE_NAME); + ReferencePropertiesType referencePropertiesType = manageabilityEndpointReferenceType.addNewReferenceProperties(); + XmlObject key1 = XmlBeanUtils.addChildElement(referencePropertiesType, qName); + XmlBeanUtils.setValue(key1, InteropConstants.WEATHERSTATION_KEY1); + + RelationshipParticipantType relationshipParticipantType2 = relationshipType.addNewParticipant(); + relationshipParticipantType2.setResourceId("urn:" + InteropConstants.WEATHERSTATION_KEY2);//spec optional + relationshipParticipantType2.setRole("urn://child1");//uri + EndpointReferenceType manageabilityEndpointReferenceType2 = relationshipParticipantType.addNewManageabilityEndpointReference(); + manageabilityEndpointReferenceType2.addNewAddress().setStringValue(InteropConstants.SERVICES_URL + "/" + InteropConstants.WEATHERSTATION_SERVICE_NAME); + ReferencePropertiesType referencePropertiesType2 = manageabilityEndpointReferenceType2.addNewReferenceProperties(); + XmlObject key2 = XmlBeanUtils.addChildElement(referencePropertiesType2, qName); + XmlBeanUtils.setValue(key2, InteropConstants.WEATHERSTATION_KEY2); + + resourceProperty.add(relationshipDocument); + + /*----------------- MOWS OperationalState props -----------------*/ + resourceProperty = resourcePropertySet.get(WeatherstationPropertyQNames.CURRENTOPERATIONALSTATE); + CurrentOperationalStateDocument currentOperationalStateDocument = CurrentOperationalStateDocument.Factory.newInstance(); + currentOperationalStateDocument.addNewCurrentOperationalState(); + resourceProperty.add(currentOperationalStateDocument); + + resourceProperty = resourcePropertySet.get(WeatherstationPropertyQNames.LASTOPERATIONALSTATETRANSITION); + LastOperationalStateTransitionDocument lastOperationalStateTransitionDocument = LastOperationalStateTransitionDocument.Factory.newInstance(); + StateTransitionType stateTransitionType = lastOperationalStateTransitionDocument.addNewLastOperationalStateTransition(); + stateTransitionType.addNewEnteredState(); + stateTransitionType.addNewPreviousState(); + stateTransitionType.setTime(Calendar.getInstance()); + stateTransitionType.setTransitionIdentifier(""); + resourceProperty.add(lastOperationalStateTransitionDocument); + + /*----------------- MOWS EndpointIdentification props -----------------*/ + resourceProperty = resourcePropertySet.get(WeatherstationPropertyQNames.ENDPOINTREFERENCE); + EndpointReferenceDocument endpointReferenceDocument = EndpointReferenceDocument.Factory.newInstance(); + EndpointReferenceType endpointReferenceType = endpointReferenceDocument.addNewEndpointReference();//temporary + AttributedURI attributedURI = endpointReferenceType.addNewAddress(); + attributedURI.setStringValue(InteropConstants.SERVICES_URL + "/" + InteropConstants.BLACKBERRY_SERVICE_NAME); + resourceProperty.add(endpointReferenceDocument); + resourceProperty.addChangeListener(mowsIdentificationCapability); + + resourceProperty = resourcePropertySet.get(WeatherstationPropertyQNames.ENDPOINTDESCRIPTIONS); + EndpointDescriptionsDocument endpointDescriptionsDocument = EndpointDescriptionsDocument.Factory.newInstance(); + EndpointDescriptionsDocument.EndpointDescriptions endpointDescriptions = endpointDescriptionsDocument.addNewEndpointDescriptions(); + endpointDescriptions.addDescription(InteropConstants.SERVICES_URL + "/" + InteropConstants.BLACKBERRY_SERVICE_NAME + "?wsdl"); + resourceProperty.add(endpointDescriptionsDocument); + resourceProperty.addChangeListener(mowsIdentificationCapability); + + /*----------------- MOWS Metrics props -----------------*/ + + Calendar resetAt = Calendar.getInstance(); + + resourceProperty = resourcePropertySet.get(WeatherstationPropertyQNames.NUMBEROFREQUESTS); + NumberOfRequestsDocument numberOfRequestsDocument = NumberOfRequestsDocument.Factory.newInstance(); + IntegerCounter integerCounter = numberOfRequestsDocument.addNewNumberOfRequests(); + integerCounter.setBigIntegerValue(BigInteger.valueOf(120L)); + integerCounter.setResetAt(resetAt); + resourceProperty.add(numberOfRequestsDocument); + resourceProperty.addChangeListener(mowsMetricsCapability); + + resourceProperty = resourcePropertySet.get(WeatherstationPropertyQNames.NUMBEROFSUCCESSFULREQUESTS); + NumberOfSuccessfulRequestsDocument numberOfSuccessfulRequestsDocument = NumberOfSuccessfulRequestsDocument.Factory.newInstance(); + IntegerCounter successIntegerCounter = numberOfSuccessfulRequestsDocument.addNewNumberOfSuccessfulRequests(); + successIntegerCounter.setBigIntegerValue(BigInteger.valueOf(90L)); + successIntegerCounter.setResetAt(resetAt); + resourceProperty.add(numberOfSuccessfulRequestsDocument); + resourceProperty.addChangeListener(mowsMetricsCapability); + + resourceProperty = resourcePropertySet.get(WeatherstationPropertyQNames.NUMBEROFFAILEDREQUESTS); + NumberOfFailedRequestsDocument numberOfFailedRequestsDocument = NumberOfFailedRequestsDocument.Factory.newInstance(); + IntegerCounter failedIntegerCounter = numberOfFailedRequestsDocument.addNewNumberOfFailedRequests(); + failedIntegerCounter.setBigIntegerValue(BigInteger.valueOf(30L)); + failedIntegerCounter.setResetAt(resetAt); + resourceProperty.add(numberOfFailedRequestsDocument); + resourceProperty.addChangeListener(mowsMetricsCapability); + + resourceProperty = resourcePropertySet.get(WeatherstationPropertyQNames.SERVICETIME); + ServiceTimeDocument serviceTimeDocument = ServiceTimeDocument.Factory.newInstance(); + DurationMetric serviceTimeMetric = serviceTimeDocument.addNewServiceTime(); + GDurationBuilder builder = new GDurationBuilder(+1, 1, 2, 3, 4, 5, 6, new BigDecimal(0.789)); + serviceTimeMetric.setGDurationValue(builder.toGDuration()); + serviceTimeMetric.setDuration(builder.toGDuration()); + resourceProperty.add(serviceTimeDocument); + resourceProperty.addChangeListener(mowsMetricsCapability); + + resourceProperty = resourcePropertySet.get(WeatherstationPropertyQNames.MAXRESPONSETIME); + MaxResponseTimeDocument maxResponseTimeDocument = MaxResponseTimeDocument.Factory.newInstance(); + DurationMetric maxRespDurationMetric = maxResponseTimeDocument.addNewMaxResponseTime(); + maxRespDurationMetric.setGDurationValue(builder.toGDuration()); + maxRespDurationMetric.setDuration(builder.toGDuration()); + resourceProperty.add(maxResponseTimeDocument); + resourceProperty.addChangeListener(mowsMetricsCapability); + + resourceProperty = resourcePropertySet.get(WeatherstationPropertyQNames.LASTRESPONSETIME); + LastResponseTimeDocument lastResponseTimeDocument = LastResponseTimeDocument.Factory.newInstance(); + DurationMetric lastRespDurationMetric = lastResponseTimeDocument.addNewLastResponseTime(); + lastRespDurationMetric.setGDurationValue(builder.toGDuration()); + lastRespDurationMetric.setDuration(builder.toGDuration()); + resourceProperty.add(lastResponseTimeDocument); + resourceProperty.addChangeListener(mowsMetricsCapability); + } + catch (Exception e) + { + throw new javax.xml.rpc.JAXRPCException("There was a problem in initializing your resource properties. Please check your init() method. Cause: " + e.getLocalizedMessage()); + } + // Resource Property {http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification-1.2-draft-01.xsd}FixedTopicSet is implemented by the framework. + // Resource Property {http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification-1.2-draft-01.xsd}Topic is implemented by the framework. + // Resource Property {http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification-1.2-draft-01.xsd}TopicExpressionDialects is implemented by the framework. - /** Capabilities **/ - //Management Characteristics - ResourceProperty resourceProperty = resourcePropertySet.get( - WeatherstationPropertyQNames.MANAGEABILITYCAPABILITY ); - resourceProperty.addChangeListener( manageabilityCharacteristicsCapability ); - - //Identity Capability - ManageabilityCapabilityDocument manageabilityCapabilityDocument = ManageabilityCapabilityDocument.Factory.newInstance(); - manageabilityCapabilityDocument.setManageabilityCapability( IdentityCapability.URI ); - resourceProperty.add( manageabilityCapabilityDocument ); - - - //Identification Capability - manageabilityCapabilityDocument = ManageabilityCapabilityDocument.Factory.newInstance(); - manageabilityCapabilityDocument.setManageabilityCapability( IdentificationCapability.URI ); - resourceProperty.add( manageabilityCapabilityDocument ); - - //MUWS2 Metrics Capability - manageabilityCapabilityDocument = ManageabilityCapabilityDocument.Factory.newInstance(); - manageabilityCapabilityDocument.setManageabilityCapability( org.apache.ws.muws.v1_0.capability.MetricsCapability.URI ); - resourceProperty.add( manageabilityCapabilityDocument ); - - - //MOWS Metrics Capability - manageabilityCapabilityDocument = ManageabilityCapabilityDocument.Factory.newInstance(); - manageabilityCapabilityDocument.setManageabilityCapability( MetricsCapability.URI ); - resourceProperty.add( manageabilityCapabilityDocument ); - - - //Status Capability - manageabilityCapabilityDocument = ManageabilityCapabilityDocument.Factory.newInstance(); - manageabilityCapabilityDocument.setManageabilityCapability( OperationalStatusCapability.URI ); - resourceProperty.add( manageabilityCapabilityDocument ); - - - //Request Processing State Capability - manageabilityCapabilityDocument = ManageabilityCapabilityDocument.Factory.newInstance(); - manageabilityCapabilityDocument.setManageabilityCapability( RequestProcessingStateCapability.URI ); - resourceProperty.add( manageabilityCapabilityDocument ); - - - //Relationship Capability - manageabilityCapabilityDocument = ManageabilityCapabilityDocument.Factory.newInstance(); - manageabilityCapabilityDocument.setManageabilityCapability( RelationshipsCapability.URI ); - resourceProperty.add( manageabilityCapabilityDocument ); - - - //Correlateable Properties Capability - manageabilityCapabilityDocument = ManageabilityCapabilityDocument.Factory.newInstance(); - manageabilityCapabilityDocument.setManageabilityCapability( CorrelatablePropertiesCapability.URI ); - resourceProperty.add( manageabilityCapabilityDocument ); - - manageabilityCapabilityDocument = ManageabilityCapabilityDocument.Factory.newInstance(); - manageabilityCapabilityDocument.setManageabilityCapability( ManageabilityReferencesCapability.URI ); - resourceProperty.add( manageabilityCapabilityDocument ); - - /** Properties **/ - resourceProperty = resourcePropertySet.get( WeatherstationPropertyQNames.RESOURCEID ); - ResourceIdDocument resourceIdDocument = ResourceIdDocument.Factory.newInstance(); - resourceIdDocument.setResourceId( "urn:" + (String) getID() ); - resourceProperty.add( resourceIdDocument ); - resourceProperty.addChangeListener( identityCapability );//add for management events - - //current time is done like in Apollo - resourceProperty = resourcePropertySet.get( WeatherstationPropertyQNames.CURRENTTIME ); - CurrentTimeDocument currentTimeDocument = CurrentTimeDocument.Factory.newInstance(); - currentTimeDocument.setCurrentTime( Calendar.getInstance() ); - resourceProperty.add( currentTimeDocument ); - resourceProperty.setCallback( new org.apache.ws.resource.lifetime.callback.CurrentTimeCallback() ); - resourceProperty.addChangeListener( metricsCapability );//add for management events - - resourceProperty = resourcePropertySet.get( WeatherstationPropertyQNames.OPERATIONALSTATUS ); - OperationalStatusDocument operationalStatusDocument = OperationalStatusDocument.Factory.newInstance(); - operationalStatusDocument.setOperationalStatus( OperationalStatusDocument.OperationalStatus.AVAILABLE ); - resourceProperty.add( operationalStatusDocument ); - resourceProperty.addChangeListener( operationalStatusCapability );//add for management events - - resourceProperty = resourcePropertySet.get( WeatherstationPropertyQNames.CORRELATABLEPROPERTIES ); - CorrelatablePropertiesDocument correlatablePropertiesDocument = CorrelatablePropertiesDocument.Factory.newInstance(); - CorrelatablePropertiesType correlatablePropertiesType = correlatablePropertiesDocument.addNewCorrelatableProperties(); - correlatablePropertiesType.setDialect( MuwsConstants.PBM_DIALECT ); - correlatablePropertiesType.setNegativeAssertionPossible( false ); - MatchDocument matchDocument = MatchDocument.Factory.newInstance(); - matchDocument.setMatch( WeatherstationPropertyQNames.FCCID ); - XmlBeanUtils.addChildElement( correlatablePropertiesType, matchDocument ); - resourceProperty.add( correlatablePropertiesDocument ); - resourceProperty.addChangeListener( correlatablePropertiesCapability );//add for management events - - /*----------------- MUWS Relationships props -----------------*/ - //todo this is only started.... - resourceProperty = resourcePropertySet.get( WeatherstationPropertyQNames.RELATIONSHIP ); - resourceProperty.addChangeListener( relationshipCapability );//add for management events - RelationshipDocument relationshipDocument = RelationshipDocument.Factory.newInstance(); - //add new type - RelationshipType relationshipType = null; + /** + * This method call will make all resource properties be exposed + * as Topics. If you would like to change that behaviour you can + * call TopicUtils.addResourcePropertyValueChangeTopic for each + * Topic you'd like to expose property change notifications for. + */ try { - relationshipType = relationshipDocument.addNewRelationship(); - RelationshipTypeType relationshipTypeType = relationshipType.addNewType(); - XmlObject relationType = XmlObject.Factory.parse("<"+RELATIONSHIP_RELATION.getPrefix()+":"+RELATIONSHIP_RELATION.getLocalPart()+" xmlns:"+RELATIONSHIP_RELATION.getPrefix()+"=" + "\"" + RELATIONSHIP_RELATION.getNamespaceURI() + "\" />"); - XmlBeanUtils.addChildElement(relationshipTypeType, relationType); + org.apache.ws.notification.topics.util.TopicUtils.addResourcePropertyValueChangeTopics(getResourcePropertySet(), getTopicSpaceSet()); } - catch (XmlException e) + catch (Exception e) { - e.printStackTrace(); + throw new javax.xml.rpc.JAXRPCException("Unable to init the ResourceProperty Changed topics. Cause: " + e.getLocalizedMessage(), e); } - //relationshipType.setAccessEndpointReference();//need EPR optional - - QName qName = QName.valueOf( "{" + WeatherstationPropertyQNames.FCCID.getNamespaceURI() + "}ResourceID" ); - //add a participant - RelationshipParticipantType relationshipParticipantType = relationshipType.addNewParticipant(); - relationshipParticipantType.setResourceId( "urn:" + InteropConstants.WEATHERSTATION_KEY1 ); - relationshipParticipantType.setRole( "urn://parent" );//uri - EndpointReferenceType manageabilityEndpointReferenceType = relationshipParticipantType.addNewManageabilityEndpointReference(); - manageabilityEndpointReferenceType.addNewAddress().setStringValue( - InteropConstants.SERVICES_URL + "/" + InteropConstants.WEATHERSTATION_SERVICE_NAME ); - ReferencePropertiesType referencePropertiesType = manageabilityEndpointReferenceType.addNewReferenceProperties(); - XmlObject key1 = XmlBeanUtils.addChildElement( referencePropertiesType, qName ); - XmlBeanUtils.setValue( key1, InteropConstants.WEATHERSTATION_KEY1 ); - - RelationshipParticipantType relationshipParticipantType2 = relationshipType.addNewParticipant(); - relationshipParticipantType2.setResourceId( "urn:" + InteropConstants.WEATHERSTATION_KEY2 );//spec optional - relationshipParticipantType2.setRole( "urn://child1" );//uri - EndpointReferenceType manageabilityEndpointReferenceType2 = relationshipParticipantType.addNewManageabilityEndpointReference(); - manageabilityEndpointReferenceType2.addNewAddress().setStringValue( - InteropConstants.SERVICES_URL + "/" + InteropConstants.WEATHERSTATION_SERVICE_NAME ); - ReferencePropertiesType referencePropertiesType2 = manageabilityEndpointReferenceType2.addNewReferenceProperties(); - XmlObject key2 = XmlBeanUtils.addChildElement( referencePropertiesType2, qName ); - XmlBeanUtils.setValue( key2, InteropConstants.WEATHERSTATION_KEY2 ); - - //add a relationshiptype - //relationshipType.addNewType(); - - resourceProperty.add( relationshipDocument ); - - /*----------------- MOWS OperationalState props -----------------*/ - resourceProperty = resourcePropertySet.get( WeatherstationPropertyQNames.CURRENTOPERATIONALSTATE ); - CurrentOperationalStateDocument currentOperationalStateDocument = CurrentOperationalStateDocument.Factory.newInstance(); - currentOperationalStateDocument.addNewCurrentOperationalState(); - //todo?? - resourceProperty.add( currentOperationalStateDocument ); - //todo not sure about change listener - - resourceProperty = resourcePropertySet.get( WeatherstationPropertyQNames.LASTOPERATIONALSTATETRANSITION ); - LastOperationalStateTransitionDocument lastOperationalStateTransitionDocument = LastOperationalStateTransitionDocument.Factory.newInstance(); - StateTransitionType stateTransitionType = lastOperationalStateTransitionDocument.addNewLastOperationalStateTransition(); - stateTransitionType.addNewEnteredState(); - stateTransitionType.addNewPreviousState(); - stateTransitionType.setTime( Calendar.getInstance() ); - stateTransitionType.setTransitionIdentifier( "" ); - resourceProperty.add( lastOperationalStateTransitionDocument ); - //todo not sure about change listener - - /*----------------- MOWS EndpointIdentification props -----------------*/ - resourceProperty = resourcePropertySet.get( WeatherstationPropertyQNames.ENDPOINTREFERENCE ); - EndpointReferenceDocument endpointReferenceDocument = EndpointReferenceDocument.Factory.newInstance(); - EndpointReferenceType endpointReferenceType = endpointReferenceDocument.addNewEndpointReference();//temporary - AttributedURI attributedURI = endpointReferenceType.addNewAddress(); - attributedURI.setStringValue( InteropConstants.SERVICES_URL + "/" + InteropConstants.BLACKBERRY_SERVICE_NAME ); - //endpointReferenceDocument.setEndpointReference(null);//todo need the real epr for interop - resourceProperty.add( endpointReferenceDocument ); - resourceProperty.addChangeListener( mowsIdentificationCapability ); - - resourceProperty = resourcePropertySet.get( WeatherstationPropertyQNames.ENDPOINTDESCRIPTIONS ); - EndpointDescriptionsDocument endpointDescriptionsDocument = EndpointDescriptionsDocument.Factory.newInstance(); - EndpointDescriptionsDocument.EndpointDescriptions endpointDescriptions = endpointDescriptionsDocument.addNewEndpointDescriptions(); - endpointDescriptions.addDescription( - InteropConstants.SERVICES_URL + "/" + InteropConstants.BLACKBERRY_SERVICE_NAME + "?wsdl" ); - resourceProperty.add( endpointDescriptionsDocument ); - resourceProperty.addChangeListener( mowsIdentificationCapability ); - - /*----------------- MOWS Metrics props -----------------*/ - - Calendar resetAt = Calendar.getInstance(); - - resourceProperty = resourcePropertySet.get( WeatherstationPropertyQNames.NUMBEROFREQUESTS ); - NumberOfRequestsDocument numberOfRequestsDocument = NumberOfRequestsDocument.Factory.newInstance(); - IntegerCounter integerCounter = numberOfRequestsDocument.addNewNumberOfRequests(); - integerCounter.setBigIntegerValue( BigInteger.valueOf( 120L ) ); - integerCounter.setResetAt( resetAt ); - resourceProperty.add( numberOfRequestsDocument ); - resourceProperty.addChangeListener( mowsMetricsCapability ); - - resourceProperty = resourcePropertySet.get( WeatherstationPropertyQNames.NUMBEROFSUCCESSFULREQUESTS ); - NumberOfSuccessfulRequestsDocument numberOfSuccessfulRequestsDocument = NumberOfSuccessfulRequestsDocument.Factory.newInstance(); - IntegerCounter successIntegerCounter = numberOfSuccessfulRequestsDocument.addNewNumberOfSuccessfulRequests(); - successIntegerCounter.setBigIntegerValue( BigInteger.valueOf( 90L ) ); - successIntegerCounter.setResetAt( resetAt ); - resourceProperty.add( numberOfSuccessfulRequestsDocument ); - resourceProperty.addChangeListener( mowsMetricsCapability ); - - resourceProperty = resourcePropertySet.get( WeatherstationPropertyQNames.NUMBEROFFAILEDREQUESTS ); - NumberOfFailedRequestsDocument numberOfFailedRequestsDocument = NumberOfFailedRequestsDocument.Factory.newInstance(); - IntegerCounter failedIntegerCounter = numberOfFailedRequestsDocument.addNewNumberOfFailedRequests(); - failedIntegerCounter.setBigIntegerValue( BigInteger.valueOf( 30L ) ); - failedIntegerCounter.setResetAt( resetAt ); - resourceProperty.add( numberOfFailedRequestsDocument ); - resourceProperty.addChangeListener( mowsMetricsCapability ); - - resourceProperty = resourcePropertySet.get( WeatherstationPropertyQNames.SERVICETIME ); - ServiceTimeDocument serviceTimeDocument = ServiceTimeDocument.Factory.newInstance(); - DurationMetric serviceTimeMetric = serviceTimeDocument.addNewServiceTime(); - GDurationBuilder builder = new GDurationBuilder( +1, 1, 2, 3, 4, 5, 6, new BigDecimal( 0.789 ) ); - serviceTimeMetric.setGDurationValue( builder.toGDuration() ); - serviceTimeMetric.setDuration( builder.toGDuration() ); - resourceProperty.add( serviceTimeDocument ); - resourceProperty.addChangeListener( mowsMetricsCapability ); - - resourceProperty = resourcePropertySet.get( WeatherstationPropertyQNames.MAXRESPONSETIME ); - MaxResponseTimeDocument maxResponseTimeDocument = MaxResponseTimeDocument.Factory.newInstance(); - DurationMetric maxRespDurationMetric = maxResponseTimeDocument.addNewMaxResponseTime(); - maxRespDurationMetric.setGDurationValue( builder.toGDuration() ); - maxRespDurationMetric.setDuration( builder.toGDuration() ); - resourceProperty.add( maxResponseTimeDocument ); - resourceProperty.addChangeListener( mowsMetricsCapability ); - - resourceProperty = resourcePropertySet.get( WeatherstationPropertyQNames.LASTRESPONSETIME ); - LastResponseTimeDocument lastResponseTimeDocument = LastResponseTimeDocument.Factory.newInstance(); - DurationMetric lastRespDurationMetric = lastResponseTimeDocument.addNewLastResponseTime(); - lastRespDurationMetric.setGDurationValue( builder.toGDuration() ); - lastRespDurationMetric.setDuration( builder.toGDuration() ); - resourceProperty.add( lastResponseTimeDocument ); - resourceProperty.addChangeListener( mowsMetricsCapability ); + /** + * Initializes the Topic, TopicExpressionDialects and FixedTopicSet resource properties + * + * </br> + * <strong>NOTE this MUST be called last in the Resource.init() method to ensure all topics get registered</strong> + * </br> + * FixedTopicSet will be set based on the value returned from the [EMAIL PROTECTED] TopicSpaceSet#isFixed()} method. + * </br> + * Topic will have all root topics in the TopicSpaceSet, set to Simple dialect AND all child topics set ot + * Concrete dialect. + * </br> + * + * TopicExpressionDialects will be set to the engine's known Topic Dialects acquired from the TopicExpressionEngine + * + * @param topicSpaceSet + * @param propSet + */ + org.apache.ws.notification.topics.util.TopicUtils.initNotificationProducerProperties(getTopicSpaceSet(), getResourcePropertySet()); } - public void setFCCID( FCCIDDocument fccidDocument ) + public void setFCCID(FCCIDDocument fccidDocument) { - ResourceProperty resourceProperty = getResourcePropertySet().get( WeatherstationPropertyQNames.FCCID ); - resourceProperty.add( fccidDocument ); + ResourceProperty resourceProperty = getResourcePropertySet().get(WeatherstationPropertyQNames.FCCID); + resourceProperty.add(fccidDocument); } }
Modified: incubator/muse/trunk/src/site/content/interop/src/java/org/everestWeather/wsdm/samples/x2005/x04/schema/WeatherstationService.java URL: http://svn.apache.org/viewcvs/incubator/muse/trunk/src/site/content/interop/src/java/org/everestWeather/wsdm/samples/x2005/x04/schema/WeatherstationService.java?rev=178231&r1=178230&r2=178231&view=diff ============================================================================== --- incubator/muse/trunk/src/site/content/interop/src/java/org/everestWeather/wsdm/samples/x2005/x04/schema/WeatherstationService.java (original) +++ incubator/muse/trunk/src/site/content/interop/src/java/org/everestWeather/wsdm/samples/x2005/x04/schema/WeatherstationService.java Tue May 24 11:34:57 2005 @@ -7,38 +7,37 @@ * If there is a change to the WSDL, then the generated implemented interfaces * (representing the "base" portTypes) will change, thus showing a compile error to the * user. - * + * <p/> * NOTE: This class is generated. However, it will not be overwritten by subsequent - * calls to the code generator. - * + * calls to the code generator. */ public class WeatherstationService - extends AbstractWeatherstationService - implements WeatherstationCustomOperationsPortType + extends AbstractWeatherstationService + implements WeatherstationCustomOperationsPortType { - private ResourceContext m_resourceContext; + private ResourceContext m_resourceContext; - /** - * Creates a new [EMAIL PROTECTED] WeatherstationService } object. - * - * @param resourceContext DOCUMENT_ME - */ - public WeatherstationService( ResourceContext resourceContext ) - { - m_resourceContext = resourceContext; - init(); - } + /** + * Creates a new [EMAIL PROTECTED] WeatherstationService } object. + * + * @param resourceContext DOCUMENT_ME + */ + public WeatherstationService(ResourceContext resourceContext) + { + m_resourceContext = resourceContext; + init(); + } + + /** + * DOCUMENT_ME + * + * @return DOCUMENT_ME + */ + public ResourceContext getResourceContext() + { + return m_resourceContext; + } - /** - * DOCUMENT_ME - * - * @return DOCUMENT_ME - */ - public ResourceContext getResourceContext( ) - { - return m_resourceContext; - } - } Modified: incubator/muse/trunk/src/site/content/interop/src/java/org/everestWeather/wsdm/samples/x2005/x04/schema/Weatherstation_jndi-config.xml URL: http://svn.apache.org/viewcvs/incubator/muse/trunk/src/site/content/interop/src/java/org/everestWeather/wsdm/samples/x2005/x04/schema/Weatherstation_jndi-config.xml?rev=178231&r1=178230&r2=178231&view=diff ============================================================================== --- incubator/muse/trunk/src/site/content/interop/src/java/org/everestWeather/wsdm/samples/x2005/x04/schema/Weatherstation_jndi-config.xml (original) +++ incubator/muse/trunk/src/site/content/interop/src/java/org/everestWeather/wsdm/samples/x2005/x04/schema/Weatherstation_jndi-config.xml Tue May 24 11:34:57 2005 @@ -2,29 +2,29 @@ <jndiConfig xmlns="http://www.apache.org/wsfx/wsrf/jndi/config"> - <service name="weatherstation"> - <resource name="home" type="org.everestWeather.wsdm.samples.x2005.x04.schema.WeatherstationHome"> - <resourceParams> - <parameter> - <name>serviceClassName</name> - <value>org.everestWeather.wsdm.samples.x2005.x04.schema.WeatherstationService</value> - </parameter> - <parameter> - <name>resourceClassName</name> - <value>org.everestWeather.wsdm.samples.x2005.x04.schema.WeatherstationResource</value> - </parameter> - <parameter> - <name>wsdlTargetNamespace</name> - <value>http://everest-weather.org/wsdm/samples/2005/04/schema</value> - </parameter> - - <parameter> - <name>resourceKeyName</name> - <value>{http://everest-weather.org/wsdm/samples/2005/04/schema}ResourceID</value> - </parameter> - </resourceParams> - </resource> - </service> + <service name="weatherstation"> + <resource name="home" type="org.everestWeather.wsdm.samples.x2005.x04.schema.WeatherstationHome"> + <resourceParams> + <parameter> + <name>serviceClassName</name> + <value>org.everestWeather.wsdm.samples.x2005.x04.schema.WeatherstationService</value> + </parameter> + <parameter> + <name>resourceClassName</name> + <value>org.everestWeather.wsdm.samples.x2005.x04.schema.WeatherstationResource</value> + </parameter> + <parameter> + <name>wsdlTargetNamespace</name> + <value>http://everest-weather.org/wsdm/samples/2005/04/schema</value> + </parameter> + + <parameter> + <name>resourceKeyName</name> + <value>{http://everest-weather.org/wsdm/samples/2005/04/schema}ResourceID</value> + </parameter> + </resourceParams> + </resource> + </service> </jndiConfig> Modified: incubator/muse/trunk/src/site/content/interop/src/test/org/apache/ws/muws/interop/client/AbstractWsdmInteropTestCase.java URL: http://svn.apache.org/viewcvs/incubator/muse/trunk/src/site/content/interop/src/test/org/apache/ws/muws/interop/client/AbstractWsdmInteropTestCase.java?rev=178231&r1=178230&r2=178231&view=diff ============================================================================== --- incubator/muse/trunk/src/site/content/interop/src/test/org/apache/ws/muws/interop/client/AbstractWsdmInteropTestCase.java (original) +++ incubator/muse/trunk/src/site/content/interop/src/test/org/apache/ws/muws/interop/client/AbstractWsdmInteropTestCase.java Tue May 24 11:34:57 2005 @@ -19,7 +19,7 @@ import org.apache.ws.muws.v1_0.capability.IdentityCapability; import org.apache.ws.muws.v1_0.capability.ManageabilityCharacteristicsCapability; import org.apache.ws.muws.v1_0.capability.OperationalStatusCapability; -import org.apache.ws.notification.base.v2004_6.BaseNotificationConstants; +import org.apache.ws.notification.base.v2004_06.BaseNotificationConstants; import org.apache.ws.util.XmlBeanUtils; import org.apache.ws.util.jndi.XmlBeanJndiUtils; import org.apache.ws.util.test.PortListen; Modified: incubator/muse/trunk/src/site/content/interop/src/test/org/apache/ws/muws/interop/client/ResourceStub.java URL: http://svn.apache.org/viewcvs/incubator/muse/trunk/src/site/content/interop/src/test/org/apache/ws/muws/interop/client/ResourceStub.java?rev=178231&r1=178230&r2=178231&view=diff ============================================================================== --- incubator/muse/trunk/src/site/content/interop/src/test/org/apache/ws/muws/interop/client/ResourceStub.java (original) +++ incubator/muse/trunk/src/site/content/interop/src/test/org/apache/ws/muws/interop/client/ResourceStub.java Tue May 24 11:34:57 2005 @@ -17,7 +17,7 @@ import org.apache.ws.addressing.EndpointReference; import org.apache.ws.addressing.XmlBeansEndpointReference; -import org.apache.ws.notification.topics.v2004_06.Topics1_2Constants; +import org.apache.ws.notification.topics.v2004_06.TopicsConstants; import org.apache.ws.util.XmlBeanUtils; import org.apache.ws.util.soap.SoapClient; import org.apache.ws.XmlObjectWrapper; @@ -95,7 +95,7 @@ org.xmlsoap.schemas.ws.x2003.x03.addressing.AttributedURI address = consumerRef.addNewAddress(); address.setStringValue( consumerURL ); TopicExpressionType topicExpr = subscribe.addNewTopicExpression(); - topicExpr.setDialect( Topics1_2Constants.TOPIC_EXPR_DIALECT_SIMPLE ); + topicExpr.setDialect( TopicsConstants.TOPIC_EXPR_DIALECT_SIMPLE ); XmlBeanUtils.setValueAsQName( topicExpr, topic ); XmlObject response = sendRequest( requestDoc, "http://xyz.com/action/Subscribe" ); if ( ! ( response instanceof SubscribeResponseDocument.SubscribeResponse ) ) --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
