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 2005/05/06 23:16:29 UTC
svn commit: r168653 - in /incubator/apollo/trunk/src:
java/org/apache/ws/addressing/ java/org/apache/ws/addressing/v2003_03/
java/org/apache/ws/addressing/v2004_08_10/ java/org/apache/ws/resource/
java/org/apache/ws/resource/impl/ java/org/apache/ws/resource/lifetime/
templates/ test/org/apache/ws/resource/properties/
Author: scamp
Date: Fri May 6 14:16:28 2005
New Revision: 168653
URL: http://svn.apache.org/viewcvs?rev=168653&view=rev
Log: (empty)
Added:
incubator/apollo/trunk/src/java/org/apache/ws/addressing/v2003_03/
incubator/apollo/trunk/src/java/org/apache/ws/addressing/v2003_03/AddressingConstants.java
incubator/apollo/trunk/src/java/org/apache/ws/addressing/v2004_08_10/
incubator/apollo/trunk/src/java/org/apache/ws/addressing/v2004_08_10/AddressingConstants.java
incubator/apollo/trunk/src/java/org/apache/ws/resource/ResourceCreation.java
incubator/apollo/trunk/src/java/org/apache/ws/resource/ResourceCreationEvent.java
incubator/apollo/trunk/src/java/org/apache/ws/resource/ResourceCreationListener.java
incubator/apollo/trunk/src/java/org/apache/ws/resource/ResourceDestruction.java
incubator/apollo/trunk/src/java/org/apache/ws/resource/ResourceDestructionEvent.java
incubator/apollo/trunk/src/java/org/apache/ws/resource/ResourceDestructionListener.java
incubator/apollo/trunk/src/java/org/apache/ws/resource/ResourceEvent.java
Removed:
incubator/apollo/trunk/src/java/org/apache/ws/addressing/Addressing_03_2003_Constants.java
Modified:
incubator/apollo/trunk/src/java/org/apache/ws/addressing/EndpointReference.java
incubator/apollo/trunk/src/java/org/apache/ws/addressing/XmlBeansEndpointReference.java
incubator/apollo/trunk/src/java/org/apache/ws/resource/Resource.java
incubator/apollo/trunk/src/java/org/apache/ws/resource/ResourceHome.java
incubator/apollo/trunk/src/java/org/apache/ws/resource/impl/AbstractResourceHome.java
incubator/apollo/trunk/src/java/org/apache/ws/resource/lifetime/ScheduledResourceTerminationResource.java
incubator/apollo/trunk/src/templates/AbstractResource.vm
incubator/apollo/trunk/src/templates/Home.vm
incubator/apollo/trunk/src/templates/Resource.vm
incubator/apollo/trunk/src/test/org/apache/ws/resource/properties/SushiHome.java
incubator/apollo/trunk/src/test/org/apache/ws/resource/properties/SushiResource.java
Modified: incubator/apollo/trunk/src/java/org/apache/ws/addressing/EndpointReference.java
URL: http://svn.apache.org/viewcvs/incubator/apollo/trunk/src/java/org/apache/ws/addressing/EndpointReference.java?rev=168653&r1=168652&r2=168653&view=diff
==============================================================================
--- incubator/apollo/trunk/src/java/org/apache/ws/addressing/EndpointReference.java (original)
+++ incubator/apollo/trunk/src/java/org/apache/ws/addressing/EndpointReference.java Fri May 6 14:16:28 2005
@@ -48,9 +48,16 @@
/**
* Returns the ReferenceProperties Object.
*
- * @return Object The ReferenceProperties
+ * @return Object[] The ReferenceProperties
*/
Object[] getReferenceProperties( );
+
+ /**
+ * Returns the ReferenceParameters Object.
+ *
+ * @return Object[] The ReferenceParameters
+ */
+ Object[] getReferenceParameters( );
/**
* Service QName
Modified: incubator/apollo/trunk/src/java/org/apache/ws/addressing/XmlBeansEndpointReference.java
URL: http://svn.apache.org/viewcvs/incubator/apollo/trunk/src/java/org/apache/ws/addressing/XmlBeansEndpointReference.java?rev=168653&r1=168652&r2=168653&view=diff
==============================================================================
--- incubator/apollo/trunk/src/java/org/apache/ws/addressing/XmlBeansEndpointReference.java (original)
+++ incubator/apollo/trunk/src/java/org/apache/ws/addressing/XmlBeansEndpointReference.java Fri May 6 14:16:28 2005
@@ -16,8 +16,16 @@
package org.apache.ws.addressing;
import org.apache.ws.XmlObjectWrapper;
+import org.apache.ws.resource.ResourceKey;
import org.apache.ws.util.XmlBeanUtils;
import org.apache.xmlbeans.XmlObject;
+import org.xmlsoap.schemas.ws.x2003.x03.addressing.AttributedQName;
+import org.xmlsoap.schemas.ws.x2003.x03.addressing.AttributedURI;
+import org.xmlsoap.schemas.ws.x2003.x03.addressing.EndpointReferenceType;
+import org.xmlsoap.schemas.ws.x2003.x03.addressing.ReferencePropertiesType;
+import org.xmlsoap.schemas.ws.x2003.x03.addressing.ServiceNameType;
+import org.xmlsoap.schemas.ws.x2004.x08.addressing.ReferenceParametersType;
+
import javax.xml.namespace.QName;
/**
@@ -40,6 +48,24 @@
private String m_servicePortName;
private QName m_serviceQName;
private Object[] m_referenceProps;
+ private String m_addressingVersionURI;
+ private Object[] m_referenceParameters;
+ private ResourceKey m_resourceKey;
+
+ /**
+ * Constructs an EPR (and the underlying XmlObject representation) given the params.
+ *
+ * @param address - Endpoint Address. Must Not Be Null
+ * @param addressingURI - WS-Addressing URI - Must Not Be Null
+ */
+ public XmlBeansEndpointReference(String address,
+ String addressingURI)
+ {
+ if(address == null) throw new IllegalArgumentException("Address must not be null!");
+ if(addressingURI == null) throw new IllegalArgumentException("WS-Addressing addresingURI must not be null!");
+ m_address = address;
+ m_addressingVersionURI = addressingURI;
+ }
/**
* Creates a new {@link XmlBeansEndpointReference} object.
@@ -79,7 +105,9 @@
m_serviceQName = epr.getServiceName( ).getQNameValue( );
if(epr.getReferenceProperties()!=null)
m_referenceProps = XmlBeanUtils.getChildElements(epr.getReferenceProperties());
- }
+ if(epr.getReferenceParameters() != null)
+ m_referenceParameters = XmlBeanUtils.getChildElements(epr.getReferenceParameters());
+ }
/**
* Returns the Address from the EPR as a String.
*
@@ -121,7 +149,17 @@
return m_referenceProps;
}
- /**
+ /**
+ * Returns the ReferenceParameters Object.
+ *
+ * @return Object[] The ReferenceParameters
+ */
+ public Object[] getReferenceParameters()
+ {
+ return m_referenceParameters;
+ }
+
+ /**
* Service QName
*
* @return Service QName
@@ -138,6 +176,155 @@
*/
public XmlObject getXmlObject( )
{
- return m_xmlObjectEPR;
+ XmlObject epr = null;
+
+ if(m_xmlObjectEPR != null)
+ {
+ epr = m_xmlObjectEPR;
+ }
+
+ else if(m_addressingVersionURI != null && m_address != null)
+ {
+ if(org.apache.ws.addressing.v2003_03.AddressingConstants.NSURI_ADDRESSING_SCHEMA.equals(m_addressingVersionURI))
+ {
+ EndpointReferenceType endpointReferenceType = build2003_03_EPR();
+
+ m_xmlObjectEPR = endpointReferenceType;
+ epr = endpointReferenceType;
+ }
+ else if(org.apache.ws.addressing.v2004_08_10.AddressingConstants.NSURI_ADDRESSING_SCHEMA.equals(m_addressingVersionURI))
+ {
+ org.xmlsoap.schemas.ws.x2004.x08.addressing.EndpointReferenceType endpointReferenceType = build2004_08_EPR();
+
+ m_xmlObjectEPR = endpointReferenceType;
+ epr = endpointReferenceType;
+ }
+ }
+
+ return epr;
+
}
+
+ private EndpointReferenceType build2003_03_EPR()
+ {
+ EndpointReferenceType endpointReferenceType = EndpointReferenceType.Factory.newInstance();
+ AttributedURI attributedURI = endpointReferenceType.addNewAddress();
+ attributedURI.setStringValue(m_address);
+
+ if(m_portTypeQName != null)
+ {
+ AttributedQName attributedQName = endpointReferenceType.addNewPortType();
+ attributedQName.setQNameValue(m_portTypeQName);
+ }
+ if(m_servicePortName != null)
+ {
+ ServiceNameType serviceNameType = endpointReferenceType.addNewServiceName();
+ serviceNameType.setPortName(m_servicePortName);
+ }
+
+ ReferencePropertiesType referencePropertiesType = endpointReferenceType.addNewReferenceProperties();
+
+ if(m_referenceProps != null)
+ {
+ addToProperties(referencePropertiesType, m_referenceProps);
+ }
+
+ if(m_resourceKey != null)
+ {
+ XmlObject resourceKey = XmlBeanUtils.addChildElement(referencePropertiesType, m_resourceKey.getName());
+ XmlBeanUtils.setValue(resourceKey, (String)m_resourceKey.getValue());
+ }
+
+ return endpointReferenceType;
+ }
+
+ private org.xmlsoap.schemas.ws.x2004.x08.addressing.EndpointReferenceType build2004_08_EPR()
+ {
+ org.xmlsoap.schemas.ws.x2004.x08.addressing.EndpointReferenceType endpointReferenceType = org.xmlsoap.schemas.ws.x2004.x08.addressing.EndpointReferenceType.Factory.newInstance();
+ org.xmlsoap.schemas.ws.x2004.x08.addressing.AttributedURI attributedURI = endpointReferenceType.addNewAddress();
+ attributedURI.setStringValue(m_address);
+
+ if(m_portTypeQName != null)
+ {
+ org.xmlsoap.schemas.ws.x2004.x08.addressing.AttributedQName attributedQName = endpointReferenceType.addNewPortType();
+ attributedQName.setQNameValue(m_portTypeQName);
+ }
+
+ if(m_servicePortName != null)
+ {
+ org.xmlsoap.schemas.ws.x2004.x08.addressing.ServiceNameType serviceNameType = endpointReferenceType.addNewServiceName();
+ serviceNameType.setPortName(m_servicePortName);
+ }
+
+ org.xmlsoap.schemas.ws.x2004.x08.addressing.ReferencePropertiesType referencePropertiesType = endpointReferenceType.addNewReferenceProperties();
+ if(m_referenceProps != null)
+ {
+ addToProperties(referencePropertiesType, m_referenceProps);
+ }
+
+ if(m_resourceKey != null)
+ {
+ XmlObject resourceKey = XmlBeanUtils.addChildElement(referencePropertiesType, m_resourceKey.getName());
+ XmlBeanUtils.setValue(resourceKey, (String)m_resourceKey.getValue());
+ }
+
+ if(m_referenceParameters != null)
+ {
+ ReferenceParametersType referenceParametersType = endpointReferenceType.addNewReferenceParameters();
+ addToProperties(referenceParametersType, m_referenceParameters);
+ }
+ return endpointReferenceType;
+ }
+
+ private void addToProperties(XmlObject propertiesType, Object[] referenceProps)
+ {
+ for (int i = 0; i < referenceProps.length; i++)
+ {
+ Object referenceProp = referenceProps[i];
+ XmlBeanUtils.addChildElement(propertiesType, (XmlObject)referenceProp);
+ }
+ }
+
+ public void setPortTypeQName(QName portTypeQName)
+ {
+ m_portTypeQName = portTypeQName;
+ }
+
+ public void setServicePortName(String servicePortName)
+ {
+ m_servicePortName = servicePortName;
+ }
+
+ public void setServiceQName(QName serviceQName)
+ {
+ m_serviceQName = serviceQName;
+ }
+
+ /**
+ * @param referenceProps XmlObject[] of refernece properties to be added
+ */
+ public void setReferenceProperties(Object[] referenceProps)
+ {
+ if( !(referenceProps instanceof XmlObject[]) ) throw new IllegalArgumentException("Refernece Props are expected to be an XmlObject[]!");
+ m_referenceProps = referenceProps;
+ }
+
+ /**
+ * @param referenceParameters XmlObject[] of refernece parameters to be added
+ */
+ public void setReferenceParameters(Object[] referenceParameters)
+ {
+ if( !(referenceParameters instanceof XmlObject[]) ) throw new IllegalArgumentException("Refernece Params are expected to be an XmlObject[]!");
+ m_referenceParameters = referenceParameters;
+ }
+
+ /**
+ * Adds the ResourceKey which will be added to the ReferenceProperties
+ *
+ * @param resourceKey
+ */
+ public void setResourceKey(ResourceKey resourceKey)
+ {
+ m_resourceKey = resourceKey;
+ }
}
Added: incubator/apollo/trunk/src/java/org/apache/ws/addressing/v2003_03/AddressingConstants.java
URL: http://svn.apache.org/viewcvs/incubator/apollo/trunk/src/java/org/apache/ws/addressing/v2003_03/AddressingConstants.java?rev=168653&view=auto
==============================================================================
--- incubator/apollo/trunk/src/java/org/apache/ws/addressing/v2003_03/AddressingConstants.java (added)
+++ incubator/apollo/trunk/src/java/org/apache/ws/addressing/v2003_03/AddressingConstants.java Fri May 6 14:16:28 2005
@@ -0,0 +1,35 @@
+/*=============================================================================*
+ * Copyright 2004 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.addressing.v2003_03;
+
+
+/**
+ * @author Sal Campana
+ */
+public interface AddressingConstants
+{
+ /** DOCUMENT_ME */
+ String NSURI_ADDRESSING_SCHEMA = "http://schemas.xmlsoap.org/ws/2003/03/addressing";
+
+ /**
+ * DOCUMENT_ME
+ */
+ String NSPREFIX_ADDRESSING_SCHEMA = "wsa";
+
+ String TO = "To";
+
+ String ACTION = "Action";
+}
\ No newline at end of file
Added: incubator/apollo/trunk/src/java/org/apache/ws/addressing/v2004_08_10/AddressingConstants.java
URL: http://svn.apache.org/viewcvs/incubator/apollo/trunk/src/java/org/apache/ws/addressing/v2004_08_10/AddressingConstants.java?rev=168653&view=auto
==============================================================================
--- incubator/apollo/trunk/src/java/org/apache/ws/addressing/v2004_08_10/AddressingConstants.java (added)
+++ incubator/apollo/trunk/src/java/org/apache/ws/addressing/v2004_08_10/AddressingConstants.java Fri May 6 14:16:28 2005
@@ -0,0 +1,35 @@
+/*=============================================================================*
+ * Copyright 2004 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.addressing.v2004_08_10;
+
+
+/**
+ * @author Sal Campana
+ */
+public interface AddressingConstants
+{
+ /** DOCUMENT_ME */
+ String NSURI_ADDRESSING_SCHEMA = "http://schemas.xmlsoap.org/ws/2004/08/addressing";
+
+ /**
+ * DOCUMENT_ME
+ */
+ String NSPREFIX_ADDRESSING_SCHEMA = "wsa";
+
+ String TO = "To";
+
+ String ACTION = "Action";
+}
\ No newline at end of file
Modified: incubator/apollo/trunk/src/java/org/apache/ws/resource/Resource.java
URL: http://svn.apache.org/viewcvs/incubator/apollo/trunk/src/java/org/apache/ws/resource/Resource.java?rev=168653&r1=168652&r2=168653&view=diff
==============================================================================
--- incubator/apollo/trunk/src/java/org/apache/ws/resource/Resource.java (original)
+++ incubator/apollo/trunk/src/java/org/apache/ws/resource/Resource.java Fri May 6 14:16:28 2005
@@ -16,6 +16,7 @@
package org.apache.ws.resource;
import org.apache.ws.resource.lifetime.ResourceTerminationListener;
+import org.apache.ws.addressing.EndpointReference;
/**
@@ -59,4 +60,11 @@
* @param listener
*/
void addTerminationListener( ResourceTerminationListener listener);
+
+ /**
+ * Returns the EndpointReference associated with this Resource.
+ *
+ * @return The Resource's EndpointReference
+ */
+ EndpointReference getEndpointReference();
}
Added: incubator/apollo/trunk/src/java/org/apache/ws/resource/ResourceCreation.java
URL: http://svn.apache.org/viewcvs/incubator/apollo/trunk/src/java/org/apache/ws/resource/ResourceCreation.java?rev=168653&view=auto
==============================================================================
--- incubator/apollo/trunk/src/java/org/apache/ws/resource/ResourceCreation.java (added)
+++ incubator/apollo/trunk/src/java/org/apache/ws/resource/ResourceCreation.java Fri May 6 14:16:28 2005
@@ -0,0 +1,24 @@
+package org.apache.ws.resource;
+
+/**
+ * An interface for exposing resource creation events.
+ *
+ * @author Sal Campana
+ */
+public interface ResourceCreation
+{
+ /**
+ * Adds a listener for ResourceCreationEvents
+ *
+ * @param listener
+ */
+ void addResourceCreationListener( ResourceCreationListener listener);
+
+ /**
+ * Removes a listener for ResourceCreationEvents
+ *
+ * @param listener
+ * @return true if the listener was removed, else false
+ */
+ boolean removeResourceCreationListener( ResourceCreationListener listener);
+}
Added: incubator/apollo/trunk/src/java/org/apache/ws/resource/ResourceCreationEvent.java
URL: http://svn.apache.org/viewcvs/incubator/apollo/trunk/src/java/org/apache/ws/resource/ResourceCreationEvent.java?rev=168653&view=auto
==============================================================================
--- incubator/apollo/trunk/src/java/org/apache/ws/resource/ResourceCreationEvent.java (added)
+++ incubator/apollo/trunk/src/java/org/apache/ws/resource/ResourceCreationEvent.java Fri May 6 14:16:28 2005
@@ -0,0 +1,29 @@
+package org.apache.ws.resource;
+
+import org.apache.ws.addressing.EndpointReference;
+
+/**
+ * A Resource Creation Event which contains the EndpointReference for
+ * the Resource which was created.
+ *
+ * @author Sal Campana
+ */
+public class ResourceCreationEvent implements ResourceEvent
+{
+ EndpointReference m_epr;
+
+ public ResourceCreationEvent(EndpointReference epr)
+ {
+ m_epr = epr;
+ }
+
+ /**
+ * Returns the EndpointRefrence for the Resource the event isassociated with.
+ *
+ * @return EndpointReference
+ */
+ public EndpointReference getEndpointReference()
+ {
+ return m_epr;
+ }
+}
Added: incubator/apollo/trunk/src/java/org/apache/ws/resource/ResourceCreationListener.java
URL: http://svn.apache.org/viewcvs/incubator/apollo/trunk/src/java/org/apache/ws/resource/ResourceCreationListener.java?rev=168653&view=auto
==============================================================================
--- incubator/apollo/trunk/src/java/org/apache/ws/resource/ResourceCreationListener.java (added)
+++ incubator/apollo/trunk/src/java/org/apache/ws/resource/ResourceCreationListener.java Fri May 6 14:16:28 2005
@@ -0,0 +1,18 @@
+package org.apache.ws.resource;
+
+/**
+ * This interface is provided for listeners to be able to be notified
+ * when a Resource is added to the ResourceHome. Addition to the home
+ * is viewed as the resource being created and accessible.
+ *
+ * @author Sal Campana
+ */
+public interface ResourceCreationListener
+{
+ /**
+ * Method to receive notifcations when resources are created (added to the home).
+ *
+ * @param rce
+ */
+ void creationOccurred(ResourceCreationEvent rce);
+}
Added: incubator/apollo/trunk/src/java/org/apache/ws/resource/ResourceDestruction.java
URL: http://svn.apache.org/viewcvs/incubator/apollo/trunk/src/java/org/apache/ws/resource/ResourceDestruction.java?rev=168653&view=auto
==============================================================================
--- incubator/apollo/trunk/src/java/org/apache/ws/resource/ResourceDestruction.java (added)
+++ incubator/apollo/trunk/src/java/org/apache/ws/resource/ResourceDestruction.java Fri May 6 14:16:28 2005
@@ -0,0 +1,24 @@
+package org.apache.ws.resource;
+
+/**
+ * An interface for exposing resource destruction events.
+ *
+ * @author Sal Campana
+ */
+public interface ResourceDestruction
+{
+ /**
+ * Adds a listener for ResourceDestructionEvents
+ *
+ * @param listener
+ */
+ void addResourceDestructionListener( ResourceDestructionListener listener);
+
+ /**
+ * Removes a listener for ResourceDestructionEvents
+ *
+ * @param listener
+ * @return true if the listener was removed, else false
+ */
+ boolean removeResourceDestructionListener( ResourceDestructionListener listener);
+}
Added: incubator/apollo/trunk/src/java/org/apache/ws/resource/ResourceDestructionEvent.java
URL: http://svn.apache.org/viewcvs/incubator/apollo/trunk/src/java/org/apache/ws/resource/ResourceDestructionEvent.java?rev=168653&view=auto
==============================================================================
--- incubator/apollo/trunk/src/java/org/apache/ws/resource/ResourceDestructionEvent.java (added)
+++ incubator/apollo/trunk/src/java/org/apache/ws/resource/ResourceDestructionEvent.java Fri May 6 14:16:28 2005
@@ -0,0 +1,29 @@
+package org.apache.ws.resource;
+
+import org.apache.ws.addressing.EndpointReference;
+
+/**
+ * A Resource Destruction Event which contains the EndpointReference for
+ * the Resource which was destroyed.
+ *
+ * @author Sal Campana
+ */
+public class ResourceDestructionEvent implements ResourceEvent
+{
+ EndpointReference m_epr;
+
+ public ResourceDestructionEvent(EndpointReference epr)
+ {
+ m_epr = epr;
+ }
+
+ /**
+ * Returns the EndpointRefrence for the Resource the event isassociated with.
+ *
+ * @return EndpointReference
+ */
+ public EndpointReference getEndpointReference()
+ {
+ return m_epr;
+ }
+}
Added: incubator/apollo/trunk/src/java/org/apache/ws/resource/ResourceDestructionListener.java
URL: http://svn.apache.org/viewcvs/incubator/apollo/trunk/src/java/org/apache/ws/resource/ResourceDestructionListener.java?rev=168653&view=auto
==============================================================================
--- incubator/apollo/trunk/src/java/org/apache/ws/resource/ResourceDestructionListener.java (added)
+++ incubator/apollo/trunk/src/java/org/apache/ws/resource/ResourceDestructionListener.java Fri May 6 14:16:28 2005
@@ -0,0 +1,18 @@
+package org.apache.ws.resource;
+
+/**
+ * This interface is provided for listeners to be able to be notified
+ * when a Resource is removed from the ResourceHome. Removal from the home
+ * is viewed as the resource being destroyed and unaccessible.
+ *
+ * @author Sal Campana
+ */
+public interface ResourceDestructionListener
+{
+ /**
+ * Method to receive notifcations when resources are deleted (removed from home).
+ *
+ * @param rde
+ */
+ void destructionOccurred( ResourceDestructionEvent rde );
+}
Added: incubator/apollo/trunk/src/java/org/apache/ws/resource/ResourceEvent.java
URL: http://svn.apache.org/viewcvs/incubator/apollo/trunk/src/java/org/apache/ws/resource/ResourceEvent.java?rev=168653&view=auto
==============================================================================
--- incubator/apollo/trunk/src/java/org/apache/ws/resource/ResourceEvent.java (added)
+++ incubator/apollo/trunk/src/java/org/apache/ws/resource/ResourceEvent.java Fri May 6 14:16:28 2005
@@ -0,0 +1,18 @@
+package org.apache.ws.resource;
+
+import org.apache.ws.addressing.EndpointReference;
+
+/**
+ * An interface defining a base event for resource destruction and creation.
+ *
+ * @author Sal Campana
+ */
+public interface ResourceEvent
+{
+ /**
+ * Returns the EndpointRefrence for the Resource the event isassociated with.
+ *
+ * @return EndpointReference
+ */
+ EndpointReference getEndpointReference();
+}
Modified: incubator/apollo/trunk/src/java/org/apache/ws/resource/ResourceHome.java
URL: http://svn.apache.org/viewcvs/incubator/apollo/trunk/src/java/org/apache/ws/resource/ResourceHome.java?rev=168653&r1=168652&r2=168653&view=diff
==============================================================================
--- incubator/apollo/trunk/src/java/org/apache/ws/resource/ResourceHome.java (original)
+++ incubator/apollo/trunk/src/java/org/apache/ws/resource/ResourceHome.java Fri May 6 14:16:28 2005
@@ -15,6 +15,7 @@
*=============================================================================*/
package org.apache.ws.resource;
+import org.apache.ws.addressing.EndpointReference;
/**
@@ -23,7 +24,7 @@
* have its own custom implementation the <code>ResourceHome</code> interface. The implementation is expected to provide
* custom methods for creating new resources and optionally methods that act on a set of resource objects.
*/
-public interface ResourceHome
+public interface ResourceHome extends ResourceCreation, ResourceDestruction
{
/**
* The resource key type. The <code>ResourceKey</code> used or passed to this <code>ResourceHome</code> must have
@@ -134,4 +135,6 @@
throws ResourceException,
ResourceContextException,
ResourceUnknownException;
+
+ EndpointReference getEndpointReference(String endpointAddress, ResourceKey key, String wsAddressingURI);
}
Modified: incubator/apollo/trunk/src/java/org/apache/ws/resource/impl/AbstractResourceHome.java
URL: http://svn.apache.org/viewcvs/incubator/apollo/trunk/src/java/org/apache/ws/resource/impl/AbstractResourceHome.java?rev=168653&r1=168652&r2=168653&view=diff
==============================================================================
--- incubator/apollo/trunk/src/java/org/apache/ws/resource/impl/AbstractResourceHome.java (original)
+++ incubator/apollo/trunk/src/java/org/apache/ws/resource/impl/AbstractResourceHome.java Fri May 6 14:16:28 2005
@@ -20,10 +20,16 @@
import org.apache.commons.collections.map.ReferenceMap;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.ws.addressing.EndpointReference;
+import org.apache.ws.addressing.XmlBeansEndpointReference;
import org.apache.ws.resource.InvalidResourceKeyException;
import org.apache.ws.resource.JndiConstants;
import org.apache.ws.resource.PersistenceCallback;
import org.apache.ws.resource.Resource;
+import org.apache.ws.resource.ResourceCreationEvent;
+import org.apache.ws.resource.ResourceCreationListener;
+import org.apache.ws.resource.ResourceDestructionEvent;
+import org.apache.ws.resource.ResourceDestructionListener;
import org.apache.ws.resource.ResourceException;
import org.apache.ws.resource.ResourceHome;
import org.apache.ws.resource.ResourceKey;
@@ -41,8 +47,11 @@
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
+import javax.xml.namespace.QName;
+import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
/**
@@ -123,8 +132,10 @@
private Class m_resourceClass;
private Class m_serviceClass;
private Class m_resourceKeyClass;
+ private List m_creationListeners = new ArrayList();
+ private List m_destructionListeners = new ArrayList();
- /**
+ /**
* DOCUMENT_ME
*
* @param jndiLocation DOCUMENT_ME
@@ -408,6 +419,7 @@
m_resources.remove( getLookupKey(key) );
+ notifyResourceDeletedListeners(resource.getEndpointReference());
LOG.debug( MSG.getMessage( Keys.REMOVED_RESOURCE_WITH_KEY, resource.getClass( ).getName( ) ,String.valueOf(key) ));
if ( m_cache != null )
@@ -420,7 +432,7 @@
lock.release( );
}
- // TODO: send resource-terminated notification
+
}
/**
@@ -440,13 +452,19 @@
}
/**
- * DOCUMENT_ME
+ * This method uses reflection to create an instance of a Resource which contains
+ * an empty constructor. It will not work with Resources which do not have an
+ * empty constructor.
+ *
+ * Note: the returned Resource will not have an EndpointReference associated with it.
+ * The caller should next call getEndpointReference and then use a setter on
+ * their resource impl.
*
- * @param key DOCUMENT_ME
- * @return DOCUMENT_ME
+ * @param key The resource key for this resource.
+ * @return The resource type which is associated with this home.
*
- * @throws ResourceException DOCUMENT_ME
- * @throws IllegalStateException DOCUMENT_ME
+ * @throws ResourceException
+ * @throws IllegalStateException
*/
protected Resource createInstance(ResourceKey key)
throws ResourceException
@@ -523,6 +541,8 @@
{
m_sweeper.schedule( );
}
+
+ notifyResourceCreatedListeners(resource.getEndpointReference());
}
private Resource get( ResourceKey key )
@@ -678,4 +698,107 @@
}
}
}
+
+ /**
+ * Adds a listener for ResourceCreationEvents
+ *
+ * @param listener
+ */
+ public void addResourceCreationListener(ResourceCreationListener listener)
+ {
+ m_creationListeners.add(listener);
+ }
+
+ /**
+ * Adds a listener for ResourceDestructionEvents
+ *
+ * @param listener
+ */
+ public void addResourceDestructionListener(ResourceDestructionListener listener)
+ {
+ m_destructionListeners.add(listener);
+ }
+
+ /**
+ * Removes a listener for ResourceCreationEvents
+ *
+ * @param listener
+ * @return true if the listener was removed, else false
+ */
+ public boolean removeResourceCreationListener(ResourceCreationListener listener)
+ {
+ return m_creationListeners.remove(listener);
+ }
+
+ /**
+ * Removes a listener for ResourceDestructionEvents
+ *
+ * @param listener
+ * @return true if the listener was removed, else false
+ */
+ public boolean removeResourceDestructionListener(ResourceDestructionListener listener)
+ {
+ return m_destructionListeners.remove(listener);
+ }
+
+ /**
+ * This method is used to notify listeners a resource has been created.
+ *
+ * @param epr The EndpointReference for the Resource which was created
+ */
+ private void notifyResourceCreatedListeners(EndpointReference epr)
+ {
+ for (int i = 0; i < m_creationListeners.size(); i++)
+ {
+ ResourceCreationListener resourceCreationListener = (ResourceCreationListener) m_creationListeners.get(i);
+ resourceCreationListener.creationOccurred(new ResourceCreationEvent(epr));
+ }
+ }
+
+ /**
+ * This method is used to notify listeners a resource has been deleted.
+ *
+ * @param epr The EndpointReference for the Resource which was created
+ */
+ private void notifyResourceDeletedListeners(EndpointReference epr)
+ {
+ for (int i = 0; i < m_destructionListeners.size(); i++)
+ {
+ ResourceDestructionListener resourceDestructionListener = (ResourceDestructionListener) m_destructionListeners.get(i);
+ resourceDestructionListener.destructionOccurred(new ResourceDestructionEvent(epr));
+ }
+ }
+
+ /**
+ * Returns the EndpointReference associated with this Resource.
+ * Only the required fields will be filled in (i.e. Address) AND the ReferenceProperty for the ResourceKey (if not a singleton)
+ *
+ * If the resourceKeyis not equal to null ( not a singleton ), The reference properties will contain the key.
+ *
+ * @param endpointAddress The endpoint url for the service
+ * @param key The resourceKey for the Resource or null if singleton
+ * @param wsAddressingURI The WS-Addressing URI
+ *
+ * @return The Resource's EndpointReference
+ */
+ public EndpointReference getEndpointReference(String endpointAddress, ResourceKey key, String wsAddressingURI)
+ {
+ XmlBeansEndpointReference xmlBeansEndpointReference = new XmlBeansEndpointReference(endpointAddress, wsAddressingURI);
+ xmlBeansEndpointReference.setResourceKey(key);
+ xmlBeansEndpointReference.setPortTypeQName(getPortType());
+ xmlBeansEndpointReference.setServicePortName(getServicePortName());
+ xmlBeansEndpointReference.setServiceQName(getServiceName());
+ return xmlBeansEndpointReference;
+ }
+ public abstract QName getServiceName();
+
+
+ public abstract QName getPortType();
+
+
+ public abstract String getServicePortName();
+
+
+ public abstract QName getResourceKeyNameQName();
+
}
Modified: incubator/apollo/trunk/src/java/org/apache/ws/resource/lifetime/ScheduledResourceTerminationResource.java
URL: http://svn.apache.org/viewcvs/incubator/apollo/trunk/src/java/org/apache/ws/resource/lifetime/ScheduledResourceTerminationResource.java?rev=168653&r1=168652&r2=168653&view=diff
==============================================================================
--- incubator/apollo/trunk/src/java/org/apache/ws/resource/lifetime/ScheduledResourceTerminationResource.java (original)
+++ incubator/apollo/trunk/src/java/org/apache/ws/resource/lifetime/ScheduledResourceTerminationResource.java Fri May 6 14:16:28 2005
@@ -48,10 +48,4 @@
*/
Calendar getTerminationTime( );
- /**
- * Adds a listener to be invoked when the resource has been terminated.
- *
- * @param listener
- */
- void addTerminationListener( ResourceTerminationListener listener);
}
Modified: incubator/apollo/trunk/src/templates/AbstractResource.vm
URL: http://svn.apache.org/viewcvs/incubator/apollo/trunk/src/templates/AbstractResource.vm?rev=168653&r1=168652&r2=168653&view=diff
==============================================================================
--- incubator/apollo/trunk/src/templates/AbstractResource.vm (original)
+++ incubator/apollo/trunk/src/templates/AbstractResource.vm Fri May 6 14:16:28 2005
@@ -5,6 +5,8 @@
package $package;
+import org.apache.ws.addressing.EndpointReference;
+
/**
* An abstract $serviceName WS-Resource.
* <p/>
@@ -18,6 +20,8 @@
*/
protected String m_id;
+ /** The EndpointReference for this resource **/
+ protected EndpointReference m_endpointReference;
#if($generated.hasProperties)
/**
@@ -99,6 +103,31 @@
#end
}
+
+ /**
+ * Returns the EndpointReference associated with this Resource.
+ *
+ * @return The Resource's EndpointReference or null if the EndpointReference has not been set.
+ *
+ * Note: It is the responsibility of the Resource creator to set the EndpointReference (i.e. ResourceHome impl)
+ */
+ public EndpointReference getEndpointReference()
+ {
+ return m_endpointReference;
+ }
+
+ /**
+ * Sets the EndpointReference associated with this Resource.
+ *
+ * @param epr The Resource's EndpointReference.
+ *
+ * Note: It is the responsibility of the Resource creator to set the EndpointReference (i.e. ResourceHome impl)
+ */
+ public void setEndpointReference(EndpointReference epr)
+ {
+ m_endpointReference = epr;
+ }
+
#foreach( $includeFile in $generated.ResourceIncludeFiles )
#include( $includeFile )
Modified: incubator/apollo/trunk/src/templates/Home.vm
URL: http://svn.apache.org/viewcvs/incubator/apollo/trunk/src/templates/Home.vm?rev=168653&r1=168652&r2=168653&view=diff
==============================================================================
--- incubator/apollo/trunk/src/templates/Home.vm (original)
+++ incubator/apollo/trunk/src/templates/Home.vm Fri May 6 14:16:28 2005
@@ -1,6 +1,10 @@
#set( $package = $generated.packageName )
#set( $capitalServiceName = $generated.ServiceName )
#set( $lowerCaseServiceName = $generated.EndpointServiceName )
+#set( $namespaceVersionHolder = $generated.NamespaceVersionHolder)
+#set( $endpointServiceName = $generated.ServiceQName)
+#set( $portName = $generated.PortName)
+#set( $portTypeName = $generated.PortTypeQName)
package $package;
@@ -11,6 +15,9 @@
import org.apache.ws.resource.ResourceKey;
import org.apache.ws.resource.ResourceUnknownException;
import org.apache.ws.resource.impl.AbstractResourceHome;
+import org.apache.ws.addressing.EndpointReference;
+
+import javax.xml.namespace.QName;
import java.io.Serializable;
@@ -22,22 +29,37 @@
implements Serializable
{
- /** The service name associated with this home. **/
- private static final String SERVICE_NAME = "${lowerCaseServiceName}";
+ /** The service endpoint name as registered with the SOAP Platform. This is useful for building EPR's. **/
+ public static final QName SERVICE_NAME = javax.xml.namespace.QName.valueOf("${endpointServiceName}");
+
+ /** The management PortType associated with this resource. This is useful for building EPR's.**/
+ public static final QName PORT_TYPE = javax.xml.namespace.QName.valueOf("${portTypeName}");
+
+ /** The WSDL Port name associated with the resource. This is useful for building EPR's. **/
+ public static final String PORT_NAME = "${portName}";
+
+ /** The name of the resource key for this resource. **/
+ public static final QName RESOURCE_KEY_NAME = javax.xml.namespace.QName.valueOf("{${resourcekey.NamespaceURI}}${resourcekey.LocalPart}");
+ #if($namespaceVersionHolder)
+ /**
+ * A NamespaceVerionHolder which maintains the QNames of Spec Wsdls
+ */
+ $namespaceVersionHolder
+ #end
/** A constant for the JNDI Lookup name for this home. **/
public static final String HOME_LOCATION =
- org.apache.ws.resource.JndiConstants.CONTEXT_NAME_SERVICES + "/" + SERVICE_NAME + "/" + org.apache.ws.resource.JndiConstants.ATOMIC_NAME_HOME;
+ org.apache.ws.resource.JndiConstants.CONTEXT_NAME_SERVICES + "/" + SERVICE_NAME.getLocalPart() + "/" + org.apache.ws.resource.JndiConstants.ATOMIC_NAME_HOME;
/**
*
- * @param resourceContext DOCUMENT_ME
+ * @param resourceContext
*
- * @return DOCUMENT_ME
+ * @return A Resource
*
- * @throws ResourceException DOCUMENT_ME
- * @throws ResourceContextException DOCUMENT_ME
- * @throws ResourceUnknownException DOCUMENT_ME
+ * @throws ResourceException
+ * @throws ResourceContextException
+ * @throws ResourceUnknownException
*/
public Resource getInstance( ResourceContext resourceContext )
throws ResourceException,
@@ -53,8 +75,33 @@
catch ( ResourceException re )
{
//TODO add any checking for key validity
+
+ /**
+ * You can build an EndpointReference for a Resource you create by uncommenting the following code.
+ * Note: You can set the EndpointReference on your Resource using the setter (not in Resource interface)
+ */
+ //EndpointReference epr = getEndpointReference(resourceContext.getBaseURL( ) + "/" + getServiceName().getLocalPart() , key, SPEC_NAMESPACE_SET.getAddressingNamespace())
}
return resource;
}
-
+
+ public QName getServiceName()
+ {
+ return SERVICE_NAME;
+ }
+
+ public QName getPortType()
+ {
+ return PORT_TYPE;
+ }
+
+ public String getServicePortName()
+ {
+ return PORT_NAME;
+ }
+
+ public QName getResourceKeyNameQName()
+ {
+ return RESOURCE_KEY_NAME;
+ }
}
Modified: incubator/apollo/trunk/src/templates/Resource.vm
URL: http://svn.apache.org/viewcvs/incubator/apollo/trunk/src/templates/Resource.vm?rev=168653&r1=168652&r2=168653&view=diff
==============================================================================
--- incubator/apollo/trunk/src/templates/Resource.vm (original)
+++ incubator/apollo/trunk/src/templates/Resource.vm Fri May 6 14:16:28 2005
@@ -1,9 +1,6 @@
#set( $package = $generated.packageName)
#set( $serviceName = $generated.serviceName)
#set( $namespaceVersionHolder = $generated.NamespaceVersionHolder)
-#set( $endpointServiceName = $generated.ServiceQName)
-#set( $portName = $generated.PortName)
-#set( $portTypeName = $generated.PortTypeQName)
package $package;
@@ -16,16 +13,6 @@
{
- /** The service endpoint name as registered with the SOAP Platform. This is useful for building EPR's. **/
- public static final javax.xml.namespace.QName SERVICE_NAME = javax.xml.namespace.QName.valueOf("${endpointServiceName}");
-
-
- /** The management PortType associated with this resource. This is useful for building EPR's.**/
- public static final javax.xml.namespace.QName PORT_TYPE = javax.xml.namespace.QName.valueOf("${portTypeName}");
-
- /**The WSDL Port name associated with the resource. This is useful for building EPR's.**/
- public static final String PORT_NAME = "${portName}";
-
#if($namespaceVersionHolder)
/**
* A NamespaceVerionHolder which maintains the QNames of Spec Wsdls
Modified: incubator/apollo/trunk/src/test/org/apache/ws/resource/properties/SushiHome.java
URL: http://svn.apache.org/viewcvs/incubator/apollo/trunk/src/test/org/apache/ws/resource/properties/SushiHome.java?rev=168653&r1=168652&r2=168653&view=diff
==============================================================================
--- incubator/apollo/trunk/src/test/org/apache/ws/resource/properties/SushiHome.java (original)
+++ incubator/apollo/trunk/src/test/org/apache/ws/resource/properties/SushiHome.java Fri May 6 14:16:28 2005
@@ -40,6 +40,18 @@
implements Serializable
{
+ /** The service endpoint name as registered with the SOAP Platform. This is useful for building EPR's. **/
+ public static final QName SERVICE_NAME = javax.xml.namespace.QName.valueOf("{http://ws.apache.org/resource/properties/test/sushi}sushi");
+
+ /** The management PortType associated with this resource. This is useful for building EPR's.**/
+ public static final QName PORT_TYPE = javax.xml.namespace.QName.valueOf("{http://ws.apache.org/resource/properties/test/sushi}sushi");
+
+ /** The WSDL Port name associated with the resource. This is useful for building EPR's. **/
+ public static final String PORT_NAME = "sushi";
+
+ /** The name of the resource key for this resource. **/
+ public static final QName RESOURCE_KEY_NAME = javax.xml.namespace.QName.valueOf("{http://ws.apache.org/resource/properties/test/sushi}ResourceID");
+
/**
* DOCUMENT_ME
*/
@@ -118,5 +130,25 @@
public void setResourcePropsDocPath( String propsDoc )
{
SushiHome.RESOURCE_PROPS_RESOURCE_PATH = propsDoc;
+ }
+
+ public QName getServiceName()
+ {
+ return SERVICE_NAME;
+ }
+
+ public QName getPortType()
+ {
+ return PORT_TYPE;
+ }
+
+ public String getServicePortName()
+ {
+ return PORT_NAME;
+ }
+
+ public QName getResourceKeyNameQName()
+ {
+ return RESOURCE_KEY_NAME;
}
}
Modified: incubator/apollo/trunk/src/test/org/apache/ws/resource/properties/SushiResource.java
URL: http://svn.apache.org/viewcvs/incubator/apollo/trunk/src/test/org/apache/ws/resource/properties/SushiResource.java?rev=168653&r1=168652&r2=168653&view=diff
==============================================================================
--- incubator/apollo/trunk/src/test/org/apache/ws/resource/properties/SushiResource.java (original)
+++ incubator/apollo/trunk/src/test/org/apache/ws/resource/properties/SushiResource.java Fri May 6 14:16:28 2005
@@ -15,18 +15,15 @@
*=============================================================================*/
package org.apache.ws.resource.properties;
-import org.apache.ws.resource.Resource;
+import org.apache.ws.addressing.EndpointReference;
import org.apache.ws.resource.PropertiesResource;
-import org.apache.ws.resource.lifetime.ResourceTerminationListener;
+import org.apache.ws.resource.Resource;
import org.apache.ws.resource.lifetime.ResourceTerminationEvent;
-import org.apache.ws.resource.lifetime.impl.ResourceTerminationEventImpl;
-import org.apache.ws.resource.lifetime.impl.ResourceTerminationEventImpl;
-import org.apache.ws.resource.lifetime.impl.AbstractResourceTerminationEvent;
+import org.apache.ws.resource.lifetime.ResourceTerminationListener;
import org.apache.ws.resource.lifetime.impl.ResourceTerminationEventImpl;
-import java.util.Map;
-import java.util.List;
import java.util.ArrayList;
+import java.util.List;
/**
* @author Sal Campana
@@ -49,6 +46,9 @@
*/
private List m_terminationListeners = new ArrayList();
+ /** The EndpointReference for this resource **/
+ protected EndpointReference m_endpointReference;
+
/**
* DOCUMENT_ME
*
@@ -127,4 +127,17 @@
{
return m_propSet;
}
+
+ /**
+ * Returns the EndpointReference associated with this Resource.
+ *
+ * @return The Resource's EndpointReference or null if the EndpointReference has not been set.
+ *
+ * Note: It is the responsibility of the Resource creator to set the EndpointReference (i.e. ResourceHome impl)
+ */
+ public org.apache.ws.addressing.EndpointReference getEndpointReference()
+ {
+ return m_endpointReference;
+ }
+
}
---------------------------------------------------------------------
To unsubscribe, e-mail: apollo-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: apollo-dev-help@ws.apache.org