You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by mc...@apache.org on 2009/07/07 18:17:51 UTC

svn commit: r791898 - in /myfaces/core/branches/2_0_0/impl/src/main/java/org/apache/myfaces/config: ./ annotation/ element/ impl/digester/ impl/digester/elements/

Author: mconcini
Date: Tue Jul  7 16:17:51 2009
New Revision: 791898

URL: http://svn.apache.org/viewvc?rev=791898&view=rev
Log:
MYFACES-2264

Added:
    myfaces/core/branches/2_0_0/impl/src/main/java/org/apache/myfaces/config/element/Behavior.java
    myfaces/core/branches/2_0_0/impl/src/main/java/org/apache/myfaces/config/impl/digester/elements/Behavior.java
Modified:
    myfaces/core/branches/2_0_0/impl/src/main/java/org/apache/myfaces/config/FacesConfigDispenser.java
    myfaces/core/branches/2_0_0/impl/src/main/java/org/apache/myfaces/config/FacesConfigurator.java
    myfaces/core/branches/2_0_0/impl/src/main/java/org/apache/myfaces/config/annotation/AnnotationConfigurator.java
    myfaces/core/branches/2_0_0/impl/src/main/java/org/apache/myfaces/config/impl/digester/DigesterFacesConfigDispenserImpl.java
    myfaces/core/branches/2_0_0/impl/src/main/java/org/apache/myfaces/config/impl/digester/DigesterFacesConfigUnmarshallerImpl.java
    myfaces/core/branches/2_0_0/impl/src/main/java/org/apache/myfaces/config/impl/digester/elements/FacesConfig.java

Modified: myfaces/core/branches/2_0_0/impl/src/main/java/org/apache/myfaces/config/FacesConfigDispenser.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2_0_0/impl/src/main/java/org/apache/myfaces/config/FacesConfigDispenser.java?rev=791898&r1=791897&r2=791898&view=diff
==============================================================================
--- myfaces/core/branches/2_0_0/impl/src/main/java/org/apache/myfaces/config/FacesConfigDispenser.java (original)
+++ myfaces/core/branches/2_0_0/impl/src/main/java/org/apache/myfaces/config/FacesConfigDispenser.java Tue Jul  7 16:17:51 2009
@@ -22,6 +22,7 @@
 
 import javax.el.ELResolver;
 
+import org.apache.myfaces.config.element.Behavior;
 import org.apache.myfaces.config.element.ManagedBean;
 import org.apache.myfaces.config.element.NavigationRule;
 import org.apache.myfaces.config.element.Renderer;
@@ -247,4 +248,10 @@
      * @return Iterator over (@link SystemEventListener) implementation class names 
      */
     public Collection<SystemEventListener> getSystemEventListeners();
+    
+    /**
+     * @return collection of behaviors
+     */
+    
+    public Collection<Behavior> getBehaviors ();
 }

Modified: myfaces/core/branches/2_0_0/impl/src/main/java/org/apache/myfaces/config/FacesConfigurator.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2_0_0/impl/src/main/java/org/apache/myfaces/config/FacesConfigurator.java?rev=791898&r1=791897&r2=791898&view=diff
==============================================================================
--- myfaces/core/branches/2_0_0/impl/src/main/java/org/apache/myfaces/config/FacesConfigurator.java (original)
+++ myfaces/core/branches/2_0_0/impl/src/main/java/org/apache/myfaces/config/FacesConfigurator.java Tue Jul  7 16:17:51 2009
@@ -73,6 +73,7 @@
 import org.apache.myfaces.application.ApplicationImpl;
 import org.apache.myfaces.component.visit.VisitContextFactoryImpl;
 import org.apache.myfaces.config.annotation.AnnotationConfigurator;
+import org.apache.myfaces.config.element.Behavior;
 import org.apache.myfaces.config.element.ManagedBean;
 import org.apache.myfaces.config.element.NavigationRule;
 import org.apache.myfaces.config.element.Renderer;
@@ -1623,7 +1624,11 @@
         {
             application.addValidator(validatorId, dispenser.getValidatorClass(validatorId));
         }
