You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by re...@apache.org on 2006/04/09 17:39:21 UTC

svn commit: r392758 - in /cocoon/trunk/core: cocoon-blocks-fw/cocoon-blocks-fw-tests/META-INF/ cocoon-blocks-fw/cocoon-blocks-fw-tests/src/test/java/org/apache/cocoon/osgitests/ cocoon-core/META-INF/ cocoon-core/META-INF/xconf/ cocoon-core/src/main/jav...

Author: reinhard
Date: Sun Apr  9 08:39:19 2006
New Revision: 392758

URL: http://svn.apache.org/viewcvs?rev=392758&view=rev
Log:
Got the OSGiSpringECMFactory working (means that Spring beans and Avalon components created in one bundle are available through a BeanFactoryService in other bundles) (DF/RP)

Added:
    cocoon/trunk/core/cocoon-blocks-fw/cocoon-blocks-fw-tests/src/test/java/org/apache/cocoon/osgitests/AbstractOSGiTestCase.java   (with props)
    cocoon/trunk/core/cocoon-blocks-fw/cocoon-blocks-fw-tests/src/test/java/org/apache/cocoon/osgitests/OSGiSpringECMFactoryTest.java   (with props)
    cocoon/trunk/core/cocoon-core/META-INF/xconf/
    cocoon/trunk/core/cocoon-core/META-INF/xconf/cocoon-core-sitemap.xconf
      - copied unchanged from r392689, cocoon/trunk/core/cocoon-webapp/src/main/webapp/WEB-INF/xconf/cocoon-core-sitemap.xconf
    cocoon/trunk/core/cocoon-core/META-INF/xconf/cocoon-core.xconf
      - copied, changed from r392689, cocoon/trunk/core/cocoon-webapp/src/main/webapp/WEB-INF/xconf/cocoon-core.xconf
    cocoon/trunk/core/cocoon-core/META-INF/xconf/cocoon.xconf
      - copied, changed from r392689, cocoon/trunk/core/cocoon-webapp/src/main/webapp/WEB-INF/cocoon.xconf
    cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/osgi/CocoonSpringBeanRegistry.java   (with props)
    cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/osgi/OSGiServletContext.java   (with props)
Modified:
    cocoon/trunk/core/cocoon-blocks-fw/cocoon-blocks-fw-tests/META-INF/MANIFEST.MF
    cocoon/trunk/core/cocoon-blocks-fw/cocoon-blocks-fw-tests/META-INF/components.xml
    cocoon/trunk/core/cocoon-blocks-fw/cocoon-blocks-fw-tests/src/test/java/org/apache/cocoon/osgitests/AllOSGiTests.java
    cocoon/trunk/core/cocoon-blocks-fw/cocoon-blocks-fw-tests/src/test/java/org/apache/cocoon/osgitests/OSGiLoggerTest.java
    cocoon/trunk/core/cocoon-blocks-fw/cocoon-blocks-fw-tests/src/test/java/org/apache/cocoon/osgitests/OSGiSettingsTest.java
    cocoon/trunk/core/cocoon-core/META-INF/MANIFEST.MF
    cocoon/trunk/core/cocoon-core/META-INF/components.xml
    cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/components/source/impl/ContextSourceFactory.java
    cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/CoreUtil.java
    cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/BeanFactoryUtil.java
    cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/osgi/OSGiLogger.java
    cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/osgi/OSGiSettings.java
    cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/osgi/OSGiSpringECMFactory.java
    cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/environment/impl/AbstractContext.java

Modified: cocoon/trunk/core/cocoon-blocks-fw/cocoon-blocks-fw-tests/META-INF/MANIFEST.MF
URL: http://svn.apache.org/viewcvs/cocoon/trunk/core/cocoon-blocks-fw/cocoon-blocks-fw-tests/META-INF/MANIFEST.MF?rev=392758&r1=392757&r2=392758&view=diff
==============================================================================
--- cocoon/trunk/core/cocoon-blocks-fw/cocoon-blocks-fw-tests/META-INF/MANIFEST.MF (original)
+++ cocoon/trunk/core/cocoon-blocks-fw/cocoon-blocks-fw-tests/META-INF/MANIFEST.MF Sun Apr  9 08:39:19 2006
@@ -8,5 +8,11 @@
 Import-Package: junit.framework,
  junit.textui,
  org.apache.avalon.framework.logger,
+ org.apache.cocoon.components.thread,
  org.apache.cocoon.core,
- org.osgi.service.component
+ org.apache.cocoon.core.osgi,
+ org.apache.excalibur.store,
+ org.osgi.service.component,
+ org.springframework.beans,
+ org.springframework.beans.factory,
+ org.springframework.beans.factory.config

Modified: cocoon/trunk/core/cocoon-blocks-fw/cocoon-blocks-fw-tests/META-INF/components.xml
URL: http://svn.apache.org/viewcvs/cocoon/trunk/core/cocoon-blocks-fw/cocoon-blocks-fw-tests/META-INF/components.xml?rev=392758&r1=392757&r2=392758&view=diff
==============================================================================
--- cocoon/trunk/core/cocoon-blocks-fw/cocoon-blocks-fw-tests/META-INF/components.xml (original)
+++ cocoon/trunk/core/cocoon-blocks-fw/cocoon-blocks-fw-tests/META-INF/components.xml Sun Apr  9 08:39:19 2006
@@ -15,8 +15,11 @@
       bind="setLogger"/>  
   </scr:component>
   
