You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by tv...@apache.org on 2012/02/20 02:12:01 UTC

svn commit: r1291109 - in /openejb/trunk/openejb/tomee: tomee-loader/ tomee-loader/src/main/java/org/apache/tomee/loader/dto/ tomee-loader/src/main/java/org/apache/tomee/loader/servlet/ tomee-loader/src/main/java/org/apache/tomee/loader/ws/ tomee-webap...

Author: tveronezi
Date: Mon Feb 20 01:12:01 2012
New Revision: 1291109

URL: http://svn.apache.org/viewvc?rev=1291109&view=rev
Log:
https://issues.apache.org/jira/browse/TOMEE-130

TomEE web profile does not support JAX-RS ( yet... :O) ). 
Use standard servlet instead.

Added:
    openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/servlet/
    openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/servlet/JndiServlet.java
    openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/servlet/TestServlet.java
Removed:
    openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/ws/JndiWs.java
    openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/ws/TestWs.java
Modified:
    openejb/trunk/openejb/tomee/tomee-loader/pom.xml
    openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/dto/JndiDTO.java
    openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/dto/TestDTO.java
    openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/staging/js/tomee/model/JndiModel.js
    openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/staging/js/tomee/model/TestModel.js

Modified: openejb/trunk/openejb/tomee/tomee-loader/pom.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-loader/pom.xml?rev=1291109&r1=1291108&r2=1291109&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-loader/pom.xml (original)
+++ openejb/trunk/openejb/tomee/tomee-loader/pom.xml Mon Feb 20 01:12:01 2012
@@ -36,12 +36,6 @@
       <version>${openejb.version}</version>
     </dependency>
     <dependency>
-      <groupId>org.apache.openejb</groupId>
-      <artifactId>javaee-api</artifactId>
-      <version>6.0-3</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
       <groupId>org.apache.tomcat</groupId>
       <artifactId>tomcat-catalina</artifactId>
       <version>${tomcat.version}</version>
@@ -52,6 +46,11 @@
       <artifactId>tomee-common</artifactId>
       <version>${openejb.version}</version>
     </dependency>
+    <dependency>
+      <groupId>com.google.code.gson</groupId>
+      <artifactId>gson</artifactId>
+      <version>2.1</version>
+    </dependency>
   </dependencies>
 </project>
 

Modified: openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/dto/JndiDTO.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/dto/JndiDTO.java?rev=1291109&r1=1291108&r2=1291109&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/dto/JndiDTO.java (original)
+++ openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/dto/JndiDTO.java Mon Feb 20 01:12:01 2012
@@ -16,9 +16,6 @@
  */
 package org.apache.tomee.loader.dto;
 
