Author: tveronezi
Date: Thu Jun 28 11:05:20 2012
New Revision: 1354916

URL: http://svn.apache.org/viewvc?rev=1354916&view=rev
Log:
https://issues.apache.org/jira/browse/TOMEE-256
* RunScript unit test

Added:
    
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/command/impl/script/
    
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/command/impl/script/MethodParam.java
    
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/command/impl/script/Utility.java
    
openejb/trunk/openejb/tomee/tomee-webapp/src/test/java/org/apache/tomee/webapp/test/
    
openejb/trunk/openejb/tomee/tomee-webapp/src/test/java/org/apache/tomee/webapp/test/MyCls.java
    
openejb/trunk/openejb/tomee/tomee-webapp/src/test/java/org/apache/tomee/webapp/test/RunScriptTest.java
    openejb/trunk/openejb/tomee/tomee-webapp/src/test/resources/Test.js
Modified:
    
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/command/impl/RunScript.java

Modified: 
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/command/impl/RunScript.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/command/impl/RunScript.java?rev=1354916&r1=1354915&r2=1354916&view=diff
==============================================================================
--- 
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/command/impl/RunScript.java
 (original)
+++ 
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/command/impl/RunScript.java
 Thu Jun 28 11:05:20 2012
@@ -1,9 +1,26 @@
+/*
+ * 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.tomee.webapp.command.impl;
 
 import org.apache.openejb.util.OpenEJBScripter;
 import org.apache.tomee.webapp.command.Command;
 import org.apache.tomee.webapp.command.Params;
-import org.apache.tomee.webapp.listener.UserSessionListener;
+import org.apache.tomee.webapp.command.impl.script.Utility;
 
 import javax.script.Bindings;
 import javax.script.ScriptContext;
@@ -30,27 +47,11 @@ public class RunScript implements Comman
         //creating the bidings object for the current execution
         final Bindings bindings = 
newContext.getBindings(ScriptContext.ENGINE_SCOPE);
 
-        bindings.put("util", new Utility() {
-            @Override
-            public void save(String key, Object obj) {
-                
UserSessionListener.getServiceContext(params.getReq().getSession()).getSaved().put(key,
 obj);
-            }
-
-            @Override
-            public Object get(String key) {
-                return 
UserSessionListener.getServiceContext(params.getReq().getSession()).getSaved().get(key);
-            }
-        });
+        bindings.put("util", new Utility(params));
 
         //note that "engine" does not know "bindings". It only knows the 
current context.
         //Eventual exceptions are handled by the ErrorServlet
         final Object result = SCRIPTER.evaluate(engineName, scriptCode, 
newContext);
         return result;
     }
-
-    private interface Utility {
-        void save(String key, Object obj);
-
-        Object get(String key);
-    }
 }

Added: 
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/command/impl/script/MethodParam.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/command/impl/script/MethodParam.java?rev=1354916&view=auto
==============================================================================
--- 
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/command/impl/script/MethodParam.java
 (added)
+++ 
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/command/impl/script/MethodParam.java
 Thu Jun 28 11:05:20 2012
@@ -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.tomee.webapp.command.impl.script;
+
+public class MethodParam {
+    public final Class<?> pType;
+    public final Object pValue;
+
+
+    public MethodParam(Class<?> pType, Object pValue) {
+        this.pType = pType;
+        this.pValue = pValue;
+    }
+}

Added: 
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/command/impl/script/Utility.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/command/impl/script/Utility.java?rev=1354916&view=auto
==============================================================================
--- 
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/command/impl/script/Utility.java
 (added)
+++ 
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/command/impl/script/Utility.java
 Thu Jun 28 11:05:20 2012
@@ -0,0 +1,37 @@
+/*
+ * 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.tomee.webapp.command.impl.script;
+
+import org.apache.tomee.webapp.command.Params;
+import org.apache.tomee.webapp.listener.UserSessionListener;
+
+public class Utility {
+    private final Params params;
+
+    public Utility(Params params) {
+        this.params = params;
+    }
+
+    public void save(String key, Object obj) {
+        
UserSessionListener.getServiceContext(this.params.getReq().getSession()).getSaved().put(key,
 obj);
+    }
+
+    public Object get(String key) {
+        return 
UserSessionListener.getServiceContext(this.params.getReq().getSession()).getSaved().get(key);
+    }
+}

Added: 
openejb/trunk/openejb/tomee/tomee-webapp/src/test/java/org/apache/tomee/webapp/test/MyCls.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-webapp/src/test/java/org/apache/tomee/webapp/test/MyCls.java?rev=1354916&view=auto
==============================================================================
--- 
openejb/trunk/openejb/tomee/tomee-webapp/src/test/java/org/apache/tomee/webapp/test/MyCls.java
 (added)
+++ 
openejb/trunk/openejb/tomee/tomee-webapp/src/test/java/org/apache/tomee/webapp/test/MyCls.java
 Thu Jun 28 11:05:20 2012
@@ -0,0 +1,26 @@
+/*
+ * 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.tomee.webapp.test;
+
+public class MyCls {
+    public final String value;
+
+    public MyCls(String value) {
+        this.value = value;
+    }
+}

Added: 
openejb/trunk/openejb/tomee/tomee-webapp/src/test/java/org/apache/tomee/webapp/test/RunScriptTest.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-webapp/src/test/java/org/apache/tomee/webapp/test/RunScriptTest.java?rev=1354916&view=auto
==============================================================================
--- 
openejb/trunk/openejb/tomee/tomee-webapp/src/test/java/org/apache/tomee/webapp/test/RunScriptTest.java
 (added)
+++ 
openejb/trunk/openejb/tomee/tomee-webapp/src/test/java/org/apache/tomee/webapp/test/RunScriptTest.java
 Thu Jun 28 11:05:20 2012
@@ -0,0 +1,580 @@
+/**
+ * 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.tomee.webapp.test;
+
+import org.apache.tomee.webapp.command.Params;
+import org.apache.tomee.webapp.command.impl.RunScript;
+import org.junit.Test;
+
+import javax.servlet.*;
+import javax.servlet.http.*;
+import java.io.*;
+import java.security.Principal;
+import java.util.*;
+
+import static org.junit.Assert.assertEquals;
+
+public class RunScriptTest {
+
+    @Test
+    public void getInstanceTest() throws Exception {
+        this.myParameterMap.put("scriptCode", new String[]{
+                readJsFile()
+        });
+        this.myParameterMap.put("engineName", new String[]{"js"});
+
+        final RunScript shell = new RunScript();
+        final Object result = shell.execute(new Params(myReq, myResp));
+
+        assertEquals("myValue", result);
+    }
+
+    private String readJsFile() throws IOException {
+        StringBuilder contents = new StringBuilder();
+
+        DataInputStream in = new 
DataInputStream(RunScriptTest.class.getResourceAsStream("/Test.js"));
+        BufferedReader br = new BufferedReader(new InputStreamReader(in));
+        String strLine;
+        while ((strLine = br.readLine()) != null) {
+            contents.append(strLine);
+            contents.append('\n');
+        }
+        in.close();
+
+
+        return contents.toString();
+    }
+
+    private final Map<String, String[]> myParameterMap = new HashMap<String, 
String[]>();
+
+    private final HttpServletResponse myResp = new HttpServletResponse() {
+        @Override
+        public void addCookie(Cookie cookie) {
+
+        }
+
+        @Override
+        public boolean containsHeader(String s) {
+            return false;
+        }
+
+        @Override
+        public String encodeURL(String s) {
+            return null;
+        }
+
+        @Override
+        public String encodeRedirectURL(String s) {
+            return null;
+        }
+
+        @Override
+        public String encodeUrl(String s) {
+            return null;
+        }
+
+        @Override
+        public String encodeRedirectUrl(String s) {
+            return null;
+        }
+
+        @Override
+        public void sendError(int i, String s) throws IOException {
+
+        }
+
+        @Override
+        public void sendError(int i) throws IOException {
+
+        }
+
+        @Override
+        public void sendRedirect(String s) throws IOException {
+
+        }
+
+        @Override
+        public void setDateHeader(String s, long l) {
+
+        }
+
+        @Override
+        public void addDateHeader(String s, long l) {
+
+        }
+
+        @Override
+        public void setHeader(String s, String s1) {
+
+        }
+
+        @Override
+        public void addHeader(String s, String s1) {
+
+        }
+
+        @Override
+        public void setIntHeader(String s, int i) {
+
+        }
+
+        @Override
+        public void addIntHeader(String s, int i) {
+
+        }
+
+        @Override
+        public void setStatus(int i) {
+
+        }
+
+        @Override
+        public void setStatus(int i, String s) {
+
+        }
+
+        @Override
+        public int getStatus() {
+            return 0;
+        }
+
+        @Override
+        public String getHeader(String s) {
+            return null;
+        }
+
+        @Override
+        public Collection<String> getHeaders(String s) {
+            return null;
+        }
+
+        @Override
+        public Collection<String> getHeaderNames() {
+            return null;
+        }
+
+        @Override
+        public String getCharacterEncoding() {
+            return null;
+        }
+
+        @Override
+        public String getContentType() {
+            return null;
+        }
+
+        @Override
+        public ServletOutputStream getOutputStream() throws IOException {
+            return null;
+        }
+
+        @Override
+        public PrintWriter getWriter() throws IOException {
+            return null;
+        }
+
+        @Override
+        public void setCharacterEncoding(String s) {
+
+        }
+
+        @Override
+        public void setContentLength(int i) {
+
+        }
+
+        @Override
+        public void setContentType(String s) {
+
+        }
+
+        @Override
+        public void setBufferSize(int i) {
+
+        }
+
+        @Override
+        public int getBufferSize() {
+            return 0;
+        }
+
+        @Override
+        public void flushBuffer() throws IOException {
+
+        }
+
+        @Override
+        public void resetBuffer() {
+
+        }
+
+        @Override
+        public boolean isCommitted() {
+            return false;
+        }
+
+        @Override
+        public void reset() {
+
+        }
+
+        @Override
+        public void setLocale(Locale locale) {
+
+        }
+
+        @Override
+        public Locale getLocale() {
+            return null;
+        }
+    };
+
+    private final HttpServletRequest myReq = new HttpServletRequest() {
+        @Override
+        public String getAuthType() {
+            return null;
+        }
+
+        @Override
+        public Cookie[] getCookies() {
+            return new Cookie[0];
+        }
+
+        @Override
+        public long getDateHeader(String s) {
+            return 0;
+        }
+
+        @Override
+        public String getHeader(String s) {
+            return null;
+        }
+
+        @Override
+        public Enumeration<String> getHeaders(String s) {
+            return null;
+        }
+
+        @Override
+        public Enumeration<String> getHeaderNames() {
+            return null;
+        }
+
+        @Override
+        public int getIntHeader(String s) {
+            return 0;
+        }
+
+        @Override
+        public String getMethod() {
+            return null;
+        }
+
+        @Override
+        public String getPathInfo() {
+            return null;
+        }
+
+        @Override
+        public String getPathTranslated() {
+            return null;
+        }
+
+        @Override
+        public String getContextPath() {
+            return null;
+        }
+
+        @Override
+        public String getQueryString() {
+            return null;
+        }
+
+        @Override
+        public String getRemoteUser() {
+            return null;
+        }
+
+        @Override
+        public boolean isUserInRole(String s) {
+            return false;
+        }
+
+        @Override
+        public Principal getUserPrincipal() {
+            return null;
+        }
+
+        @Override
+        public String getRequestedSessionId() {
+            return null;
+        }
+
+        @Override
+        public String getRequestURI() {
+            return null;
+        }
+
+        @Override
+        public StringBuffer getRequestURL() {
+            return null;
+        }
+
+        @Override
+        public String getServletPath() {
+            return null;
+        }
+
+        @Override
+        public HttpSession getSession(boolean b) {
+            return null;
+        }
+
+        @Override
+        public HttpSession getSession() {
+            return null;
+        }
+
+        @Override
+        public boolean isRequestedSessionIdValid() {
+            return false;
+        }
+
+        @Override
+        public boolean isRequestedSessionIdFromCookie() {
+            return false;
+        }
+
+        @Override
+        public boolean isRequestedSessionIdFromURL() {
+            return false;
+        }
+
+        @Override
+        public boolean isRequestedSessionIdFromUrl() {
+            return false;
+        }
+
+        @Override
+        public boolean authenticate(HttpServletResponse httpServletResponse) 
throws IOException, ServletException {
+            return false;
+        }
+
+        @Override
+        public void login(String s, String s1) throws ServletException {
+
+        }
+
+        @Override
+        public void logout() throws ServletException {
+
+        }
+
+        @Override
+        public Collection<Part> getParts() throws IOException, 
IllegalStateException, ServletException {
+            return null;
+        }
+
+        @Override
+        public Part getPart(String s) throws IOException, 
IllegalStateException, ServletException {
+            return null;
+        }
+
+        @Override
+        public Object getAttribute(String s) {
+            return null;
+        }
+
+        @Override
+        public Enumeration<String> getAttributeNames() {
+            return null;
+        }
+
+        @Override
+        public String getCharacterEncoding() {
+            return null;
+        }
+
+        @Override
+        public void setCharacterEncoding(String s) throws 
UnsupportedEncodingException {
+
+        }
+
+        @Override
+        public int getContentLength() {
+            return 0;
+        }
+
+        @Override
+        public String getContentType() {
+            return null;
+        }
+
+        @Override
+        public ServletInputStream getInputStream() throws IOException {
+            return null;
+        }
+
+        @Override
+        public String getParameter(String s) {
+            return null;
+        }
+
+        @Override
+        public Enumeration<String> getParameterNames() {
+            return null;
+        }
+
+        @Override
+        public String[] getParameterValues(String s) {
+            return new String[0];
+        }
+
+        @Override
+        public Map<String, String[]> getParameterMap() {
+            return myParameterMap;
+        }
+
+        @Override
+        public String getProtocol() {
+            return null;
+        }
+
+        @Override
+        public String getScheme() {
+            return null;
+        }
+
+        @Override
+        public String getServerName() {
+            return null;
+        }
+
+        @Override
+        public int getServerPort() {
+            return 0;
+        }
+
+        @Override
+        public BufferedReader getReader() throws IOException {
+            return null;
+        }
+
+        @Override
+        public String getRemoteAddr() {
+            return null;
+        }
+
+        @Override
+        public String getRemoteHost() {
+            return null;
+        }
+
+        @Override
+        public void setAttribute(String s, Object o) {
+
+        }
+
+        @Override
+        public void removeAttribute(String s) {
+
+        }
+
+        @Override
+        public Locale getLocale() {
+            return null;
+        }
+
+        @Override
+        public Enumeration<Locale> getLocales() {
+            return null;
+        }
+
+        @Override
+        public boolean isSecure() {
+            return false;
+        }
+
+        @Override
+        public RequestDispatcher getRequestDispatcher(String s) {
+            return null;
+        }
+
+        @Override
+        public String getRealPath(String s) {
+            return null;
+        }
+
+        @Override
+        public int getRemotePort() {
+            return 0;
+        }
+
+        @Override
+        public String getLocalName() {
+            return null;
+        }
+
+        @Override
+        public String getLocalAddr() {
+            return null;
+        }
+
+        @Override
+        public int getLocalPort() {
+            return 0;
+        }
+
+        @Override
+        public ServletContext getServletContext() {
+            return null;
+        }
+
+        @Override
+        public AsyncContext startAsync() {
+            return null;
+        }
+
+        @Override
+        public AsyncContext startAsync(ServletRequest servletRequest, 
ServletResponse servletResponse) {
+            return null;
+        }
+
+        @Override
+        public boolean isAsyncStarted() {
+            return false;
+        }
+
+        @Override
+        public boolean isAsyncSupported() {
+            return false;
+        }
+
+        @Override
+        public AsyncContext getAsyncContext() {
+            return null;
+        }
+
+        @Override
+        public DispatcherType getDispatcherType() {
+            return null;
+        }
+    };
+
+}
+

Added: openejb/trunk/openejb/tomee/tomee-webapp/src/test/resources/Test.js
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-webapp/src/test/resources/Test.js?rev=1354916&view=auto
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-webapp/src/test/resources/Test.js (added)
+++ openejb/trunk/openejb/tomee/tomee-webapp/src/test/resources/Test.js Thu Jun 
28 11:05:20 2012
@@ -0,0 +1,25 @@
+/*
+ * 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.
+ */
+
+var myImports = new JavaImporter(
+    org.apache.tomee.webapp.test.MyCls
+);
+
+with (myImports) {
+    var a = new MyCls('myValue');
+    a.value;
+}
\ No newline at end of file


Reply via email to