-  <scr:component name="org.apache.cocoon.osgitests.allOSGiTests">
-    <scr:implementation class="org.apache.cocoon.osgitests.AllOSGiTests"/>  
+  <scr:component name="org.apache.cocoon.osgitests.OSGiSpringECMFactoryTest">
+    <scr:implementation class="org.apache.cocoon.osgitests.OSGiSpringECMFactoryTest"/>  
+    <scr:reference name="beanFactory"
+      interface="org.apache.cocoon.core.osgi.CocoonSpringBeanRegistry"
+      bind="setBeanFactory"/>  
   </scr:component>  
 
 </components>

Added: cocoon/trunk/core/cocoon-blocks-fw/cocoon-blocks-fw-tests/src/test/java/org/apache/cocoon/osgitests/AbstractOSGiTestCase.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/core/cocoon-blocks-fw/cocoon-blocks-fw-tests/src/test/java/org/apache/cocoon/osgitests/AbstractOSGiTestCase.java?rev=392758&view=auto
==============================================================================
--- cocoon/trunk/core/cocoon-blocks-fw/cocoon-blocks-fw-tests/src/test/java/org/apache/cocoon/osgitests/AbstractOSGiTestCase.java (added)
+++ cocoon/trunk/core/cocoon-blocks-fw/cocoon-blocks-fw-tests/src/test/java/org/apache/cocoon/osgitests/AbstractOSGiTestCase.java Sun Apr  9 08:39:19 2006
@@ -0,0 +1,25 @@
+/*
+ * Copyright 2006 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.cocoon.osgitests;
+
+import junit.framework.TestCase;
+
+/**
+ * @version $Id$
+ */
+abstract class AbstractOSGiTestCase extends TestCase {
+
+}

Propchange: cocoon/trunk/core/cocoon-blocks-fw/cocoon-blocks-fw-tests/src/test/java/org/apache/cocoon/osgitests/AbstractOSGiTestCase.java
------------------------------------------------------------------------------
    svn:executable = *

Modified: cocoon/trunk/core/cocoon-blocks-fw/cocoon-blocks-fw-tests/src/test/java/org/apache/cocoon/osgitests/AllOSGiTests.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/core/cocoon-blocks-fw/cocoon-blocks-fw-tests/src/test/java/org/apache/cocoon/osgitests/AllOSGiTests.java?rev=392758&r1=392757&r2=392758&view=diff
==============================================================================
--- cocoon/trunk/core/cocoon-blocks-fw/cocoon-blocks-fw-tests/src/test/java/org/apache/cocoon/osgitests/AllOSGiTests.java (original)
+++ cocoon/trunk/core/cocoon-blocks-fw/cocoon-blocks-fw-tests/src/test/java/org/apache/cocoon/osgitests/AllOSGiTests.java Sun Apr  9 08:39:19 2006
@@ -23,8 +23,8 @@
 public class AllOSGiTests extends TestCase {
 
     protected void activate(ComponentContext componentContext) {
-    	TestRunner.run(OSGiLoggerTest.class);
-    	TestRunner.run(OSGiSettingsTest.class);
+//    	TestRunner.run(OSGiLoggerTest.class);
+//    	TestRunner.run(OSGiSettingsTest.class);
     }
 	
 }

Modified: cocoon/trunk/core/cocoon-blocks-fw/cocoon-blocks-fw-tests/src/test/java/org/apache/cocoon/osgitests/OSGiLoggerTest.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/core/cocoon-blocks-fw/cocoon-blocks-fw-tests/src/test/java/org/apache/cocoon/osgitests/OSGiLoggerTest.java?rev=392758&r1=392757&r2=392758&view=diff
==============================================================================
--- cocoon/trunk/core/cocoon-blocks-fw/cocoon-blocks-fw-tests/src/test/java/org/apache/cocoon/osgitests/OSGiLoggerTest.java (original)
+++ cocoon/trunk/core/cocoon-blocks-fw/cocoon-blocks-fw-tests/src/test/java/org/apache/cocoon/osgitests/OSGiLoggerTest.java Sun Apr  9 08:39:19 2006
@@ -15,11 +15,15 @@
  */
 package org.apache.cocoon.osgitests;
 
-import junit.framework.TestCase;
+import junit.textui.TestRunner;
 
 import org.apache.avalon.framework.logger.Logger;
+import org.osgi.service.component.ComponentContext;
 
-public class OSGiLoggerTest extends TestCase {
+/**
+ * @version $Id$
+ */
+public class OSGiLoggerTest extends AbstractOSGiTestCase {
 
 	private static Logger logger;
 
@@ -28,11 +32,14 @@
 	}
 
 	protected void setLogger(Logger logger) {
-		this.logger = logger;
+		OSGiLoggerTest.logger = logger;
 	}
 	
 	public void testIsServiceAvailable() {
 		logger.debug("testIsServiceAvailable");
 	}
 	
+    protected void activate(ComponentContext componentContext) {
+    	TestRunner.run(OSGiLoggerTest.class);
+    }	
 }

Modified: cocoon/trunk/core/cocoon-blocks-fw/cocoon-blocks-fw-tests/src/test/java/org/apache/cocoon/osgitests/OSGiSettingsTest.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/core/cocoon-blocks-fw/cocoon-blocks-fw-tests/src/test/java/org/apache/cocoon/osgitests/OSGiSettingsTest.java?rev=392758&r1=392757&r2=392758&view=diff
==============================================================================
--- cocoon/trunk/core/cocoon-blocks-fw/cocoon-blocks-fw-tests/src/test/java/org/apache/cocoon/osgitests/OSGiSettingsTest.java (original)
+++ cocoon/trunk/core/cocoon-blocks-fw/cocoon-blocks-fw-tests/src/test/java/org/apache/cocoon/osgitests/OSGiSettingsTest.java Sun Apr  9 08:39:19 2006
@@ -15,11 +15,15 @@
  */
 package org.apache.cocoon.osgitests;
 
-import junit.framework.TestCase;
+import junit.textui.TestRunner;
 
 import org.apache.cocoon.core.Settings;
