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 2006/12/27 19:48:44 UTC
svn commit: r490550 - in /cocoon/trunk/core:
cocoon-configuration/cocoon-configuration-impl/src/main/java/org/apache/cocoon/configuration/impl/
cocoon-core/src/main/java/org/apache/cocoon/components/source/impl/
cocoon-spring/src/main/java/org/apache/c...
Author: cziegeler
Date: Wed Dec 27 10:48:42 2006
New Revision: 490550
URL: http://svn.apache.org/viewvc?view=rev&rev=490550
Log:
Provide information about deployed blocks through own component
Added:
cocoon/trunk/core/cocoon-spring/src/main/java/org/apache/cocoon/spring/BlockResourcesHolder.java (with props)
cocoon/trunk/core/cocoon-spring/src/main/java/org/apache/cocoon/spring/impl/DefaultBlockResourcesHolder.java (with props)
Modified:
cocoon/trunk/core/cocoon-configuration/cocoon-configuration-impl/src/main/java/org/apache/cocoon/configuration/impl/DeploymentUtil.java
cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/components/source/impl/BlockContextSourceFactory.java
cocoon/trunk/core/cocoon-spring/src/main/java/org/apache/cocoon/spring/impl/SettingsBeanFactoryPostProcessor.java
cocoon/trunk/core/cocoon-spring/src/main/java/org/apache/cocoon/spring/impl/SettingsElementParser.java
Modified: cocoon/trunk/core/cocoon-configuration/cocoon-configuration-impl/src/main/java/org/apache/cocoon/configuration/impl/DeploymentUtil.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-configuration/cocoon-configuration-impl/src/main/java/org/apache/cocoon/configuration/impl/DeploymentUtil.java?view=diff&rev=490550&r1=490549&r2=490550
==============================================================================
--- cocoon/trunk/core/cocoon-configuration/cocoon-configuration-impl/src/main/java/org/apache/cocoon/configuration/impl/DeploymentUtil.java (original)
+++ cocoon/trunk/core/cocoon-configuration/cocoon-configuration-impl/src/main/java/org/apache/cocoon/configuration/impl/DeploymentUtil.java Wed Dec 27 10:48:42 2006
@@ -45,8 +45,6 @@
protected static final String BLOCK_RESOURCES_PATH = "COB-INF";
- protected static final Map blockContexts = new HashMap();
-
/**
* Deploy all files with a given prefix from a jar file to a directory
* in the file system.
@@ -75,7 +73,8 @@
}
protected static void deployBlockResources(String relativeDirectory,
- String destinationDirectory)
+ String destinationDirectory,
+ Map blockContexts)
throws IOException {
final Enumeration jarUrls = DeploymentUtil.class.getClassLoader().getResources(BLOCK_RESOURCES_PATH);
while ( jarUrls.hasMoreElements() ) {
@@ -92,7 +91,7 @@
String blockName = url.substring(0, pos);
blockName = blockName.substring(blockName.lastIndexOf('/') + 1);
// register the root URL for the block resources
- DeploymentUtil.blockContexts.put(blockName, url);
+ blockContexts.put(blockName, url);
}
} else if ( "jar".equals(resourceUrl.getProtocol()) ) {
// if this is a jar url, it has this form: "jar:{url-to-jar}!/{resource-path}"
@@ -119,20 +118,22 @@
String destination = buffer.toString();
deploy(jarFile, BLOCK_RESOURCES_PATH, destination);
// register the root URL for the block resources
- DeploymentUtil.blockContexts.put(blockName, destination);
+ blockContexts.put(blockName, destination);
}
// we only handle jar files and ordinary files
// TODO - Should we throw an exception if it's some other protocol type? (or log?)
}
}
- public static void deployBlockArtifacts(String destinationDirectory)
+ public static Map deployBlockArtifacts(String destinationDirectory)
throws IOException {
if ( destinationDirectory == null ) {
throw new IllegalArgumentException("Destination must not be null.");
}
+ final Map blockContexts = new HashMap();
// deploy all artifacts containing block resources
- deployBlockResources("blocks", destinationDirectory);
+ deployBlockResources("blocks", destinationDirectory, blockContexts);
+ return blockContexts;
}
public static void deployJarResources(String pattern, String destinationDirectory)
@@ -155,15 +156,4 @@
}
}
}
-
- /**
- * Get a map that associates a block name with the root URL of the blocks resources
- *
- * @return the blockContexts
- */
- // FIXME: It would be better to make the block contexts mapping available as a
- // component instead of as a static method
- public static Map getBlockContexts() {
- return blockContexts;
- }
}
Modified: cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/components/source/impl/BlockContextSourceFactory.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/components/source/impl/BlockContextSourceFactory.java?view=diff&rev=490550&r1=490549&r2=490550
==============================================================================
--- cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/components/source/impl/BlockContextSourceFactory.java (original)
+++ cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/components/source/impl/BlockContextSourceFactory.java Wed Dec 27 10:48:42 2006
@@ -25,7 +25,7 @@
import org.apache.avalon.framework.service.ServiceManager;
import org.apache.avalon.framework.service.Serviceable;
import org.apache.avalon.framework.thread.ThreadSafe;
-import org.apache.cocoon.configuration.impl.DeploymentUtil;
+import org.apache.cocoon.spring.BlockResourcesHolder;
import org.apache.excalibur.source.Source;
import org.apache.excalibur.source.SourceException;
import org.apache.excalibur.source.SourceFactory;
@@ -42,11 +42,14 @@
private ServiceManager serviceManager;
- /* (non-Javadoc)
+ private BlockResourcesHolder blockResourcesHolder;
+
+ /**
* @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
*/
- public void service(ServiceManager serviceManager) throws ServiceException {
- this.serviceManager = serviceManager;
+ public void service(ServiceManager aServiceManager) throws ServiceException {
+ this.serviceManager = aServiceManager;
+ this.blockResourcesHolder = (BlockResourcesHolder) this.serviceManager.lookup(BlockResourcesHolder.class.getName());
}
/* (non-Javadoc)
@@ -55,7 +58,7 @@
public Source getSource(String location, Map parameters) throws IOException,
MalformedURLException {
- Map blockContexts = DeploymentUtil.getBlockContexts();
+ Map blockContexts = this.blockResourcesHolder.getBlockContexts();
// the root "directory" of the blocks
if (location.endsWith(":/"))
@@ -95,10 +98,11 @@
}
}
- /* (non-Javadoc)
+ /**
* @see org.apache.excalibur.source.SourceFactory#release(org.apache.excalibur.source.Source)
*/
public void release(Source source) {
+ // nothing to do
}
}
Added: cocoon/trunk/core/cocoon-spring/src/main/java/org/apache/cocoon/spring/BlockResourcesHolder.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-spring/src/main/java/org/apache/cocoon/spring/BlockResourcesHolder.java?view=auto&rev=490550
==============================================================================
--- cocoon/trunk/core/cocoon-spring/src/main/java/org/apache/cocoon/spring/BlockResourcesHolder.java (added)
+++ cocoon/trunk/core/cocoon-spring/src/main/java/org/apache/cocoon/spring/BlockResourcesHolder.java Wed Dec 27 10:48:42 2006
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.spring;
+
+import java.util.Map;
+
+/**
+ * FIXME: Perhaps someone has a better name?!?
+ * @version $Id$
+ *
+ */
+public interface BlockResourcesHolder {
+
+ /**
+ * Return a map with deployed block names as keys and the url of the deployed
+ * resources as value.
+ */
+ Map getBlockContexts();
+}
Propchange: cocoon/trunk/core/cocoon-spring/src/main/java/org/apache/cocoon/spring/BlockResourcesHolder.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: cocoon/trunk/core/cocoon-spring/src/main/java/org/apache/cocoon/spring/BlockResourcesHolder.java
------------------------------------------------------------------------------
svn:keywords = Id
Added: cocoon/trunk/core/cocoon-spring/src/main/java/org/apache/cocoon/spring/impl/DefaultBlockResourcesHolder.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-spring/src/main/java/org/apache/cocoon/spring/impl/DefaultBlockResourcesHolder.java?view=auto&rev=490550
==============================================================================
--- cocoon/trunk/core/cocoon-spring/src/main/java/org/apache/cocoon/spring/impl/DefaultBlockResourcesHolder.java (added)
+++ cocoon/trunk/core/cocoon-spring/src/main/java/org/apache/cocoon/spring/impl/DefaultBlockResourcesHolder.java Wed Dec 27 10:48:42 2006
@@ -0,0 +1,54 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.spring.impl;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.cocoon.configuration.Settings;
+import org.apache.cocoon.configuration.impl.DeploymentUtil;
+import org.apache.cocoon.spring.BlockResourcesHolder;
+
+/**
+ * FIXME: Perhaps someone has a better name?!?
+ * @version $Id$
+ *
+ */
+public class DefaultBlockResourcesHolder
+ implements BlockResourcesHolder {
+
+ protected Settings settings;
+
+ protected Map blockContexts = new HashMap();
+
+ public void setSettings(Settings settings) {
+ this.settings = settings;
+ }
+
+ public void init()
+ throws Exception {
+ this.blockContexts = DeploymentUtil.deployBlockArtifacts(this.settings.getWorkDirectory());
+ }
+
+ /**
+ * Return a map with deployed block names as keys and the url of the deployed
+ * resources as value.
+ */
+ public Map getBlockContexts() {
+ return this.blockContexts;
+ }
+}
Propchange: cocoon/trunk/core/cocoon-spring/src/main/java/org/apache/cocoon/spring/impl/DefaultBlockResourcesHolder.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: cocoon/trunk/core/cocoon-spring/src/main/java/org/apache/cocoon/spring/impl/DefaultBlockResourcesHolder.java
------------------------------------------------------------------------------
svn:keywords = Id
Modified: cocoon/trunk/core/cocoon-spring/src/main/java/org/apache/cocoon/spring/impl/SettingsBeanFactoryPostProcessor.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-spring/src/main/java/org/apache/cocoon/spring/impl/SettingsBeanFactoryPostProcessor.java?view=diff&rev=490550&r1=490549&r2=490550
==============================================================================
--- cocoon/trunk/core/cocoon-spring/src/main/java/org/apache/cocoon/spring/impl/SettingsBeanFactoryPostProcessor.java (original)
+++ cocoon/trunk/core/cocoon-spring/src/main/java/org/apache/cocoon/spring/impl/SettingsBeanFactoryPostProcessor.java Wed Dec 27 10:48:42 2006
@@ -28,7 +28,6 @@
import org.apache.cocoon.configuration.PropertyProvider;
import org.apache.cocoon.configuration.Settings;
import org.apache.cocoon.configuration.SettingsDefaults;
-import org.apache.cocoon.configuration.impl.DeploymentUtil;
import org.apache.cocoon.configuration.impl.MutableSettings;
import org.apache.cocoon.configuration.impl.PropertyHelper;
import org.apache.cocoon.spring.ResourceUtils;
@@ -69,9 +68,6 @@
this.dumpSystemProperties();
this.dumpSettings();
this.forceLoad();
-
- // finally deploy block artifacts!
- DeploymentUtil.deployBlockArtifacts(this.settings.getWorkDirectory());
}
/**
Modified: cocoon/trunk/core/cocoon-spring/src/main/java/org/apache/cocoon/spring/impl/SettingsElementParser.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-spring/src/main/java/org/apache/cocoon/spring/impl/SettingsElementParser.java?view=diff&rev=490550&r1=490549&r2=490550
==============================================================================
--- cocoon/trunk/core/cocoon-spring/src/main/java/org/apache/cocoon/spring/impl/SettingsElementParser.java (original)
+++ cocoon/trunk/core/cocoon-spring/src/main/java/org/apache/cocoon/spring/impl/SettingsElementParser.java Wed Dec 27 10:48:42 2006
@@ -21,6 +21,7 @@
import javax.servlet.ServletContext;
import org.apache.cocoon.configuration.Settings;
+import org.apache.cocoon.spring.BlockResourcesHolder;
import org.springframework.beans.factory.BeanDefinitionStoreException;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.beans.factory.support.RootBeanDefinition;
@@ -71,8 +72,14 @@
this.registerPropertyOverrideConfigurer(parserContext, springConfigLocation);
// add the servlet context as a bean
- this.addComponent(ServletContextFactoryBean.class.getName(), ServletContext.class.getName(), null, false,
- parserContext.getRegistry());
+ this.addComponent(ServletContextFactoryBean.class.getName(),
+ ServletContext.class.getName(),
+ null, false, parserContext.getRegistry());
+
+ // deploy blocks and add a bean holding the information
+ this.addComponent(DefaultBlockResourcesHolder.class.getName(),
+ BlockResourcesHolder.class.getName(),
+ "init", true, parserContext.getRegistry());
// handle includes
try {
@@ -81,6 +88,7 @@
} catch (Exception e) {
throw new BeanDefinitionStoreException("Unable to read spring configurations from " + Constants.DEFAULT_SPRING_CONFIGURATION_LOCATION, e);
}
+
return null;
}
}