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