[java-opensaml COMMIT] in /trunk/opensaml-messaging-api/src: main/java/org/opensaml/messaging/context/AbstractContext...

noreply at shibboleth.net noreply at shibboleth.net
Thu Jan 26 04:22:08 GMT 2012


Author: putmanb
Date: Thu Jan 26 04:22:08 2012
New Revision: 2933

URL: http://svn.shibboleth.net/view/java-opensaml?rev=2933&view=rev
Log:
Eliminate Context and MessageContext interfaces, replace with a abstract BaseContext impl and a new concrete MessageContext impl.

Added:
    trunk/opensaml-messaging-api/src/main/java/org/opensaml/messaging/context/BaseContext.java
      - copied, changed from r2932, trunk/opensaml-messaging-api/src/main/java/org/opensaml/messaging/context/AbstractContext.java
    trunk/opensaml-messaging-api/src/test/java/org/opensaml/messaging/context/BaseContextTest.java
      - copied, changed from r2932, trunk/opensaml-messaging-api/src/test/java/org/opensaml/messaging/context/AbstractContextTest.java
Removed:
    trunk/opensaml-messaging-api/src/main/java/org/opensaml/messaging/context/AbstractContext.java
    trunk/opensaml-messaging-api/src/main/java/org/opensaml/messaging/context/Context.java
    trunk/opensaml-messaging-api/src/main/java/org/opensaml/messaging/context/MessageContext.java
    trunk/opensaml-messaging-api/src/test/java/org/opensaml/messaging/context/AbstractContextTest.java
Modified:
    trunk/opensaml-messaging-api/src/main/java/org/opensaml/messaging/context/BasicInOutOperationContext.java
    trunk/opensaml-messaging-api/src/main/java/org/opensaml/messaging/context/BasicMessageContext.java
    trunk/opensaml-messaging-api/src/main/java/org/opensaml/messaging/context/BasicMessageMetadataSubcontext.java
    trunk/opensaml-messaging-api/src/test/java/org/opensaml/messaging/context/TestContext.java

Copied: trunk/opensaml-messaging-api/src/main/java/org/opensaml/messaging/context/BaseContext.java (from r2932, trunk/opensaml-messaging-api/src/main/java/org/opensaml/messaging/context/AbstractContext.java)
URL: http://svn.shibboleth.net/view/java-opensaml/trunk/opensaml-messaging-api/src/main/java/org/opensaml/messaging/context/BaseContext.java?p2=trunk/opensaml-messaging-api/src/main/java/org/opensaml/messaging/context/BaseContext.java&p1=trunk/opensaml-messaging-api/src/main/java/org/opensaml/messaging/context/AbstractContext.java&r1=2932&r2=2933&rev=2933&view=diff
==============================================================================
--- trunk/opensaml-messaging-api/src/main/java/org/opensaml/messaging/context/AbstractContext.java (original)
+++ trunk/opensaml-messaging-api/src/main/java/org/opensaml/messaging/context/BaseContext.java Thu Jan 26 04:22:08 2012
@@ -23,6 +23,7 @@
 import java.util.UUID;
 
 import net.shibboleth.utilities.java.support.collection.ClassIndexedSet;
+import net.shibboleth.utilities.java.support.component.IdentifiableComponent;
 import net.shibboleth.utilities.java.support.logic.Assert;
 import net.shibboleth.utilities.java.support.primitive.StringSupport;
 
@@ -31,20 +32,40 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-
 /**
- * Abstract implementation of {@link Context}.
+ * Base implementation of a component which represents the context used to store state 
+ * used for purposes related to messaging.
+ * 
+ * <p>
+ * Specific implementations of contexts would normally add additional properties to the
+ * context to represent the state that is to be stored by that particular context implementation.
+ * </p>
+ * 
+ * <p>
+ * A context may also function as a container of subcontexts.
+ * Access to subcontexts is class-based.  The parent context may hold only
+ * one instance of a given class at a given time.  This class-based indexing approach
+ * is used to enforce type-safety over the subcontext instances returned from the parent context,
+ * and avoids the need for casting.
+ * </p>
+ * 
+ * <p>
+ * When a subcontext is requested and it does not exist in the parent context, it may optionally be
+ * auto-created.  In order to be auto-created in this manner, the subcontext type
+ * <strong>MUST</strong> have a no-arg constructor. If the requested subcontext does not conform 
+ * to this convention, auto-creation will fail.
+ * </p>
  */
-public abstract class AbstractContext implements Context {
+public abstract class BaseContext implements IdentifiableComponent, Iterable<BaseContext> {
 
     /** Logger. */
-    private final Logger log = LoggerFactory.getLogger(AbstractContext.class);
+    private final Logger log = LoggerFactory.getLogger(BaseContext.class);
     
     /** The owning parent context. */
-    private Context parent;
+    private BaseContext parent;
 
     /** The subcontexts being managed. */
-    private ClassIndexedSet<Context> subcontexts;
+    private ClassIndexedSet<BaseContext> subcontexts;
     
     /** The context id. */
     private String id;
@@ -56,8 +77,8 @@
     private boolean autoCreateSubcontexts;
     
     /** Constructor. Generates a random context id. */
-    public AbstractContext() {
-        subcontexts = new ClassIndexedSet<Context>();
+    public BaseContext() {
+        subcontexts = new ClassIndexedSet<BaseContext>();
         creationTime = new DateTime();
         
         setAutoCreateSubcontexts(false);
@@ -78,13 +99,21 @@

[... 403 lines stripped ...]


More information about the commits mailing list