You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by gp...@apache.org on 2010/09/16 18:51:28 UTC

svn commit: r997839 - in /myfaces/extensions/cdi/trunk: core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/utils/ examples/jsf-examples/hello_myfaces-codi_jsf12/src/main/webapp/ jse-modules/scripting-module/impl/src/main/java/org/apach...

Author: gpetracek
Date: Thu Sep 16 16:51:27 2010
New Revision: 997839

URL: http://svn.apache.org/viewvc?rev=997839&view=rev
Log:
EXTCDI-54 and EXTCDI-56 minor refactoring and very basic support for parameterized scripts in el expressions

Added:
    myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/utils/UnmodifiableMap.java
    myfaces/extensions/cdi/trunk/jse-modules/scripting-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/scripting/impl/DefaultScriptBuilder.java
    myfaces/extensions/cdi/trunk/jse-modules/scripting-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/scripting/impl/DefaultScriptExecutor.java
    myfaces/extensions/cdi/trunk/jse-modules/scripting-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/scripting/impl/util/ArgumentAwareScriptHelperMap.java
    myfaces/extensions/cdi/trunk/jse-modules/scripting-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/scripting/impl/util/ExpressionLanguageSelectionMap.java
    myfaces/extensions/cdi/trunk/jse-modules/scripting-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/scripting/impl/util/ScriptHelperMap.java
    myfaces/extensions/cdi/trunk/jse-modules/scripting-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/scripting/impl/util/ScriptingUtils.java
Removed:
    myfaces/extensions/cdi/trunk/jse-modules/scripting-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/scripting/impl/ScriptEngineManagerProvider.java
Modified:
    myfaces/extensions/cdi/trunk/examples/jsf-examples/hello_myfaces-codi_jsf12/src/main/webapp/scripting.jsp
    myfaces/extensions/cdi/trunk/jse-modules/scripting-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/scripting/impl/ScriptEngineManagerProducer.java
    myfaces/extensions/cdi/trunk/jse-modules/scripting-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/scripting/impl/util/ExceptionUtils.java

Added: myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/utils/UnmodifiableMap.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/utils/UnmodifiableMap.java?rev=997839&view=auto
==============================================================================
--- myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/utils/UnmodifiableMap.java (added)
+++ myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/utils/UnmodifiableMap.java Thu Sep 16 16:51:27 2010
@@ -0,0 +1,54 @@
+/*
+ * 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.extensions.cdi.core.impl.utils;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @author Gerhard Petracek
+ */
+public class UnmodifiableMap<K, V> extends HashMap<K, V>
+{
+    private static final long serialVersionUID = -7117422976009229722L;
+
+    @Override
+    public final V put(K key, V value)
+    {
+        throw new UnsupportedOperationException("It isn't allowed to modify this map!");
+    }
+
+    @Override
+    public final void putAll(Map<? extends K, ? extends V> m)
+    {
+        throw new UnsupportedOperationException("It isn't allowed to modify this map!");
+    }
+
+    @Override
+    public final V remove(Object key)
+    {
+        throw new UnsupportedOperationException("It isn't allowed to modify this map!");
+    }
+
+    @Override
+    public final void clear()
+    {
+        throw new UnsupportedOperationException("It isn't allowed to modify this map!");
+    }
+}

Modified: myfaces/extensions/cdi/trunk/examples/jsf-examples/hello_myfaces-codi_jsf12/src/main/webapp/scripting.jsp
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/examples/jsf-examples/hello_myfaces-codi_jsf12/src/main/webapp/scripting.jsp?rev=997839&r1=997838&r2=997839&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/examples/jsf-examples/hello_myfaces-codi_jsf12/src/main/webapp/scripting.jsp (original)
+++ myfaces/extensions/cdi/trunk/examples/jsf-examples/hello_myfaces-codi_jsf12/src/main/webapp/scripting.jsp Thu Sep 16 16:51:27 2010
@@ -30,6 +30,7 @@
                 <h:outputText value="result via injected ScriptBuilder (parameterized  script): #{serverSideScriptingBean.result3}"/>
                 <h:outputText value="result via injected ScriptEngine: #{serverSideScriptingBean.manualResult}"/>
                 <h:outputText value="inline: #{sExec.js['2 * 7']}"/>
+                <h:outputText value="inline: #{sExec.js['[a:3,b:4]']['a + b']}"/>
             </h:panelGrid>
         </f:view>
     </body>

