You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lo...@apache.org on 2006/02/14 22:57:24 UTC

svn commit: r377849 - in /incubator/tobago/trunk/tobago-core/src/main: java/org/apache/myfaces/tobago/config/ java/org/apache/myfaces/tobago/context/ resources/org/apache/myfaces/tobago/config/

Author: lofwyr
Date: Tue Feb 14 13:57:22 2006
New Revision: 377849

URL: http://svn.apache.org/viewcvs?rev=377849&view=rev
Log:
make the new theme loading mechanism configurable via the tobago-config.xml

Modified:
    incubator/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/config/TobagoConfig.java
    incubator/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/config/TobagoConfigParser.java
    incubator/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/context/ResourceLocator.java
    incubator/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/context/ResourceManagerFactory.java
    incubator/tobago/trunk/tobago-core/src/main/resources/org/apache/myfaces/tobago/config/tobago-config_1_0.dtd

Modified: incubator/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/config/TobagoConfig.java
URL: http://svn.apache.org/viewcvs/incubator/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/config/TobagoConfig.java?rev=377849&r1=377848&r2=377849&view=diff
==============================================================================
--- incubator/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/config/TobagoConfig.java (original)
+++ incubator/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/config/TobagoConfig.java Tue Feb 14 13:57:22 2006
@@ -34,13 +34,16 @@
 
   private List<Theme> supportedThemes;
   private Theme defaultTheme;
+  private List<Theme> availableThemes;
   private List<String> resourceDirs;
+  private boolean loadThemesFromClasspath;
   private List<MappingRule> mappingRules;
   private boolean ajaxEnabled;
 
 
   public TobagoConfig() {
     supportedThemes = new ArrayList<Theme>();
+    availableThemes = new ArrayList<Theme>();
     resourceDirs = new ArrayList<String>();
   }
 
@@ -129,6 +132,10 @@
     return Collections.unmodifiableList(supportedThemes);
   }
 
