You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lu...@apache.org on 2011/11/23 00:10:08 UTC
svn commit: r1205219 - in /myfaces/shared/trunk_4.0.x/core: pom.xml
src/main/java/org/apache/myfaces/shared/application/NavigationUtils.java
src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlRendererUtils.java
Author: lu4242
Date: Tue Nov 22 23:10:06 2011
New Revision: 1205219
URL: http://svn.apache.org/viewvc?rev=1205219&view=rev
Log:
synch with impl shared
Added:
myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/application/NavigationUtils.java
Modified:
myfaces/shared/trunk_4.0.x/core/pom.xml
myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlRendererUtils.java
Modified: myfaces/shared/trunk_4.0.x/core/pom.xml
URL: http://svn.apache.org/viewvc/myfaces/shared/trunk_4.0.x/core/pom.xml?rev=1205219&r1=1205218&r2=1205219&view=diff
==============================================================================
--- myfaces/shared/trunk_4.0.x/core/pom.xml (original)
+++ myfaces/shared/trunk_4.0.x/core/pom.xml Tue Nov 22 23:10:06 2011
@@ -143,7 +143,7 @@
<profile>
<id>synch-myfaces-impl-shared</id>
<properties>
- <myfaces.impl.shared.version>2.0.10-SNAPSHOT</myfaces.impl.shared.version>
+ <myfaces.impl.shared.version>2.0.11-SNAPSHOT</myfaces.impl.shared.version>
</properties>
<activation>
<property>
Added: myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/application/NavigationUtils.java
URL: http://svn.apache.org/viewvc/myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/application/NavigationUtils.java?rev=1205219&view=auto
==============================================================================
--- myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/application/NavigationUtils.java (added)
+++ myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/application/NavigationUtils.java Tue Nov 22 23:10:06 2011
@@ -0,0 +1,107 @@
+/*
+ * 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.shared.application;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.faces.context.FacesContext;
+
+/**
+ *
+ * @author Leonardo Uribe
+ *
+ */
+public class NavigationUtils
+{
+ /**
+ * Evaluate all EL expressions found as parameters and return a map that can be used for
+ * redirect or render bookmark links
+ *
+ * @param parameters parameter map retrieved from NavigationCase.getParameters()
+ * @return
+ */
+ public static Map<String, List<String> > getEvaluatedNavigationParameters(Map<String, List<String> > parameters)
+ {
+ Map<String,List<String>> evaluatedParameters = null;
+ if (parameters != null && parameters.size() > 0)
+ {
+ evaluatedParameters = new HashMap<String, List<String>>();
+ for (Map.Entry<String, List<String>> pair : parameters.entrySet())
+ {
+ boolean containsEL = false;
+ for (String value : pair.getValue())
+ {
+ if (_isExpression(value))
+ {
+ containsEL = true;
+ break;
+ }
+ }
+ if (containsEL)
+ {
+ evaluatedParameters.put(pair.getKey(), _evaluateValueExpressions(pair.getValue()));
+ }
+ else
+ {
+ evaluatedParameters.put(pair.getKey(), pair.getValue());
+ }
+ }
+ }
+ else
+ {
+ evaluatedParameters = parameters;
+ }
+ return evaluatedParameters;
+ }
+
+ /**
+ * Checks the Strings in the List for EL expressions and evaluates them.
+ * Note that the returned List will be a copy of the given List, because
+ * otherwise it will have unwanted side-effects.
+ * @param values
+ * @return
+ */
+ private static List<String> _evaluateValueExpressions(List<String> values)
+ {
+ // note that we have to create a new List here, because if we
+ // change any value on the given List, it will be changed in the
+ // NavigationCase too and the EL expression won't be evaluated again
+ List<String> target = new ArrayList<String>(values.size());
+ FacesContext context = FacesContext.getCurrentInstance();
+ for (String value : values)
+ {
+ if (_isExpression(value))
+ {
+ // evaluate the ValueExpression
+ value = context.getApplication().evaluateExpressionGet(context, value, String.class);
+ }
+ target.add(value);
+ }
+ return target;
+ }
+
+ private static boolean _isExpression(String text)
+ {
+ return text.indexOf("#{") != -1;
+ }
+
+}
Modified: myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlRendererUtils.java
URL: http://svn.apache.org/viewvc/myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlRendererUtils.java?rev=1205219&r1=1205218&r2=1205219&view=diff
==============================================================================
--- myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlRendererUtils.java (original)
+++ myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlRendererUtils.java Tue Nov 22 23:10:06 2011
@@ -63,6 +63,7 @@ import javax.faces.convert.Converter;
import javax.faces.model.SelectItem;
import javax.faces.model.SelectItemGroup;
+import org.apache.myfaces.shared.application.NavigationUtils;
import org.apache.myfaces.shared.component.DisplayValueOnlyCapable;
import org.apache.myfaces.shared.component.EscapeCapable;
import org.apache.myfaces.shared.config.MyfacesConfig;
@@ -1589,8 +1590,8 @@ public final class HtmlRendererUtils
}
}
// handle NavigationCase parameters
- Map<String, List<String>> navigationCaseParams = navigationCase
- .getParameters();
+ Map<String, List<String>> navigationCaseParams =
+ NavigationUtils.getEvaluatedNavigationParameters(navigationCase.getParameters());
if (navigationCaseParams != null)
{
if (parameters == null)