Added: myfaces/extensions/cdi/trunk/jse-modules/scripting-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/scripting/impl/DefaultScriptBuilder.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/jse-modules/scripting-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/scripting/impl/DefaultScriptBuilder.java?rev=997839&view=auto
==============================================================================
--- myfaces/extensions/cdi/trunk/jse-modules/scripting-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/scripting/impl/DefaultScriptBuilder.java (added)
+++ myfaces/extensions/cdi/trunk/jse-modules/scripting-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/scripting/impl/DefaultScriptBuilder.java Thu Sep 16 16:51:27 2010
@@ -0,0 +1,106 @@
+/*
+ * 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.extensions.cdi.scripting.impl;
+
+import org.apache.myfaces.extensions.cdi.scripting.api.ScriptBuilder;
+import static org.apache.myfaces.extensions.cdi.scripting.impl.util.ExceptionUtils.overrideBuilderState;
+
+import javax.script.Bindings;
+import javax.script.SimpleBindings;
+import javax.script.ScriptException;
+import javax.script.ScriptEngine;
+import java.util.Map;
+import java.util.HashMap;
+
+/**
+ * @author Gerhard Petracek
+ */
+class DefaultScriptBuilder implements ScriptBuilder
+{
+    private ScriptEngine scriptEngine;
+    private Map<String, Object> arguments;
+    private String script;
+    private Bindings bindings;
+
+    DefaultScriptBuilder(ScriptEngine scriptEngine)
+    {
+        this.scriptEngine = scriptEngine;
+    }
+
+    public ScriptBuilder script(String script)
+    {
+        this.script = script;
+        return this;
+    }
+
+    public ScriptBuilder namedArgument(String name, Object value)
+    {
+        if(this.bindings != null)
+        {
+            throw overrideBuilderState("(named) argument/s");
+        }
+
+        if(this.arguments == null)
+        {
+            this.arguments = new HashMap<String, Object>();
+        }
+        this.arguments.put(name, value);
+        return this;
+    }
+
+    public ScriptBuilder bindings(Bindings bindings)
+    {
+        if(this.arguments != null)
+        {
+            throw overrideBuilderState("bindings");
+        }
+
+        this.bindings = bindings;
+        return this;
+    }
+
+    public Object eval()
+    {
+        return eval(Object.class);
+    }
+
+    public <T> T eval(Class<T> returnType)
+    {
+        try
+        {
+            if(this.bindings == null && this.arguments == null)
+            {
+                return (T)scriptEngine.eval(this.script);
+            }
+
+            Bindings scriptBindings = this.bindings;
+
+            if(scriptBindings == null)
+            {
+                scriptBindings = new SimpleBindings(this.arguments);
+            }
+
+            return (T)scriptEngine.eval(this.script, scriptBindings);
+        }
+        catch (ScriptException e)
+        {
+            throw new RuntimeException(e);
+        }
+    }
+}

Added: myfaces/extensions/cdi/trunk/jse-modules/scripting-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/scripting/impl/DefaultScriptExecutor.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/jse-modules/scripting-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/scripting/impl/DefaultScriptExecutor.java?rev=997839&view=auto
==============================================================================
--- myfaces/extensions/cdi/trunk/jse-modules/scripting-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/scripting/impl/DefaultScriptExecutor.java (added)
+++ myfaces/extensions/cdi/trunk/jse-modules/scripting-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/scripting/impl/DefaultScriptExecutor.java Thu Sep 16 16:51:27 2010
@@ -0,0 +1,92 @@
+/*
+ * 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.extensions.cdi.scripting.impl;
+
+import org.apache.myfaces.extensions.cdi.scripting.api.ScriptExecutor;
+
+import javax.script.Bindings;
+import javax.script.ScriptException;
+import javax.script.SimpleBindings;
+import javax.script.ScriptEngine;
+import java.util.Map;
+
+/**
+ * @author Gerhard Petracek
+ */
+public class DefaultScriptExecutor implements ScriptExecutor
+{
+    private ScriptEngine scriptEngine;
+
+    public DefaultScriptExecutor(ScriptEngine scriptEngine)
+    {
+        this.scriptEngine = scriptEngine;
+    }
+
+    public Object eval(String script)
+    {
+        return eval(script, Object.class);
+    }
+
+    public Object eval(String script, Map<String, Object> arguments)
+    {
+        return eval(script, arguments, Object.class);
+    }
+
+    public Object eval(String script, Bindings bindings)
+    {
+        return eval(script, bindings, Object.class);
+    }
+
+    public <T> T eval(String script, Class<T> returnType)
+    {
+        try
+        {
+            return (T)scriptEngine.eval(script);
+        }
+        catch (ScriptException e)
+        {
+            throw new RuntimeException(e);
+        }
+    }
+
+    public <T> T eval(String script, Map<String, Object> arguments, Class<T> returnType)
+    {
+        try
+        {
+            Bindings bindings = new SimpleBindings(arguments);
+            return (T)scriptEngine.eval(script, bindings);
+        }
+        catch (ScriptException e)
+        {
+            throw new RuntimeException(e);
+        }
+    }
+
+    public <T> T eval(String script, Bindings bindings, Class<T> returnType)
+    {
+        try
+        {
+            return (T)scriptEngine.eval(script, bindings);
+        }
+        catch (ScriptException e)
+        {
+            throw new RuntimeException(e);
+        }
+    }
+}