+import org.osgi.service.component.ComponentContext;
 
-public class OSGiSettingsTest extends TestCase {
+/**
+ * @version $Id$
+ */
+public class OSGiSettingsTest extends AbstractOSGiTestCase {
 
 	private static Settings settings;
 
@@ -32,7 +36,11 @@
 	}
 
 	public void testIsServiceAvailable() {
-//		assertNotNull(settings);
+		assertNotNull(settings);
 	}
+	
+    protected void activate(ComponentContext componentContext) {
+    	TestRunner.run(OSGiSettingsTest.class);
+    }	
 	
 }

Added: cocoon/trunk/core/cocoon-blocks-fw/cocoon-blocks-fw-tests/src/test/java/org/apache/cocoon/osgitests/OSGiSpringECMFactoryTest.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/core/cocoon-blocks-fw/cocoon-blocks-fw-tests/src/test/java/org/apache/cocoon/osgitests/OSGiSpringECMFactoryTest.java?rev=392758&view=auto
==============================================================================
--- cocoon/trunk/core/cocoon-blocks-fw/cocoon-blocks-fw-tests/src/test/java/org/apache/cocoon/osgitests/OSGiSpringECMFactoryTest.java (added)
+++ cocoon/trunk/core/cocoon-blocks-fw/cocoon-blocks-fw-tests/src/test/java/org/apache/cocoon/osgitests/OSGiSpringECMFactoryTest.java Sun Apr  9 08:39:19 2006
@@ -0,0 +1,54 @@
+/*
+ * Copyright 2006 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.cocoon.osgitests;
+
+import junit.textui.TestRunner;
+
+import org.apache.cocoon.core.osgi.CocoonSpringBeanRegistry;
+import org.apache.excalibur.store.Store;
+import org.osgi.service.component.ComponentContext;
+
+/**
+ * @version $Id$
+ */
+public class OSGiSpringECMFactoryTest extends AbstractOSGiTestCase {
+
+	private static CocoonSpringBeanRegistry beanFactory;
+
+	public void testIfBeansAreAvailable() {
+		Store store = (Store) beanFactory.getBean(Store.ROLE);
+		assertNotNull(store);
+	}
+	
+	/**
+	 * @return the beanFactory
+	 */
+	protected CocoonSpringBeanRegistry getBeanFactory() {
+		return beanFactory;
+	}
+
+	/**
+	 * @param beanFactory the beanFactory to set
+	 */
+	protected void setBeanFactory(CocoonSpringBeanRegistry beanFactory) {
+		OSGiSpringECMFactoryTest.beanFactory = beanFactory;
+	}
+	
+    protected void activate(ComponentContext componentContext) {
+    	TestRunner.run(OSGiSpringECMFactoryTest.class);
+    }		
+	
+}

Propchange: cocoon/trunk/core/cocoon-blocks-fw/cocoon-blocks-fw-tests/src/test/java/org/apache/cocoon/osgitests/OSGiSpringECMFactoryTest.java
------------------------------------------------------------------------------
    svn:executable = *

Modified: cocoon/trunk/core/cocoon-core/META-INF/MANIFEST.MF
URL: http://svn.apache.org/viewcvs/cocoon/trunk/core/cocoon-core/META-INF/MANIFEST.MF?rev=392758&r1=392757&r2=392758&view=diff
==============================================================================
--- cocoon/trunk/core/cocoon-core/META-INF/MANIFEST.MF (original)
+++ cocoon/trunk/core/cocoon-core/META-INF/MANIFEST.MF Sun Apr  9 08:39:19 2006
@@ -90,6 +90,7 @@
  org.apache.cocoon.core.container,
  org.apache.cocoon.core.container.spring,
  org.apache.cocoon.core.container.util,
+ org.apache.cocoon.core.osgi,
  org.apache.cocoon.core.servlet,
  org.apache.cocoon.environment,
  org.apache.cocoon.environment.commandline,
@@ -122,6 +123,7 @@
  org.apache.cocoon.xml,
  org.apache.cocoon.xml.dom,
  org.apache.cocoon.xml.xlink,
+ org.apache.excalibur.store,
  org.springframework.beans,
  org.springframework.beans.factory,
  org.springframework.beans.factory.config

Modified: cocoon/trunk/core/cocoon-core/META-INF/components.xml
URL: http://svn.apache.org/viewcvs/cocoon/trunk/core/cocoon-core/META-INF/components.xml?rev=392758&r1=392757&r2=392758&view=diff
==============================================================================
--- cocoon/trunk/core/cocoon-core/META-INF/components.xml (original)
+++ cocoon/trunk/core/cocoon-core/META-INF/components.xml Sun Apr  9 08:39:19 2006
@@ -22,11 +22,11 @@
       bind="setLogger"/>    
   </scr:component>
   
-  <scr:component name="org.apache.cocoon.osgi.springEcmFactory">
-    <scr:implementation class="org.apache.cocoon.core.osgi.SpringECMFactory"/>
-    <scr:property name="configFile" value="/META-INF/cocoon.xconf"/>
+  <scr:component name="org.apache.cocoon.core.osgi.springEcmFactory">
+    <scr:implementation class="org.apache.cocoon.core.osgi.OSGiSpringECMFactory"/>
+    <scr:property name="configFile" value="/META-INF/xconf/cocoon.xconf"/>
     <scr:service>
-      <scr:provide interface="org.springframework.beans.factory.config.ConfigureableListableBeanFactory"/>
+      <scr:provide interface="org.apache.cocoon.core.osgi.CocoonSpringBeanRegistry"/>
     </scr:service>    
     <scr:reference name="logger"
       interface="org.apache.avalon.framework.logger.Logger"

