Author: cziegeler Date: Fri Mar 18 10:27:55 2005 New Revision: 158118 URL: http://svn.apache.org/viewcvs?view=rev&rev=158118 Log: Make Cocoon core available to spring beans
Modified: cocoon/blocks/spring-app/trunk/java/org/apache/cocoon/spring/SpringComponentLocator.java cocoon/blocks/spring-app/trunk/samples/flow.js cocoon/blocks/spring-app/trunk/samples/test.xml Modified: cocoon/blocks/spring-app/trunk/java/org/apache/cocoon/spring/SpringComponentLocator.java URL: http://svn.apache.org/viewcvs/cocoon/blocks/spring-app/trunk/java/org/apache/cocoon/spring/SpringComponentLocator.java?view=diff&r1=158117&r2=158118 ============================================================================== --- cocoon/blocks/spring-app/trunk/java/org/apache/cocoon/spring/SpringComponentLocator.java (original) +++ cocoon/blocks/spring-app/trunk/java/org/apache/cocoon/spring/SpringComponentLocator.java Fri Mar 18 10:27:55 2005 @@ -31,6 +31,7 @@ import org.apache.avalon.framework.service.ServiceManager; import org.apache.avalon.framework.service.Serviceable; import org.apache.cocoon.Constants; +import org.apache.cocoon.core.Core; import org.apache.cocoon.environment.internal.EnvironmentHelper; import org.apache.cocoon.servlet.CocoonServlet; import org.apache.cocoon.sitemap.ComponentLocator; @@ -43,6 +44,7 @@ import org.springframework.context.ApplicationContextException; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.access.ContextSingletonBeanFactoryLocator; +import org.springframework.context.support.GenericApplicationContext; import org.springframework.util.StringUtils; import org.springframework.web.context.ConfigurableWebApplicationContext; @@ -54,7 +56,7 @@ * TODO - we need to store the application context somewhere to use the context * of a parent sitemap as the parent of a sub sitemap. * - * @version $Id:$ + * @version $Id$ */ public class SpringComponentLocator extends AbstractLogEnabled @@ -70,6 +72,7 @@ protected EnvironmentHelper environmentHelper; protected ServiceManager manager; protected SourceResolver resolver; + protected Core cocoon; protected CocoonApplicationContext wac; @@ -94,6 +97,7 @@ public void service(ServiceManager aManager) throws ServiceException { this.manager = aManager; this.resolver = (SourceResolver)this.manager.lookup(SourceResolver.ROLE); + this.cocoon = (Core)this.manager.lookup(Core.class.getName()); } /** @@ -121,6 +125,11 @@ // Determine parent for application context, if any. ApplicationContext parent = this.loadParentContext(); + // Make the core available as a bean, if not already done by a parent context + if ( parent == null || !parent.containsBean("cocoon-core") ) { + parent = this.createCocoonAppContext(parent); + } + this.wac = this.createWebApplicationContext(parent); if (this.getLogger().isInfoEnabled()) { @@ -157,6 +166,8 @@ if ( this.manager != null ) { this.manager.release(this.resolver); this.resolver = null; + this.manager.release(this.cocoon); + this.cocoon = null; this.manager = null; } } @@ -225,6 +236,20 @@ cwac.refresh(); return cwac; + } + + /** + * Create an application context that contains Cocoon specific beans. + * @return + */ + protected ApplicationContext createCocoonAppContext(ApplicationContext parent) { + GenericApplicationContext gac = new GenericApplicationContext(); + gac.setParent(parent); + gac.refresh(); + gac.getBeanFactory().registerSingleton("cocoon-core", this.cocoon); + gac.getBeanFactory().registerSingleton("cocoon-settings", this.cocoon.getSettings()); + + return gac; } /** Modified: cocoon/blocks/spring-app/trunk/samples/flow.js URL: http://svn.apache.org/viewcvs/cocoon/blocks/spring-app/trunk/samples/flow.js?view=diff&r1=158117&r2=158118 ============================================================================== --- cocoon/blocks/spring-app/trunk/samples/flow.js (original) +++ cocoon/blocks/spring-app/trunk/samples/flow.js Fri Mar 18 10:27:55 2005 @@ -14,11 +14,14 @@ * limitations under the License. */ // -// @version $Id:$ +// @version $Id$ // function test() { var component = cocoon.getComponent("spring-test"); - cocoon.sendPage("test", { "message" : component.getMessage()}); + var core = cocoon.getComponent("cocoon-core"); + + cocoon.sendPage("test", { "message" : component.getMessage(), + "configuration" : core.getSettings().getConfiguration()}); } Modified: cocoon/blocks/spring-app/trunk/samples/test.xml URL: http://svn.apache.org/viewcvs/cocoon/blocks/spring-app/trunk/samples/test.xml?view=diff&r1=158117&r2=158118 ============================================================================== --- cocoon/blocks/spring-app/trunk/samples/test.xml (original) +++ cocoon/blocks/spring-app/trunk/samples/test.xml Fri Mar 18 10:27:55 2005 @@ -14,9 +14,11 @@ See the License for the specific language governing permissions and limitations under the License. --> -<!-- SVN $Id:$ --> +<!-- SVN $Id$ --> <document xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"> <p>This is a simple demo page</p> <p>Messsage from a Spring Bean:</p> <p>#{message}</p> + <p>Using the Cocoon core through Spring: This is the main configuration file location:</p> + <p>#{configuration}</p> </document>