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;