-import javax.xml.bind.annotation.XmlRootElement;
-
-@XmlRootElement(name = "jndi")
 public class JndiDTO {
 
     public String path;

Modified: openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/dto/TestDTO.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/dto/TestDTO.java?rev=1291109&r1=1291108&r2=1291109&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/dto/TestDTO.java (original)
+++ openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/dto/TestDTO.java Mon Feb 20 01:12:01 2012
@@ -16,9 +16,6 @@
  */
 package org.apache.tomee.loader.dto;
 
-import javax.xml.bind.annotation.XmlRootElement;
-
-@XmlRootElement(name = "test")
 public class TestDTO {
 
     public String key;

Added: openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/servlet/JndiServlet.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/servlet/JndiServlet.java?rev=1291109&view=auto
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/servlet/JndiServlet.java (added)
+++ openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/servlet/JndiServlet.java Mon Feb 20 01:12:01 2012
@@ -0,0 +1,102 @@
+/*
+ * 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.loader.servlet;
+
+import com.google.gson.Gson;
+import org.apache.openejb.loader.SystemInstance;
+import org.apache.openejb.spi.ContainerSystem;
+import org.apache.tomee.loader.dto.JndiDTO;
+import org.apache.tomee.loader.dto.TestDTO;
+
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.naming.NameClassPair;
+import javax.naming.NamingEnumeration;
+import javax.naming.NamingException;
+import javax.servlet.ServletException;
+import javax.servlet.annotation.WebServlet;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.File;
+import java.io.IOException;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+
+@WebServlet(name = "jndi", urlPatterns = "/ws/jndi", asyncSupported = false)
+public class JndiServlet extends HttpServlet {
+
+    @Override
+    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+        final String json;
+        try {
+            final Map<String, Object> result = new HashMap<String, Object>();
+            result.put("jndi", get());
+            json = new Gson().toJson(result);
+        } catch (NamingException e) {
+            throw new ServletException(e);
+        }
+        resp.setContentType("application/json");
+        resp.setCharacterEncoding("UTF-8");
+        resp.getWriter().write(json);
+    }
+
+    public List<JndiDTO> get() throws NamingException {
+        final List<JndiDTO> result = new ArrayList<JndiDTO>();
+        final ContainerSystem containerSystem = SystemInstance.get().getComponent(ContainerSystem.class);
+        mountJndiList(result, containerSystem.getJNDIContext(), "java:global");
+
+        return result;
+    }
+
+    private void mountJndiList(List<JndiDTO> jndi, Context context, String root) throws NamingException {
+        final NamingEnumeration namingEnumeration;
+        try {
+            namingEnumeration = context.list(root);
+        } catch (NamingException e) {
+            //not found?
+            return;
+        }
+        while (namingEnumeration.hasMoreElements()) {
+            final NameClassPair pair = (NameClassPair) namingEnumeration.next();
+            final String key = root + "/" + pair.getName();
+            final Object obj;
+            try {
+                obj = context.lookup(key);
+            } catch (NamingException e) {
+                //not found?
+                continue;
+            }
+
+            if (Context.class.isInstance(obj)) {
+                mountJndiList(jndi, Context.class.cast(obj), key);
+            } else {
+                final JndiDTO dto = new JndiDTO();
+                dto.path = key;
+                dto.name = pair.getName();
+                dto.value = String.valueOf(obj);
+                jndi.add(dto);
+            }
+        }
+
+    }
+}

Added: openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/servlet/TestServlet.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/servlet/TestServlet.java?rev=1291109&view=auto
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/servlet/TestServlet.java (added)
+++ openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/servlet/TestServlet.java Mon Feb 20 01:12:01 2012
@@ -0,0 +1,135 @@
+/*
+ * 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.loader.servlet;
+
+import com.google.gson.Gson;
+import org.apache.tomee.loader.dto.TestDTO;
+
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+import javax.servlet.ServletException;
+import javax.servlet.annotation.WebServlet;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.File;
+import java.io.IOException;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+
+@WebServlet(name = "test", urlPatterns = "/ws/test", asyncSupported = false)
+public class TestServlet extends HttpServlet {
+
+    @Override
+    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+        final String json;
+        try {
+            final Map<String, Object> result = new HashMap<String, Object>();
+            result.put("test", get());
+            json = new Gson().toJson(result);
+        } catch (NamingException e) {
+            throw new ServletException(e);
+        }
+        resp.setContentType("application/json");
+        resp.setCharacterEncoding("UTF-8");
+        resp.getWriter().write(json);
+    }
+
+    private List<TestDTO> get() throws NamingException {
+        final List<TestDTO> result = new ArrayList<TestDTO>();
+
+        {
+            final String homePath = System.getProperty("openejb.home");
+            result.add(createDTO("homeSet", !(homePath == null)));
+
+            final File openejbHome = new File(homePath);
+            result.add(createDTO("homeExists", openejbHome.exists()));
+
+            result.add(createDTO("homeDirectory", openejbHome.isDirectory()));
+
+            final File openejbHomeLib;
+            if (org.apache.tomee.common.TomcatVersion.v6.isTheVersion()
+                    || org.apache.tomee.common.TomcatVersion.v7.isTheVersion()) {
+                openejbHomeLib = new File(openejbHome, "lib");
+            } else {
+                final File common = new File(openejbHome, "common");
+                openejbHomeLib = new File(common, "lib");
+            }
+            result.add(createDTO("libDirectory", openejbHomeLib.exists()));
+        }
+
+        {
+            ClassLoader myLoader = this.getClass().getClassLoader();
+
+            try {
+                Class openejb = Class.forName("org.apache.openejb.OpenEJB", true, myLoader);
+                result.add(createDTO("openEjbInstalled", true));
+
+                try {
+                    Method isInitialized = openejb.getDeclaredMethod("isInitialized");
+                    Boolean running = (Boolean) isInitialized.invoke(openejb);
+                    result.add(createDTO("openEjbStarted", running));
+                } catch (Exception e) {
+                    result.add(createDTO("openEjbStarted", false));
+                }
+            } catch (Exception e) {
+                result.add(createDTO("openEjbInstalled", false));
+            }
+
+            try {
+                Class.forName("javax.ejb.EJBHome", true, myLoader);
+                result.add(createDTO("ejbsInstalled", true));
+            } catch (Exception e) {
+                result.add(createDTO("ejbsInstalled", false));
+            }
+
+            try {
+                final Properties properties = new Properties();
+                properties.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.core.LocalInitialContextFactory");
+                properties.put("openejb.loader", "embed");
+
+                final InitialContext ctx = new InitialContext(properties);
+                Object obj = ctx.lookup("");
+
+                if (obj.getClass().getName().equals("org.apache.openejb.core.ivm.naming.IvmContext")) {
+                    result.add(createDTO("testLookup", true));
+                } else {
+                    result.add(createDTO("testLookup", false));
+                }
+
+            } catch (Exception e) {
+                result.add(createDTO("testLookup", false));
+            }
+        }
+
+
+        return result;
+    }
+
+    private TestDTO createDTO(String key, boolean success) {
+        TestDTO result = new TestDTO();
+        result.key = key;
+        result.success = success;
+        return result;
+    }
+}

Modified: openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/staging/js/tomee/model/JndiModel.js
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/staging/js/tomee/model/JndiModel.js?rev=1291109&r1=1291108&r2=1291109&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/staging/js/tomee/model/JndiModel.js (original)
+++ openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/staging/js/tomee/model/JndiModel.js Mon Feb 20 01:12:01 2012
@@ -39,7 +39,7 @@ TOMEE.JndiModel = function (cfg) {
         return TOMEE.ApplicationModel({
             methodType: 'GET',
 
-            url: '/tomee/ws/jndi/names',
+            url: '/tomee/ws/jndi',
             //url: 'js/tomee/mock/jndi.json',
 
             channel: myChannel,

Modified: openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/staging/js/tomee/model/TestModel.js
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/staging/js/tomee/model/TestModel.js?rev=1291109&r1=1291108&r2=1291109&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/staging/js/tomee/model/TestModel.js (original)
+++ openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/staging/js/tomee/model/TestModel.js Mon Feb 20 01:12:01 2012
@@ -39,18 +39,18 @@ TOMEE.TestModel = function (cfg) {
         return TOMEE.ApplicationModel({
             methodType: 'GET',
 
-            url: '/tomee/ws/test/test',
+            url: '/tomee/ws/test',
             //url: 'js/tomee/mock/test.json',
 
             channel: myChannel,
             prepareDataMethod: function (data) {
-                myData = data;
+                myData = TOMEE.utils.getArray(data.test);
             }
         });
     })();
 
     var iterateTestBeans = function (callback) {
-        $.each(myData.test, function (i, bean) {
+        $.each(myData, function (i, bean) {
             callback(bean);
         });
     };