-
+        
+        for (Behavior behavior : dispenser.getBehaviors()) {
+            application.addBehavior(behavior.getBehaviorId(), behavior.getBehaviorClass());
+        }
+        
         RuntimeConfig runtimeConfig = getRuntimeConfig();
 
         runtimeConfig.setPropertyResolverChainHead(getApplicationObject(PropertyResolver.class,

Modified: myfaces/core/branches/2_0_0/impl/src/main/java/org/apache/myfaces/config/annotation/AnnotationConfigurator.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2_0_0/impl/src/main/java/org/apache/myfaces/config/annotation/AnnotationConfigurator.java?rev=791898&r1=791897&r2=791898&view=diff
==============================================================================
--- myfaces/core/branches/2_0_0/impl/src/main/java/org/apache/myfaces/config/annotation/AnnotationConfigurator.java (original)
+++ myfaces/core/branches/2_0_0/impl/src/main/java/org/apache/myfaces/config/annotation/AnnotationConfigurator.java Tue Jul  7 16:17:51 2009
@@ -46,6 +46,8 @@
 import javax.faces.bean.SessionScoped;
 import javax.faces.bean.ViewScoped;
 import javax.faces.component.FacesComponent;
+import javax.faces.component.behavior.Behavior;
+import javax.faces.component.behavior.FacesBehavior;
 import javax.faces.context.ExternalContext;
 import javax.faces.convert.FacesConverter;
 import javax.faces.event.ComponentSystemEvent;
@@ -878,6 +880,27 @@
                 (Class<? extends ComponentSystemEvent>) clazz);
         }
         
+        FacesBehavior facesBehavior = (FacesBehavior) clazz.getAnnotation (FacesBehavior.class);
+        
+        if (facesBehavior != null) {
+            // Can only apply @FacesBehavior to Behavior implementors.
+            
+            if (!Behavior.class.isAssignableFrom (clazz)) {
+                // Just log this.  We'll catch it later in the runtime.
+                
+                if (log.isWarnEnabled()) {
+                    log.warn (clazz.getName() + " is annotated with @javax.faces.component.behavior.FacesBehavior, " +
+                            "but does not implement javax.faces.component.behavior.Behavior");
+                }
+            }
+            
+            if (log.isTraceEnabled()) {
+                log.trace ("addBehavior(" + facesBehavior.value() + ", " + clazz.getName() + ")");
+            }
+            
+            application.addBehavior (facesBehavior.value(), clazz.getName());
+        }
+        
         // TODO: All annotations scanned at startup must be configured here!
         //FacesBehaviorRenderer
     }

Added: myfaces/core/branches/2_0_0/impl/src/main/java/org/apache/myfaces/config/element/Behavior.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2_0_0/impl/src/main/java/org/apache/myfaces/config/element/Behavior.java?rev=791898&view=auto
==============================================================================
--- myfaces/core/branches/2_0_0/impl/src/main/java/org/apache/myfaces/config/element/Behavior.java (added)
+++ myfaces/core/branches/2_0_0/impl/src/main/java/org/apache/myfaces/config/element/Behavior.java Tue Jul  7 16:17:51 2009
@@ -0,0 +1,29 @@
+/*
+ * 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.myfaces.config.element;
+
+/**
+ * Model for <behavior> config element.
+ */
+
+public interface Behavior
+{
+    public String getBehaviorId ();
+    public String getBehaviorClass ();
+}

Modified: myfaces/core/branches/2_0_0/impl/src/main/java/org/apache/myfaces/config/impl/digester/DigesterFacesConfigDispenserImpl.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2_0_0/impl/src/main/java/org/apache/myfaces/config/impl/digester/DigesterFacesConfigDispenserImpl.java?rev=791898&r1=791897&r2=791898&view=diff
==============================================================================
--- myfaces/core/branches/2_0_0/impl/src/main/java/org/apache/myfaces/config/impl/digester/DigesterFacesConfigDispenserImpl.java (original)
+++ myfaces/core/branches/2_0_0/impl/src/main/java/org/apache/myfaces/config/impl/digester/DigesterFacesConfigDispenserImpl.java Tue Jul  7 16:17:51 2009
@@ -29,6 +29,7 @@
 import javax.faces.render.RenderKitFactory;
 
 import org.apache.myfaces.config.FacesConfigDispenser;
+import org.apache.myfaces.config.element.Behavior;
 import org.apache.myfaces.config.element.ManagedBean;
 import org.apache.myfaces.config.element.NavigationRule;
 import org.apache.myfaces.config.element.Renderer;
@@ -67,6 +68,7 @@
     private Map<String, String> converterByClass = new HashMap<String, String>();
     private Map<String, String> converterById = new HashMap<String, String>();
     private Map<String, String> validators = new HashMap<String, String>();
+    private List<Behavior> behaviors = new ArrayList<Behavior>();
     
     private Map<String, Converter> converterConfigurationByClassName = new HashMap<String, Converter>();
     
@@ -113,7 +115,8 @@
 
         components.putAll(config.getComponents());
         validators.putAll(config.getValidators());
-
+        behaviors.addAll (config.getBehaviors());
+        
         for (Application application : config.getApplications())
         {
             if (!application.getDefaultRenderkitId().isEmpty())
@@ -562,5 +565,9 @@
     {        
         return systemEventListeners;
     }
-
+    
+    public Collection<Behavior> getBehaviors ()
+    {
+        return behaviors;
+    }
 }