Copied: cocoon/trunk/core/cocoon-core/META-INF/xconf/cocoon-core.xconf (from r392689, cocoon/trunk/core/cocoon-webapp/src/main/webapp/WEB-INF/xconf/cocoon-core.xconf)
URL: http://svn.apache.org/viewcvs/cocoon/trunk/core/cocoon-core/META-INF/xconf/cocoon-core.xconf?p2=cocoon/trunk/core/cocoon-core/META-INF/xconf/cocoon-core.xconf&p1=cocoon/trunk/core/cocoon-webapp/src/main/webapp/WEB-INF/xconf/cocoon-core.xconf&r1=392689&r2=392758&rev=392758&view=diff
==============================================================================
--- cocoon/trunk/core/cocoon-webapp/src/main/webapp/WEB-INF/xconf/cocoon-core.xconf (original)
+++ cocoon/trunk/core/cocoon-core/META-INF/xconf/cocoon-core.xconf Sun Apr  9 08:39:19 2006
@@ -44,7 +44,7 @@
       | For development environment, set the check-reload to yes.
       | For production environment, it is advisable to set check-reload to no.
       +-->
-  <sitemap file="context://sitemap.xmap" logger="sitemap"/>
+  <!-- sitemap file="context://sitemap.xmap" logger="sitemap"/-->
 
 <!-- ========================= Sitemap Flowscript ========================== -->
 

Copied: cocoon/trunk/core/cocoon-core/META-INF/xconf/cocoon.xconf (from r392689, cocoon/trunk/core/cocoon-webapp/src/main/webapp/WEB-INF/cocoon.xconf)
URL: http://svn.apache.org/viewcvs/cocoon/trunk/core/cocoon-core/META-INF/xconf/cocoon.xconf?p2=cocoon/trunk/core/cocoon-core/META-INF/xconf/cocoon.xconf&p1=cocoon/trunk/core/cocoon-webapp/src/main/webapp/WEB-INF/cocoon.xconf&r1=392689&r2=392758&rev=392758&view=diff
==============================================================================
--- cocoon/trunk/core/cocoon-webapp/src/main/webapp/WEB-INF/cocoon.xconf (original)
+++ cocoon/trunk/core/cocoon-core/META-INF/xconf/cocoon.xconf Sun Apr  9 08:39:19 2006
@@ -16,27 +16,8 @@
 -->
 <!-- CVS $Id$ -->
 <cocoon version="2.2">
+  
+  <include src="context://META-INF/xconf/cocoon-core.xconf"/>
+  <include src="context://META-INF/xconf/cocoon-core-sitemap.xconf"/>  
 
-<!--+
-    | This is the main Apache Cocoon configuration file.
-    | It contains includes for the core components and for
-    | each of the blocks that are to be loaded.
-    |
-    | You can add your own components here or include some
-    | additional external files.
-    +-->
-
-  <include src="context://WEB-INF/xconf/cocoon-core.xconf"/>
-
-  <!--+
-      | Include all configuration files ending with ".xconf" 
-      | from the xconf directory.
-      +-->
-  <include dir="context://WEB-INF/xconf" pattern="*.xconf"/>
-
-  <!--+
-      | Include all configuration files ending with ".samplesxconf" 
-      | from the xconf directory.
-      +-->
-  <include dir="context://WEB-INF/xconf" pattern="*.samplesxconf"/>
 </cocoon>

Modified: cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/components/source/impl/ContextSourceFactory.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/components/source/impl/ContextSourceFactory.java?rev=392758&r1=392757&r2=392758&view=diff
==============================================================================
--- cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/components/source/impl/ContextSourceFactory.java (original)
+++ cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/components/source/impl/ContextSourceFactory.java Sun Apr  9 08:39:19 2006
@@ -81,7 +81,7 @@
      */
     public void contextualize(org.apache.avalon.framework.context.Context context)
     throws ContextException {
-        this.envContext = (Context)context.get(Constants.CONTEXT_ENVIRONMENT_CONTEXT);
+        this.envContext = (Context) context.get(Constants.CONTEXT_ENVIRONMENT_CONTEXT);
         try {
             this.servletContext = ((ServletConfig) context.get(CocoonServlet.CONTEXT_SERVLET_CONFIG)).getServletContext();
         } catch (ContextException ignore) {

Modified: cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/CoreUtil.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/CoreUtil.java?rev=392758&r1=392757&r2=392758&view=diff
==============================================================================
--- cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/CoreUtil.java (original)
+++ cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/CoreUtil.java Sun Apr  9 08:39:19 2006
@@ -327,7 +327,9 @@
         appContext.put(Constants.CONTEXT_WORK_DIR, new File(settings.getWorkDirectory()));
         appContext.put(Constants.CONTEXT_UPLOAD_DIR, new File(settings.getUploadDirectory()));
         appContext.put(Constants.CONTEXT_CACHE_DIR, new File(settings.getCacheDirectory()));
-        appContext.put(Constants.CONTEXT_CONFIG_URL, new URL(settings.getConfiguration()));
+        if(settings.getConfiguration() != null) {
+        	appContext.put(Constants.CONTEXT_CONFIG_URL, new URL(settings.getConfiguration()));
+        }
         appContext.put(Constants.CONTEXT_DEFAULT_ENCODING, settings.getFormEncoding());
         appContext.put(Constants.CONTEXT_CLASS_LOADER, classloader);
     }

Modified: cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/BeanFactoryUtil.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/BeanFactoryUtil.java?rev=392758&r1=392757&r2=392758&view=diff
==============================================================================
--- cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/BeanFactoryUtil.java (original)
+++ cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/BeanFactoryUtil.java Sun Apr  9 08:39:19 2006
@@ -112,7 +112,10 @@
      */
     public static ConfigurableListableBeanFactory createRootBeanFactory(AvalonEnvironment  env)
     throws Exception {
-        final ApplicationContext parent = (ApplicationContext)env.servletContext.getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);
+    	ApplicationContext parent = null;
+    	if(env.servletContext != null) {
+    		parent = (ApplicationContext)env.servletContext.getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);
+    	}
         CocoonBeanFactory factory = new CocoonBeanFactory(parent);
         factory.registerSingleton(ProcessingUtil.CONTEXT_ROLE, env.context);
         factory.registerSingleton(ProcessingUtil.LOGGER_ROLE, env.logger);