Modified: myfaces/extensions/cdi/trunk/jse-modules/scripting-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/scripting/impl/ScriptEngineManagerProducer.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/jse-modules/scripting-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/scripting/impl/ScriptEngineManagerProducer.java?rev=997839&r1=997838&r2=997839&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jse-modules/scripting-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/scripting/impl/ScriptEngineManagerProducer.java (original)
+++ myfaces/extensions/cdi/trunk/jse-modules/scripting-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/scripting/impl/ScriptEngineManagerProducer.java Thu Sep 16 16:51:27 2010
@@ -25,19 +25,14 @@ import org.apache.myfaces.extensions.cdi
 import org.apache.myfaces.extensions.cdi.scripting.api.language.Language;
 import static org.apache.myfaces.extensions.cdi.scripting.api.ScriptingModuleBeanNames.*;
 import static org.apache.myfaces.extensions.cdi.scripting.impl.util.ExceptionUtils.unknownScriptingLanguage;
-import static org.apache.myfaces.extensions.cdi.scripting.impl.util.ExceptionUtils.overrideBuilderState;
+import static org.apache.myfaces.extensions.cdi.scripting.impl.util.ScriptingUtils.*;
 
 import javax.script.ScriptEngine;
-import javax.script.ScriptEngineManager;
-import javax.script.ScriptException;
-import javax.script.Bindings;
-import javax.script.SimpleBindings;
 import javax.enterprise.inject.spi.InjectionPoint;
 import javax.enterprise.inject.Produces;
 import javax.enterprise.context.Dependent;
 import javax.inject.Named;
 import java.util.Map;
