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();
+ }
+}