Repository: tomee
Updated Branches:
  refs/heads/develop e17c854b1 -> 8b82b6469


few more tck passing + excluding few others


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/8b82b646
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/8b82b646
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/8b82b646

Branch: refs/heads/develop
Commit: 8b82b64699f6a59fad27ff5c139202bac7a0be7e
Parents: e17c854
Author: Romain Manni-Bucau <[email protected]>
Authored: Sun Jan 11 21:05:26 2015 +0100
Committer: Romain Manni-Bucau <[email protected]>
Committed: Sun Jan 11 21:05:26 2015 +0100

----------------------------------------------------------------------
 .../openejb/OpenEJBArchiveProcessor.java        | 64 ++++++++++++++------
 .../openejb/cdi/CdiAppContextsService.java      | 12 +++-
 .../server/httpd/HttpListenerRegistry.java      | 22 +++++++
 .../openejb/server/httpd/HttpRequestImpl.java   |  2 +-
 .../openejb/server/httpd/HttpResponseImpl.java  |  6 +-
 tck/cdi-embedded/pom.xml                        |  2 +
 tck/cdi-embedded/src/test/resources/failing.xml |  2 +-
 tck/cdi-embedded/src/test/resources/passing.xml | 28 +++++++++
 8 files changed, 115 insertions(+), 23 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/8b82b646/arquillian/arquillian-openejb-embedded-5/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBArchiveProcessor.java
----------------------------------------------------------------------
diff --git 
a/arquillian/arquillian-openejb-embedded-5/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBArchiveProcessor.java
 
