Return-Path: X-Original-To: apmail-aries-commits-archive@www.apache.org Delivered-To: apmail-aries-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 9EF28F92A for ; Tue, 26 Mar 2013 10:55:15 +0000 (UTC) Received: (qmail 43043 invoked by uid 500); 26 Mar 2013 10:55:15 -0000 Delivered-To: apmail-aries-commits-archive@aries.apache.org Received: (qmail 42934 invoked by uid 500); 26 Mar 2013 10:55:14 -0000 Mailing-List: contact commits-help@aries.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@aries.apache.org Delivered-To: mailing list commits@aries.apache.org Received: (qmail 42913 invoked by uid 99); 26 Mar 2013 10:55:13 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 26 Mar 2013 10:55:13 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 26 Mar 2013 10:55:09 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 8FDAE23888FE; Tue, 26 Mar 2013 10:54:48 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1461057 - in /aries/trunk/blueprint: blueprint-noosgi/src/main/java/org/apache/aries/blueprint/container/ blueprint-noosgi/src/main/java/org/apache/aries/blueprint/ext/ blueprint-noosgi/src/main/java/org/apache/aries/blueprint/services/ bl... Date: Tue, 26 Mar 2013 10:54:48 -0000 To: commits@aries.apache.org From: gnodet@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20130326105448.8FDAE23888FE@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: gnodet Date: Tue Mar 26 10:54:47 2013 New Revision: 1461057 URL: http://svn.apache.org/r1461057 Log: [ARIES-1038] Add support for loading properties from a global war location Modified: aries/trunk/blueprint/blueprint-noosgi/src/main/java/org/apache/aries/blueprint/container/BlueprintContainerImpl.java aries/trunk/blueprint/blueprint-noosgi/src/main/java/org/apache/aries/blueprint/ext/PropertyPlaceholder.java aries/trunk/blueprint/blueprint-noosgi/src/main/java/org/apache/aries/blueprint/services/ExtendedBlueprintContainer.java aries/trunk/blueprint/blueprint-sample-war/src/main/resources/META-INF/test.xml aries/trunk/blueprint/blueprint-sample-war/src/main/webapp/WEB-INF/web.xml aries/trunk/blueprint/blueprint-web/src/main/java/org/apache/aries/blueprint/web/BlueprintContextListener.java Modified: aries/trunk/blueprint/blueprint-noosgi/src/main/java/org/apache/aries/blueprint/container/BlueprintContainerImpl.java URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-noosgi/src/main/java/org/apache/aries/blueprint/container/BlueprintContainerImpl.java?rev=1461057&r1=1461056&r2=1461057&view=diff ============================================================================== --- aries/trunk/blueprint/blueprint-noosgi/src/main/java/org/apache/aries/blueprint/container/BlueprintContainerImpl.java (original) +++ aries/trunk/blueprint/blueprint-noosgi/src/main/java/org/apache/aries/blueprint/container/BlueprintContainerImpl.java Tue Mar 26 10:54:47 2013 @@ -53,21 +53,34 @@ public class BlueprintContainerImpl impl private final IdSpace tempRecipeIdSpace = new IdSpace(); private BlueprintRepository repository; private List processors = new ArrayList(); + private Map properties; public BlueprintContainerImpl(ClassLoader loader, List resources) throws Exception { - this(loader, resources, true); + this(loader, resources, null, true); } public BlueprintContainerImpl(ClassLoader loader, List resources, boolean init) throws Exception { + this(loader, resources, null, init); + } + + public BlueprintContainerImpl(ClassLoader loader, List resources, Map properties, boolean init) throws Exception { this.loader = loader; this.converter = new AggregateConverter(this); this.componentDefinitionRegistry = new ComponentDefinitionRegistryImpl(); this.resources = resources; + this.properties = properties; if (init) { init(); } } + public String getProperty(String key) { + if (properties != null && properties.containsKey(key)) { + return properties.get(key); + } + return System.getProperty(key); + } + public void init() throws Exception { // Parse xml resources Parser parser = new Parser(); Modified: aries/trunk/blueprint/blueprint-noosgi/src/main/java/org/apache/aries/blueprint/ext/PropertyPlaceholder.java URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-noosgi/src/main/java/org/apache/aries/blueprint/ext/PropertyPlaceholder.java?rev=1461057&r1=1461056&r2=1461057&view=diff ============================================================================== --- aries/trunk/blueprint/blueprint-noosgi/src/main/java/org/apache/aries/blueprint/ext/PropertyPlaceholder.java (original) +++ aries/trunk/blueprint/blueprint-noosgi/src/main/java/org/apache/aries/blueprint/ext/PropertyPlaceholder.java Tue Mar 26 10:54:47 2013 @@ -126,7 +126,7 @@ public class PropertyPlaceholder extends LOGGER.debug("Retrieving property {}", val); Object v = null; if (v == null && systemProperties == SystemProperties.override) { - v = System.getProperty(val); + v = getBlueprintContainer().getProperty(val); if (v != null) { LOGGER.debug("Found system property {} with value {}", val, v); } @@ -138,7 +138,7 @@ public class PropertyPlaceholder extends } } if (v == null && systemProperties == SystemProperties.fallback) { - v = System.getProperty(val); + v = getBlueprintContainer().getProperty(val); if (v != null) { LOGGER.debug("Found system property {} with value {}", val, v); } Modified: aries/trunk/blueprint/blueprint-noosgi/src/main/java/org/apache/aries/blueprint/services/ExtendedBlueprintContainer.java URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-noosgi/src/main/java/org/apache/aries/blueprint/services/ExtendedBlueprintContainer.java?rev=1461057&r1=1461056&r2=1461057&view=diff ============================================================================== --- aries/trunk/blueprint/blueprint-noosgi/src/main/java/org/apache/aries/blueprint/services/ExtendedBlueprintContainer.java (original) +++ aries/trunk/blueprint/blueprint-noosgi/src/main/java/org/apache/aries/blueprint/services/ExtendedBlueprintContainer.java Tue Mar 26 10:54:47 2013 @@ -41,4 +41,6 @@ public interface ExtendedBlueprintContai List getProcessors(Class type); + String getProperty(String key); + } Modified: aries/trunk/blueprint/blueprint-sample-war/src/main/resources/META-INF/test.xml URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-sample-war/src/main/resources/META-INF/test.xml?rev=1461057&r1=1461056&r2=1461057&view=diff ============================================================================== --- aries/trunk/blueprint/blueprint-sample-war/src/main/resources/META-INF/test.xml (original) +++ aries/trunk/blueprint/blueprint-sample-war/src/main/resources/META-INF/test.xml Tue Mar 26 10:54:47 2013 @@ -24,13 +24,12 @@ - + - classpath:test.properties blueprint web sample - - blueprintLocation - META-INF/test.xml - + + blueprintLocation + META-INF/test.xml + + + + blueprintProperties + test.properties + - + org.apache.aries.blueprint.web.BlueprintContextListener Modified: aries/trunk/blueprint/blueprint-web/src/main/java/org/apache/aries/blueprint/web/BlueprintContextListener.java URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-web/src/main/java/org/apache/aries/blueprint/web/BlueprintContextListener.java?rev=1461057&r1=1461056&r2=1461057&view=diff ============================================================================== --- aries/trunk/blueprint/blueprint-web/src/main/java/org/apache/aries/blueprint/web/BlueprintContextListener.java (original) +++ aries/trunk/blueprint/blueprint-web/src/main/java/org/apache/aries/blueprint/web/BlueprintContextListener.java Tue Mar 26 10:54:47 2013 @@ -21,10 +21,14 @@ import javax.servlet.ServletContext; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import javax.servlet.ServletException; +import java.io.InputStream; import java.net.URL; import java.util.ArrayList; import java.util.Enumeration; +import java.util.HashMap; import java.util.List; +import java.util.Map; +import java.util.Properties; import java.util.Set; import org.apache.aries.blueprint.container.BlueprintContainerImpl; @@ -37,6 +41,8 @@ public class BlueprintContextListener im public static final String LOCATION = "blueprintLocation"; + public static final String PROPERTIES = "blueprintProperties"; + public static final String DEFAULT_LOCATION = "META-INF/blueprint.xml"; public void contextInitialized(ServletContextEvent event) { @@ -53,7 +59,31 @@ public class BlueprintContextListener im resourcePaths.add(resources.nextElement()); } servletContext.log("Loading Blueprint contexts " + resourcePaths); - BlueprintContainerImpl container = new BlueprintContainerImpl(classLoader, resourcePaths); + + Map properties = new HashMap(); + String propLocations = servletContext.getInitParameter(PROPERTIES); + if (propLocations != null) { + for (String propLoc : propLocations.split(",")) { + Enumeration propUrl = classLoader.getResources(propLoc); + while (propUrl.hasMoreElements()) { + URL url = propUrl.nextElement(); + InputStream is = url.openStream(); + try { + Properties props = new Properties(); + props.load(is); + Enumeration names = props.propertyNames(); + while (names.hasMoreElements()) { + String key = names.nextElement().toString(); + properties.put(key, props.getProperty(key)); + } + } finally { + is.close(); + } + } + } + } + + BlueprintContainerImpl container = new BlueprintContainerImpl(classLoader, resourcePaths, properties, true); servletContext.setAttribute(CONTAINER_ATTRIBUTE, container); } catch (Exception e) { servletContext.log("Failed to startup blueprint container. " + e, e);