-import java.util.HashMap;
 
 /**
  * @author Gerhard Petracek
@@ -63,57 +58,7 @@ public class ScriptEngineManagerProducer
     //TODO add support for args
     public Map<String, Object> createScriptExecutorBean()
     {
-        return new HashMap<String, Object>() {
-            private static final long serialVersionUID = 9030764968435532235L;
-
-            @Override
-            public Object get(Object key)
-            {
-                if(key == null)
-                {
-                    return null;
-                }
-
-                String language;
-
-                if(key instanceof String)
-                {
-                    language = (String)key;
-                }
-                else
-                {
-                    language = key.toString();
-                }
-
-                language = expandLanguageName(language);
-
-                return createScriptExecutorForLanguage(language);
-            }
-        };
-    }
-
-    private Map<String, Object> createScriptExecutorForLanguage(final String language)
-    {
-        return new HashMap<String, Object>() {
-            private static final long serialVersionUID = 6583167904001037920L;
-
-            @Override
-            public Object get(Object key)
-            {
-                String script;
-
-                if(key instanceof String)
-                {
-                    script = (String)key;
-                }
-                else
-                {
-                    script = key.toString();
-                }
-
-                return evalScript(language, script);
-            }
-        };
+        return createExpressionLanguageHelper();
     }
 
     private interface PlaceHolderLanguage extends Language{}
@@ -128,62 +73,9 @@ public class ScriptEngineManagerProducer
         return createScriptExecutor(scriptEngine);
     }
 
-    private ScriptExecutor createScriptExecutor(final ScriptEngine scriptEngine)
+    private ScriptExecutor createScriptExecutor(ScriptEngine scriptEngine)
     {
-        return new ScriptExecutor()
-        {
-            public Object eval(String script)
-            {
-                return eval(script, Object.class);
-            }
-
-            public Object eval(String script, Map<String, Object> arguments)
-            {
-                return eval(script, arguments, Object.class);
-            }
-
-            public Object eval(String script, Bindings bindings)
-            {
-                return eval(script, bindings, Object.class);
-            }
-
-            public <T> T eval(String script, Class<T> returnType)
-            {
-                try
-                {
-                    return (T)scriptEngine.eval(script);
-                }
-                catch (ScriptException e)
-                {
-                    throw new RuntimeException(e);
-                }
-            }
-
-            public <T> T eval(String script, Map<String, Object> arguments, Class<T> returnType)
-            {
-                try
-                {
-                    Bindings bindings = new SimpleBindings(arguments);
-                    return (T)scriptEngine.eval(script, bindings);
-                }
-                catch (ScriptException e)
-                {
-                    throw new RuntimeException(e);
-                }
-            }
-
-            public <T> T eval(String script, Bindings bindings, Class<T> returnType)
-            {
-                try
-                {
-                    return (T)scriptEngine.eval(script, bindings);
-                }
-                catch (ScriptException e)
-                {
-                    throw new RuntimeException(e);
-                }
-            }
-        };
+        return new DefaultScriptExecutor(scriptEngine);
     }
 
     @Produces
@@ -196,75 +88,9 @@ public class ScriptEngineManagerProducer
         return createScriptBuilder(scriptEngine);
     }
 
-    private ScriptBuilder createScriptBuilder(final ScriptEngine scriptEngine)
+    private ScriptBuilder createScriptBuilder(ScriptEngine scriptEngine)
     {
-        return new ScriptBuilder()
-        {
-            private Map<String, Object> arguments;
-            private String script;
-            private Bindings bindings;
-
-            public ScriptBuilder script(String script)
-            {
-                this.script = script;
-                return this;
-            }
-
-            public ScriptBuilder namedArgument(String name, Object value)
-            {
-                if(this.bindings != null)
-                {
-                    throw overrideBuilderState("(named) argument/s");
-                }
-
-                if(this.arguments == null)
-                {
-                    this.arguments = new HashMap<String, Object>();
-                }
-                this.arguments.put(name, value);
-                return this;
-            }
-
-            public ScriptBuilder bindings(Bindings bindings)
-            {
-                if(this.arguments != null)
-                {
-                    throw overrideBuilderState("bindings");
-                }
-
-                this.bindings = bindings;
-                return this;
-            }
-
-            public Object eval()
-            {
-                return eval(Object.class);
-            }
-
-            public <T> T eval(Class<T> returnType)
-            {
-                try
-                {
-                    if(this.bindings == null && this.arguments == null)
-                    {
-                        return (T)scriptEngine.eval(this.script);
-                    }
-
-                    Bindings scriptBindings = this.bindings;
-
-                    if(scriptBindings == null)
-                    {
-                        scriptBindings = new SimpleBindings(this.arguments);
-                    }
-
-                    return (T)scriptEngine.eval(this.script, scriptBindings);
-                }
-                catch (ScriptException e)
-                {
-                    throw new RuntimeException(e);
-                }
-            }
-        };
+        return new DefaultScriptBuilder(scriptEngine);
     }
 
     @Produces
@@ -276,7 +102,7 @@ public class ScriptEngineManagerProducer
 
         String languageName = languageManager.getLanguageName(language);
 
-        return checkedScriptEngine(getScriptEngineManager().getEngineByName(languageName), languageName);
+        return checkedScriptEngine(getCurrentScriptEngineManager().getEngineByName(languageName), languageName);
     }
 
     /*
@@ -309,27 +135,4 @@ public class ScriptEngineManagerProducer
         }
         throw unknownScriptingLanguage(type);
     }
-
-    private Object evalScript(String language, String script)
-    {
-        try
-        {
-            return getScriptEngineManager().getEngineByName(language).eval(script);
-        }
-        catch (ScriptException e)
-        {
-            throw new RuntimeException(e);
-        }
-    }
-
-    private String expandLanguageName(String language)
-    {
-        //TODO
-        return language;
-    }
-
-    private ScriptEngineManager getScriptEngineManager()
-    {
-        return ScriptEngineManagerProvider.getScriptEngineManagerInstance();
-    }
 }

Added: myfaces/extensions/cdi/trunk/jse-modules/scripting-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/scripting/impl/util/ArgumentAwareScriptHelperMap.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/jse-modules/scripting-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/scripting/impl/util/ArgumentAwareScriptHelperMap.java?rev=997839&view=auto
==============================================================================
--- myfaces/extensions/cdi/trunk/jse-modules/scripting-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/scripting/impl/util/ArgumentAwareScriptHelperMap.java (added)
+++ myfaces/extensions/cdi/trunk/jse-modules/scripting-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/scripting/impl/util/ArgumentAwareScriptHelperMap.java Thu Sep 16 16:51:27 2010
@@ -0,0 +1,77 @@
+/*
+ * 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.extensions.cdi.scripting.impl.util;
+
+import java.util.Map;
+import java.util.HashMap;
+
+/**
+ * @author Gerhard Petracek
+ */
+class ArgumentAwareScriptHelperMap extends ScriptHelperMap
+{
+    private static final long serialVersionUID = 393871900655666197L;
+    private String language;
+    private Map<String, Object> arguments = new HashMap<String, Object>();
+
+    public ArgumentAwareScriptHelperMap(String language, String arguments)
+    {
+        this.language = language;
+
+        parseArguments(arguments);
+    }
+
+    @Override
+    public Object get(Object key)
+    {
+        String script;
+
+        if(key instanceof String)
+        {
+            script = (String)key;
+        }
+        else
+        {
+            script = key.toString();
+        }
+
+        return evalScript(this.language, script, this.arguments);
+    }
+
+    private void parseArguments(String arguments)
+    {
+        arguments = arguments.substring(1, arguments.length() - 1);
+
+        String[] argumentArray = arguments.split(",");
+
+        String key;
+        String value;
+
+        for(String currentArgument : argumentArray)
+        {
+            key = currentArgument.substring(0, currentArgument.indexOf(':'));
+            value = currentArgument.substring(currentArgument.indexOf(':') + 1);
+
+            //TODO restrict arg overriding
+            //TODO eval is specific to js -> we need an spi for it
+            //TODO add pluggable support for value-bindings
+            this.arguments.put(key, evalScript(this.language, "eval('" + value + "')", null));
+        }
+    }
+}
\ No newline at end of file