+  public List<Theme> getAvailableThemes() {
+    return availableThemes;
+  }
+
   public void addResourceDir(String resourceDir) {
     LOG.info("resourceDir = '" + resourceDir + "'");
     resourceDirs.add(resourceDir);
@@ -144,6 +151,14 @@
 
   public void setAjaxEnabled(String value) {
     this.ajaxEnabled = Boolean.valueOf(value);
+  }
+
+  public boolean isLoadThemesFromClasspath() {
+    return loadThemesFromClasspath;
+  }
+
+  public void setLoadThemesFromClasspath(String loadThemesFromClasspath) {
+    this.loadThemesFromClasspath = Boolean.valueOf(loadThemesFromClasspath);
   }
 
   public Theme getDefaultTheme() {

Modified: incubator/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/config/TobagoConfigParser.java
URL: http://svn.apache.org/viewcvs/incubator/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/config/TobagoConfigParser.java?rev=377849&r1=377848&r2=377849&view=diff
==============================================================================
--- incubator/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/config/TobagoConfigParser.java (original)
+++ incubator/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/config/TobagoConfigParser.java Tue Feb 14 13:57:22 2006
@@ -18,7 +18,7 @@
 
 /*
  * Created 24.06.2003 08:53:35.
- * Id: $
+ * $Id$
  */
 
 import org.apache.commons.digester.Digester;
@@ -70,6 +70,9 @@
         "tobago-config/mapping-rule/attribute/key", "setKey", 0);
     digester.addCallMethod(
         "tobago-config/mapping-rule/attribute/value", "setValue", 0);
+
+    // enable loading theme from classpath
+    digester.addCallMethod("tobago-config/load-themes-from-classpath", "setLoadThemesFromClasspath", 0);
 
     // resource dirs
     digester.addCallMethod("tobago-config/resource-dir", "addResourceDir", 0);

Modified: incubator/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/context/ResourceLocator.java
URL: http://svn.apache.org/viewcvs/incubator/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/context/ResourceLocator.java?rev=377849&r1=377848&r2=377849&view=diff
==============================================================================
--- incubator/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/context/ResourceLocator.java (original)
+++ incubator/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/context/ResourceLocator.java Tue Feb 14 13:57:22 2006
@@ -3,6 +3,7 @@
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.apache.myfaces.tobago.config.TobagoConfig;
 
 import javax.servlet.ServletContext;
 import javax.servlet.ServletException;
@@ -30,28 +31,28 @@
 // todo: Test for new theme build mechanism still under development
 // http://issues.apache.org/jira/browse/MYFACES-1106
 // to activate you have to do:
-// 1. set USE_JAR_THEME_RESOURCE = true, of course
+// 1. set load-themes-from-classpath = true in the tobago-config.xml
 // 2. add resource-path in tobago-config.xml
 // 3. add ResourceServlet in web.xml
-  public static final boolean USE_JAR_THEME_RESOURCE = false;
 
   private ServletContext servletContext;
   private ResourceManagerImpl resourceManager;
   private List<String> resourceDirs;
-
+  private TobagoConfig tobagoConfig;
 
   public ResourceLocator(
       ServletContext servletContext, ResourceManagerImpl resourceManager,
-      List<String> resourceDirs) {
+      List<String> resourceDirs, TobagoConfig tobagoConfig) {
     this.servletContext = servletContext;
     this.resourceManager = resourceManager;
     this.resourceDirs = resourceDirs;
+    this.tobagoConfig = tobagoConfig;
   }
 
   public void init()
       throws ServletException {
     locateResourcesInWar(servletContext, resourceManager, "/");
-    if (USE_JAR_THEME_RESOURCE) {
+    if (tobagoConfig.isLoadThemesFromClasspath()) {
       locateResourcesInLib(resourceManager);
     }
     for (String dir : resourceDirs) {
@@ -106,6 +107,7 @@
   private void locateResourcesInLib(ResourceManagerImpl resources)
       throws ServletException {
 
+//    ThemeParser parser = new ThemeParser(tobagoConfig);
     InputStream stream = null;
     try {
       LOG.error("Loading tobago-theme.xml");
@@ -113,6 +115,9 @@
 
       while (urls.hasMoreElements()) {
         URL themeUrl = urls.nextElement();
+
+//        parser.parse(themeUrl.openStream());
+
         // TODO other protocols
         if ("jar".equals(themeUrl.getProtocol())) {
           String fileName = themeUrl.toString().substring(4, themeUrl.toString().indexOf("!"));
@@ -153,7 +158,7 @@
           LOG.error("Unknown protocol "+themeUrl);
         }
       }
-    } catch (IOException e) {
+    } catch (Exception e) {
       String msg = "while loading ";
       if (LOG.isErrorEnabled()) {
         LOG.error(msg, e);

Modified: incubator/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/context/ResourceManagerFactory.java
URL: http://svn.apache.org/viewcvs/incubator/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/context/ResourceManagerFactory.java?rev=377849&r1=377848&r2=377849&view=diff
==============================================================================
--- incubator/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/context/ResourceManagerFactory.java (original)
+++ incubator/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/context/ResourceManagerFactory.java Tue Feb 14 13:57:22 2006
@@ -49,7 +49,7 @@
     ResourceManagerImpl resourceManager = new ResourceManagerImpl();
 
     ResourceLocator resourceLocator = new ResourceLocator(
-        servletContext, resourceManager, tobagoConfig.getResourceDirs());
+        servletContext, resourceManager, tobagoConfig.getResourceDirs(), tobagoConfig);
     resourceLocator.init();
 
     servletContext.setAttribute(RESOURCE_MANAGER, resourceManager);

Modified: incubator/tobago/trunk/tobago-core/src/main/resources/org/apache/myfaces/tobago/config/tobago-config_1_0.dtd
URL: http://svn.apache.org/viewcvs/incubator/tobago/trunk/tobago-core/src/main/resources/org/apache/myfaces/tobago/config/tobago-config_1_0.dtd?rev=377849&r1=377848&r2=377849&view=diff
==============================================================================
--- incubator/tobago/trunk/tobago-core/src/main/resources/org/apache/myfaces/tobago/config/tobago-config_1_0.dtd (original)
+++ incubator/tobago/trunk/tobago-core/src/main/resources/org/apache/myfaces/tobago/config/tobago-config_1_0.dtd Tue Feb 14 13:57:22 2006
@@ -18,7 +18,7 @@
 
 <!ENTITY % Boolean "(true|false|yes|no)">
 
-<!ELEMENT tobago-config (theme-config, resource-dir+, mapping-rule*, ajax-enabled?)>
+<!ELEMENT tobago-config (theme-config, resource-dir+, load-themes-from-classpath?, mapping-rule*, ajax-enabled?)>
 
 <!ELEMENT theme-config (default-theme, supported-theme*)>
 <!ELEMENT default-theme (#PCDATA)>
@@ -29,6 +29,8 @@
 <!ELEMENT fallback (#PCDATA)>
 
 <!ELEMENT resource-dir (#PCDATA)>
+
+<!ELEMENT load-themes-from-classpath (#PCDATA)>
 
 <!ELEMENT mapping-rule (request-uri, forward-uri, attribute*)>
 <!ELEMENT request-uri (#PCDATA)>