You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by cz...@apache.org on 2004/02/24 10:54:56 UTC
cvs commit: cocoon-2.1/src/java/org/apache/cocoon/components ContextHelper.java ComponentContext.java
cziegeler 2004/02/24 01:54:56
Modified: . status.xml
src/java/org/apache/cocoon/components ContextHelper.java
ComponentContext.java
Log:
Making sitemap service manager available through the context
Revision Changes Path
1.247 +4 -1 cocoon-2.1/status.xml
Index: status.xml
===================================================================
RCS file: /home/cvs/cocoon-2.1/status.xml,v
retrieving revision 1.246
retrieving revision 1.247
diff -u -r1.246 -r1.247
--- status.xml 23 Feb 2004 15:14:05 -0000 1.246
+++ status.xml 24 Feb 2004 09:54:56 -0000 1.247
@@ -197,6 +197,9 @@
<release version="@version@" date="@date@">
<action dev="CZ" type="update">
+ Make the current sitemap service manager available through the component context.
+ </action>
+ <action dev="CZ" type="update">
Moving portlet environment to portal block.
</action>
<action dev="CZ" type="update">
1.5 +4 -1 cocoon-2.1/src/java/org/apache/cocoon/components/ContextHelper.java
Index: ContextHelper.java
===================================================================
RCS file: /home/cvs/cocoon-2.1/src/java/org/apache/cocoon/components/ContextHelper.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- ContextHelper.java 1 Jun 2003 15:55:35 -0000 1.4
+++ ContextHelper.java 24 Feb 2004 09:54:56 -0000 1.5
@@ -78,6 +78,9 @@
/** Application <code>Context</code> Key for the current response object */
public static final String CONTEXT_RESPONSE_OBJECT = CONTEXT_OBJECT_MODEL + '.' + ObjectModelHelper.RESPONSE_OBJECT;
+ /** Application <code>Context</code> Key for the current sitemap service manager */
+ public static final String CONTEXT_SITEMAP_SERVICE_MANAGER = "sitemap-service-manager";
+
private ContextHelper() {
// Forbid instantiation
}
1.4 +49 -4 cocoon-2.1/src/java/org/apache/cocoon/components/ComponentContext.java
Index: ComponentContext.java
===================================================================
RCS file: /home/cvs/cocoon-2.1/src/java/org/apache/cocoon/components/ComponentContext.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- ComponentContext.java 19 Jan 2004 10:33:23 -0000 1.3
+++ ComponentContext.java 24 Feb 2004 09:54:56 -0000 1.4
@@ -52,16 +52,22 @@
import java.util.Map;
+import org.apache.avalon.framework.component.Component;
+import org.apache.avalon.framework.component.ComponentException;
+import org.apache.avalon.framework.component.ComponentManager;
import org.apache.avalon.framework.context.Context;
import org.apache.avalon.framework.context.ContextException;
import org.apache.avalon.framework.context.DefaultContext;
+import org.apache.avalon.framework.service.ServiceException;
+import org.apache.avalon.framework.service.ServiceManager;
import org.apache.cocoon.environment.Environment;
/**
* This is the {@link Context} implementation for Cocoon components.
* It extends the {@link DefaultContext} by a special handling for
- * getting objects from the object model.
- *
+ * getting objects from the object model and other application information.
+ *
+ * @see org.apache.cocoon.components.ContextHelper
* @author <a href="mailto:cziegeler@apache.org">Carsten Ziegeler</a>
* @version CVS $Id$
*/
@@ -116,12 +122,18 @@
*/
public Object get( final Object key )
throws ContextException {
- if ( key.equals(ContextHelper.CONTEXT_OBJECT_MODEL)) {
+ if ( ContextHelper.CONTEXT_OBJECT_MODEL.equals(key)) {
final Environment env = CocoonComponentManager.getCurrentEnvironment();
if ( env == null ) {
throw new ContextException("Unable to locate " + key + " (No environment available)");
}
return env.getObjectModel();
+ } else if ( ContextHelper.CONTEXT_SITEMAP_SERVICE_MANAGER.equals(key)) {
+ final ComponentManager manager = CocoonComponentManager.getSitemapComponentManager();
+ if ( manager == null ) {
+ throw new ContextException("Unable to locate " + key + " (No environment available)");
+ }
+ return new ComponentManagerWrapper(manager);
}
if ( key instanceof String ) {
String stringKey = (String)key;
@@ -144,4 +156,37 @@
return super.get( key );
}
+ public static final class ComponentManagerWrapper implements ServiceManager {
+
+ protected final ComponentManager manager;
+
+ public ComponentManagerWrapper(ComponentManager m) {
+ this.manager = m;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.avalon.framework.service.ServiceManager#hasService(java.lang.String)
+ */
+ public boolean hasService(String role) {
+ return this.manager.hasComponent(role);
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.avalon.framework.service.ServiceManager#lookup(java.lang.String)
+ */
+ public Object lookup(String role) throws ServiceException {
+ try {
+ return this.manager.lookup(role);
+ } catch (ComponentException ce) {
+ throw new ServiceException("ComponentManagerWrapper", "Unable to lookup component: " + role, ce);
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.avalon.framework.service.ServiceManager#release(java.lang.Object)
+ */
+ public void release(Object c) {
+ this.manager.release((Component)c);
+ }
+ }
}