Modified: myfaces/extensions/cdi/trunk/jse-modules/scripting-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/scripting/impl/util/ExceptionUtils.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/jse-modules/scripting-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/scripting/impl/util/ExceptionUtils.java?rev=997839&r1=997838&r2=997839&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jse-modules/scripting-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/scripting/impl/util/ExceptionUtils.java (original)
+++ myfaces/extensions/cdi/trunk/jse-modules/scripting-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/scripting/impl/util/ExceptionUtils.java Thu Sep 16 16:51:27 2010
@@ -53,6 +53,5 @@ public class ExceptionUtils
     {
         return new RuntimeException("Invalid script builder (" + ScriptBuilder.class.getName() + ") state. " +
             "It isn't allowed to override the existing state of the builder with new " + newValueHint);
-
     }
 }

Added: myfaces/extensions/cdi/trunk/jse-modules/scripting-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/scripting/impl/util/ExpressionLanguageSelectionMap.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/jse-modules/scripting-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/scripting/impl/util/ExpressionLanguageSelectionMap.java?rev=997839&view=auto
==============================================================================
--- myfaces/extensions/cdi/trunk/jse-modules/scripting-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/scripting/impl/util/ExpressionLanguageSelectionMap.java (added)
+++ myfaces/extensions/cdi/trunk/jse-modules/scripting-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/scripting/impl/util/ExpressionLanguageSelectionMap.java Thu Sep 16 16:51:27 2010
@@ -0,0 +1,59 @@
+/*
+ * 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.extensions.cdi.scripting.impl.util;
+
+import org.apache.myfaces.extensions.cdi.core.impl.utils.UnmodifiableMap;
+
+/**
+ * @author Gerhard Petracek
+ */
+class ExpressionLanguageSelectionMap extends UnmodifiableMap<String, Object>
+{
+    private static final long serialVersionUID = 393871900655666197L;
+
+    @Override
+    public Object get(Object key)
+    {
+        if(key == null)
+        {
+            return null;
+        }
+
+        String language;
+
+        if(key instanceof String)
+        {
+            language = (String)key;
+        }
+        else
+        {
+            language = key.toString();
+        }
+
+        language = expandLanguageName(language);
+
+        return new ScriptHelperMap(language);
+    }
+
+    private String expandLanguageName(String language)
+    {
+        //TODO
+        return language;
+    }
+}