b/arquillian/arquillian-openejb-embedded-5/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBArchiveProcessor.java
index 4593a75..1d6c72f 100644
--- 
a/arquillian/arquillian-openejb-embedded-5/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBArchiveProcessor.java
+++ 
b/arquillian/arquillian-openejb-embedded-5/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBArchiveProcessor.java
@@ -114,6 +114,7 @@ public class OpenEJBArchiveProcessor {
         final List<URL> additionalPaths = new ArrayList<>();
         CompositeArchive scannedArchive = null;
         final Map<URL, List<String>> earMap = new HashMap<>();
+        final Map<String, Object> altDD = new HashMap<>();
         final List<Archive> earLibsArchives = new ArrayList<>();
         final CompositeBeans earBeans = new CompositeBeans();
 
@@ -122,7 +123,7 @@ public class OpenEJBArchiveProcessor {
         final String prefix = isWebApp ? WEB_INF : META_INF;
         if (isEar || isWebApp) {
             final Map<ArchivePath, Node> jars = archive.getContent(new 
IncludeRegExpPaths(isEar ? "/.*\\.jar" : "/WEB-INF/lib/.*\\.jar"));
-            scannedArchive = analyzeLibs(parent, additionalPaths, earMap, 
earLibsArchives, earBeans, jars);
+            scannedArchive = analyzeLibs(parent, additionalPaths, earMap, 
earLibsArchives, earBeans, jars, altDD);
         }
 
         final URL[] urls = additionalPaths.toArray(new 
URL[additionalPaths.size()]);
@@ -153,7 +154,20 @@ public class OpenEJBArchiveProcessor {
             final EjbModule earCdiModule = new 
EjbModule(appModule.getClassLoader(), DeploymentLoader.EAR_SCOPED_CDI_BEANS + 
appModule.getModuleId(), new EjbJar(), new OpenejbJar());
             earCdiModule.setBeans(earBeans);
             earCdiModule.setFinder(earLibFinder);
-            earCdiModule.setEjbJar(new EjbJar()); // EmptyEjbJar would prevent 
to add scanned EJBs but this is *here* an aggregator so we need to be able to 
do so
+
+            final EjbJar ejbJar;
+            final AssetSource ejbJarXml = 
AssetSource.class.isInstance(altDD.get(EJB_JAR_XML)) ? 
AssetSource.class.cast(altDD.get(EJB_JAR_XML)) : null;
+            if (ejbJarXml != null) {
+                try {
+                    ejbJar = ReadDescriptors.readEjbJar(ejbJarXml.get());
+                } catch (final Exception e) {
+                    throw new OpenEJBRuntimeException(e);
+                }
+            } else {
+                ejbJar = new EjbJar();
+            }
+
+            earCdiModule.setEjbJar(ejbJar); // EmptyEjbJar would prevent to 
add scanned EJBs but this is *here* an aggregator so we need to be able to do so
             appModule.getEjbModules().add(earCdiModule);
 
             for (final Map.Entry<ArchivePath, Node> node : 
archive.getContent(new IncludeRegExpPaths("/.*\\.war")).entrySet()) {
@@ -161,7 +175,7 @@ public class OpenEJBArchiveProcessor {
                 if (ArchiveAsset.class.isInstance(asset)) {
                     final Archive<?> webArchive = 
ArchiveAsset.class.cast(asset).getArchive();
                     if (WebArchive.class.isInstance(webArchive)) {
-                        final Map<String, Object> altDD = new HashMap<>();
+                        final Map<String, Object> webAltDD = new HashMap<>();
                         final Node beansXml = findBeansXml(webArchive, 
WEB_INF);
 
                         final List<URL> webappAdditionalPaths = new 
LinkedList<>();
@@ -171,7 +185,8 @@ public class OpenEJBArchiveProcessor {
                         final CompositeArchive webAppArchive = 
analyzeLibs(parent,
                                 webappAdditionalPaths, webAppClassesByUrl,
                                 webAppArchives, webAppBeansXml,
-                                webArchive.getContent(new 
IncludeRegExpPaths("/WEB-INF/lib/.*\\.jar")));
+                                webArchive.getContent(new 
IncludeRegExpPaths("/WEB-INF/lib/.*\\.jar")),
+                                webAltDD);
 
                         webAppArchives.add(webArchive);
                         final SWClassLoader webLoader = new 
SWClassLoader(parent, webAppArchives.toArray(new 
Archive<?>[webAppArchives.size()]));
@@ -186,9 +201,11 @@ public class OpenEJBArchiveProcessor {
                         
webModule.setScannableUrls(Collections.<URL>emptyList());
                         webModule.setFinder(finder);
 
-                        final EjbModule ejbModule = new EjbModule(webLoader, 
webModule.getModuleId(), null, new EjbJar(), new OpenejbJar());
+                        final EjbJar webEjbJar = createEjbJar(prefix, 
webArchive);
+
+                        final EjbModule ejbModule = new EjbModule(webLoader, 
webModule.getModuleId(), null, webEjbJar, new OpenejbJar());
                         ejbModule.setBeans(webAppBeansXml);
-                        ejbModule.getAltDDs().putAll(altDD);
+                        ejbModule.getAltDDs().putAll(webAltDD);
                         ejbModule.getAltDDs().put("beans.xml", webAppBeansXml);
                         ejbModule.setFinder(finder);
                         ejbModule.setClassLoader(webLoader);
@@ -220,17 +237,7 @@ public class OpenEJBArchiveProcessor {
             testDD = new HashMap<>(); // ignore
         }
 
-        final EjbJar ejbJar;
-        final Node ejbJarXml = archive.get(prefix.concat(EJB_JAR_XML));
-        if (ejbJarXml != null) {
-            try {
-                ejbJar = 
ReadDescriptors.readEjbJar(ejbJarXml.getAsset().openStream());
-            } catch (final OpenEJBException e) {
-                throw new OpenEJBRuntimeException(e);
-            }
-        } else {
-            ejbJar = new EjbJar();
-        }
+        final EjbJar ejbJar = createEjbJar(prefix, archive);
 
         if (ejbJar.getModuleName() == null) {
             final String name = archive.getName();
@@ -273,6 +280,21 @@ public class OpenEJBArchiveProcessor {
         return appModule;
     }
 
+    private static EjbJar createEjbJar(final String prefix, final Archive<?> 
webArchive) {
+        final EjbJar webEjbJar;
+        final Node webEjbJarXml = webArchive.get(prefix.concat(EJB_JAR_XML));
+        if (webEjbJarXml != null) {
+            try {
+                webEjbJar = 
ReadDescriptors.readEjbJar(webEjbJarXml.getAsset().openStream());
+            } catch (final OpenEJBException e) {
+                throw new OpenEJBRuntimeException(e);
+            }
+        } else {
+            webEjbJar = new EjbJar();
+        }
+        return webEjbJar;
+    }
+
     private static EjbModule addTestClassAsManagedBean(Class<?> javaClass, 
URLClassLoader tempClassLoader, AppModule appModule) {
         final EjbJar ejbJar = new EjbJar();
         final OpenejbJar openejbJar = new OpenejbJar();
@@ -313,7 +335,8 @@ public class OpenEJBArchiveProcessor {
                                                 final List<URL> 
additionalPaths, final Map<URL, List<String>> earMap,
                                                 final List<Archive> 
earLibsArchives,
                                                 final CompositeBeans earBeans,
-                                                final Map<ArchivePath, Node> 
jars) {
+                                                final Map<ArchivePath, Node> 
jars,
+                                                final Map<String, Object> 
altDD) {
         final List<org.apache.xbean.finder.archive.Archive> archives = new 
ArrayList<>(jars.size());
         for (final Map.Entry<ArchivePath, Node> node : jars.entrySet()) {
             final Asset asset = node.getValue().getAsset();
@@ -351,6 +374,11 @@ public class OpenEJBArchiveProcessor {
                     }
                     archives.add(new ClassesArchive(earClasses));
                 }
+
+                final Node ejbJarXml = libArchive.get(META_INF + EJB_JAR_XML);
+                if (ejbJarXml != null) { // not super, we should merge them 
surely but ok for use cases we met until today
+                    altDD.put("ejb-jar.xml", new 
AssetSource(ejbJarXml.getAsset(), null));
+                }
             } if (UrlAsset.class.isInstance(asset) || 
FileAsset.class.isInstance(asset)) {
                 try {
                     final URL url = UrlAsset.class.isInstance(asset) ? 
get(URL.class, "url", asset) : get(File.class, "file", asset).toURI().toURL();

http://git-wip-us.apache.org/repos/asf/tomee/blob/8b82b646/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiAppContextsService.java
----------------------------------------------------------------------
diff --git 
a/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiAppContextsService.java
 
b/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiAppContextsService.java
index afa3bf9..18e475e 100644
--- 
a/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiAppContextsService.java
+++ 
b/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiAppContextsService.java
@@ -364,8 +364,13 @@ public class CdiAppContextsService extends 
AbstractContextsService implements Co
                 if (cid != null) {
                     final ConversationManager conversationManager = 
webBeansContext.getConversationManager();
                     final ConversationImpl c = 
conversationManager.getPropogatedConversation(cid, session.getId());
-                    if (c != null && c.iUseIt() > 1) {
-                        throw new BusyConversationException("busy conversation 
" + c.getId() + '(' + c.getSessionId() + ')');
+                    if (c != null) {
+                        if (c.isTransient()) {
+                            throw new IllegalStateException("Conversation " + 
cid + " missing");
+                        }
+                        if (c.iUseIt() > 1) {
+                            throw new BusyConversationException("busy 
conversation " + c.getId() + '(' + c.getSessionId() + ')');
+                        }
                     }
                 }
             }
@@ -664,6 +669,9 @@ public class CdiAppContextsService extends 
AbstractContextsService implements Co
                 }
             }
         }
+        if (context != null && createIfPropagated) {
+            context.setActive(true);
+        }
         return context;
     }
 

http://git-wip-us.apache.org/repos/asf/tomee/blob/8b82b646/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpListenerRegistry.java
----------------------------------------------------------------------
diff --git 
a/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpListenerRegistry.java
 
b/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpListenerRegistry.java
index 4cb4bfb..e37232a 100644
--- 
a/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpListenerRegistry.java
+++ 
b/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpListenerRegistry.java
@@ -21,6 +21,7 @@ import org.apache.openejb.assembler.classic.WebAppBuilder;
 import org.apache.openejb.cdi.CdiAppContextsService;
 import org.apache.openejb.cdi.Proxys;
 import org.apache.openejb.core.WebContext;
+import org.apache.openejb.loader.IO;
 import org.apache.openejb.loader.SystemInstance;
 import org.apache.openejb.util.AppFinder;
 import org.apache.openejb.web.LightweightWebAppBuilder;
@@ -31,7 +32,9 @@ import javax.servlet.ServletContext;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpSessionEvent;
 import javax.servlet.http.HttpSessionListener;
+import java.io.InputStream;
 import java.net.URI;
+import java.net.URL;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
@@ -141,6 +144,7 @@ public class HttpListenerRegistry implements HttpListener {
                 listeners = new HashMap<>(registry);
             }
 
+            boolean found = false;
             for (final Map.Entry<String, HttpListener> entry : 
listeners.entrySet()) {
                 final String pattern = entry.getKey();
                 if (path.matches(pattern) || path.equals(pattern)) {
@@ -152,9 +156,27 @@ public class HttpListenerRegistry implements HttpListener {
                         HttpRequestImpl.class.cast(request).noPathInfo();
                     }
                     entry.getValue().onMessage(request, response);
+                    found = true;
                     break;
                 }
             }
+            if (!found) {
+                final String servletPath = request.getServletPath();
+                if (servletPath != null) {
+                    final URL url = 
SystemInstance.get().getComponent(ServletContext.class).getResource(servletPath);
+                    if (url != null) {
+                        final InputStream from = url.openStream();
+                        try {
+                            IO.copy(from, response.getOutputStream());
+                        } finally {
+                            IO.close(from);
+                        }
+                    }
+                    if (servletPath.endsWith(".html")) {
+                        response.setContentType("text/html");
+                    }
+                }
+            }
         } finally {
             if (currentFL == null) {
                 currentFilterListener.set(null);

http://git-wip-us.apache.org/repos/asf/tomee/blob/8b82b646/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpRequestImpl.java
----------------------------------------------------------------------
diff --git 
a/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpRequestImpl.java
 
b/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpRequestImpl.java
index a4a7db2..d285109 100644
--- 
a/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpRequestImpl.java
+++ 
b/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpRequestImpl.java
@@ -542,7 +542,7 @@ public class HttpRequestImpl implements HttpRequest {
         }
 
         try {
-            uri = new URI(socketURI.toString() + token);
+            uri = new URI(socketURI.toString() + token.replace("//", "/"));
         } catch (URISyntaxException e) {
             throw new IOException("Malformed URI :" + token + " Exception: " + 
e.getMessage());
         }

http://git-wip-us.apache.org/repos/asf/tomee/blob/8b82b646/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpResponseImpl.java
----------------------------------------------------------------------
diff --git 
a/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpResponseImpl.java
 
b/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpResponseImpl.java
index 8e46b5f..9692e28 100644
--- 
a/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpResponseImpl.java
+++ 
b/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpResponseImpl.java
@@ -250,7 +250,9 @@ public class HttpResponseImpl implements HttpResponse {
     }
 
     public void flushBuffer() throws IOException {
-        // there is really no way to flush
+        if (writer != null) {
+            writer.flush();
+        }
     }
 
     @Override
@@ -419,6 +421,8 @@ public class HttpResponseImpl implements HttpResponse {
      * @throws java.io.IOException if an exception is thrown
      */
     protected void writeMessage(OutputStream output, boolean indent) throws 
IOException {
+        flushBuffer();
+
         final ByteArrayOutputStream baos = new ByteArrayOutputStream();
         final DataOutputStream out = new DataOutputStream(baos);
         closeMessage();

http://git-wip-us.apache.org/repos/asf/tomee/blob/8b82b646/tck/cdi-embedded/pom.xml
----------------------------------------------------------------------
diff --git a/tck/cdi-embedded/pom.xml b/tck/cdi-embedded/pom.xml
index 0786023..d33af5d 100644
--- a/tck/cdi-embedded/pom.xml
+++ b/tck/cdi-embedded/pom.xml
@@ -188,6 +188,8 @@
             </property>
           </properties>
           <systemPropertyVariables>
+            <cdiTckExcludeDummy>true</cdiTckExcludeDummy>
+
             <jms>new://Resource?type=javax.jms.ConnectionFactory</jms>
             <queue>new://Resource?type=Queue</queue>
             <topic>new://Resource?type=Topic</topic>

http://git-wip-us.apache.org/repos/asf/tomee/blob/8b82b646/tck/cdi-embedded/src/test/resources/failing.xml
----------------------------------------------------------------------
diff --git a/tck/cdi-embedded/src/test/resources/failing.xml 
b/tck/cdi-embedded/src/test/resources/failing.xml
index 24105ee..613b81e 100644
--- a/tck/cdi-embedded/src/test/resources/failing.xml
+++ b/tck/cdi-embedded/src/test/resources/failing.xml
@@ -31,7 +31,7 @@
     -Dopenejb.embedded.try-jsp=true
     -->
     <classes>
-      <class 
name="org.jboss.cdi.tck.tests.event.observer.transactional.TransactionalObserverTest"
 />
+      <class 
name="org.jboss.cdi.tck.tests.context.conversation.servlet.ServletConversationTest"
 />
     </classes>
   </test>
 </suite>

http://git-wip-us.apache.org/repos/asf/tomee/blob/8b82b646/tck/cdi-embedded/src/test/resources/passing.xml
----------------------------------------------------------------------
diff --git a/tck/cdi-embedded/src/test/resources/passing.xml 
b/tck/cdi-embedded/src/test/resources/passing.xml
index 79b3821..c079edd 100644
--- a/tck/cdi-embedded/src/test/resources/passing.xml
+++ b/tck/cdi-embedded/src/test/resources/passing.xml
@@ -157,6 +157,34 @@
           <exclude name="testFinalMethodWithClassLevelInterceptor" />
         </methods>
       </class>
+
+      <!-- CDITCK-462 javax.enterprise.context.conversation.id is not el 
compliant -->
+      <class 
name="org.jboss.cdi.tck.tests.context.conversation.LongRunningConversationPropagatedByFacesContextTest">
+        <methods>
+          <exclude name="testConversationPropagatedAjax" />
+        </methods>
+      </class>
+
+      <!-- CDITCK-463 -->
+      <class 
name="org.jboss.cdi.tck.tests.lookup.manager.provider.custom.CustomCDIProviderTest">
+        <methods>
+          <exclude name=".*" />
+        </methods>
+      </class>
+
+      <!-- not in web profile and not supported by embedded adapter anyway -->
+      <class 
name="org.jboss.cdi.tck.tests.deployment.packaging.rar.ResourceAdapterArchiveTest">
+        <methods>
+          <exclude name=".*" />
+        </methods>
+      </class>
+
+      <!-- not supported by embedded adapter -->
+      <class 
name="org.jboss.cdi.tck.tests.lookup.injection.non.contextual.InjectionIntoNonContextualComponentTest">
+        <methods>
+          <exclude name="testInjectionIntoTagHandler" />
+        </methods>
+      </class>
     </classes>
   </test>
 </suite>

Reply via email to