Modified: myfaces/core/branches/2_0_0/impl/src/main/java/org/apache/myfaces/config/impl/digester/DigesterFacesConfigUnmarshallerImpl.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2_0_0/impl/src/main/java/org/apache/myfaces/config/impl/digester/DigesterFacesConfigUnmarshallerImpl.java?rev=791898&r1=791897&r2=791898&view=diff
==============================================================================
--- myfaces/core/branches/2_0_0/impl/src/main/java/org/apache/myfaces/config/impl/digester/DigesterFacesConfigUnmarshallerImpl.java (original)
+++ myfaces/core/branches/2_0_0/impl/src/main/java/org/apache/myfaces/config/impl/digester/DigesterFacesConfigUnmarshallerImpl.java Tue Jul  7 16:17:51 2009
@@ -232,6 +232,13 @@
         digester.addCallMethod("faces-config/validator", "addValidator", 2);
         digester.addCallParam("faces-config/validator/validator-id", 0);
         digester.addCallParam("faces-config/validator/validator-class", 1);
+        
+        // 2.0 specific start
+        digester.addObjectCreate ("faces-config/behavior", Behavior.class);
+        digester.addSetNext ("faces-config/behavior", "addBehavior");
+        digester.addCallMethod ("faces-config/behavior/behavior-class", "setBehaviorClass", 0);
+        digester.addCallMethod ("faces-config/behavior/behavior-id", "setBehaviorId", 0);
+        // 2.0 specific end
     }
 
     public FacesConfig getFacesConfig(InputStream in, String systemId) throws IOException, SAXException

Added: myfaces/core/branches/2_0_0/impl/src/main/java/org/apache/myfaces/config/impl/digester/elements/Behavior.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2_0_0/impl/src/main/java/org/apache/myfaces/config/impl/digester/elements/Behavior.java?rev=791898&view=auto
==============================================================================
--- myfaces/core/branches/2_0_0/impl/src/main/java/org/apache/myfaces/config/impl/digester/elements/Behavior.java (added)
+++ myfaces/core/branches/2_0_0/impl/src/main/java/org/apache/myfaces/config/impl/digester/elements/Behavior.java Tue Jul  7 16:17:51 2009
@@ -0,0 +1,49 @@
+/*
+ * 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.myfaces.config.impl.digester.elements;
+
+/**
+ * Implementation of model for <behavior> element.
+ */
+
+public class Behavior implements org.apache.myfaces.config.element.Behavior
+{
+    private String behaviorClass;
+    private String behaviorId;
+    
+    public String getBehaviorClass()
+    {
+        return this.behaviorClass;
+    }
+
+    public String getBehaviorId()
+    {
+        return this.behaviorId;
+    }
+    
+    public void setBehaviorClass (String behaviorClass)
+    {
+        this.behaviorClass = behaviorClass;
+    }
+    
+    public void setBehaviorId (String behaviorId)
+    {
+        this.behaviorId = behaviorId;
+    }
+}

Modified: myfaces/core/branches/2_0_0/impl/src/main/java/org/apache/myfaces/config/impl/digester/elements/FacesConfig.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2_0_0/impl/src/main/java/org/apache/myfaces/config/impl/digester/elements/FacesConfig.java?rev=791898&r1=791897&r2=791898&view=diff
==============================================================================
--- myfaces/core/branches/2_0_0/impl/src/main/java/org/apache/myfaces/config/impl/digester/elements/FacesConfig.java (original)
+++ myfaces/core/branches/2_0_0/impl/src/main/java/org/apache/myfaces/config/impl/digester/elements/FacesConfig.java Tue Jul  7 16:17:51 2009
@@ -38,6 +38,7 @@
     private List<RenderKit> renderKits = new ArrayList<RenderKit>();
     private List<String> lifecyclePhaseListener = new ArrayList<String>();
     private Map<String, String> validators = new HashMap<String, String>();
+    private List<Behavior> behaviors = new ArrayList<Behavior>();
     
     private String metadataComplete;
     //Ordering variables
@@ -91,7 +92,12 @@
     {
         validators.put(id, validatorClass);
     }
-
+    
+    public void addBehavior (Behavior behavior)
+    {
+        behaviors.add (behavior);
+    }
+    
     public List<Application> getApplications()
     {
         return applications;
@@ -136,7 +142,12 @@
     {
         return validators;
     }
-
+    
+    public List<Behavior> getBehaviors ()
+    {
+        return behaviors;
+    }
+    
     public String getName()
     {
         return name;