Added: myfaces/extensions/cdi/trunk/jse-modules/scripting-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/scripting/impl/util/ScriptHelperMap.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/jse-modules/scripting-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/scripting/impl/util/ScriptHelperMap.java?rev=997839&view=auto
==============================================================================
--- myfaces/extensions/cdi/trunk/jse-modules/scripting-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/scripting/impl/util/ScriptHelperMap.java (added)
+++ myfaces/extensions/cdi/trunk/jse-modules/scripting-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/scripting/impl/util/ScriptHelperMap.java Thu Sep 16 16:51:27 2010
@@ -0,0 +1,89 @@
+/*
+ * 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.extensions.cdi.scripting.impl.util;
+
+import org.apache.myfaces.extensions.cdi.core.impl.utils.UnmodifiableMap;
+import static org.apache.myfaces.extensions.cdi.scripting.impl.util.ScriptingUtils.getCurrentScriptEngineManager;
+
+import javax.script.ScriptException;
+import javax.script.Bindings;
+import javax.script.SimpleBindings;
+import java.util.Map;
+
+/**
+ * @author Gerhard Petracek
+ */
+class ScriptHelperMap extends UnmodifiableMap<String, Object>
+{
+    private static final long serialVersionUID = 393871900655666197L;
+    private String language;
+
+    protected ScriptHelperMap()
+    {
+    }
+
+    ScriptHelperMap(String language)
+    {
+        this.language = language;
+    }
+
+    @Override
+    public Object get(Object key)
+    {
+        String argumentsOrScript;
+
+        if(key instanceof String)
+        {
+            argumentsOrScript = (String)key;
+        }
+        else
+        {
+            argumentsOrScript = key.toString();
+        }
+
+        if(argumentsOrScript.startsWith("[") && argumentsOrScript.endsWith("]"))
+        {
+            return new ArgumentAwareScriptHelperMap(this.language, argumentsOrScript);
+        }
+
+        return evalScript(this.language, argumentsOrScript, null);
+    }
+
+    protected Object evalScript(String language, String script, Map<String, Object> arguments)
+    {
+        try
+        {
+            Bindings bindings = null;
+            if(arguments != null)
+            {
+                bindings = new SimpleBindings(arguments);
+            }
+
+            if(bindings != null)
+            {
+                return getCurrentScriptEngineManager().getEngineByName(language).eval(script, bindings);
+            }
+            return getCurrentScriptEngineManager().getEngineByName(language).eval(script);
+        }
+        catch (ScriptException e)
+        {
+            throw new RuntimeException(e);
+        }
+    }
+}
\ No newline at end of file

Added: myfaces/extensions/cdi/trunk/jse-modules/scripting-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/scripting/impl/util/ScriptingUtils.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/jse-modules/scripting-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/scripting/impl/util/ScriptingUtils.java?rev=997839&view=auto
==============================================================================
--- myfaces/extensions/cdi/trunk/jse-modules/scripting-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/scripting/impl/util/ScriptingUtils.java (added)
+++ myfaces/extensions/cdi/trunk/jse-modules/scripting-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/scripting/impl/util/ScriptingUtils.java Thu Sep 16 16:51:27 2010
@@ -0,0 +1,53 @@
+/*
+ * 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.extensions.cdi.scripting.impl.util;
+
+import org.apache.myfaces.extensions.cdi.core.impl.utils.UnmodifiableMap;
+
+import javax.script.ScriptEngineManager;
+
+/**
+ * @author Gerhard Petracek
+ */
+public class ScriptingUtils
+{
+    protected ScriptingUtils()
+    {
+    }
+
+    private static ThreadLocal<ScriptEngineManager> scriptEngineManagerCache = new ThreadLocal<ScriptEngineManager>();
+
+    public static ScriptEngineManager getCurrentScriptEngineManager()
+    {
+        ScriptEngineManager scriptEngineManager = scriptEngineManagerCache.get();
+
+        if(scriptEngineManager == null)
+        {
+            scriptEngineManager = new ScriptEngineManager();
+            scriptEngineManagerCache.set(scriptEngineManager);
+        }
+
+        return scriptEngineManager;
+    }
+
+    public static UnmodifiableMap<String, Object> createExpressionLanguageHelper()
+    {
+        return new ExpressionLanguageSelectionMap();
+    }
+}