Added: cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/osgi/CocoonSpringBeanRegistry.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/osgi/CocoonSpringBeanRegistry.java?rev=392758&view=auto
==============================================================================
--- cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/osgi/CocoonSpringBeanRegistry.java (added)
+++ cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/osgi/CocoonSpringBeanRegistry.java Sun Apr  9 08:39:19 2006
@@ -0,0 +1,29 @@
+/*
+ * Copyright 2006 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.cocoon.core.osgi;
+
+import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
+
+/**
+ * Another interface needed to be introduced because Equinox hat some problems with
+ * the name @link {@link ConfigurableListableBeanFactory} because of some introspection
+ * done on all classes that end on "Factory".
+ * 
+ * @version $Id$
+ */
+public interface CocoonSpringBeanRegistry extends ConfigurableListableBeanFactory {
+
+}

Propchange: cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/osgi/CocoonSpringBeanRegistry.java
------------------------------------------------------------------------------
    svn:executable = *

Modified: cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/osgi/OSGiLogger.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/osgi/OSGiLogger.java?rev=392758&r1=392757&r2=392758&view=diff
==============================================================================
--- cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/osgi/OSGiLogger.java (original)
+++ cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/osgi/OSGiLogger.java Sun Apr  9 08:39:19 2006
@@ -93,6 +93,7 @@
             result = new OSGiLogger();
             ((OSGiLogger) result).setCategory(category);
             ((OSGiLogger) result).setLogLevel(this.logLevel);
+            ((OSGiLogger) result).setLogService(this.logService);            
             loggers.put(category, result);
         }
         return result;

Added: cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/osgi/OSGiServletContext.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/osgi/OSGiServletContext.java?rev=392758&view=auto
==============================================================================
--- cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/osgi/OSGiServletContext.java (added)
+++ cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/osgi/OSGiServletContext.java Sun Apr  9 08:39:19 2006
@@ -0,0 +1,70 @@
+/*
+ * Copyright 2006 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.cocoon.core.osgi;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+
+import org.apache.avalon.framework.logger.Logger;
+import org.apache.cocoon.environment.impl.AbstractContext;
+import org.osgi.service.component.ComponentContext;
+
+/**
+ * @version $Id$
+ */
+public class OSGiServletContext extends AbstractContext {
+	
+	private Logger logger;
+	private ComponentContext componentContext;
+	
+	public OSGiServletContext(Logger logger, ComponentContext componentContext) {
+		super();
+		this.logger = logger;
+		this.componentContext = componentContext;
+	}	
+
+	/**
+	 * @see org.apache.cocoon.environment.impl.AbstractContext#getResource(java.lang.String)
+	 */
+	public URL getResource(String path) throws MalformedURLException {
+		if(path.length() == 0 || path.charAt(0) != '/') {
+			throw new MalformedURLException("The path (" + path + ") must start with '/'.");
+		}
+		return this.componentContext.getBundleContext().getBundle().getEntry(path);
+	}
+
+	/**
+	 * Logging to debug
+	 */
+	public void log(String msg) {
+		this.logger.info(msg);
+	}
+
+	/**
+	 * Logging to debug
+	 */	
+	public void log(Exception e, String msg) {
+		this.logger.info(msg);
+	}
+
+	/**
+	 * Logging to debug
+	 */	
+	public void log(String msg, Throwable t) {
+		this.logger.info(msg, t);
+	}
+
+}

Propchange: cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/osgi/OSGiServletContext.java
------------------------------------------------------------------------------
    svn:executable = *

Modified: cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/osgi/OSGiSettings.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/osgi/OSGiSettings.java?rev=392758&r1=392757&r2=392758&view=diff
==============================================================================
--- cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/osgi/OSGiSettings.java (original)
+++ cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/osgi/OSGiSettings.java Sun Apr  9 08:39:19 2006
@@ -30,6 +30,7 @@
 	protected void activate(ComponentContext componentContext) {
     	CoreUtil.initSettingsFiles(this, this.logger);
         // componentContext.getBundleContext().getDataFile("cocoon-files");
+//    	this.setConfiguration("/META-INF/xconf/cocoon.xconf"); // TODO (DF/RP) probably not used by the OSGi framework!
     	this.makeReadOnly();
     }
 

Modified: cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/osgi/OSGiSpringECMFactory.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/osgi/OSGiSpringECMFactory.java?rev=392758&r1=392757&r2=392758&view=diff
==============================================================================
--- cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/osgi/OSGiSpringECMFactory.java (original)
+++ cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/osgi/OSGiSpringECMFactory.java Sun Apr  9 08:39:19 2006
@@ -17,6 +17,7 @@
 
 import java.beans.PropertyEditor;
 import java.net.URL;
+import java.util.Map;
 
 import org.apache.avalon.framework.context.DefaultContext;
 import org.apache.avalon.framework.logger.Logger;
@@ -24,17 +25,22 @@
 import org.apache.cocoon.core.Settings;
 import org.apache.cocoon.core.container.spring.AvalonEnvironment;
 import org.apache.cocoon.core.container.spring.BeanFactoryUtil;
