You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@avalon.apache.org by do...@apache.org on 2001/04/23 12:14:06 UTC
cvs commit: jakarta-avalon/src/java/org/apache/avalon/context ContextException.java Context.java Contextualizable.java DefaultContext.java
donaldp 01/04/23 03:14:06
Modified: src/java/org/apache/avalon/context Context.java
Contextualizable.java DefaultContext.java
Added: src/java/org/apache/avalon/context ContextException.java
Log:
Update Context to throw ContextException
Revision Changes Path
1.2 +26 -1 jakarta-avalon/src/java/org/apache/avalon/context/Context.java
Index: Context.java
===================================================================
RCS file: /home/cvs/jakarta-avalon/src/java/org/apache/avalon/context/Context.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- Context.java 2001/04/18 12:35:08 1.1
+++ Context.java 2001/04/23 10:13:59 1.2
@@ -8,12 +8,37 @@
package org.apache.avalon.context;
/**
+ * The context is the interface through which the Component
+ * and it's Container communicate.
+ *
+ * Each Container-Component relationship will also involve defining
+ * a contract between two entities. This contract will specify the
+ * services, settings and information that is supplied by the
+ * Container to the Component.
*
+ * This relationship should be documented in a well known place.
+ * It is sometimes convenient to derive from Context to provide
+ * a particular style of Context for your Component-Container
+ * relationship. The documentation for required entries in context
+ * can then be defined there. (examples include MailetContext,
+ * BlockContext etc.)
+ *
* @author <a href="mailto:fede@apache.org">Federico Barbieri</a>
* @author <a href="mailto:pier@apache.org">Pierpaolo Fumagalli</a>
* @author <a href="mailto:stefano@apache.org">Stefano Mazzocchi</a>
+ * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
*/
public interface Context
{
- Object get( Object key );
+ /**
+ * Retrieve an object from Context.
+ *
+ * @param key the key into context
+ * @return the object
+ * @exception ContextException if object not found. Note that this
+ * means that either Component is asking for invalid entry
+ * or the Container is not living up to contract.
+ */
+ Object get( Object key )
+ throws ContextException;
}
1.2 +2 -1 jakarta-avalon/src/java/org/apache/avalon/context/Contextualizable.java
Index: Contextualizable.java
===================================================================
RCS file: /home/cvs/jakarta-avalon/src/java/org/apache/avalon/context/Contextualizable.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- Contextualizable.java 2001/04/18 12:35:09 1.1
+++ Contextualizable.java 2001/04/23 10:14:00 1.2
@@ -24,5 +24,6 @@
* after configure but before any other method.
*
*/
- void contextualize( Context context );
+ void contextualize( Context context )
+ throws ContextException;
}
1.2 +8 -1 jakarta-avalon/src/java/org/apache/avalon/context/DefaultContext.java
Index: DefaultContext.java
===================================================================
RCS file: /home/cvs/jakarta-avalon/src/java/org/apache/avalon/context/DefaultContext.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- DefaultContext.java 2001/04/18 12:35:09 1.1
+++ DefaultContext.java 2001/04/23 10:14:01 1.2
@@ -47,12 +47,19 @@
}
public Object get( final Object key )
+ throws ContextException
{
final Object data = m_contextData.get( key );
- if( null == m_parent || null != data )
+ if( null != data )
{
return data;
+ }
+
+ //thus data == null
+ if( null == m_parent )
+ {
+ throw new ContextException( "Unable to locate " + key );
}
return m_parent.get( key );
1.1 jakarta-avalon/src/java/org/apache/avalon/context/ContextException.java
Index: ContextException.java
===================================================================
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE file.
*/
package org.apache.avalon.context;
import org.apache.avalon.CascadingException;
/**
* Exception signalling a badly formed Context.
*
* This can be thrown by Context object when a entry is not
* found. It can also be thrown manually in contextualize()
* when Component detects a malformed context value.
*
* @author <a href="mailto:mail@leosimons.com">Leo Simons</a>
* @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
*/
public class ContextException
extends CascadingException
{
/**
* Construct a new <code>ContextException</code> instance.
*
* @param message The detail message for this exception.
*/
public ContextException( final String message )
{
this( message, null );
}
/**
* Construct a new <code>ContextException</code> instance.
*
* @param message The detail message for this exception.
* @param throwable the root cause of the exception
*/
public ContextException( final String message, final Throwable throwable )
{
super( message, throwable );
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: avalon-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: avalon-dev-help@jakarta.apache.org