You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by bo...@apache.org on 2007/04/23 08:10:31 UTC

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

Author: bommel
Date: Sun Apr 22 23:10:30 2007
New Revision: 531346

URL: http://svn.apache.org/viewvc?view=rev&rev=531346
Log:
(TOBAGO-360) Allow definition of supported markup in tobago-config.xml

Modified:
    myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/config/ThemeConfig.java
    myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/config/TobagoConfig.java
    myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/config/TobagoConfigParser.java
    myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/context/RenderersConfig.java
    myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/context/RenderersConfigImpl.java
    myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/context/ResourceManagerFactory.java
    myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/context/ThemeBuilder.java
    myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/context/ThemeImpl.java
    myfaces/tobago/trunk/core/src/main/resources/org/apache/myfaces/tobago/config/tobago-config_1_0.dtd

Modified: myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/config/ThemeConfig.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/config/ThemeConfig.java?view=diff&rev=531346&r1=531345&r2=531346
==============================================================================
--- myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/config/ThemeConfig.java (original)
+++ myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/config/ThemeConfig.java Sun Apr 22 23:10:30 2007
@@ -25,7 +25,7 @@
 import org.apache.myfaces.tobago.context.ClientProperties;
 import org.apache.myfaces.tobago.context.ResourceManager;
 import org.apache.myfaces.tobago.context.ResourceManagerFactory;
-import org.apache.myfaces.tobago.renderkit.RendererBase;
+import org.apache.myfaces.tobago.renderkit.LayoutableRendererBase;
 
 import javax.faces.component.UIComponent;
 import javax.faces.component.UIInput;