+import org.apache.cocoon.core.container.spring.ConfigReader;
+import org.apache.cocoon.core.container.spring.ConfigurationInfo;
+import org.apache.cocoon.environment.Context;
+import org.apache.excalibur.store.Store;
 import org.osgi.service.component.ComponentContext;
 import org.springframework.beans.BeansException;
 import org.springframework.beans.factory.BeanFactory;
 import org.springframework.beans.factory.NoSuchBeanDefinitionException;
+import org.springframework.beans.factory.config.BeanDefinition;
 import org.springframework.beans.factory.config.BeanPostProcessor;
-import org.springframework.beans.factory.config.ConfigurableBeanFactory;
+import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
 
 /**
  * @version $Id$
  */
-public class OSGiSpringECMFactory implements ConfigurableBeanFactory {
+public class OSGiSpringECMFactory implements ConfigurableListableBeanFactory, CocoonSpringBeanRegistry {
 	
 	private static final String MANIFEST_FILE = "/META-INF/MANIFEST.MF";
 
@@ -42,7 +48,7 @@
 	
     private Logger logger;
 	private Settings settings;
-	private ConfigurableBeanFactory beanFactory;
+	private ConfigurableListableBeanFactory beanFactory;
 
 	protected Settings getSettings() {
 		return this.settings;
@@ -60,16 +66,28 @@
 		this.logger = logger;
 	}
 	
+	/*
+	 * TODO (DF/RP) move activation into a seperate thread
+	 */
 	protected void activate(ComponentContext componentContext) throws Exception {
-		URL manifestUrl = componentContext.getBundleContext().getBundle().getResource(MANIFEST_FILE);
+		URL manifestUrl = componentContext.getBundleContext().getBundle().getEntry(MANIFEST_FILE);
 		String contextPath = manifestUrl.toString();
-		contextPath = manifestUrl.toString().substring(0, contextPath.length() - MANIFEST_FILE.length());
+		contextPath = manifestUrl.toString().substring(0, contextPath.length() - (MANIFEST_FILE.length() - 1));
 		
-		DefaultContext avalonContext = CoreUtil.createContext(this.settings, null, contextPath, null, null);
+		this.logger.debug("Context path: " + contextPath);
+
+		// create a minimal OSGi servlet context
+		Context osgiServletContext = new OSGiServletContext(this.logger, componentContext);		
+		
+		// create a minimal Avalon Context
+		DefaultContext avalonContext = CoreUtil.createContext(this.settings, osgiServletContext, contextPath, null, null);
 		
+		// create an Avalon environment (it's some kind of container for Avalon related information)
 		AvalonEnvironment avalonEnvironment = new AvalonEnvironment();
 		avalonEnvironment.context = avalonContext;
-		avalonEnvironment.logger = this.logger;		
+		avalonEnvironment.logger = this.logger;	
+		avalonEnvironment.settings = this.settings;
+		avalonEnvironment.servletContext = osgiServletContext;
 		
 		// get the configuration file property
 		String configFile= (String) componentContext.getProperties().get(CONFIG_FILE);
@@ -77,71 +95,259 @@
 			throw new ECMConfigurationFileNotSetException("You have to provide a ECM configurationf file!");
 		}
 		
-		this.beanFactory = BeanFactoryUtil.createRootBeanFactory(avalonEnvironment);
-//		ConfigurationInfo springBeanConfiguration = ConfigReader.readConfiguration(source, env)
+		ConfigurableListableBeanFactory rootBeanFactory = BeanFactoryUtil.createRootBeanFactory(avalonEnvironment);
+		ConfigurationInfo springBeanConfiguration = ConfigReader.readConfiguration(configFile, avalonEnvironment);
+		this.beanFactory = BeanFactoryUtil.createBeanFactory(avalonEnvironment, springBeanConfiguration,
+				null, rootBeanFactory, true);
+		Store store = (Store) beanFactory.getBean(Store.ROLE);
+		this.logger.debug("Store: " + store);
     }
-
-	// ~~~~~~~~~~~~~~~ delegating ... ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 	
-	public void addBeanPostProcessor(BeanPostProcessor beanPostProcessor) {
-		this.beanFactory.addBeanPostProcessor(beanPostProcessor);
+	// ~~~~~~~~~~~~~~~ delegating to this.beanFactory ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~	
+
+	/**	
+	 * @see org.springframework.beans.factory.config.ConfigurableBeanFactory#addBeanPostProcessor(org.springframework.beans.factory.config.BeanPostProcessor)
+	 */
+	public void addBeanPostProcessor(BeanPostProcessor arg0) {
+		this.beanFactory.addBeanPostProcessor(arg0);
+	}
+
+	/**
+	 * @throws BeansException
+	 * @see org.springframework.beans.factory.config.AutowireCapableBeanFactory#applyBeanPostProcessorsAfterInitialization(java.lang.Object, java.lang.String)
+	 */
+	public Object applyBeanPostProcessorsAfterInitialization(Object arg0, String arg1) throws BeansException {
+		return this.beanFactory.applyBeanPostProcessorsAfterInitialization(arg0, arg1);
+	}
+
+	/**
+	 * @throws BeansException
+	 * @see org.springframework.beans.factory.config.AutowireCapableBeanFactory#applyBeanPostProcessorsBeforeInitialization(java.lang.Object, java.lang.String)
+	 */
+	public Object applyBeanPostProcessorsBeforeInitialization(Object arg0, String arg1) throws BeansException {
+		return this.beanFactory.applyBeanPostProcessorsBeforeInitialization(arg0, arg1);
+	}
+
+	/**
+	 * @throws BeansException
+	 * @see org.springframework.beans.factory.config.AutowireCapableBeanFactory#applyBeanPropertyValues(java.lang.Object, java.lang.String)
+	 */
+	public void applyBeanPropertyValues(Object arg0, String arg1) throws BeansException {
+		this.beanFactory.applyBeanPropertyValues(arg0, arg1);
+	}
+
+	/**
+	 * @throws BeansException
+	 * @see org.springframework.beans.factory.config.AutowireCapableBeanFactory#autowire(java.lang.Class, int, boolean)
+	 */
+	public Object autowire(Class arg0, int arg1, boolean arg2) throws BeansException {
+		return this.beanFactory.autowire(arg0, arg1, arg2);
+	}
+
+	/**
+	 * @throws BeansException
+	 * @see org.springframework.beans.factory.config.AutowireCapableBeanFactory#autowireBeanProperties(java.lang.Object, int, boolean)
+	 */
+	public void autowireBeanProperties(Object arg0, int arg1, boolean arg2) throws BeansException {
+		this.beanFactory.autowireBeanProperties(arg0, arg1, arg2);
+	}
+
+	/**
+	 * @see org.springframework.beans.factory.BeanFactory#containsBean(java.lang.String)
+	 */
+	public boolean containsBean(String arg0) {
+		return this.beanFactory.containsBean(arg0);
+	}
+
+	/**
+	 * @see org.springframework.beans.factory.ListableBeanFactory#containsBeanDefinition(java.lang.String)
+	 */
+	public boolean containsBeanDefinition(String arg0) {
+		return this.beanFactory.containsBeanDefinition(arg0);
 	}
 
+	/**
+	 * @see org.springframework.beans.factory.config.ConfigurableBeanFactory#containsSingleton(java.lang.String)
+	 */
 	public boolean containsSingleton(String arg0) {
 		return this.beanFactory.containsSingleton(arg0);
 	}
 
+	/**
+	 * @see org.springframework.beans.factory.config.ConfigurableBeanFactory#destroySingletons()
+	 */
 	public void destroySingletons() {
 		this.beanFactory.destroySingletons();
 	}
 
-	public int getBeanPostProcessorCount() {
-		return this.beanFactory.getBeanPostProcessorCount();
+	/**
+	 * @throws NoSuchBeanDefinitionException
+	 * @see org.springframework.beans.factory.BeanFactory#getAliases(java.lang.String)
+	 */
+	public String[] getAliases(String arg0) throws NoSuchBeanDefinitionException {
+		return this.beanFactory.getAliases(arg0);
 	}
 
-	public void registerAlias(String arg0, String arg1) throws BeansException {
-		this.beanFactory.registerAlias(arg0, arg1);
+	/**
+	 * @throws BeansException
+	 * @see org.springframework.beans.factory.BeanFactory#getBean(java.lang.String, java.lang.Class)
+	 */
+	public Object getBean(String arg0, Class arg1) throws BeansException {
+		return this.beanFactory.getBean(arg0, arg1);
 	}
 
-	public void registerCustomEditor(Class arg0, PropertyEditor arg1) {
-		this.beanFactory.registerCustomEditor(arg0, arg1);
+	/**
+	 * @throws BeansException
+	 * @see org.springframework.beans.factory.BeanFactory#getBean(java.lang.String)
+	 */
+	public Object getBean(String arg0) throws BeansException {
+		return this.beanFactory.getBean(arg0);
 	}
 
-	public void registerSingleton(String arg0, Object arg1) throws BeansException {
-		this.beanFactory.registerSingleton(arg0, arg1);
+	/**
+	 * @throws NoSuchBeanDefinitionException
+	 * @see org.springframework.beans.factory.config.ConfigurableListableBeanFactory#getBeanDefinition(java.lang.String)
+	 */
+	public BeanDefinition getBeanDefinition(String arg0) throws NoSuchBeanDefinitionException {
+		return this.beanFactory.getBeanDefinition(arg0);
 	}
 
-	public void setParentBeanFactory(BeanFactory arg0) {
-		this.beanFactory.setParentBeanFactory(arg0);
+	/**
+	 * @see org.springframework.beans.factory.ListableBeanFactory#getBeanDefinitionCount()
+	 */
+	public int getBeanDefinitionCount() {
+		return this.beanFactory.getBeanDefinitionCount();
 	}
 
-	public BeanFactory getParentBeanFactory() {
-		return this.beanFactory.getParentBeanFactory();
+	/**
+	 * @see org.springframework.beans.factory.ListableBeanFactory#getBeanDefinitionNames()
+	 */
+	public String[] getBeanDefinitionNames() {
+		return this.beanFactory.getBeanDefinitionNames();
 	}
 
-	public boolean containsBean(String arg0) {
-		return this.beanFactory.containsBean(arg0);
+	/**
+	 * @deprecated
+	 * @see org.springframework.beans.factory.ListableBeanFactory#getBeanDefinitionNames(java.lang.Class)
+	 */
+	public String[] getBeanDefinitionNames(Class arg0) {
+		return this.beanFactory.getBeanDefinitionNames(arg0);
 	}
 
-	public String[] getAliases(String arg0) throws NoSuchBeanDefinitionException {
-		return this.beanFactory.getAliases(arg0);
+	/**
+	 * @see org.springframework.beans.factory.ListableBeanFactory#getBeanNamesForType(java.lang.Class, boolean, boolean)
+	 */
+	public String[] getBeanNamesForType(Class arg0, boolean arg1, boolean arg2) {
+		return this.beanFactory.getBeanNamesForType(arg0, arg1, arg2);
 	}
 
-	public Object getBean(String arg0) throws BeansException {
-		return this.beanFactory.getBean(arg0);
+	/**
+	 * @see org.springframework.beans.factory.ListableBeanFactory#getBeanNamesForType(java.lang.Class)
+	 */
+	public String[] getBeanNamesForType(Class arg0) {
+		return this.beanFactory.getBeanNamesForType(arg0);
 	}
 
-	public Object getBean(String arg0, Class arg1) throws BeansException {
-		return this.beanFactory.getBean(arg0, arg1);
+	/**
+	 * @see org.springframework.beans.factory.config.ConfigurableBeanFactory#getBeanPostProcessorCount()
+	 */
+	public int getBeanPostProcessorCount() {
+		return this.beanFactory.getBeanPostProcessorCount();
 	}
 
+	/**
+	 * @throws BeansException
+	 * @see org.springframework.beans.factory.ListableBeanFactory#getBeansOfType(java.lang.Class, boolean, boolean)
+	 */
+	public Map getBeansOfType(Class arg0, boolean arg1, boolean arg2) throws BeansException {
+		return this.beanFactory.getBeansOfType(arg0, arg1, arg2);
+	}
+
+	/**
+	 * @throws BeansException
+	 * @see org.springframework.beans.factory.ListableBeanFactory#getBeansOfType(java.lang.Class)
+	 */
+	public Map getBeansOfType(Class arg0) throws BeansException {
+		return this.beanFactory.getBeansOfType(arg0);
+	}
+
+	/**
+	 * @see org.springframework.beans.factory.HierarchicalBeanFactory#getParentBeanFactory()
+	 */
+	public BeanFactory getParentBeanFactory() {
+		return this.beanFactory.getParentBeanFactory();
+	}
+
+	/**
+	 * @throws NoSuchBeanDefinitionException
+	 * @see org.springframework.beans.factory.BeanFactory#getType(java.lang.String)
+	 */
 	public Class getType(String arg0) throws NoSuchBeanDefinitionException {
 		return this.beanFactory.getType(arg0);
 	}
 
+	/**
+	 * @see org.springframework.beans.factory.config.ConfigurableListableBeanFactory#ignoreDependencyInterface(java.lang.Class)
+	 */
+	public void ignoreDependencyInterface(Class arg0) {
+		this.beanFactory.ignoreDependencyInterface(arg0);
+	}
+
+	/**
+	 * @see org.springframework.beans.factory.config.ConfigurableListableBeanFactory#ignoreDependencyType(java.lang.Class)
+	 */
+	public void ignoreDependencyType(Class arg0) {
+		this.beanFactory.ignoreDependencyType(arg0);
+	}
+
+	/**
+	 * @throws NoSuchBeanDefinitionException
+	 * @see org.springframework.beans.factory.BeanFactory#isSingleton(java.lang.String)
+	 */
 	public boolean isSingleton(String arg0) throws NoSuchBeanDefinitionException {
 		return this.beanFactory.isSingleton(arg0);
 	}
-	
+
+	/**
+	 * @throws BeansException
+	 * @see org.springframework.beans.factory.config.ConfigurableListableBeanFactory#preInstantiateSingletons()
+	 */
+	public void preInstantiateSingletons() throws BeansException {
+		this.beanFactory.preInstantiateSingletons();
+	}
+
+	/**
+	 * @throws BeansException
+	 * @see org.springframework.beans.factory.config.ConfigurableBeanFactory#registerAlias(java.lang.String, java.lang.String)
+	 */
+	public void registerAlias(String arg0, String arg1) throws BeansException {
+		this.beanFactory.registerAlias(arg0, arg1);
+	}
+
+	/**
+	 * @see org.springframework.beans.factory.config.ConfigurableBeanFactory#registerCustomEditor(java.lang.Class, java.beans.PropertyEditor)
+	 */
+	public void registerCustomEditor(Class arg0, PropertyEditor arg1) {
+		this.beanFactory.registerCustomEditor(arg0, arg1);
+	}
+
+	/**
+	 * @throws BeansException
+	 * @see org.springframework.beans.factory.config.ConfigurableBeanFactory#registerSingleton(java.lang.String, java.lang.Object)
+	 */
+	public void registerSingleton(String arg0, Object arg1) throws BeansException {
+		this.beanFactory.registerSingleton(arg0, arg1);
+	}
+
+	/**
+	 * @see org.springframework.beans.factory.config.ConfigurableBeanFactory#setParentBeanFactory(org.springframework.beans.factory.BeanFactory)
+	 */
+	public void setParentBeanFactory(BeanFactory arg0) {
+		this.beanFactory.setParentBeanFactory(arg0);
+	}
+
+	public Object getBeanFromReinhard(String name) {
+		return this.getBean(name);
+	}
 
 }

Modified: cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/environment/impl/AbstractContext.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/environment/impl/AbstractContext.java?rev=392758&r1=392757&r2=392758&view=diff
==============================================================================
--- cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/environment/impl/AbstractContext.java (original)
+++ cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/environment/impl/AbstractContext.java Sun Apr  9 08:39:19 2006
@@ -15,6 +15,7 @@
  */
 package org.apache.cocoon.environment.impl;
 
+import java.io.IOException;
 import java.io.InputStream;
 import java.net.MalformedURLException;
 import java.net.URL;
@@ -127,9 +128,25 @@
     }
 
     /**
+     * Get access to the resource as @link {@link InputStream}. If there is any problem,
+     * <code>null</code> is returned.
+     * 
      * @see javax.servlet.ServletContext#getResourceAsStream(java.lang.String)
      */
-    public InputStream getResourceAsStream(String arg0) {
+    public InputStream getResourceAsStream(String path) {
+    	URL resourceURL = null;
+		try {
+			resourceURL = this.getResource(path);
+		} catch (MalformedURLException e) {
+			return null;
+		}
+    	if(resourceURL != null) {
+    		try {
+				return resourceURL.openStream();
+			} catch (IOException e) {
+				return null;
+			}
+    	}
         return null;
     }