You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@avalon.apache.org by do...@apache.org on 2002/06/06 05:04:50 UTC
cvs commit: jakarta-avalon-excalibur/containerkit/src/java/org/apache/excalibur/containerkit/metainfo ComponentDescriptor.java DependencyDescriptor.java ServiceDescriptor.java
donaldp 2002/06/05 20:04:50
Modified: containerkit/src/java/org/apache/excalibur/containerkit/metainfo
ComponentDescriptor.java DependencyDescriptor.java
ServiceDescriptor.java
Log:
Allow all the descriptors to have arbitrary attributes associated with them. This allows containers to do container specific magic with out resorting to subclassing.
Revision Changes Path
1.5 +17 -3 jakarta-avalon-excalibur/containerkit/src/java/org/apache/excalibur/containerkit/metainfo/ComponentDescriptor.java
Index: ComponentDescriptor.java
===================================================================
RCS file: /home/cvs/jakarta-avalon-excalibur/containerkit/src/java/org/apache/excalibur/containerkit/metainfo/ComponentDescriptor.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- ComponentDescriptor.java 6 Jun 2002 02:46:06 -0000 1.4
+++ ComponentDescriptor.java 6 Jun 2002 03:04:50 -0000 1.5
@@ -49,7 +49,7 @@
* </pre>
*
* @author <a href="mailto:peter@apache.org">Peter Donald</a>
- * @version $Revision: 1.4 $ $Date: 2002/06/06 02:46:06 $
+ * @version $Revision: 1.5 $ $Date: 2002/06/06 03:04:50 $
*/
public class ComponentDescriptor
{
@@ -140,7 +140,14 @@
*/
public String getAttribute( final String key )
{
- return m_attributes.getProperty( key );
+ if( null == m_attributes )
+ {
+ return null;
+ }
+ else
+ {
+ return m_attributes.getProperty( key );
+ }
}
/**
@@ -151,6 +158,13 @@
public String getAttribute( final String key,
final String defaultValue )
{
- return m_attributes.getProperty( key, defaultValue );
+ if( null == m_attributes )
+ {
+ return defaultValue;
+ }
+ else
+ {
+ return m_attributes.getProperty( key, defaultValue );
+ }
}
}
1.3 +68 -5 jakarta-avalon-excalibur/containerkit/src/java/org/apache/excalibur/containerkit/metainfo/DependencyDescriptor.java
Index: DependencyDescriptor.java
===================================================================
RCS file: /home/cvs/jakarta-avalon-excalibur/containerkit/src/java/org/apache/excalibur/containerkit/metainfo/DependencyDescriptor.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- DependencyDescriptor.java 4 Jun 2002 07:46:29 -0000 1.2
+++ DependencyDescriptor.java 6 Jun 2002 03:04:50 -0000 1.3
@@ -7,6 +7,8 @@
*/
package org.apache.excalibur.containerkit.metainfo;
+import java.util.Properties;
+
/**
* A descriptor that describes dependency information for
* a particular Component. This class contains information
@@ -16,12 +18,21 @@
* <li>service: the class/interface that the dependency must provide</li>
* </ul>
*
- * <p>Note that in the future we may also add information relating to
- * constraints on dependency. ie The dependency must be configured in
- * particular fashion or must be able to provide certain facilities etc</p>
+ * <p>Also associated with each dependency is a set of arbitrary
+ * attributes that can be used to store extra information
+ * about dependency. See {@link ComponentDescriptor} for example
+ * of how to declare the container specific attributes.</p>
+ *
+ * <p>Possible uses for the attributes are to declare container
+ * specific constraints of component. For example a dependency on
+ * a Corba ORB may also require that the Corba ORB contain the
+ * TimeServer and PersistenceStateService at initialization. Or it
+ * may require that the componenet be multi-thread safe or that
+ * it is persistent etc. These are all container specific
+ * demands.</p>
*
* @author <a href="mailto:peter@apache.org">Peter Donald</a>
- * @version $Revision: 1.2 $ $Date: 2002/06/04 07:46:29 $
+ * @version $Revision: 1.3 $ $Date: 2002/06/06 03:04:50 $
*/
public final class DependencyDescriptor
{
@@ -36,12 +47,29 @@
private final ServiceDescriptor m_service;
/**
+ * The arbitrary set of attributes associated with Dependency.
+ */
+ private final Properties m_attributes;
+
+ /**
+ * Constructor a dependency sans Attributes.
+ */
+ public DependencyDescriptor( final String role,
+ final ServiceDescriptor service )
+ {
+ this( role, service, null );
+ }
+
+ /**
* Constructor that has all parts as parameters.
*/
- public DependencyDescriptor( final String role, final ServiceDescriptor service )
+ public DependencyDescriptor( final String role,
+ final ServiceDescriptor service,
+ final Properties attributes )
{
m_role = role;
m_service = service;
+ m_attributes = attributes;
}
/**
@@ -62,5 +90,40 @@
public ServiceDescriptor getService()
{
return m_service;
+ }
+
+ /**
+ * Return the attribute for specified key.
+ *
+ * @return the attribute for specified key.
+ */
+ public String getAttribute( final String key )
+ {
+ if( null == m_attributes )
+ {
+ return null;
+ }
+ else
+ {
+ return m_attributes.getProperty( key );
+ }
+ }
+
+ /**
+ * Return the attribute for specified key.
+ *
+ * @return the attribute for specified key.
+ */
+ public String getAttribute( final String key,
+ final String defaultValue )
+ {
+ if( null == m_attributes )
+ {
+ return defaultValue;
+ }
+ else
+ {
+ return m_attributes.getProperty( key, defaultValue );
+ }
}
}
1.3 +70 -2 jakarta-avalon-excalibur/containerkit/src/java/org/apache/excalibur/containerkit/metainfo/ServiceDescriptor.java
Index: ServiceDescriptor.java
===================================================================
RCS file: /home/cvs/jakarta-avalon-excalibur/containerkit/src/java/org/apache/excalibur/containerkit/metainfo/ServiceDescriptor.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- ServiceDescriptor.java 4 Jun 2002 07:46:29 -0000 1.2
+++ ServiceDescriptor.java 6 Jun 2002 03:04:50 -0000 1.3
@@ -8,6 +8,7 @@
package org.apache.excalibur.containerkit.metainfo;
import org.apache.avalon.framework.Version;
+import java.util.Properties;
/**
* This descriptor defines the type of service offerend or required
@@ -16,8 +17,19 @@
* classname is a version object so that different versions of same
* interface can be represented.
*
+ * <p>Also associated with each service is a set of arbitrary
+ * attributes that can be used to store extra information
+ * about service. See {@link ComponentDescriptor} for example
+ * of how to declare the container specific attributes.</p>
+ *
+ * <p>Possible uses for the attributes are to declare a service
+ * as "stateless", "pass-by-value", "remotable" or even to attach
+ * attributes such as security or transaction constraints. These
+ * attributes are container specific and should not be relied
+ * upon to work in all containers.</p>
+ *
* @author <a href="mailto:peter@apache.org">Peter Donald</a>
- * @version $Revision: 1.2 $ $Date: 2002/06/04 07:46:29 $
+ * @version $Revision: 1.3 $ $Date: 2002/06/06 03:04:50 $
*/
public final class ServiceDescriptor
{
@@ -32,6 +44,11 @@
private final Version m_version;
/**
+ * The arbitrary set of attributes associated with service.
+ */
+ private final Properties m_attributes;
+
+ /**
* Construct a service with specified name and version.
*
* @param name the name of the service
@@ -39,8 +56,23 @@
*/
public ServiceDescriptor( final String name, final Version version )
{
+ this( name, version, null );
+ }
+
+ /**
+ * Construct a service with specified name, version and attributes.
+ *
+ * @param name the name of the service
+ * @param version the version of service
+ * @param attributes the attributes of service
+ */
+ public ServiceDescriptor( final String name,
+ final Version version,
+ final Properties attributes )
+ {
m_name = name;
m_version = version;
+ m_attributes = attributes;
}
/**
@@ -75,7 +107,8 @@
{
return
other.getName().equals( m_name ) &&
- other.getVersion().complies( m_version );
+ other.getVersion().complies( m_version ) &&
+ other.m_attributes.equals( m_attributes );
}
/**
@@ -86,5 +119,40 @@
public String toString()
{
return m_name + "/" + m_version;
+ }
+
+ /**
+ * Return the attribute for specified key.
+ *
+ * @return the attribute for specified key.
+ */
+ public String getAttribute( final String key )
+ {
+ if( null == m_attributes )
+ {
+ return null;
+ }
+ else
+ {
+ return m_attributes.getProperty( key );
+ }
+ }
+
+ /**
+ * Return the attribute for specified key.
+ *
+ * @return the attribute for specified key.
+ */
+ public String getAttribute( final String key,
+ final String defaultValue )
+ {
+ if( null == m_attributes )
+ {
+ return defaultValue;
+ }
+ else
+ {
+ return m_attributes.getProperty( key, defaultValue );
+ }
}
}
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>