@@ -114,7 +114,7 @@
 
   private static String getTagName(Class clazz) {
     String className = ClassUtils.getShortClassName(clazz);
-    if (className.equals(ClassUtils.getShortClassName(RendererBase.class))) {
+    if (className.equals(ClassUtils.getShortClassName(LayoutableRendererBase.class))) {
       return "Tobago";
     } else if (className.endsWith("Renderer")) {
       return className.substring(0, className.lastIndexOf("Renderer"));

Modified: myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/config/TobagoConfig.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/config/TobagoConfig.java?view=diff&rev=531346&r1=531345&r2=531346
==============================================================================
--- myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/config/TobagoConfig.java (original)
+++ myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/config/TobagoConfig.java Sun Apr 22 23:10:30 2007
@@ -20,6 +20,7 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.myfaces.tobago.context.Theme;
+import org.apache.myfaces.tobago.context.RenderersConfig;
 
 import javax.faces.context.FacesContext;
 import java.util.ArrayList;
@@ -42,6 +43,7 @@
   private List<MappingRule> mappingRules;
   private boolean ajaxEnabled;
   private Map<String, Theme> availableTheme;
+  private RenderersConfig renderersConfig;
 
 
   public TobagoConfig() {
@@ -179,6 +181,14 @@
 
   public void setAvailableThemes(Map<String, Theme> availableTheme) {
     this.availableTheme = availableTheme;
+  }
+
+  public RenderersConfig getRenderersConfig() {
+    return renderersConfig;
+  }
+
+  public void setRenderersConfig(RenderersConfig renderersConfig) {
+    this.renderersConfig = renderersConfig;
   }
 }
 

Modified: myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/config/TobagoConfigParser.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/config/TobagoConfigParser.java?view=diff&rev=531346&r1=531345&r2=531346
==============================================================================
--- myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/config/TobagoConfigParser.java (original)
+++ myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/config/TobagoConfigParser.java Sun Apr 22 23:10:30 2007
@@ -26,6 +26,9 @@
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.apache.myfaces.tobago.context.RenderersConfigImpl;
+import org.apache.myfaces.tobago.context.RendererConfig;
+import org.apache.myfaces.tobago.context.MarkupConfig;
 import org.xml.sax.SAXException;
 
 import javax.faces.FacesException;
@@ -82,6 +85,14 @@
 
     // enable ajax
     digester.addCallMethod("tobago-config/ajax-enabled", "setAjaxEnabled", 0);
+    digester.addObjectCreate("tobago-config/renderers", RenderersConfigImpl.class);
+    digester.addSetNext("tobago-config/renderers", "setRenderersConfig");
+    digester.addObjectCreate("tobago-config/renderers/renderer",  RendererConfig.class);
+    digester.addSetNext("tobago-config/renderers/renderer", "addRenderer");
+    digester.addCallMethod("tobago-config/renderers/renderer/name", "setName", 0);
+    digester.addObjectCreate("tobago-config/renderers/renderer/supported-markup",  MarkupConfig.class);
+    digester.addSetNext("tobago-config/renderers/renderer/supported-markup", "setMarkupConfig");
+    digester.addCallMethod("tobago-config/renderers/renderer/supported-markup/markup", "addMarkup" , 0);
 
     return digester;
   }

Modified: myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/context/RenderersConfig.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/context/RenderersConfig.java?view=diff&rev=531346&r1=531345&r2=531346
==============================================================================
--- myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/context/RenderersConfig.java (original)
+++ myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/context/RenderersConfig.java Sun Apr 22 23:10:30 2007
@@ -17,14 +17,16 @@
  * limitations under the License.
  */
 
+import java.util.Collection;
+
 /*
- * Created by IntelliJ IDEA.
- * User: bommel
  * Date: Sep 24, 2006
  * Time: 12:32:35 PM
  */
 public interface RenderersConfig {
 
   boolean isMarkupSupported(String rendererName, String markup);
+
+  Collection<RendererConfig> getRendererConfigs();
 
 }

Modified: myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/context/RenderersConfigImpl.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/context/RenderersConfigImpl.java?view=diff&rev=531346&r1=531345&r2=531346
==============================================================================
--- myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/context/RenderersConfigImpl.java (original)
+++ myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/context/RenderersConfigImpl.java Sun Apr 22 23:10:30 2007
@@ -26,8 +26,6 @@
 import java.io.Serializable;
 
 /*
-* Created by IntelliJ IDEA.
-* User: bommel
 * Date: Sep 24, 2006
 * Time: 3:46:11 PM
 */
@@ -49,12 +47,16 @@
     this.merged = merged;
   }
 
-  Collection<RendererConfig>  getRendererConfigs() {
+  public Collection<RendererConfig>  getRendererConfigs() {
     return renderer.values();
   }
 
   public void addRenderer(RendererConfig rendererConfig) {
-    if (!renderer.containsKey(rendererConfig.getName())) {
+    addRenderer(rendererConfig, false);
+  }
+
+  public void addRenderer(RendererConfig rendererConfig, boolean override) {
+    if (override || !renderer.containsKey(rendererConfig.getName())) {
       renderer.put(rendererConfig.getName(), rendererConfig);
     }
   }
@@ -72,10 +74,10 @@
     }
   }
 
-  void merge(RenderersConfigImpl renderersConfig) {
+  void merge(RenderersConfig renderersConfig, boolean override) {
     Collection<RendererConfig> renderers = renderersConfig.getRendererConfigs();
     for (RendererConfig rendererConfig : renderers) {
-      addRenderer(rendererConfig);
+      addRenderer(rendererConfig, override);
     }
   }
 

Modified: myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/context/ResourceManagerFactory.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/context/ResourceManagerFactory.java?view=diff&rev=531346&r1=531345&r2=531346
==============================================================================
--- myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/context/ResourceManagerFactory.java (original)
+++ myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/context/ResourceManagerFactory.java Sun Apr 22 23:10:30 2007
@@ -56,7 +56,7 @@
     ResourceLocator resourceLocator = new ResourceLocator(
         servletContext, resourceManager, themeBuilder);
     resourceLocator.locate();
-    Map<String, Theme> availableThemes = themeBuilder.resolveThemes();
+    Map<String, Theme> availableThemes = themeBuilder.resolveThemes(tobagoConfig.getRenderersConfig());
     tobagoConfig.setAvailableThemes(availableThemes);
     for (Theme theme : availableThemes.values()) {
       tobagoConfig.addResourceDir(theme.getResourcePath());

Modified: myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/context/ThemeBuilder.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/context/ThemeBuilder.java?view=diff&rev=531346&r1=531345&r2=531346
==============================================================================
--- myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/context/ThemeBuilder.java (original)
+++ myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/context/ThemeBuilder.java Sun Apr 22 23:10:30 2007
@@ -36,7 +36,7 @@
 
   private List<ThemeImpl> availableThemes = new ArrayList<ThemeImpl>();
 
-  public Map<String, Theme> resolveThemes() {
+  public Map<String, Theme> resolveThemes(RenderersConfig renderersConfig) {
     Map<String, ThemeImpl> map = new HashMap<String, ThemeImpl>();
     for (ThemeImpl theme : availableThemes) {
       LOG.debug("theme from tobago-theme.xml files:" + theme.getName());
@@ -51,7 +51,7 @@
       theme.resolveFallbacks();
     }
     for (ThemeImpl theme : availableThemes) {
-      theme.resolveRendererConfig();
+      theme.resolveRendererConfig(renderersConfig);
     }
     Map<String, Theme> result = new HashMap<String, Theme>();
     for (ThemeImpl theme : availableThemes) {

Modified: myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/context/ThemeImpl.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/context/ThemeImpl.java?view=diff&rev=531346&r1=531345&r2=531346
==============================================================================
--- myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/context/ThemeImpl.java (original)
+++ myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/context/ThemeImpl.java Sun Apr 22 23:10:30 2007
@@ -19,6 +19,7 @@
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.apache.myfaces.tobago.config.TobagoConfig;
 
 import java.util.List;
 import java.util.ArrayList;
@@ -108,21 +109,24 @@
     }
   }
 
-  public void resolveRendererConfig() {
+  public void resolveRendererConfig(RenderersConfig rendererConfigFromTobagoConfig) {
     if (renderersConfig == null) {
       renderersConfig = new RenderersConfigImpl();
     }
     if (!renderersConfig.isMerged()) {
       ThemeImpl fallback  = getFallback();
       if (fallback != null) {
-        fallback.resolveRendererConfig();
+        fallback.resolveRendererConfig(rendererConfigFromTobagoConfig);
         RenderersConfigImpl fallbackRenderersConfig = fallback.getRenderersConfigImpl();
         if (fallbackRenderersConfig != null) {
-          renderersConfig.merge(fallbackRenderersConfig);
+          renderersConfig.merge(fallbackRenderersConfig, false);
           if (LOG.isDebugEnabled()) {
             LOG.debug("merge markupconfig from " + fallback.getName() + " for " + getName());
           }
         }
+      }
+      if (rendererConfigFromTobagoConfig != null) {
+        renderersConfig.merge(rendererConfigFromTobagoConfig, true);
       }
       renderersConfig.setMerged(true);
       if (LOG.isDebugEnabled()) {

Modified: myfaces/tobago/trunk/core/src/main/resources/org/apache/myfaces/tobago/config/tobago-config_1_0.dtd
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/core/src/main/resources/org/apache/myfaces/tobago/config/tobago-config_1_0.dtd?view=diff&rev=531346&r1=531345&r2=531346
==============================================================================
--- myfaces/tobago/trunk/core/src/main/resources/org/apache/myfaces/tobago/config/tobago-config_1_0.dtd (original)
+++ myfaces/tobago/trunk/core/src/main/resources/org/apache/myfaces/tobago/config/tobago-config_1_0.dtd Sun Apr 22 23:10:30 2007
@@ -19,7 +19,7 @@
 
 <!ENTITY % Boolean "(true|false|yes|no)">
 
-<!ELEMENT tobago-config (theme-config, resource-dir*, load-theme-resources-from-classpath?, mapping-rule*, ajax-enabled?)>
+<!ELEMENT tobago-config (theme-config, resource-dir*, load-theme-resources-from-classpath?, mapping-rule*, ajax-enabled?, renderers?)>
 
 <!ELEMENT theme-config (default-theme, supported-theme*)>
 <!ELEMENT default-theme (#PCDATA)>
@@ -43,3 +43,8 @@
 <!ELEMENT value (#PCDATA)>
 
 <!ELEMENT ajax-enabled (#PCDATA)>
+
+<!ELEMENT renderers (renderer)*>
+<!ELEMENT renderer (name|supported-markup)*>
+<!ELEMENT supported-markup (markup)*>
+<!ELEMENT markup (#PCDATA)>