[webbeans-commits] Webbeans SVN: r1421 - in tck/trunk/impl: src/main/java/org/jboss/webbeans/tck/impl and 1 other directories.
by webbeans-commits@lists.jboss.org
Author: pete.muir(a)jboss.org
Date: 2009-02-05 08:37:17 -0500 (Thu, 05 Feb 2009)
New Revision: 1421
Removed:
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/standard/
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/report/
Modified:
tck/trunk/impl/pom.xml
Log:
Remove coverage code to tck-utils, move tck-utils processing into a profile
Modified: tck/trunk/impl/pom.xml
===================================================================
--- tck/trunk/impl/pom.xml 2009-02-05 12:27:26 UTC (rev 1420)
+++ tck/trunk/impl/pom.xml 2009-02-05 13:37:17 UTC (rev 1421)
@@ -78,10 +78,6 @@
</dependency>
<dependency>
- <groupId>org.hibernate</groupId>
- <artifactId>tck-utils</artifactId>
- </dependency>
- <dependency>
<groupId>javax.persistence</groupId>
<artifactId>persistence-api</artifactId>
</dependency>
@@ -113,42 +109,36 @@
</execution>
</executions>
</plugin>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>apt-maven-plugin</artifactId>
- <executions>
- <execution>
- <goals>
- <goal>test-process</goal>
- </goals>
- </execution>
- </executions>
- <configuration>
- <factory>org.jboss.webbeans.tck.impl.report.CoverageProcessorFactory</factory>
- <testOutputDirectory>${project.build.directory}/site</testOutputDirectory>
- </configuration>
- </plugin>
</plugins>
</build>
<profiles>
<profile>
- <id>default-tools.jar</id>
+ <id>tck-audit</id>
<activation>
<property>
- <name>java.vendor</name>
- <value>Sun Microsystems Inc.</value>
+ <name>tck-audit</name>
</property>
</activation>
<dependencies>
<dependency>
- <groupId>com.sun</groupId>
- <artifactId>tools</artifactId>
- <version>1.5.0</version>
- <scope>system</scope>
- <systemPath>${java.home}/../lib/tools.jar</systemPath>
- </dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>tck-utils</artifactId>
+ </dependency>
</dependencies>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <configuration>
+ <compileArguments>
+ <processor>org.hibernate.tck.report.CoverageProcessor</processor>
+ </compileArguments>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
</profile>
</profiles>
17 years, 2 months
[webbeans-commits] Webbeans SVN: r1420 - ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/context.
by webbeans-commits@lists.jboss.org
Author: nickarls
Date: 2009-02-05 07:27:26 -0500 (Thu, 05 Feb 2009)
New Revision: 1420
Modified:
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/context/ContextMap.java
Log:
ws
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/context/ContextMap.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/context/ContextMap.java 2009-02-05 12:26:45 UTC (rev 1419)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/context/ContextMap.java 2009-02-05 12:27:26 UTC (rev 1420)
@@ -109,6 +109,5 @@
{
return "ContextMap holding " + delegate().size() + " contexts: " + delegate().keySet();
}
-
}
\ No newline at end of file
17 years, 2 months
[webbeans-commits] Webbeans SVN: r1419 - in ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans: bootstrap and 2 other directories.
by webbeans-commits@lists.jboss.org
Author: nickarls
Date: 2009-02-05 07:26:45 -0500 (Thu, 05 Feb 2009)
New Revision: 1419
Added:
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/conversation/ServletConversationManager.java
Removed:
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/conversation/DefaultConversationManager.java
Modified:
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/proxy/ClientProxyProvider.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/WebBeansBootstrap.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/context/ContextMap.java
Log:
minor refactorings
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/proxy/ClientProxyProvider.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/proxy/ClientProxyProvider.java 2009-02-05 07:35:00 UTC (rev 1418)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/proxy/ClientProxyProvider.java 2009-02-05 12:26:45 UTC (rev 1419)
@@ -109,7 +109,7 @@
* not already exist
* @return the client proxy for the bean
*/
- @SuppressWarnings("unchecked")
+ // TODO: What is this create parameter? Something obsolete?
public <T> T getClientProxy(final Bean<T> bean)
{
return pool.putIfAbsent(bean, new Callable<T>()
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/WebBeansBootstrap.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/WebBeansBootstrap.java 2009-02-05 07:35:00 UTC (rev 1418)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/WebBeansBootstrap.java 2009-02-05 12:26:45 UTC (rev 1419)
@@ -27,7 +27,7 @@
import org.jboss.webbeans.bootstrap.spi.EjbDiscovery;
import org.jboss.webbeans.bootstrap.spi.WebBeanDiscovery;
import org.jboss.webbeans.conversation.ConversationImpl;
-import org.jboss.webbeans.conversation.DefaultConversationManager;
+import org.jboss.webbeans.conversation.ServletConversationManager;
import org.jboss.webbeans.conversation.JavaSEConversationTerminator;
import org.jboss.webbeans.conversation.NumericConversationIdGenerator;
import org.jboss.webbeans.ejb.spi.EjbResolver;
@@ -103,7 +103,7 @@
beanDeployer.addBean(InjectionPointBean.of(manager));
beanDeployer.addClass(Transaction.class);
beanDeployer.addClass(ConversationImpl.class);
- beanDeployer.addClass(DefaultConversationManager.class);
+ beanDeployer.addClass(ServletConversationManager.class);
beanDeployer.addClass(JavaSEConversationTerminator.class);
beanDeployer.addClass(NumericConversationIdGenerator.class);
beanDeployer.addClass(SessionManager.class);
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/context/ContextMap.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/context/ContextMap.java 2009-02-05 07:35:00 UTC (rev 1418)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/context/ContextMap.java 2009-02-05 12:26:45 UTC (rev 1419)
@@ -20,12 +20,13 @@
import java.lang.annotation.Annotation;
import java.util.Collections;
import java.util.List;
-import java.util.concurrent.Callable;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CopyOnWriteArrayList;
import javax.context.Context;
-import org.jboss.webbeans.util.ConcurrentCache;
+import com.google.common.collect.ForwardingMap;
/**
* A map from a scope to a list of contexts
@@ -34,9 +35,14 @@
* @author Pete Muir
*
*/
-public class ContextMap extends ConcurrentCache<Class<? extends Annotation>, List<Context>>
+public class ContextMap extends ForwardingMap<Class<? extends Annotation>, List<Context>>
{
+ private Map<Class<? extends Annotation>, List<Context>> delegate;
+ public ContextMap() {
+ delegate = new ConcurrentHashMap<Class<? extends Annotation>, List<Context>>();
+ }
+
/**
* Gets the dependent context
*
@@ -64,7 +70,7 @@
*/
public List<Context> getContext(Class<? extends Annotation> scopeType)
{
- List<Context> contexts = getValue(scopeType);
+ List<Context> contexts = get(scopeType);
if (contexts == null)
{
return Collections.emptyList();
@@ -75,12 +81,6 @@
}
}
- @Override
- public String toString()
- {
- return "ContextMap holding " + delegate().size() + " contexts: " + delegate().keySet();
- }
-
/**
* Adds a context under a scope type
*
@@ -90,16 +90,25 @@
*/
public void add(Context context)
{
- List<Context> contexts = putIfAbsent(context.getScopeType(), new Callable<List<Context>>()
- {
+ List<Context> contexts = get(context.getScopeType());
+ if (contexts == null) {
+ contexts = new CopyOnWriteArrayList<Context>();
+ put(context.getScopeType(), contexts);
+ }
+ contexts.add(context);
+ }
- public List<Context> call() throws Exception
- {
- return new CopyOnWriteArrayList<Context>();
- }
+ @Override
+ protected Map<Class<? extends Annotation>, List<Context>> delegate()
+ {
+ return delegate;
+ }
- });
- contexts.add(context);
+ @Override
+ public String toString()
+ {
+ return "ContextMap holding " + delegate().size() + " contexts: " + delegate().keySet();
}
+
}
\ No newline at end of file
Deleted: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/conversation/DefaultConversationManager.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/conversation/DefaultConversationManager.java 2009-02-05 07:35:00 UTC (rev 1418)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/conversation/DefaultConversationManager.java 2009-02-05 12:26:45 UTC (rev 1419)
@@ -1,225 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2008, Red Hat Middleware LLC, and individual contributors
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * Licensed 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.jboss.webbeans.conversation;
-
-import java.io.Serializable;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.Future;
-
-import javax.context.SessionScoped;
-import javax.inject.Current;
-import javax.inject.Produces;
-import javax.servlet.http.HttpSession;
-
-import org.jboss.webbeans.bootstrap.WebBeansBootstrap;
-import org.jboss.webbeans.context.ConversationContext;
-import org.jboss.webbeans.conversation.bindings.ConversationConcurrentAccessTimeout;
-import org.jboss.webbeans.conversation.bindings.ConversationInactivityTimeout;
-import org.jboss.webbeans.log.LogProvider;
-import org.jboss.webbeans.log.Logging;
-
-/**
- * The default conversation manager
- *
- * @author Nicklas Karlsson
- *
- */
-@SessionScoped
-public class DefaultConversationManager implements ConversationManager, Serializable
-{
- private static LogProvider log = Logging.getLogProvider(WebBeansBootstrap.class);
-
- // The conversation terminator
- @Current
- private ConversationTerminator conversationTerminator;
-
- // The current conversation
- @Current
- private ConversationImpl currentConversation;
-
- // The current HTTP session
- @Current
- private HttpSession session;
-
- // The conversation timeout in milliseconds waiting for access to a blocked conversation
- @ConversationConcurrentAccessTimeout
- private long concurrentAccessTimeout;
-
- // The conversation inactivity timeout in milliseconds
- @ConversationInactivityTimeout
- private long inactivityTimeout;
-
- // A map of current active long-running conversation entries
- private Map<String, ConversationEntry> longRunningConversations;
-
- /**
- * Creates a new conversation manager
- */
- public DefaultConversationManager()
- {
- log.trace("Created " + getClass());
- longRunningConversations = new ConcurrentHashMap<String, ConversationEntry>();
- }
-
- @Produces
- @ConversationInactivityTimeout
- public long getConversationTimeoutInMilliseconds()
- {
- return 10 * 60 * 1000;
- }
-
- @Produces
- @ConversationConcurrentAccessTimeout
- public long getConversationConcurrentAccessTimeout()
- {
- return 1 * 1000;
- }
-
- public void beginOrRestoreConversation(String cid)
- {
- if (cid == null)
- {
- // No incoming conversation ID, nothing to do here, Conversation
- // factory will produce new transient conversation
- return;
- }
- if (!longRunningConversations.containsKey(cid))
- {
- // We got an incoming conversation ID but it was not in the map of
- // known ones, nothing to do, factory to the rescue
- log.info("Could not restore long-running conversation " + cid);
- return;
- }
- // Try to get a lock to the requested conversation, return and fall back
- // to new transient conversation from factory
- // if we fail
- try
- {
- if (!longRunningConversations.get(cid).lock(concurrentAccessTimeout))
- {
- log.info("Could not acquire conversation lock in " + concurrentAccessTimeout + "ms, giving up");
- return;
- }
- }
- catch (InterruptedException e)
- {
- log.info("Interrupted while trying to acquire lock");
- return;
- }
- // If we can't cancel the termination, release the lock, return and fall
- // back to new transient conversation from factory
- if (!longRunningConversations.get(cid).cancelTermination())
- {
- longRunningConversations.get(cid).unlock();
- log.info("Failed to cancel termination of conversation " + cid);
- }
- else
- {
- // If all goes well, set the identity of the current conversation to
- // match the fetched long-running one
- currentConversation.switchTo(cid, true, inactivityTimeout);
- }
- }
-
- public void cleanupConversation()
- {
- String cid = currentConversation.getId();
- if (currentConversation.isLongRunning())
- {
- Future<?> terminationHandle = scheduleForTermination(cid);
- // When the conversation ends, a long-running conversation needs to
- // start its self-destruct. We can have the case where the conversation
- // is a previously known conversation (that had it's termination canceled in the
- // beginConversation) or the case where we have a completely new long-running conversation.
- if (longRunningConversations.containsKey(currentConversation.getId()))
- {
- longRunningConversations.get(currentConversation.getId()).unlock();
- longRunningConversations.get(currentConversation.getId()).reScheduleTermination(terminationHandle);
- }
- else
- {
- ConversationEntry conversationEntry = ConversationEntry.of(cid, terminationHandle);
- longRunningConversations.put(cid, conversationEntry);
- }
- log.trace("Scheduling " + currentConversation + " for termination");
- }
- else
- {
- // If the conversation is not long-running it can be a transient
- // conversation that has been so from the start or it can be a
- // long-running conversation that has been demoted during the request
- log.trace("Destroying transient conversation " + currentConversation);
- if (longRunningConversations.containsKey(cid))
- {
- if (!longRunningConversations.get(cid).cancelTermination())
- {
- log.info("Failed to cancel termination of conversation " + cid);
- }
- longRunningConversations.get(cid).unlock();
- }
- ConversationContext.INSTANCE.destroy();
- }
- }
-
- private Future<?> scheduleForTermination(String cid)
- {
- Runnable terminationTask = new TerminationTask(cid);
- return conversationTerminator.scheduleForTermination(terminationTask, inactivityTimeout);
- }
-
- /**
- * A termination task that destroys the conversation entry
- *
- * @author Nicklas Karlsson
- *
- */
- private class TerminationTask implements Runnable
- {
- // The conversation ID to terminate
- private String cid;
-
- /**
- * Creates a new termination task
- *
- * @param cid The conversation ID
- */
- public TerminationTask(String cid)
- {
- this.cid = cid;
- }
-
- /**
- * Executes the termination
- */
- public void run()
- {
- log.trace("Conversation " + cid + " timed out and was terminated");
- longRunningConversations.remove(cid).destroy(session);
- }
- }
-
- public void destroyAllConversations()
- {
- for (ConversationEntry conversationEntry : longRunningConversations.values())
- {
- conversationEntry.destroy(session);
- }
- longRunningConversations.clear();
- }
-
-}
Copied: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/conversation/ServletConversationManager.java (from rev 1418, ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/conversation/DefaultConversationManager.java)
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/conversation/ServletConversationManager.java (rev 0)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/conversation/ServletConversationManager.java 2009-02-05 12:26:45 UTC (rev 1419)
@@ -0,0 +1,231 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * Licensed 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.jboss.webbeans.conversation;
+
+import java.io.Serializable;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.Future;
+
+import javax.context.SessionScoped;
+import javax.inject.Current;
+import javax.inject.Produces;
+import javax.servlet.http.HttpSession;
+
+import org.jboss.webbeans.bootstrap.WebBeansBootstrap;
+import org.jboss.webbeans.context.ConversationContext;
+import org.jboss.webbeans.conversation.bindings.ConversationConcurrentAccessTimeout;
+import org.jboss.webbeans.conversation.bindings.ConversationInactivityTimeout;
+import org.jboss.webbeans.log.LogProvider;
+import org.jboss.webbeans.log.Logging;
+
+/**
+ * The default conversation manager
+ *
+ * @author Nicklas Karlsson
+ *
+ */
+@SessionScoped
+public class ServletConversationManager implements ConversationManager, Serializable
+{
+ private static LogProvider log = Logging.getLogProvider(WebBeansBootstrap.class);
+
+ // The conversation terminator
+ @Current
+ private ConversationTerminator conversationTerminator;
+
+ // The current conversation
+ @Current
+ private ConversationImpl currentConversation;
+
+ // The current HTTP session
+ @Current
+ private HttpSession session;
+
+ // The conversation timeout in milliseconds waiting for access to a blocked conversation
+ @ConversationConcurrentAccessTimeout
+ private long concurrentAccessTimeout;
+
+ // The conversation inactivity timeout in milliseconds
+ @ConversationInactivityTimeout
+ private long inactivityTimeout;
+
+ // A map of current active long-running conversation entries
+ private Map<String, ConversationEntry> longRunningConversations;
+
+ /**
+ * Creates a new conversation manager
+ */
+ public ServletConversationManager()
+ {
+ log.trace("Created " + getClass());
+ longRunningConversations = new ConcurrentHashMap<String, ConversationEntry>();
+ }
+
+ @Produces
+ @ConversationInactivityTimeout
+ public long getConversationTimeoutInMilliseconds()
+ {
+ return 10 * 60 * 1000;
+ }
+
+ @Produces
+ @ConversationConcurrentAccessTimeout
+ public long getConversationConcurrentAccessTimeout()
+ {
+ return 1 * 1000;
+ }
+
+ public void beginOrRestoreConversation(String cid)
+ {
+ if (cid == null)
+ {
+ // No incoming conversation ID, nothing to do here, continue with
+ // a transient conversation
+ return;
+ }
+ if (!longRunningConversations.containsKey(cid))
+ {
+ // We got an incoming conversation ID but it was not in the map of
+ // known ones, nothing to do. Log and return to continue with a
+ // transient conversation
+ log.info("Could not restore long-running conversation " + cid);
+ return;
+ }
+ // Try to get a lock to the requested conversation, log and return to
+ // continue with a transient conversation if we fail
+ try
+ {
+ if (!longRunningConversations.get(cid).lock(concurrentAccessTimeout))
+ {
+ log.info("Could not acquire conversation lock in " + concurrentAccessTimeout + "ms, giving up");
+ return;
+ }
+ }
+ catch (InterruptedException e)
+ {
+ log.info("Interrupted while trying to acquire lock");
+ return;
+ }
+ // If we can't cancel the termination, release the lock, return and continue
+ // with a transient conversation
+ if (!longRunningConversations.get(cid).cancelTermination())
+ {
+ longRunningConversations.get(cid).unlock();
+ log.info("Failed to cancel termination of conversation " + cid);
+ }
+ else
+ {
+ // If all goes well, set the identity of the current conversation to
+ // match the fetched long-running one
+ currentConversation.switchTo(cid, true, inactivityTimeout);
+ }
+ }
+
+ public void cleanupConversation()
+ {
+ String cid = currentConversation.getId();
+ if (currentConversation.isLongRunning())
+ {
+ Future<?> terminationHandle = scheduleForTermination(cid);
+ // When the conversation ends, a long-running conversation needs to
+ // start its self-destruct. We can have the case where the conversation
+ // is a previously known conversation (that had it's termination canceled in the
+ // beginConversation) or the case where we have a completely new long-running conversation.
+ if (longRunningConversations.containsKey(currentConversation.getId()))
+ {
+ longRunningConversations.get(currentConversation.getId()).unlock();
+ longRunningConversations.get(currentConversation.getId()).reScheduleTermination(terminationHandle);
+ }
+ else
+ {
+ ConversationEntry conversationEntry = ConversationEntry.of(cid, terminationHandle);
+ longRunningConversations.put(cid, conversationEntry);
+ }
+ log.trace("Scheduling " + currentConversation + " for termination");
+ }
+ else
+ {
+ // If the conversation is not long-running it can be a transient
+ // conversation that has been so from the start or it can be a
+ // long-running conversation that has been demoted during the request
+ log.trace("Destroying transient conversation " + currentConversation);
+ if (longRunningConversations.containsKey(cid))
+ {
+ if (!longRunningConversations.get(cid).cancelTermination())
+ {
+ log.info("Failed to cancel termination of conversation " + cid);
+ }
+ longRunningConversations.get(cid).unlock();
+ }
+ ConversationContext.INSTANCE.destroy();
+ }
+ }
+
+ /**
+ * Creates a termination task for and schedules it
+ *
+ * @param cid The id of the conversation to terminate
+ * @return The asynchronous job handle
+ */
+ private Future<?> scheduleForTermination(String cid)
+ {
+ Runnable terminationTask = new TerminationTask(cid);
+ return conversationTerminator.scheduleForTermination(terminationTask, inactivityTimeout);
+ }
+
+ /**
+ * A termination task that destroys the conversation entry
+ *
+ * @author Nicklas Karlsson
+ *
+ */
+ private class TerminationTask implements Runnable
+ {
+ // The conversation ID to terminate
+ private String cid;
+
+ /**
+ * Creates a new termination task
+ *
+ * @param cid The conversation ID
+ */
+ public TerminationTask(String cid)
+ {
+ this.cid = cid;
+ }
+
+ /**
+ * Executes the termination
+ */
+ public void run()
+ {
+ log.trace("Conversation " + cid + " timed out and was terminated");
+ longRunningConversations.remove(cid).destroy(session);
+ }
+ }
+
+ public void destroyAllConversations()
+ {
+ for (ConversationEntry conversationEntry : longRunningConversations.values())
+ {
+ conversationEntry.destroy(session);
+ }
+ longRunningConversations.clear();
+ }
+
+}
Property changes on: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/conversation/ServletConversationManager.java
___________________________________________________________________
Name: svn:mergeinfo
+
17 years, 2 months
[webbeans-commits] Webbeans SVN: r1418 - in ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans: conversation and 2 other directories.
by webbeans-commits@lists.jboss.org
Author: nickarls
Date: 2009-02-05 02:35:00 -0500 (Thu, 05 Feb 2009)
New Revision: 1418
Added:
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/conversation/bindings/
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/conversation/bindings/ConversationConcurrentAccessTimeout.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/conversation/bindings/ConversationInactivityTimeout.java
Modified:
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/WebBeansBootstrap.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/conversation/ConversationIdGenerator.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/conversation/ConversationImpl.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/conversation/ConversationManager.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/conversation/DefaultConversationManager.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/conversation/NumericConversationIdGenerator.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/servlet/ServletLifecycle.java
Log:
Fixes/improvements to conversation infra
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/WebBeansBootstrap.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/WebBeansBootstrap.java 2009-02-05 01:27:09 UTC (rev 1417)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/WebBeansBootstrap.java 2009-02-05 07:35:00 UTC (rev 1418)
@@ -26,6 +26,7 @@
import org.jboss.webbeans.bean.standard.ManagerBean;
import org.jboss.webbeans.bootstrap.spi.EjbDiscovery;
import org.jboss.webbeans.bootstrap.spi.WebBeanDiscovery;
+import org.jboss.webbeans.conversation.ConversationImpl;
import org.jboss.webbeans.conversation.DefaultConversationManager;
import org.jboss.webbeans.conversation.JavaSEConversationTerminator;
import org.jboss.webbeans.conversation.NumericConversationIdGenerator;
@@ -101,6 +102,7 @@
beanDeployer.addBean(ManagerBean.of(manager));
beanDeployer.addBean(InjectionPointBean.of(manager));
beanDeployer.addClass(Transaction.class);
+ beanDeployer.addClass(ConversationImpl.class);
beanDeployer.addClass(DefaultConversationManager.class);
beanDeployer.addClass(JavaSEConversationTerminator.class);
beanDeployer.addClass(NumericConversationIdGenerator.class);
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/conversation/ConversationIdGenerator.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/conversation/ConversationIdGenerator.java 2009-02-05 01:27:09 UTC (rev 1417)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/conversation/ConversationIdGenerator.java 2009-02-05 07:35:00 UTC (rev 1418)
@@ -20,7 +20,7 @@
* Generates conversation ID:s for the conversation manager
*
* @author Nicklas Karlsson
- * @see org.jboss.webbeans.conversation.ConversationManager#beginConversation(String)
+ * @see org.jboss.webbeans.conversation.ConversationManager#beginOrRestoreConversation(String)
*/
public interface ConversationIdGenerator
{
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/conversation/ConversationImpl.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/conversation/ConversationImpl.java 2009-02-05 01:27:09 UTC (rev 1417)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/conversation/ConversationImpl.java 2009-02-05 07:35:00 UTC (rev 1418)
@@ -20,7 +20,10 @@
import javax.annotation.Named;
import javax.context.Conversation;
import javax.context.RequestScoped;
+import javax.inject.Initializer;
+import org.jboss.webbeans.conversation.bindings.ConversationInactivityTimeout;
+
/**
* The current conversation implementation
*
@@ -39,27 +42,23 @@
private long timeoutInMilliseconds;
/**
- * Creates a new conversation
- *
- * @param cid The conversation ID
- * @param timeoutInMilliseconds The inactivity timeout in milliseconds
+ * Creates a new conversation
*/
- protected ConversationImpl(String cid, long timeoutInMilliseconds)
+ public ConversationImpl()
{
- this.timeoutInMilliseconds = timeoutInMilliseconds;
- this.cid = cid;
}
-
+
/**
- * Factory method
+ * Initializes a new conversation
*
- * @param cid The conversation ID
+ * @param conversationIdGenerator The conversation ID generator
* @param timeoutInMilliseconds The inactivity timeout in milliseconds
- * @return A new conversation
*/
- public static ConversationImpl of(String cid, long timeoutInMilliseconds)
+ @Initializer
+ public void init(ConversationIdGenerator conversationIdGenerator, @ConversationInactivityTimeout long timeoutInMilliseconds)
{
- return new ConversationImpl(cid, timeoutInMilliseconds);
+ this.cid = conversationIdGenerator.nextId();
+ this.timeoutInMilliseconds = timeoutInMilliseconds;
}
public void begin()
@@ -105,7 +104,7 @@
* @param longRunning The new long-running status
* @param timeout The new inactivity timeout in milliseconds
*/
- public void become(String cid, boolean longRunning, long timeoutInMilliseconds)
+ public void switchTo(String cid, boolean longRunning, long timeoutInMilliseconds)
{
this.cid = cid;
this.longRunning = longRunning;
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/conversation/ConversationManager.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/conversation/ConversationManager.java 2009-02-05 01:27:09 UTC (rev 1417)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/conversation/ConversationManager.java 2009-02-05 07:35:00 UTC (rev 1418)
@@ -25,34 +25,21 @@
public interface ConversationManager
{
/**
- * Begins a conversation
+ * Begins or restores a conversation
*
* @param cid The incoming conversation ID. Can be null in cases of transient conversations
*/
- public abstract void beginConversation(String cid);
+ public abstract void beginOrRestoreConversation(String cid);
/**
- * Ends the current conversation
+ * Cleans up the current conversation, destroying transient conversation and handling
+ * long-running conversations
*/
- public abstract void endConversation();
+ public abstract void cleanupConversation();
/**
* Destroys all long-running conversations
*/
public abstract void destroyAllConversations();
- /**
- * Gets The inactivity timeout
- *
- * @return The timeout in milliseconds
- */
- public abstract long getInactivityTimeoutInMilliseconds();
-
- /**
- * Gets The concurrent access timeout
- *
- * @return The timeout in milliseconds
- */
- public abstract long getConcurrentAccessTimeoutInMilliseconds();
-
}
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/conversation/DefaultConversationManager.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/conversation/DefaultConversationManager.java 2009-02-05 01:27:09 UTC (rev 1417)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/conversation/DefaultConversationManager.java 2009-02-05 07:35:00 UTC (rev 1418)
@@ -21,8 +21,6 @@
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.Future;
-import javax.context.Conversation;
-import javax.context.RequestScoped;
import javax.context.SessionScoped;
import javax.inject.Current;
import javax.inject.Produces;
@@ -30,6 +28,8 @@
import org.jboss.webbeans.bootstrap.WebBeansBootstrap;
import org.jboss.webbeans.context.ConversationContext;
+import org.jboss.webbeans.conversation.bindings.ConversationConcurrentAccessTimeout;
+import org.jboss.webbeans.conversation.bindings.ConversationInactivityTimeout;
import org.jboss.webbeans.log.LogProvider;
import org.jboss.webbeans.log.Logging;
@@ -44,21 +44,25 @@
{
private static LogProvider log = Logging.getLogProvider(WebBeansBootstrap.class);
- // The conversation id generator
- @Current
- private ConversationIdGenerator conversationIdGenerator;
-
// The conversation terminator
@Current
private ConversationTerminator conversationTerminator;
// The current conversation
@Current
- private Conversation currentConversation;
+ private ConversationImpl currentConversation;
// The current HTTP session
@Current
private HttpSession session;
+
+ // The conversation timeout in milliseconds waiting for access to a blocked conversation
+ @ConversationConcurrentAccessTimeout
+ private long concurrentAccessTimeout;
+
+ // The conversation inactivity timeout in milliseconds
+ @ConversationInactivityTimeout
+ private long inactivityTimeout;
// A map of current active long-running conversation entries
private Map<String, ConversationEntry> longRunningConversations;
@@ -71,23 +75,23 @@
log.trace("Created " + getClass());
longRunningConversations = new ConcurrentHashMap<String, ConversationEntry>();
}
-
- /**
- * Producer method for transient conversations
- *
- * @return A new transient conversation
- */
+
@Produces
- @RequestScoped
- public Conversation produceNewTransientConversation()
+ @ConversationInactivityTimeout
+ public long getConversationTimeoutInMilliseconds()
{
- Conversation conversation = ConversationImpl.of(conversationIdGenerator.nextId(), getInactivityTimeoutInMilliseconds());
- log.trace("Produced a new conversation: " + conversation);
- return conversation;
+ return 10 * 60 * 1000;
}
- public void beginConversation(String cid)
+ @Produces
+ @ConversationConcurrentAccessTimeout
+ public long getConversationConcurrentAccessTimeout()
{
+ return 1 * 1000;
+ }
+
+ public void beginOrRestoreConversation(String cid)
+ {
if (cid == null)
{
// No incoming conversation ID, nothing to do here, Conversation
@@ -106,9 +110,9 @@
// if we fail
try
{
- if (!longRunningConversations.get(cid).lock(getConcurrentAccessTimeoutInMilliseconds()))
+ if (!longRunningConversations.get(cid).lock(concurrentAccessTimeout))
{
- log.info("Could not acquire conversation lock in " + getConcurrentAccessTimeoutInMilliseconds() + "ms, giving up");
+ log.info("Could not acquire conversation lock in " + concurrentAccessTimeout + "ms, giving up");
return;
}
}
@@ -128,11 +132,11 @@
{
// If all goes well, set the identity of the current conversation to
// match the fetched long-running one
- ((ConversationImpl) currentConversation).become(cid, true, getInactivityTimeoutInMilliseconds());
+ currentConversation.switchTo(cid, true, inactivityTimeout);
}
}
- public void endConversation()
+ public void cleanupConversation()
{
String cid = currentConversation.getId();
if (currentConversation.isLongRunning())
@@ -175,7 +179,7 @@
private Future<?> scheduleForTermination(String cid)
{
Runnable terminationTask = new TerminationTask(cid);
- return conversationTerminator.scheduleForTermination(terminationTask, getInactivityTimeoutInMilliseconds());
+ return conversationTerminator.scheduleForTermination(terminationTask, inactivityTimeout);
}
/**
@@ -218,14 +222,4 @@
longRunningConversations.clear();
}
- public long getConcurrentAccessTimeoutInMilliseconds()
- {
- return 1000;
- }
-
- public long getInactivityTimeoutInMilliseconds()
- {
- return 10 * 60 * 1000;
- }
-
}
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/conversation/NumericConversationIdGenerator.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/conversation/NumericConversationIdGenerator.java 2009-02-05 01:27:09 UTC (rev 1417)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/conversation/NumericConversationIdGenerator.java 2009-02-05 07:35:00 UTC (rev 1418)
@@ -19,7 +19,7 @@
import java.io.Serializable;
import java.util.concurrent.atomic.AtomicInteger;
-import javax.context.ApplicationScoped;
+import javax.context.SessionScoped;
/**
* A ConversationIdGenerator implementation using running numerical values
@@ -27,7 +27,7 @@
* @author Nicklas Karlsson
*
*/
-@ApplicationScoped
+@SessionScoped
public class NumericConversationIdGenerator implements ConversationIdGenerator, Serializable
{
// The next conversation ID
Added: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/conversation/bindings/ConversationConcurrentAccessTimeout.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/conversation/bindings/ConversationConcurrentAccessTimeout.java (rev 0)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/conversation/bindings/ConversationConcurrentAccessTimeout.java 2009-02-05 07:35:00 UTC (rev 1418)
@@ -0,0 +1,42 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * Licensed 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.jboss.webbeans.conversation.bindings;
+
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.PARAMETER;
+import static java.lang.annotation.ElementType.TYPE;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import javax.inject.BindingType;
+
+/**
+ * The conversation context concurrent access wait timeout on a lock
+ *
+ * @author Nicklas Karlsson
+ */
+@Target( { TYPE, METHOD, PARAMETER, FIELD })
+@Retention(RUNTIME)
+@Documented
+@BindingType
+public @interface ConversationConcurrentAccessTimeout
+{
+}
Added: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/conversation/bindings/ConversationInactivityTimeout.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/conversation/bindings/ConversationInactivityTimeout.java (rev 0)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/conversation/bindings/ConversationInactivityTimeout.java 2009-02-05 07:35:00 UTC (rev 1418)
@@ -0,0 +1,42 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * Licensed 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.jboss.webbeans.conversation.bindings;
+
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.PARAMETER;
+import static java.lang.annotation.ElementType.TYPE;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import javax.inject.BindingType;
+
+/**
+ * The conversation context inactivity timeout
+ *
+ * @author Nicklas Karlsson
+ */
+@Target( { TYPE, METHOD, PARAMETER, FIELD })
+@Retention(RUNTIME)
+@Documented
+@BindingType
+public @interface ConversationInactivityTimeout
+{
+}
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/servlet/ServletLifecycle.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/servlet/ServletLifecycle.java 2009-02-05 01:27:09 UTC (rev 1417)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/servlet/ServletLifecycle.java 2009-02-05 07:35:00 UTC (rev 1418)
@@ -104,7 +104,7 @@
private static void beginConversation(HttpServletRequest request)
{
ConversationManager conversationManager = CurrentManager.rootManager().getInstanceByType(ConversationManager.class);
- conversationManager.beginConversation(request.getParameter("cid"));
+ conversationManager.beginOrRestoreConversation(request.getParameter("cid"));
Conversation conversation = CurrentManager.rootManager().getInstanceByType(Conversation.class);
ConversationContext.INSTANCE.setBeanMap(new ConversationBeanMap(request.getSession(), conversation.getId()));
}
@@ -119,15 +119,9 @@
DependentContext.INSTANCE.setActive(false);
RequestContext.INSTANCE.destroy();
SessionContext.INSTANCE.setBeanMap(null);
- endConversation();
+ CurrentManager.rootManager().getInstanceByType(ConversationManager.class).cleanupConversation();
ConversationContext.INSTANCE.setBeanMap(null);
CurrentManager.rootManager().getInstanceByType(SessionManager.class).setSession(null);
}
- private static void endConversation()
- {
- ConversationManager conversationManager = CurrentManager.rootManager().getInstanceByType(ConversationManager.class);
- conversationManager.endConversation();
- }
-
}
17 years, 2 months
[webbeans-commits] Webbeans SVN: r1417 - ri/trunk/webbeans-ri-spi/src/main/java/org/jboss/webbeans/resources/spi and 18 other directories.
by webbeans-commits@lists.jboss.org
Author: pete.muir(a)jboss.org
Date: 2009-02-04 20:27:09 -0500 (Wed, 04 Feb 2009)
New Revision: 1417
Added:
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/ArtifactScanner.java
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/util/Files.java
tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/InContainerTestRunnerTest.java
tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/artifactScanner/
tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/artifactScanner/ArtifactScannerTest.java
tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/artifactScanner/DummyArtifact.java
tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/artifactScanner/subpackage/
tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/artifactScanner/subpackage/AnotherDummyArtifact.java
tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/artifactScanner/subpackage/NotAnArtifact.java
Removed:
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/IntegratedContainers.java
Modified:
ri/trunk/webbeans-ri-spi/src/main/java/org/jboss/webbeans/resources/spi/ResourceLoadingException.java
ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/tck/ContainersImpl.java
tck/trunk/api/src/main/java/org/jboss/webbeans/tck/api/TestSuite.java
tck/trunk/api/src/main/java/org/jboss/webbeans/tck/spi/Containers.java
tck/trunk/api/src/main/java/org/jboss/webbeans/tck/spi/helpers/ForwardingContainers.java
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/AbstractTest.java
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/InContainerTestRunner.java
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/ArtifactDescriptor.java
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/DeclarativeArtifactProcessor.java
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/jsr299/JSR299ArtifactDescriptor.java
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/jsr299/TCKArtifactDescriptor.java
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/war/WarArtifactDescriptor.java
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/definition/bean/BeanDefinitionTest.java
tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/ArtifactTest.java
tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/all/ArtifactTest.java
tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/declarativeArtifact/unspecified/ArtifactTest.java
tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/subpackages/ArtifactTest.java
tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/war/ArtifactTest.java
Log:
Start work on test runner
Modified: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/tck/ContainersImpl.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/tck/ContainersImpl.java 2009-02-04 21:32:20 UTC (rev 1416)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/tck/ContainersImpl.java 2009-02-05 01:27:09 UTC (rev 1417)
@@ -1,5 +1,6 @@
package org.jboss.webbeans.test.tck;
+import java.io.InputStream;
import java.lang.annotation.Annotation;
import java.util.List;
import java.util.jar.JarInputStream;
@@ -34,7 +35,7 @@
return deploy(null, classes);
}
- public Manager deploy(JarInputStream archive)
+ public Manager deploy(InputStream archive)
{
throw new UnsupportedOperationException();
}
Modified: ri/trunk/webbeans-ri-spi/src/main/java/org/jboss/webbeans/resources/spi/ResourceLoadingException.java
===================================================================
--- ri/trunk/webbeans-ri-spi/src/main/java/org/jboss/webbeans/resources/spi/ResourceLoadingException.java 2009-02-04 21:32:20 UTC (rev 1416)
+++ ri/trunk/webbeans-ri-spi/src/main/java/org/jboss/webbeans/resources/spi/ResourceLoadingException.java 2009-02-05 01:27:09 UTC (rev 1417)
@@ -5,6 +5,7 @@
import javax.inject.ExecutionException;
+
/**
* Exception thrown when errors occur while loading resource
*
Modified: tck/trunk/api/src/main/java/org/jboss/webbeans/tck/api/TestSuite.java
===================================================================
--- tck/trunk/api/src/main/java/org/jboss/webbeans/tck/api/TestSuite.java 2009-02-04 21:32:20 UTC (rev 1416)
+++ tck/trunk/api/src/main/java/org/jboss/webbeans/tck/api/TestSuite.java 2009-02-05 01:27:09 UTC (rev 1417)
@@ -7,7 +7,11 @@
private String outputDirectory;
private boolean standalone;
+ private int deploymentDelay = 5000;
+ private boolean writeDeployedArchivesToDisk;
+ private String debugOutputDirectory = System.getProperty("java.io.tmpdir") + "/jsr-299-tck/";
+
public TestSuite(String outputDirectory)
{
super();
@@ -28,5 +32,35 @@
{
this.standalone = standalone;
}
+
+ public long getDeploymentDelay()
+ {
+ return deploymentDelay;
+ }
+ public void setDeploymentDelay(int deploymentDelay)
+ {
+ this.deploymentDelay = deploymentDelay;
+ }
+
+ public String getDebugOutputDirectory()
+ {
+ return debugOutputDirectory;
+ }
+
+ public void setDebugOutputDirectory(String debugOutputDirectory)
+ {
+ this.debugOutputDirectory = debugOutputDirectory;
+ }
+
+ public boolean isWriteDeployedArchivesToDisk()
+ {
+ return writeDeployedArchivesToDisk;
+ }
+
+ public void setWriteDeployedArchivesToDisk(boolean writeDeployedArchivesToDisk)
+ {
+ this.writeDeployedArchivesToDisk = writeDeployedArchivesToDisk;
+ }
+
}
Modified: tck/trunk/api/src/main/java/org/jboss/webbeans/tck/spi/Containers.java
===================================================================
--- tck/trunk/api/src/main/java/org/jboss/webbeans/tck/spi/Containers.java 2009-02-04 21:32:20 UTC (rev 1416)
+++ tck/trunk/api/src/main/java/org/jboss/webbeans/tck/spi/Containers.java 2009-02-05 01:27:09 UTC (rev 1417)
@@ -1,5 +1,6 @@
package org.jboss.webbeans.tck.spi;
+import java.io.InputStream;
import java.lang.annotation.Annotation;
import java.util.List;
import java.util.jar.JarInputStream;
@@ -32,6 +33,14 @@
public Manager deploy(List<Class<? extends Annotation>> enabledDeploymentTypes, JarInputStream archive);
- public Manager deploy(JarInputStream archive);
+ /**
+ * The compressed archive, represented as an stream of bytes
+ *
+ * The stream should be uncompressed using a JarInputStream
+ *
+ * @param archive
+ * @return
+ */
+ public Manager deploy(InputStream archive);
}
\ No newline at end of file
Modified: tck/trunk/api/src/main/java/org/jboss/webbeans/tck/spi/helpers/ForwardingContainers.java
===================================================================
--- tck/trunk/api/src/main/java/org/jboss/webbeans/tck/spi/helpers/ForwardingContainers.java 2009-02-04 21:32:20 UTC (rev 1416)
+++ tck/trunk/api/src/main/java/org/jboss/webbeans/tck/spi/helpers/ForwardingContainers.java 2009-02-05 01:27:09 UTC (rev 1417)
@@ -1,5 +1,6 @@
package org.jboss.webbeans.tck.spi.helpers;
+import java.io.InputStream;
import java.lang.annotation.Annotation;
import java.util.List;
import java.util.jar.JarInputStream;
@@ -28,7 +29,7 @@
return delegate().evaluateValueExpression(expression, expectedType);
}
- public Manager deploy(JarInputStream archive)
+ public Manager deploy(InputStream archive)
{
return delegate().deploy(archive);
}
Modified: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/AbstractTest.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/AbstractTest.java 2009-02-04 21:32:20 UTC (rev 1416)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/AbstractTest.java 2009-02-05 01:27:09 UTC (rev 1417)
@@ -22,7 +22,6 @@
import javax.inject.manager.Bean;
import javax.inject.manager.Manager;
-import org.jboss.webbeans.tck.impl.IntegratedContainers;
import org.jboss.webbeans.tck.impl.util.MockCreationalContext;
import org.jboss.webbeans.tck.spi.StandaloneContainers;
import org.testng.annotations.AfterMethod;
@@ -82,7 +81,7 @@
{
manager = configuration().getManagers().createManager();
}
- containers = IntegratedContainers.of(configuration().getContainers());
+ containers = (StandaloneContainers) configuration().getContainers();
}
@AfterMethod
Modified: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/InContainerTestRunner.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/InContainerTestRunner.java 2009-02-04 21:32:20 UTC (rev 1416)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/InContainerTestRunner.java 2009-02-05 01:27:09 UTC (rev 1417)
@@ -1,100 +1,105 @@
package org.jboss.webbeans.tck.impl;
import static org.jboss.webbeans.tck.impl.WebBeansTCKImpl.configuration;
-import static org.jboss.webbeans.tck.impl.util.Reflections.loadResources;
+import java.io.BufferedOutputStream;
import java.io.File;
+import java.io.FileOutputStream;
import java.io.IOException;
-import java.net.URL;
-import java.net.URLDecoder;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.ArrayList;
import java.util.HashSet;
+import java.util.List;
import java.util.Set;
import org.apache.log4j.Logger;
+import org.jboss.webbeans.tck.api.TestSuite;
+import org.jboss.webbeans.tck.impl.packaging.ArtifactDescriptor;
+import org.jboss.webbeans.tck.impl.packaging.ArtifactScanner;
+import org.jboss.webbeans.tck.impl.packaging.DeclarativeArtifactProcessor;
+import org.jboss.webbeans.tck.impl.util.Files;
+import org.jboss.webbeans.tck.spi.Containers;
+
public class InContainerTestRunner
{
- private static class URLScanner
+ private static final Logger log = Logger.getLogger(ArtifactScanner.class);
+
+ public InContainerTestRunner()
{
- private static final Logger log = Logger.getLogger(URLScanner.class);
-
- private final Package pkg;
-
- private final Set<String> classes = new HashSet<String>();
-
- public URLScanner(Package pkg)
+
+ }
+
+ public void run()
+ {
+ run(configuration().getTestSuite(), configuration().getContainers());
+ }
+
+ protected void run(TestSuite testSuite, Containers containers)
+ {
+ Set<Class<?>> classes = new HashSet<Class<?>>();
+ classes.addAll(new ArtifactScanner("org.jboss.webbeans.tck.integration").getClasses());
+ if (!testSuite.isStandalone())
{
- this.pkg = pkg;
+ classes.addAll(new ArtifactScanner("org.jboss.webbeans.tck.unit").getClasses());
}
-
- private void scanPackage()
+ List<ArtifactDescriptor> artifacts = new ArrayList<ArtifactDescriptor>();
+ for (Class<?> clazz : classes)
{
- try
+ artifacts.add(new DeclarativeArtifactProcessor(clazz).getArtifact());
+ }
+ // We've now collected all the artifacts, so we can file them at the
+ // container
+ if (testSuite.isWriteDeployedArchivesToDisk())
+ {
+ File file = new File(testSuite.getDebugOutputDirectory());
+ if (!file.exists())
{
- Set<String> paths = new HashSet<String>();
- String packageName = pkg.getName().replace(".", "/");
- for (URL url : loadResources(packageName))
- {
- String urlPath = url.getFile();
- urlPath = URLDecoder.decode(urlPath, "UTF-8");
- if ( urlPath.startsWith("file:") )
- {
- urlPath = urlPath.substring(5);
- }
- if ( urlPath.indexOf('!')>0 )
- {
- urlPath = urlPath.substring(0, urlPath.indexOf('!'));
- }
- paths.add(urlPath);
- }
- handle(paths);
+ file.mkdirs();
}
- catch (IOException ioe)
+ else if (file.isFile())
{
- log.warn("could not read: " + pkg.getName(), ioe);
+ throw new IllegalStateException("Cannot use debug directory " + testSuite.getDebugOutputDirectory() + ", it already exists");
}
}
-
- private void handle(Set<String> paths)
+ for (ArtifactDescriptor artifact : artifacts)
{
- for ( String urlPath: paths )
+ try
{
- log.trace("scanning: " + urlPath);
- File file = new File(urlPath);
- if ( file.isDirectory() )
+ InputStream jar = artifact.asJar();
+ if (testSuite.isWriteDeployedArchivesToDisk())
{
- for ( File child: file.listFiles() )
+ try
{
- if ( !child.isDirectory() && child.getName().endsWith(".class"))
- {
- classes.add(pkg.getName() + "." + child.getName().substring(0, child.getName().lastIndexOf(".class")));
- }
+ File file = new File(testSuite.getDebugOutputDirectory(), artifact.getDeclaringClass().getName() + artifact.getExtension());
+ file.createNewFile();
+ OutputStream os = new BufferedOutputStream(new FileOutputStream(file));
+ Files.copy(jar, os);
+ os.close();
}
+ catch (IOException e)
+ {
+ log.error("Error writing artifact to disk " + artifact, e);
+ }
}
+ containers.deploy(jar);
+ jar.close();
+ try
+ {
+ Thread.sleep(testSuite.getDeploymentDelay());
+ }
+ catch (InterruptedException e)
+ {
+ Thread.interrupted();
+ }
}
+ catch (IOException e)
+ {
+ log.error("Error deploying artifact " + artifact, e);
+ }
}
-
- public Set<String> getClassNames()
- {
- scanPackage();
- return classes;
- }
-
}
- public InContainerTestRunner()
- {
- // TODO Auto-generated constructor stub
- }
-
- public void run()
- {
-
- if (configuration().getTestSuite().isStandalone())
- {
-
- }
- }
-
}
Deleted: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/IntegratedContainers.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/IntegratedContainers.java 2009-02-04 21:32:20 UTC (rev 1416)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/IntegratedContainers.java 2009-02-05 01:27:09 UTC (rev 1417)
@@ -1,63 +0,0 @@
-package org.jboss.webbeans.tck.impl;
-
-import java.io.IOException;
-import java.lang.annotation.Annotation;
-import java.util.List;
-import java.util.jar.JarInputStream;
-
-import javax.inject.manager.Manager;
-
-import org.jboss.webbeans.tck.impl.packaging.jsr299.TCKArtifactDescriptor;
-import org.jboss.webbeans.tck.spi.Containers;
-import org.jboss.webbeans.tck.spi.StandaloneContainers;
-import org.jboss.webbeans.tck.spi.helpers.ForwardingContainers;
-
-public abstract class IntegratedContainers extends ForwardingContainers implements StandaloneContainers
-{
-
- public static StandaloneContainers of(final Containers containers)
- {
- if (containers instanceof StandaloneContainers)
- {
- return (StandaloneContainers) containers;
- }
- else
- {
- return new IntegratedContainers()
- {
-
- @Override
- protected Containers delegate()
- {
- return containers;
- }
-
- };
- }
- }
-
- public Manager deploy(java.lang.Class<?>... classes)
- {
- try
- {
- return deploy(new JarInputStream(new TCKArtifactDescriptor(null).asJar()));
- }
- catch (IOException e)
- {
- throw new IllegalStateException("Error building war from " + classes, e);
- }
- }
-
- public Manager deploy(List<Class<? extends Annotation>> enabledDeploymentTypes, Class<?>... classes)
- {
- try
- {
- return deploy(enabledDeploymentTypes, new JarInputStream(new TCKArtifactDescriptor(null).asJar()));
- }
- catch (IOException e)
- {
- throw new IllegalStateException("Error building war from " + classes, e);
- }
- }
-
-}
Modified: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/ArtifactDescriptor.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/ArtifactDescriptor.java 2009-02-04 21:32:20 UTC (rev 1416)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/ArtifactDescriptor.java 2009-02-05 01:27:09 UTC (rev 1417)
@@ -17,11 +17,11 @@
import java.util.HashSet;
import java.util.Random;
import java.util.Set;
-import java.util.jar.JarInputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
import org.apache.log4j.Logger;
+import org.jboss.webbeans.tck.impl.util.Files;
public class ArtifactDescriptor
{
@@ -125,8 +125,6 @@
private void zip(File directory, ZipOutputStream zipOutputStream) throws IOException
{
File[] children = directory.listFiles();
- byte[] readBuffer = new byte[2156];
- int bytesIn = 0;
//loop through dirList, and zip the files
for (File child : children)
{
@@ -139,10 +137,7 @@
FileInputStream fis = new FileInputStream(child);
ZipEntry zipEntry = new ZipEntry(child.getPath().substring(root.getPath().length() + 1));
zipOutputStream.putNextEntry(zipEntry);
- while((bytesIn = fis.read(readBuffer)) != -1)
- {
- zipOutputStream.write(readBuffer, 0, bytesIn);
- }
+ Files.copy(fis, zipOutputStream);
fis.close();
}
}
@@ -156,17 +151,19 @@
private final Set<Class<?>> classes;
private final Set<Package> packages;
private final Set<ResourceDescriptor> resources;
+ private final Class<?> declaringClass;
- public ArtifactDescriptor()
+ public ArtifactDescriptor(Class<?> declaringClass)
{
classes = new HashSet<Class<?>>();
resources = new HashSet<ResourceDescriptor>();
packages = new HashSet<Package>();
+ this.declaringClass = declaringClass;
}
- public JarInputStream asJar() throws IOException
+ public InputStream asJar() throws IOException
{
- return new JarInputStream(new Zipper(create()).zip());
+ return new Zipper(create()).zip();
}
public File create() throws IOException
@@ -271,4 +268,20 @@
return archiveRoot;
}
+ @Override
+ public String toString()
+ {
+ return "Declared by: " + declaringClass.getName() + " Classes: " + getClasses() + " Resources: " + getResources();
+ }
+
+ public Class<?> getDeclaringClass()
+ {
+ return declaringClass;
+ }
+
+ public String getExtension()
+ {
+ return ".jar";
+ }
+
}
Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/ArtifactScanner.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/ArtifactScanner.java (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/ArtifactScanner.java 2009-02-05 01:27:09 UTC (rev 1417)
@@ -0,0 +1,102 @@
+/**
+ *
+ */
+package org.jboss.webbeans.tck.impl.packaging;
+
+import static org.jboss.webbeans.tck.impl.util.Reflections.loadResources;
+
+import java.io.File;
+import java.io.IOException;
+import java.net.URL;
+import java.net.URLDecoder;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.apache.log4j.Logger;
+
+public class ArtifactScanner
+{
+ private static final Logger log = Logger.getLogger(ArtifactScanner.class);
+
+ private final String packageName;
+
+ private final Set<Class<?>> classes = new HashSet<Class<?>>();
+
+ public ArtifactScanner(String packageName)
+ {
+ this.packageName = packageName;
+ }
+
+ private void scan()
+ {
+ try
+ {
+ Set<String> paths = new HashSet<String>();
+ String packageName = this.packageName.replace(".", "/");
+ for (URL url : loadResources(packageName))
+ {
+ String urlPath = url.getFile();
+ urlPath = URLDecoder.decode(urlPath, "UTF-8");
+ if ( urlPath.startsWith("file:") )
+ {
+ urlPath = urlPath.substring(5);
+ }
+ if ( urlPath.indexOf('!')>0 )
+ {
+ urlPath = urlPath.substring(0, urlPath.indexOf('!'));
+ }
+ paths.add(urlPath);
+ }
+ handle(paths);
+ }
+ catch (IOException ioe)
+ {
+ log.warn("could not read: " + this.packageName, ioe);
+ }
+ }
+
+ private void handle(Set<String> paths)
+ {
+ for ( String urlPath: paths )
+ {
+ log.trace("scanning: " + urlPath);
+ handle(new File(urlPath), packageName.substring(0, packageName.lastIndexOf(".")));
+
+ }
+ }
+
+ private void handle(File file, String packageName)
+ {
+ if ( file.isDirectory() )
+ {
+ packageName = packageName + "." + file.getName();
+ for ( File child: file.listFiles() )
+ {
+ handle(child, packageName);
+ }
+ }
+ else if (file.getName().endsWith(".class") && ! file.getName().contains("$"))
+ {
+ String className = packageName + "." + file.getName().substring(0, file.getName().length() - 6);
+ try
+ {
+ Class<?> clazz = Class.forName(className);
+ if (clazz.isAnnotationPresent(Artifact.class) || clazz.isAnnotationPresent(EjbArtifact.class))
+ {
+ classes.add(clazz);
+ }
+ }
+ catch (ClassNotFoundException e)
+ {
+ log.warn("Unable to load class " + className, e);
+ }
+ }
+ }
+
+ public Set<Class<?>> getClasses()
+ {
+ scan();
+ return classes;
+ }
+
+}
\ No newline at end of file
Property changes on: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/ArtifactScanner.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/DeclarativeArtifactProcessor.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/DeclarativeArtifactProcessor.java 2009-02-04 21:32:20 UTC (rev 1416)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/DeclarativeArtifactProcessor.java 2009-02-05 01:27:09 UTC (rev 1417)
@@ -125,23 +125,23 @@
final TCKArtifactDescriptor artifact;
if (packagingType.equals(WAR))
{
- artifact = new WarArtifactDescriptor(beansXml, webXml);
+ artifact = new WarArtifactDescriptor(declaringClass, beansXml, webXml);
}
else if (packagingType.equals(EAR))
{
throw new UnsupportedOperationException();
}
- else if (standalone)
+ else if (ejbs && standalone)
{
- artifact = new TCKArtifactDescriptor(beansXml);
+ throw new UnsupportedOperationException();
}
- else if (ejbs)
+ else if (standalone)
{
- throw new UnsupportedOperationException();
+ artifact = new TCKArtifactDescriptor(declaringClass, beansXml);
}
else
{
- artifact = new WarArtifactDescriptor(beansXml, null);
+ artifact = new WarArtifactDescriptor(declaringClass, beansXml, null);
}
if (addDeclaringPackage)
{
Modified: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/jsr299/JSR299ArtifactDescriptor.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/jsr299/JSR299ArtifactDescriptor.java 2009-02-04 21:32:20 UTC (rev 1416)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/jsr299/JSR299ArtifactDescriptor.java 2009-02-05 01:27:09 UTC (rev 1417)
@@ -11,8 +11,9 @@
public static final String BEANS_XML_DESTINATION = "META-INF/beans.xml";
public static final String STANDARD_BEANS_XML_FILE_NAME = "org/jboss/webbeans/tck/impl/packaging/jsr299/default/beans.xml";
- public JSR299ArtifactDescriptor(String beansXmlSourceFileName)
+ public JSR299ArtifactDescriptor(Class<?> declaringClass, String beansXmlSourceFileName)
{
+ super(declaringClass);
if (isEmpty(beansXmlSourceFileName))
{
beansXmlSourceFileName = STANDARD_BEANS_XML_FILE_NAME;
Modified: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/jsr299/TCKArtifactDescriptor.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/jsr299/TCKArtifactDescriptor.java 2009-02-04 21:32:20 UTC (rev 1416)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/jsr299/TCKArtifactDescriptor.java 2009-02-05 01:27:09 UTC (rev 1417)
@@ -10,9 +10,9 @@
private boolean unit;
private boolean ejbs;
- public TCKArtifactDescriptor(String beansXmlSourceFileName)
+ public TCKArtifactDescriptor(Class<?> declaringClass, String beansXmlSourceFileName)
{
- super(beansXmlSourceFileName);
+ super(declaringClass, beansXmlSourceFileName);
getPackages().add(AbstractTest.class.getPackage());
getPackages().add(NewLiteral.class.getPackage());
getPackages().add(Reflections.class.getPackage());
@@ -38,4 +38,10 @@
this.unit = unit;
}
+ @Override
+ public String getExtension()
+ {
+ return ".war";
+ }
+
}
Modified: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/war/WarArtifactDescriptor.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/war/WarArtifactDescriptor.java 2009-02-04 21:32:20 UTC (rev 1416)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/war/WarArtifactDescriptor.java 2009-02-05 01:27:09 UTC (rev 1417)
@@ -15,9 +15,9 @@
private File webInfClasses;
- public WarArtifactDescriptor(String beansXmlSourceFileName, String webXmlSourceFileName)
+ public WarArtifactDescriptor(Class<?> declaringClass, String beansXmlSourceFileName, String webXmlSourceFileName)
{
- super(beansXmlSourceFileName);
+ super(declaringClass, beansXmlSourceFileName);
if (isEmpty(webXmlSourceFileName))
{
webXmlSourceFileName = STANDARD_WEB_XML_FILE_NAME;
@@ -36,4 +36,10 @@
return webInfClasses;
}
+ @Override
+ public String toString()
+ {
+ return "war, " + super.toString();
+ }
+
}
Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/util/Files.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/util/Files.java (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/util/Files.java 2009-02-05 01:27:09 UTC (rev 1417)
@@ -0,0 +1,20 @@
+package org.jboss.webbeans.tck.impl.util;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+
+public class Files
+{
+
+ public static void copy(InputStream source, OutputStream destination) throws IOException
+ {
+ byte[] readBuffer = new byte[2156];
+ int bytesIn = 0;
+ while((bytesIn = source.read(readBuffer)) != -1)
+ {
+ destination.write(readBuffer, 0, bytesIn);
+ }
+ }
+
+}
Property changes on: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/util/Files.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/definition/bean/BeanDefinitionTest.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/definition/bean/BeanDefinitionTest.java 2009-02-04 21:32:20 UTC (rev 1416)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/definition/bean/BeanDefinitionTest.java 2009-02-05 01:27:09 UTC (rev 1417)
@@ -9,6 +9,7 @@
import org.jboss.webbeans.tck.AbstractTest;
import org.jboss.webbeans.tck.SpecAssertion;
import org.jboss.webbeans.tck.SpecAssertions;
+import org.jboss.webbeans.tck.impl.packaging.Artifact;
import org.testng.annotations.Test;
/**
@@ -18,6 +19,7 @@
*
* Spec version: PRD2
*/
+@Artifact
public class BeanDefinitionTest extends AbstractTest
{
Added: tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/InContainerTestRunnerTest.java
===================================================================
--- tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/InContainerTestRunnerTest.java (rev 0)
+++ tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/InContainerTestRunnerTest.java 2009-02-05 01:27:09 UTC (rev 1417)
@@ -0,0 +1,67 @@
+package org.jboss.webbeans.tck.impl.test;
+
+import java.io.InputStream;
+import java.lang.annotation.Annotation;
+import java.util.List;
+import java.util.jar.JarInputStream;
+
+import javax.inject.manager.Manager;
+
+import org.jboss.webbeans.tck.api.TestSuite;
+import org.jboss.webbeans.tck.impl.InContainerTestRunner;
+import org.jboss.webbeans.tck.spi.Containers;
+
+public class InContainerTestRunnerTest
+{
+
+ private static class MockInContainerTestRunner extends InContainerTestRunner
+ {
+
+ @Override
+ public void run(TestSuite testSuite, Containers containers)
+ {
+ super.run(testSuite, containers);
+ }
+
+ }
+
+ private static class MockContainers implements Containers
+ {
+
+ public Manager deploy(List<Class<? extends Annotation>> enabledDeploymentTypes, JarInputStream archive)
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public Manager deploy(InputStream archive)
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public <T> T evaluateMethodExpression(String expression, Class<T> expectedType, Class<?>[] expectedParamTypes, Object[] expectedParams)
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public <T> T evaluateValueExpression(String expression, Class<T> expectedType)
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ }
+
+ //@Test
+ public void testRunner()
+ {
+ TestSuite testSuite = new TestSuite(null);
+ testSuite.setWriteDeployedArchivesToDisk(true);
+ testSuite.setDeploymentDelay(0);
+ MockInContainerTestRunner runner = new MockInContainerTestRunner();
+ runner.run(testSuite, new MockContainers());
+ }
+
+}
Property changes on: tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/InContainerTestRunnerTest.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/ArtifactTest.java
===================================================================
--- tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/ArtifactTest.java 2009-02-04 21:32:20 UTC (rev 1416)
+++ tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/ArtifactTest.java 2009-02-05 01:27:09 UTC (rev 1417)
@@ -15,7 +15,7 @@
@Test
public void testDefaultTCKArtifact() throws Exception
{
- ArtifactDescriptor artifactDescriptor = new TCKArtifactDescriptor(null);
+ ArtifactDescriptor artifactDescriptor = new TCKArtifactDescriptor(null, null);
File root = artifactDescriptor.create();
assert getPackageAsFile(Reflections.class.getPackage(), root).listFiles().length > 0;
assert getPackageAsFile(NewLiteral.class.getPackage(), root).listFiles().length > 0;
Modified: tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/all/ArtifactTest.java
===================================================================
--- tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/all/ArtifactTest.java 2009-02-04 21:32:20 UTC (rev 1416)
+++ tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/all/ArtifactTest.java 2009-02-05 01:27:09 UTC (rev 1417)
@@ -13,7 +13,7 @@
@Test
public void testAllClassesInPackage() throws Exception
{
- ArtifactDescriptor artifactDescriptor = new ArtifactDescriptor();
+ ArtifactDescriptor artifactDescriptor = new ArtifactDescriptor(null);
artifactDescriptor.getPackages().add(ArtifactTest.class.getPackage());
File root = artifactDescriptor.create();
File currentPackage = getCurrentPackageAsFile(root);
Added: tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/artifactScanner/ArtifactScannerTest.java
===================================================================
--- tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/artifactScanner/ArtifactScannerTest.java (rev 0)
+++ tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/artifactScanner/ArtifactScannerTest.java 2009-02-05 01:27:09 UTC (rev 1417)
@@ -0,0 +1,24 @@
+package org.jboss.webbeans.tck.impl.test.packaging.artifactScanner;
+
+import java.util.Set;
+
+import org.jboss.webbeans.tck.impl.packaging.ArtifactScanner;
+import org.jboss.webbeans.tck.impl.test.packaging.artifactScanner.subpackage.AnotherDummyArtifact;
+import org.jboss.webbeans.tck.impl.test.packaging.artifactScanner.subpackage.NotAnArtifact;
+import org.testng.annotations.Test;
+
+public class ArtifactScannerTest
+{
+
+ @Test
+ public void testScanner()
+ {
+ ArtifactScanner scanner = new ArtifactScanner(ArtifactScannerTest.class.getPackage().getName());
+ Set<Class<?>> classes = scanner.getClasses();
+ assert classes.contains(DummyArtifact.class);
+ assert classes.contains(AnotherDummyArtifact.class);
+ assert !classes.contains(NotAnArtifact.class);
+ }
+
+
+}
Property changes on: tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/artifactScanner/ArtifactScannerTest.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/artifactScanner/DummyArtifact.java
===================================================================
--- tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/artifactScanner/DummyArtifact.java (rev 0)
+++ tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/artifactScanner/DummyArtifact.java 2009-02-05 01:27:09 UTC (rev 1417)
@@ -0,0 +1,9 @@
+package org.jboss.webbeans.tck.impl.test.packaging.artifactScanner;
+
+import org.jboss.webbeans.tck.impl.packaging.Artifact;
+
+@Artifact
+public class DummyArtifact
+{
+
+}
Property changes on: tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/artifactScanner/DummyArtifact.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/artifactScanner/subpackage/AnotherDummyArtifact.java
===================================================================
--- tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/artifactScanner/subpackage/AnotherDummyArtifact.java (rev 0)
+++ tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/artifactScanner/subpackage/AnotherDummyArtifact.java 2009-02-05 01:27:09 UTC (rev 1417)
@@ -0,0 +1,9 @@
+package org.jboss.webbeans.tck.impl.test.packaging.artifactScanner.subpackage;
+
+import org.jboss.webbeans.tck.impl.packaging.Artifact;
+
+@Artifact
+public class AnotherDummyArtifact
+{
+
+}
Property changes on: tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/artifactScanner/subpackage/AnotherDummyArtifact.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/artifactScanner/subpackage/NotAnArtifact.java
===================================================================
--- tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/artifactScanner/subpackage/NotAnArtifact.java (rev 0)
+++ tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/artifactScanner/subpackage/NotAnArtifact.java 2009-02-05 01:27:09 UTC (rev 1417)
@@ -0,0 +1,6 @@
+package org.jboss.webbeans.tck.impl.test.packaging.artifactScanner.subpackage;
+
+public class NotAnArtifact
+{
+
+}
Property changes on: tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/artifactScanner/subpackage/NotAnArtifact.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/declarativeArtifact/unspecified/ArtifactTest.java
===================================================================
--- tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/declarativeArtifact/unspecified/ArtifactTest.java 2009-02-04 21:32:20 UTC (rev 1416)
+++ tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/declarativeArtifact/unspecified/ArtifactTest.java 2009-02-05 01:27:09 UTC (rev 1417)
@@ -128,7 +128,7 @@
assert beans.startsWith("<my></my>");
}
- @Test
+ //@Test
public void testEjbTestDeclartiveArtifact() throws Exception
{
DeclarativeArtifactProcessor declarativeArtifactProcessor = new DeclarativeArtifactProcessor(DummyEjbTest.class);
Modified: tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/subpackages/ArtifactTest.java
===================================================================
--- tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/subpackages/ArtifactTest.java 2009-02-04 21:32:20 UTC (rev 1416)
+++ tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/subpackages/ArtifactTest.java 2009-02-05 01:27:09 UTC (rev 1417)
@@ -13,7 +13,7 @@
@Test
public void testAllClassesInPackageAndNotSubPackages() throws Exception
{
- ArtifactDescriptor artifactDescriptor = new ArtifactDescriptor();
+ ArtifactDescriptor artifactDescriptor = new ArtifactDescriptor(null);
artifactDescriptor.getPackages().add(ArtifactTest.class.getPackage());
File root = artifactDescriptor.create();
File currentPackage = getCurrentPackageAsFile(root);
Modified: tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/war/ArtifactTest.java
===================================================================
--- tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/war/ArtifactTest.java 2009-02-04 21:32:20 UTC (rev 1416)
+++ tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/war/ArtifactTest.java 2009-02-05 01:27:09 UTC (rev 1417)
@@ -16,7 +16,7 @@
@Test
public void testDefaultWar() throws Exception
{
- WarArtifactDescriptor war = new WarArtifactDescriptor(null, null);
+ WarArtifactDescriptor war = new WarArtifactDescriptor(null, null, null);
war.getClasses().add(Cow.class);
File root = war.create();
assert root.listFiles().length == 2;
@@ -59,9 +59,9 @@
@Test
public void testJarProduction() throws Exception
{
- WarArtifactDescriptor war = new WarArtifactDescriptor(null, null);
+ WarArtifactDescriptor war = new WarArtifactDescriptor(null, null, null);
war.getClasses().add(Cow.class);
- JarInputStream is = war.asJar();
+ JarInputStream is = new JarInputStream(war.asJar());
JarEntry entry;
List<String> fileNames = new ArrayList<String>();
while ((entry = is.getNextJarEntry()) != null)
17 years, 2 months
[webbeans-commits] Webbeans SVN: r1416 - in tck/trunk/impl/src/main/java/org/jboss/webbeans/tck: unit/context/dependent and 1 other directory.
by webbeans-commits@lists.jboss.org
Author: dallen6
Date: 2009-02-04 16:32:20 -0500 (Wed, 04 Feb 2009)
New Revision: 1416
Added:
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/context/dependent/ApplicationHorseStable.java
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/context/dependent/HorseInStableEvent.java
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/context/dependent/HorseStable.java
Modified:
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/integration/context/dependent/DependentContextTest.java
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/context/dependent/DependentContextTest.java
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/context/dependent/SpiderProducer.java
Log:
A few more tests added for dependent context.
Modified: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/integration/context/dependent/DependentContextTest.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/integration/context/dependent/DependentContextTest.java 2009-02-04 19:34:41 UTC (rev 1415)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/integration/context/dependent/DependentContextTest.java 2009-02-04 21:32:20 UTC (rev 1416)
@@ -37,6 +37,54 @@
}
/**
+ * when the container is injecting dependencies of an EJB or servlet or when
+ * a @PostConstruct or @PreDestroy callback is invoked by the EJB container.
+ */
+ @Test(groups = { "contexts", "injection", "stub", "servlet", "integration" })
+ @SpecAssertion(section = "8.3", id = "unknown")
+ public void testContextIsActiveDuringServletDependencyInjection()
+ {
+ assert false;
+ }
+
+ /**
+ * when the container is injecting dependencies of an EJB or servlet or when
+ * a @PostConstruct or @PreDestroy callback is invoked by the EJB container.
+ */
+ @Test(groups = { "contexts", "postconstruct", "stub", "ejb3", "integration" })
+ @SpecAssertion(section = "8.3", id = "unknown")
+ public void testContextIsActiveDuringEJBPostConstruct()
+ {
+ assert false;
+ }
+
+ /**
+ * A bean, EJB or servlet may obtain an instance of a bean with scope @Dependent
+ * via dependency injection or by calling Manager.getInstance(),
+ * Manager.getInstanceByType() or Instance.get() when the @Dependent scope is
+ * active.
+ */
+ @Test(groups = { "stub", "contexts", "ejb3", "integration" })
+ @SpecAssertion(section = "8.3.1", id = "unknown")
+ public void testEjbBeanMayCreateInstanceWheneverScopeActive()
+ {
+ assert false;
+ }
+
+ /**
+ * A bean, EJB or servlet may obtain an instance of a bean with scope @Dependent
+ * via dependency injection or by calling Manager.getInstance(),
+ * Manager.getInstanceByType() or Instance.get() when the @Dependent scope is
+ * active.
+ */
+ @Test(groups = { "stub", "contexts", "servlet", "integration" })
+ @SpecAssertion(section = "8.3.1", id = "unknown")
+ public void testServletBeanMayCreateInstanceWheneverScopeIsActive()
+ {
+ assert false;
+ }
+
+ /**
* destroy all dependent objects of an EJB bean or Servlet when the EJB bean
* or Servlet is destroyed,
*/
Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/context/dependent/ApplicationHorseStable.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/context/dependent/ApplicationHorseStable.java (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/context/dependent/ApplicationHorseStable.java 2009-02-04 21:32:20 UTC (rev 1416)
@@ -0,0 +1,33 @@
+package org.jboss.webbeans.tck.unit.context.dependent;
+
+import javax.context.ApplicationScoped;
+import javax.context.Dependent;
+import javax.event.Observes;
+import javax.inject.Current;
+import javax.inject.manager.Manager;
+
+@ApplicationScoped
+class ApplicationHorseStable
+{
+ @Current
+ private Manager manager;
+ private static boolean dependentContextActive = false;
+
+ public void horseEntered(@Observes HorseInStableEvent horseEvent)
+ {
+ if (manager.getContext(Dependent.class).isActive())
+ {
+ dependentContextActive = true;
+ }
+ }
+
+ public static boolean isDependentContextActive()
+ {
+ return ApplicationHorseStable.dependentContextActive;
+ }
+
+ public static void setDependentContextActive(boolean dependentContextActive)
+ {
+ ApplicationHorseStable.dependentContextActive = dependentContextActive;
+ }
+}
Property changes on: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/context/dependent/ApplicationHorseStable.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/context/dependent/DependentContextTest.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/context/dependent/DependentContextTest.java 2009-02-04 19:34:41 UTC (rev 1415)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/context/dependent/DependentContextTest.java 2009-02-04 21:32:20 UTC (rev 1416)
@@ -42,7 +42,7 @@
* Any injected instance of the (@Dependent scoped) bean is bound to the
* lifecycle of the bean, servlet or EJB into which it is injected.
*/
- @Test(groups = { "contexts", "el", "stub" })
+ @Test(groups = { "contexts", "stub" })
@SpecAssertion(section = "8.3", id = "unknown")
public void testDependentBeansBoundToLifecycleOfContainingBean()
{
@@ -115,24 +115,57 @@
* Any instance of the (@Dependent-scoped) Web Bean that receives a producer
* method, producer field, disposal method or observer method invocation
* exists to service that invocation only
+ *
+ * @throws Exception
*/
- @Test(groups = { "stub", "contexts", "disposalMethod" })
+ @Test(groups = { "broken", "contexts", "disposalMethod" })
@SpecAssertion(section = "8.3", id = "unknown")
- public void testInstanceUsedForDisposalMethodNotShared()
+ public void testInstanceUsedForDisposalMethodNotShared() throws Exception
{
- assert false;
+ deployBeans(SpiderProducer.class);
+ new RunInDependentContext()
+ {
+
+ @Override
+ protected void execute() throws Exception
+ {
+ SpiderProducer spiderProducer = manager.getInstanceByType(SpiderProducer.class);
+ Bean<Tarantula> tarantulaBean = manager.resolveByType(Tarantula.class).iterator().next();
+ Tarantula tarantula = tarantulaBean.create(new MyCreationalContext<Tarantula>());
+ assert tarantula != null;
+ tarantulaBean.destroy(tarantula);
+ assert SpiderProducer.getInstanceUsedForDisposal() != null;
+ assert SpiderProducer.getInstanceUsedForDisposal() != spiderProducer;
+ }
+
+ }.run();
}
/**
* Any instance of the (@Dependent-scoped) Web Bean that receives a producer
* method, producer field, disposal method or observer method invocation
* exists to service that invocation only
+ *
+ * @throws Exception
*/
- @Test(groups = { "stub", "contexts", "observerMethod" })
+ @Test(groups = { "contexts", "observerMethod" })
@SpecAssertion(section = "8.3", id = "unknown")
- public void testInstanceUsedForObserverMethodNotShared()
+ public void testInstanceUsedForObserverMethodNotShared() throws Exception
{
- assert false;
+ deployBeans(HorseStable.class);
+ new RunInDependentContext()
+ {
+
+ @Override
+ protected void execute() throws Exception
+ {
+ HorseStable firstStableInstance = manager.getInstanceByType(HorseStable.class);
+ manager.fireEvent(new HorseInStableEvent());
+ assert HorseStable.getInstanceThatObservedEvent() != null;
+ assert HorseStable.getInstanceThatObservedEvent() != firstStableInstance;
+ }
+
+ }.run();
}
/**
@@ -201,11 +234,15 @@
* container to receive a producer method, producer field, disposal method or
* observer method invocation, or
*/
- @Test(groups = { "stub", "contexts", "producerMethod" })
+ @Test(groups = { "contexts", "producerMethod" })
@SpecAssertion(section = "8.3", id = "unknown")
public void testContextIsActiveWhenInvokingProducerMethod()
{
- assert false;
+ deployBeans(SpiderProducer.class);
+ Bean<Tarantula> tarantulaBean = manager.resolveByType(Tarantula.class).iterator().next();
+ Tarantula tarantula = tarantulaBean.create(new MyCreationalContext<Tarantula>());
+ assert tarantula != null;
+ assert SpiderProducer.isDependentContextActive();
}
/**
@@ -218,7 +255,6 @@
public void testContextIsActiveWhenInvokingProducerField()
{
assert false;
- // assert manager.getContext(Dependent.class).isActive();
}
/**
@@ -226,11 +262,17 @@
* container to receive a producer method, producer field, disposal method or
* observer method invocation, or
*/
- @Test(groups = { "stub", "contexts", "disposalMethod" })
+ @Test(groups = { "broken", "contexts", "disposalMethod" })
@SpecAssertion(section = "8.3", id = "unknown")
public void testContextIsActiveWhenInvokingDisposalMethod()
{
- assert false;
+ deployBeans(SpiderProducer.class);
+ Bean<Tarantula> tarantulaBean = manager.resolveByType(Tarantula.class).iterator().next();
+ Tarantula tarantula = tarantulaBean.create(new MyCreationalContext<Tarantula>());
+ assert tarantula != null;
+ SpiderProducer.setDependentContextActive(false);
+ tarantulaBean.destroy(tarantula);
+ assert SpiderProducer.isDependentContextActive();
}
/**
@@ -238,11 +280,13 @@
* container to receive a producer method, producer field, disposal method or
* observer method invocation, or
*/
- @Test(groups = { "stub", "contexts", "observerMethod" })
+ @Test(groups = { "contexts", "observerMethod" })
@SpecAssertion(section = "8.3", id = "unknown")
public void testContextIsActiveWhenInvokingObserverMethod()
{
- assert false;
+ deployBeans(HorseStable.class);
+ manager.fireEvent(new HorseInStableEvent());
+ assert HorseStable.isDependentContextActive();
}
/**
@@ -258,26 +302,25 @@
/**
* while an observer method is invoked, or
*/
- @Test(groups = { "stub", "contexts", "el" })
+ @Test(groups = { "contexts", "observerMethod" })
@SpecAssertion(section = "8.3", id = "unknown")
public void testContextIsActiveWhenInvokingObserver()
{
- assert false;
+ deployBeans(ApplicationHorseStable.class);
+ manager.fireEvent(new HorseInStableEvent());
+ assert HorseStable.isDependentContextActive();
}
/**
* when the container is creating or destroying a contextual instance of a
* bean or injecting its dependencies, or
*/
- @Test(groups = { "contexts", "beanLifecycle" })
+ @Test(groups = { "stub", "contexts", "beanLifecycle" })
@SpecAssertion(section = "8.3", id = "unknown")
public void testContextIsActiveDuringBeanCreation()
{
- // Slightly roundabout, but I can't see a better way to test atm
- deployBeans(FoxRun.class, Fox.class);
- Bean<FoxRun> foxRunBean = manager.resolveByType(FoxRun.class).iterator().next();
- FoxRun foxRun = foxRunBean.create(new MyCreationalContext<FoxRun>());
- assert foxRun.fox != null;
+ //TODO Previous test was not testing that context was active precisely
+ assert false;
}
/**
@@ -306,65 +349,6 @@
}
/**
- * when the container is injecting dependencies of an EJB or servlet or when
- * a @PostConstruct or @PreDestroy callback is invoked by the EJB container.
- */
- @Test(groups = { "contexts", "injection", "stub", "servlet" })
- @SpecAssertion(section = "8.3", id = "unknown")
- public void testContextIsActiveDuringServletDependencyInjection()
- {
- assert false;
- }
-
- /**
- * when the container is injecting dependencies of an EJB or servlet or when
- * a @PostConstruct or @PreDestroy callback is invoked by the EJB container.
- */
- @Test(groups = { "contexts", "postconstruct", "stub", "ejb3" })
- @SpecAssertion(section = "8.3", id = "unknown")
- public void testContextIsActiveDuringEJBPostConstruct()
- {
- assert false;
- }
-
- /**
- * when the container is injecting dependencies of an EJB or servlet or when
- * a @PostConstruct or @PreDestroy callback is invoked by the EJB container.
- */
- @Test(groups = { "contexts", "predestroy", "stub", "ejb3" })
- @SpecAssertion(section = "8.3", id = "unknown")
- public void testContextIsActiveDuringEJBPreDestroy()
- {
- assert false;
- }
-
- /**
- * A bean, EJB or servlet may obtain an instance of a bean with scope @Dependent
- * via dependency injection or by calling Manager.getInstance(),
- * Manager.getInstanceByType() or Instance.get() when the @Dependent scope is
- * active.
- */
- @Test(groups = { "stub", "contexts", "ejb3", "initializerMethod" })
- @SpecAssertion(section = "8.3.1", id = "unknown")
- public void testEjbBeanMayCreateInstanceWheneverScopeActive()
- {
- assert false;
- }
-
- /**
- * A bean, EJB or servlet may obtain an instance of a bean with scope @Dependent
- * via dependency injection or by calling Manager.getInstance(),
- * Manager.getInstanceByType() or Instance.get() when the @Dependent scope is
- * active.
- */
- @Test(groups = { "stub", "contexts", "servlet", "initializerMethod" })
- @SpecAssertion(section = "8.3.1", id = "unknown")
- public void testServletBeanMayCreateInstanceWheneverScopeIsActive()
- {
- assert false;
- }
-
- /**
* destroy all dependent objects of a contextual bean instance when the
* instance is destroyed,
*/
Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/context/dependent/HorseInStableEvent.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/context/dependent/HorseInStableEvent.java (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/context/dependent/HorseInStableEvent.java 2009-02-04 21:32:20 UTC (rev 1416)
@@ -0,0 +1,6 @@
+package org.jboss.webbeans.tck.unit.context.dependent;
+
+class HorseInStableEvent
+{
+
+}
Property changes on: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/context/dependent/HorseInStableEvent.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/context/dependent/HorseStable.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/context/dependent/HorseStable.java (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/context/dependent/HorseStable.java 2009-02-04 21:32:20 UTC (rev 1416)
@@ -0,0 +1,39 @@
+package org.jboss.webbeans.tck.unit.context.dependent;
+
+import javax.context.Dependent;
+import javax.event.Observes;
+import javax.inject.Current;
+import javax.inject.manager.Manager;
+
+@Dependent
+class HorseStable
+{
+ @Current
+ private Manager manager;
+ private static boolean dependentContextActive = false;
+ private static HorseStable instanceThatObservedEvent = null;
+
+ public void horseEntered(@Observes HorseInStableEvent horseEvent)
+ {
+ if (manager.getContext(Dependent.class).isActive())
+ {
+ dependentContextActive = true;
+ }
+ instanceThatObservedEvent = this;
+ }
+
+ public static boolean isDependentContextActive()
+ {
+ return HorseStable.dependentContextActive;
+ }
+
+ public static void setDependentContextActive(boolean dependentContextActive)
+ {
+ HorseStable.dependentContextActive = dependentContextActive;
+ }
+
+ public static HorseStable getInstanceThatObservedEvent()
+ {
+ return instanceThatObservedEvent;
+ }
+}
Property changes on: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/context/dependent/HorseStable.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/context/dependent/SpiderProducer.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/context/dependent/SpiderProducer.java 2009-02-04 19:34:41 UTC (rev 1415)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/context/dependent/SpiderProducer.java 2009-02-04 21:32:20 UTC (rev 1416)
@@ -1,17 +1,50 @@
package org.jboss.webbeans.tck.unit.context.dependent;
+import javax.context.Dependent;
+import javax.inject.Current;
import javax.inject.Disposes;
import javax.inject.Produces;
+import javax.inject.manager.Manager;
class SpiderProducer
{
+ @Current
+ private Manager manager;
+
+ private static boolean dependentContextActive = false;
+
+ private static SpiderProducer instanceUsedForDisposal = null;
+
@Produces public Tarantula produceTarantula()
{
+ if (manager.getContext(Dependent.class).isActive())
+ {
+ dependentContextActive = true;
+ }
return new Tarantula();
}
public void disposeTarantula(@Disposes Tarantula tarantula)
{
-
+ if (manager.getContext(Dependent.class).isActive())
+ {
+ dependentContextActive = true;
+ }
+ instanceUsedForDisposal = this;
}
+
+ public static boolean isDependentContextActive()
+ {
+ return dependentContextActive;
+ }
+
+ public static void setDependentContextActive(boolean dependentContextActive)
+ {
+ SpiderProducer.dependentContextActive = dependentContextActive;
+ }
+
+ public static SpiderProducer getInstanceUsedForDisposal()
+ {
+ return instanceUsedForDisposal;
+ }
}
17 years, 2 months
[webbeans-commits] Webbeans SVN: r1415 - in tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl: packaging and 2 other directories.
by webbeans-commits@lists.jboss.org
Author: pete.muir(a)jboss.org
Date: 2009-02-04 14:34:41 -0500 (Wed, 04 Feb 2009)
New Revision: 1415
Added:
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/InContainerTestRunner.java
Modified:
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/Artifact.java
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/Classes.java
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/EjbArtifact.java
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/IntegrationTest.java
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/Packaging.java
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/Resource.java
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/Resources.java
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/jsr299/BeansXml.java
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/war/WebXml.java
Log:
javadoc
Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/InContainerTestRunner.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/InContainerTestRunner.java (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/InContainerTestRunner.java 2009-02-04 19:34:41 UTC (rev 1415)
@@ -0,0 +1,100 @@
+package org.jboss.webbeans.tck.impl;
+
+import static org.jboss.webbeans.tck.impl.WebBeansTCKImpl.configuration;
+import static org.jboss.webbeans.tck.impl.util.Reflections.loadResources;
+
+import java.io.File;
+import java.io.IOException;
+import java.net.URL;
+import java.net.URLDecoder;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.apache.log4j.Logger;
+
+public class InContainerTestRunner
+{
+
+ private static class URLScanner
+ {
+ private static final Logger log = Logger.getLogger(URLScanner.class);
+
+ private final Package pkg;
+
+ private final Set<String> classes = new HashSet<String>();
+
+ public URLScanner(Package pkg)
+ {
+ this.pkg = pkg;
+ }
+
+ private void scanPackage()
+ {
+ try
+ {
+ Set<String> paths = new HashSet<String>();
+ String packageName = pkg.getName().replace(".", "/");
+ for (URL url : loadResources(packageName))
+ {
+ String urlPath = url.getFile();
+ urlPath = URLDecoder.decode(urlPath, "UTF-8");
+ if ( urlPath.startsWith("file:") )
+ {
+ urlPath = urlPath.substring(5);
+ }
+ if ( urlPath.indexOf('!')>0 )
+ {
+ urlPath = urlPath.substring(0, urlPath.indexOf('!'));
+ }
+ paths.add(urlPath);
+ }
+ handle(paths);
+ }
+ catch (IOException ioe)
+ {
+ log.warn("could not read: " + pkg.getName(), ioe);
+ }
+ }
+
+ private void handle(Set<String> paths)
+ {
+ for ( String urlPath: paths )
+ {
+ log.trace("scanning: " + urlPath);
+ File file = new File(urlPath);
+ if ( file.isDirectory() )
+ {
+ for ( File child: file.listFiles() )
+ {
+ if ( !child.isDirectory() && child.getName().endsWith(".class"))
+ {
+ classes.add(pkg.getName() + "." + child.getName().substring(0, child.getName().lastIndexOf(".class")));
+ }
+ }
+ }
+ }
+ }
+
+ public Set<String> getClassNames()
+ {
+ scanPackage();
+ return classes;
+ }
+
+ }
+
+ public InContainerTestRunner()
+ {
+ // TODO Auto-generated constructor stub
+ }
+
+ public void run()
+ {
+
+ if (configuration().getTestSuite().isStandalone())
+ {
+
+ }
+ }
+
+}
Property changes on: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/InContainerTestRunner.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/Artifact.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/Artifact.java 2009-02-04 19:20:01 UTC (rev 1414)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/Artifact.java 2009-02-04 19:34:41 UTC (rev 1415)
@@ -18,6 +18,10 @@
* classes and /META-INF/beans.xml file).
*
* @see EjbArtifact
+ * @see Classes
+ * @see IntegrationTest
+ * @see Packaging
+ * @see Resources
*
* @author Pete Muir
*
Modified: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/Classes.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/Classes.java 2009-02-04 19:20:01 UTC (rev 1414)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/Classes.java 2009-02-04 19:34:41 UTC (rev 1415)
@@ -10,6 +10,10 @@
/**
* Add classes to the deployed artifact
*
+ * @see Artifact
+ * @see EjbArtifact
+ * @see Resources
+ *
* @author Pete Muir
*
*/
Modified: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/EjbArtifact.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/EjbArtifact.java 2009-02-04 19:20:01 UTC (rev 1414)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/EjbArtifact.java 2009-02-04 19:34:41 UTC (rev 1415)
@@ -19,6 +19,10 @@
* @author Pete Muir
*
* @see Artifact
+ * @see Classes
+ * @see IntegrationTest
+ * @see Packaging
+ * @see Resources
*
*/
@Documented
Modified: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/IntegrationTest.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/IntegrationTest.java 2009-02-04 19:20:01 UTC (rev 1414)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/IntegrationTest.java 2009-02-04 19:34:41 UTC (rev 1415)
@@ -10,6 +10,10 @@
* Mark this test as an integration test, always requiring running in a
* container.
*
+ * @see Artifact
+ * @see EjbArtifact
+ * @see IntegrationTest
+ *
* @author Pete Muir
*
*/
Modified: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/Packaging.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/Packaging.java 2009-02-04 19:20:01 UTC (rev 1414)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/Packaging.java 2009-02-04 19:34:41 UTC (rev 1415)
@@ -11,6 +11,10 @@
* Mark this test as requiring specific packaging when deployed to a container
* for intgration testing.
*
+ * @see IntegrationTest
+ * @see Artifact
+ * @see EjbArtifact
+ *
* @author Pete Muir
*
*/
Modified: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/Resource.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/Resource.java 2009-02-04 19:20:01 UTC (rev 1414)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/Resource.java 2009-02-04 19:34:41 UTC (rev 1415)
@@ -7,10 +7,15 @@
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
+import org.jboss.webbeans.tck.impl.packaging.jsr299.BeansXml;
+import org.jboss.webbeans.tck.impl.packaging.war.WebXml;
+
/**
* Specify an additional resource to be added to the artifact.
*
* @see Resources
+ * @see WebXml
+ * @see BeansXml
*
* @author Pete Muir
*
Modified: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/Resources.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/Resources.java 2009-02-04 19:20:01 UTC (rev 1414)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/Resources.java 2009-02-04 19:34:41 UTC (rev 1415)
@@ -10,6 +10,9 @@
* Specify additional resources for an artifact
*
* @see Resource
+ * @see Classes
+ * @see Artifact
+ * @see EjbArtifact
*
* @author Pete Muir
*
Modified: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/jsr299/BeansXml.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/jsr299/BeansXml.java 2009-02-04 19:20:01 UTC (rev 1414)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/jsr299/BeansXml.java 2009-02-04 19:34:41 UTC (rev 1415)
@@ -3,14 +3,33 @@
import static java.lang.annotation.ElementType.TYPE;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
+import org.jboss.webbeans.tck.impl.packaging.Resource;
+import org.jboss.webbeans.tck.impl.packaging.war.WebXml;
+
+/**
+ * Override the default (empty) META-INF/beans.xml
+ *
+ * @see Resource
+ * @see WebXml
+ *
+ * @author Pete Muir
+ *
+ */
+@Documented
@Retention(RUNTIME)
@Target(TYPE)
public @interface BeansXml
{
+ /**
+ * Location of the overriding file, relative to the current location or the
+ * root this classpath
+ *
+ */
String value();
}
Modified: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/war/WebXml.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/war/WebXml.java 2009-02-04 19:20:01 UTC (rev 1414)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/war/WebXml.java 2009-02-04 19:34:41 UTC (rev 1415)
@@ -3,14 +3,32 @@
import static java.lang.annotation.ElementType.TYPE;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
+import org.jboss.webbeans.tck.impl.packaging.Resource;
+import org.jboss.webbeans.tck.impl.packaging.jsr299.BeansXml;
+
+/**
+ * Override the default WEB-INF/web.xml
+ *
+ * @see Resource
+ * @see BeansXml
+ * @author Pete Muir
+ *
+ */
+@Documented
@Retention(RUNTIME)
@Target(TYPE)
public @interface WebXml
{
+ /**
+ * Location of the overriding file, relative to the current location or the
+ * root this classpath
+ *
+ */
String value();
}
17 years, 2 months
[webbeans-commits] Webbeans SVN: r1414 - in tck/trunk: impl/src/main/java/org/jboss/webbeans/tck/impl/packaging and 1 other directory.
by webbeans-commits@lists.jboss.org
Author: pete.muir(a)jboss.org
Date: 2009-02-04 14:20:01 -0500 (Wed, 04 Feb 2009)
New Revision: 1414
Modified:
tck/trunk/api/src/main/java/org/jboss/webbeans/tck/api/TestSuite.java
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/Artifact.java
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/Classes.java
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/EjbArtifact.java
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/IntegrationTest.java
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/Packaging.java
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/Resource.java
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/Resources.java
Log:
javadoc
Modified: tck/trunk/api/src/main/java/org/jboss/webbeans/tck/api/TestSuite.java
===================================================================
--- tck/trunk/api/src/main/java/org/jboss/webbeans/tck/api/TestSuite.java 2009-02-04 18:58:04 UTC (rev 1413)
+++ tck/trunk/api/src/main/java/org/jboss/webbeans/tck/api/TestSuite.java 2009-02-04 19:20:01 UTC (rev 1414)
@@ -6,6 +6,7 @@
public static final String PROPERTY_NAME = TestSuite.class.getName();
private String outputDirectory;
+ private boolean standalone;
public TestSuite(String outputDirectory)
{
@@ -18,4 +19,14 @@
return outputDirectory;
}
+ public boolean isStandalone()
+ {
+ return standalone;
+ }
+
+ public void setStandalone(boolean standalone)
+ {
+ this.standalone = standalone;
+ }
+
}
Modified: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/Artifact.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/Artifact.java 2009-02-04 18:58:04 UTC (rev 1413)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/Artifact.java 2009-02-04 19:20:01 UTC (rev 1414)
@@ -3,9 +3,26 @@
import static java.lang.annotation.ElementType.TYPE;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
+/**
+ * Mark this class as requiring an JSR299 artifact to be deployed for the
+ * container. By default all classes in the current package, as well as support
+ * classes, will be deployed. The resultant artifact may not support session
+ * beans.
+ *
+ * This test may be a unit test (in which case, if the suite is run in
+ * standalone mode, the artifact itself won't be deployed, just the contained
+ * classes and /META-INF/beans.xml file).
+ *
+ * @see EjbArtifact
+ *
+ * @author Pete Muir
+ *
+ */
+@Documented
@Retention(RUNTIME)
@Target(TYPE)
public @interface Artifact
Modified: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/Classes.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/Classes.java 2009-02-04 18:58:04 UTC (rev 1413)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/Classes.java 2009-02-04 19:20:01 UTC (rev 1414)
@@ -3,9 +3,17 @@
import static java.lang.annotation.ElementType.TYPE;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
+/**
+ * Add classes to the deployed artifact
+ *
+ * @author Pete Muir
+ *
+ */
+@Documented
@Retention(RUNTIME)
@Target(TYPE)
public @interface Classes
Modified: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/EjbArtifact.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/EjbArtifact.java 2009-02-04 18:58:04 UTC (rev 1413)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/EjbArtifact.java 2009-02-04 19:20:01 UTC (rev 1414)
@@ -3,9 +3,25 @@
import static java.lang.annotation.ElementType.TYPE;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
+/**
+ * Mark this class as requiring an JSR299 artifact to be deployed to the
+ * container. By default all classes in the current package, as well as support
+ * classes, will be deployed. The resultant artifact will support session beans.
+ *
+ * This test may be a unit test (in which case, if the suite is run in
+ * standalone mode, the artifact itself won't be deployed, just the contained
+ * classes and /META-INF/beans.xml file).
+ *
+ * @author Pete Muir
+ *
+ * @see Artifact
+ *
+ */
+@Documented
@Retention(RUNTIME)
@Target(TYPE)
public @interface EjbArtifact
Modified: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/IntegrationTest.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/IntegrationTest.java 2009-02-04 18:58:04 UTC (rev 1413)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/IntegrationTest.java 2009-02-04 19:20:01 UTC (rev 1414)
@@ -6,6 +6,13 @@
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
+/**
+ * Mark this test as an integration test, always requiring running in a
+ * container.
+ *
+ * @author Pete Muir
+ *
+ */
@Retention(RUNTIME)
@Target(TYPE)
public @interface IntegrationTest
Modified: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/Packaging.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/Packaging.java 2009-02-04 18:58:04 UTC (rev 1413)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/Packaging.java 2009-02-04 19:20:01 UTC (rev 1414)
@@ -3,9 +3,18 @@
import static java.lang.annotation.ElementType.TYPE;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
+/**
+ * Mark this test as requiring specific packaging when deployed to a container
+ * for intgration testing.
+ *
+ * @author Pete Muir
+ *
+ */
+@Documented
@Retention(RUNTIME)
@Target(TYPE)
public @interface Packaging
Modified: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/Resource.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/Resource.java 2009-02-04 18:58:04 UTC (rev 1413)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/Resource.java 2009-02-04 19:20:01 UTC (rev 1414)
@@ -3,16 +3,35 @@
import static java.lang.annotation.ElementType.TYPE;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
+/**
+ * Specify an additional resource to be added to the artifact.
+ *
+ * @see Resources
+ *
+ * @author Pete Muir
+ *
+ */
+@Documented
@Retention(RUNTIME)
@Target(TYPE)
public @interface Resource
{
+ /**
+ * Location, relative to the current package, or to the current archive
+ * to find the resource file
+ *
+ */
String source();
+ /**
+ * Destination for the resource file within the generated artifact
+ *
+ */
String destination();
}
Modified: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/Resources.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/Resources.java 2009-02-04 18:58:04 UTC (rev 1413)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/Resources.java 2009-02-04 19:20:01 UTC (rev 1414)
@@ -6,6 +6,14 @@
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
+/**
+ * Specify additional resources for an artifact
+ *
+ * @see Resource
+ *
+ * @author Pete Muir
+ *
+ */
@Retention(RUNTIME)
@Target(TYPE)
public @interface Resources
17 years, 2 months
[webbeans-commits] Webbeans SVN: r1413 - in tck/trunk/impl/src: test/java/org/jboss/webbeans/tck/impl/test/packaging/declarativeArtifact/war and 1 other directory.
by webbeans-commits@lists.jboss.org
Author: pete.muir(a)jboss.org
Date: 2009-02-04 13:58:04 -0500 (Wed, 04 Feb 2009)
New Revision: 1413
Modified:
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/DeclarativeArtifactProcessor.java
tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/declarativeArtifact/war/ArtifactTest.java
Log:
Create the correct artifact depending on test type
Modified: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/DeclarativeArtifactProcessor.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/DeclarativeArtifactProcessor.java 2009-02-04 18:46:21 UTC (rev 1412)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/DeclarativeArtifactProcessor.java 2009-02-04 18:58:04 UTC (rev 1413)
@@ -117,18 +117,32 @@
public TCKArtifactDescriptor getArtifact()
{
+ return getArtifact(true);
+ }
+
+ public TCKArtifactDescriptor getArtifact(boolean standalone)
+ {
final TCKArtifactDescriptor artifact;
- switch (packagingType)
+ if (packagingType.equals(WAR))
{
- case WAR:
artifact = new WarArtifactDescriptor(beansXml, webXml);
- break;
- case EAR:
- throw new UnsupportedOperationException();
- default:
- artifact = new TCKArtifactDescriptor(beansXml);
- break;
+ }
+ else if (packagingType.equals(EAR))
+ {
+ throw new UnsupportedOperationException();
}
+ else if (standalone)
+ {
+ artifact = new TCKArtifactDescriptor(beansXml);
+ }
+ else if (ejbs)
+ {
+ throw new UnsupportedOperationException();
+ }
+ else
+ {
+ artifact = new WarArtifactDescriptor(beansXml, null);
+ }
if (addDeclaringPackage)
{
artifact.getPackages().add(declaringClass.getPackage());
Modified: tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/declarativeArtifact/war/ArtifactTest.java
===================================================================
--- tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/declarativeArtifact/war/ArtifactTest.java 2009-02-04 18:46:21 UTC (rev 1412)
+++ tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/declarativeArtifact/war/ArtifactTest.java 2009-02-04 18:58:04 UTC (rev 1413)
@@ -20,7 +20,7 @@
File webInf = root.listFiles(WEB_INF_FILTER)[0];
assert webInf.getName().equals("WEB-INF");
assert webInf.isDirectory();
- assert webInf.listFiles().length == 1;
+ assert webInf.listFiles().length == 2;
assert webInf.listFiles(WEB_XML_FILTER).length == 1;
File webXml = webInf.listFiles(WEB_XML_FILTER)[0];
assert webXml.isFile();
@@ -38,7 +38,7 @@
File webInf = root.listFiles(WEB_INF_FILTER)[0];
assert webInf.getName().equals("WEB-INF");
assert webInf.isDirectory();
- assert webInf.listFiles().length == 1;
+ assert webInf.listFiles().length == 2;
assert webInf.listFiles(WEB_XML_FILTER).length == 1;
File webXml = webInf.listFiles(WEB_XML_FILTER)[0];
assert webXml.isFile();
17 years, 2 months
[webbeans-commits] Webbeans SVN: r1412 - in tck/trunk/impl/src: main/java/org/jboss/webbeans/tck/impl/packaging/war and 2 other directories.
by webbeans-commits@lists.jboss.org
Author: pete.muir(a)jboss.org
Date: 2009-02-04 13:46:21 -0500 (Wed, 04 Feb 2009)
New Revision: 1412
Added:
tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/war/
tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/war/ArtifactTest.java
tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/war/Cow.java
Modified:
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/ArtifactDescriptor.java
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/war/WarArtifactDescriptor.java
tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/AbstractArtifactTest.java
tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/ArtifactTest.java
Log:
Put war classes into WEB-INF/classes
Modified: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/ArtifactDescriptor.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/ArtifactDescriptor.java 2009-02-04 18:28:42 UTC (rev 1411)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/ArtifactDescriptor.java 2009-02-04 18:46:21 UTC (rev 1412)
@@ -176,14 +176,14 @@
root.deleteOnExit();
for (Class<?> clazz : getClasses())
{
- copyClass(clazz, root);
+ copyClass(clazz, getClassesRoot(root));
}
for (Package pkg : getPackages())
{
URLPackageScanner packageScanner = new URLPackageScanner(pkg);
for (String className : packageScanner.getClassNames())
{
- copyClass(className, root);
+ copyClass(className, getClassesRoot(root));
}
}
for (ResourceDescriptor resourceDescriptor : getResources())
@@ -266,4 +266,9 @@
return packages;
}
+ public File getClassesRoot(File archiveRoot)
+ {
+ return archiveRoot;
+ }
+
}
Modified: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/war/WarArtifactDescriptor.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/war/WarArtifactDescriptor.java 2009-02-04 18:28:42 UTC (rev 1411)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/war/WarArtifactDescriptor.java 2009-02-04 18:46:21 UTC (rev 1412)
@@ -2,6 +2,8 @@
import static org.jboss.webbeans.tck.impl.util.Strings.isEmpty;
+import java.io.File;
+
import org.jboss.webbeans.tck.impl.packaging.ResourceDescriptor;
import org.jboss.webbeans.tck.impl.packaging.jsr299.TCKArtifactDescriptor;
@@ -11,6 +13,8 @@
public static final String WEB_XML_DESTINATION = "WEB-INF/web.xml";
public static final String STANDARD_WEB_XML_FILE_NAME = "org/jboss/webbeans/tck/impl/packaging/war/default/web.xml";
+ private File webInfClasses;
+
public WarArtifactDescriptor(String beansXmlSourceFileName, String webXmlSourceFileName)
{
super(beansXmlSourceFileName);
@@ -21,4 +25,15 @@
getResources().add(new ResourceDescriptor(WEB_XML_DESTINATION, webXmlSourceFileName));
}
+ @Override
+ public File getClassesRoot(File archiveRoot)
+ {
+ if (webInfClasses == null)
+ {
+ webInfClasses = new File(archiveRoot, "WEB-INF/classes");
+ webInfClasses.mkdirs();
+ }
+ return webInfClasses;
+ }
+
}
Modified: tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/AbstractArtifactTest.java
===================================================================
--- tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/AbstractArtifactTest.java 2009-02-04 18:28:42 UTC (rev 1411)
+++ tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/AbstractArtifactTest.java 2009-02-04 18:46:21 UTC (rev 1412)
@@ -20,6 +20,14 @@
}
};
+ protected static final FilenameFilter CLASSES_FILTER = new FilenameFilter()
+ {
+ public boolean accept(File dir, String name)
+ {
+ return name.equals("classes");
+ }
+ };
+
protected static final FilenameFilter META_INF_FILTER = new FilenameFilter()
{
public boolean accept(File dir, String name)
Modified: tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/ArtifactTest.java
===================================================================
--- tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/ArtifactTest.java 2009-02-04 18:28:42 UTC (rev 1411)
+++ tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/ArtifactTest.java 2009-02-04 18:46:21 UTC (rev 1412)
@@ -1,16 +1,10 @@
package org.jboss.webbeans.tck.impl.test.packaging;
import java.io.File;
-import java.io.FilenameFilter;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.jar.JarEntry;
-import java.util.jar.JarInputStream;
import org.jboss.webbeans.tck.AbstractTest;
import org.jboss.webbeans.tck.impl.packaging.ArtifactDescriptor;
import org.jboss.webbeans.tck.impl.packaging.jsr299.TCKArtifactDescriptor;
-import org.jboss.webbeans.tck.impl.packaging.war.WarArtifactDescriptor;
import org.jboss.webbeans.tck.impl.util.Reflections;
import org.jboss.webbeans.tck.literals.NewLiteral;
import org.testng.annotations.Test;
@@ -19,48 +13,6 @@
{
@Test
- public void testDefaultWar() throws Exception
- {
- WarArtifactDescriptor war = new WarArtifactDescriptor(null, null);
- war.getClasses().add(Cow.class);
- File root = war.create();
- assert root.listFiles().length == 3;
- assert root.isDirectory();
- assert root.listFiles(WEB_INF_FILTER).length == 1;
- File metaInf = root.listFiles(META_INF_FILTER)[0];
- assert metaInf.getName().equals("META-INF");
- assert metaInf.isDirectory();
- assert metaInf.listFiles().length == 1;
- assert metaInf.listFiles(BEANS_XML_FILTER).length == 1;
- File beansXml = metaInf.listFiles(BEANS_XML_FILTER)[0];
- assert beansXml.isFile();
- assert beansXml.getName().equals("beans.xml");
- assert beansXml.length() == 0;
- File webInf = root.listFiles(WEB_INF_FILTER)[0];
- assert webInf.getName().equals("WEB-INF");
- assert webInf.isDirectory();
- assert webInf.listFiles().length == 1;
- assert webInf.listFiles(WEB_XML_FILTER).length == 1;
- File webXml = webInf.listFiles(WEB_XML_FILTER)[0];
- assert webXml.isFile();
- assert webXml.getName().equals("web.xml");
- assert webXml.length() != 0;
- File currentPackage = getCurrentPackageAsFile(root);
- File[] cowClasses = currentPackage.listFiles(new FilenameFilter()
- {
-
- public boolean accept(File dir, String name)
- {
- return name.equals("Cow.class");
- }
-
- });
- assert cowClasses.length == 1;
- assert cowClasses[0].getName().equals("Cow.class");
- assert cowClasses[0].isFile();
- }
-
- @Test
public void testDefaultTCKArtifact() throws Exception
{
ArtifactDescriptor artifactDescriptor = new TCKArtifactDescriptor(null);
@@ -70,23 +22,5 @@
assert getPackageAsFile(AbstractTest.class.getPackage(), root).listFiles().length > 0;
}
- @Test
- public void testJarProduction() throws Exception
- {
- WarArtifactDescriptor war = new WarArtifactDescriptor(null, null);
- war.getClasses().add(Cow.class);
- JarInputStream is = war.asJar();
- JarEntry entry;
- List<String> fileNames = new ArrayList<String>();
- while ((entry = is.getNextJarEntry()) != null)
- {
- fileNames.add(entry.getName());
- }
- assert fileNames.contains("META-INF/beans.xml");
- assert fileNames.contains("WEB-INF/web.xml");
- assert fileNames.contains("org/jboss/webbeans/tck/impl/test/packaging/Cow.class");
- assert fileNames.contains("org/jboss/webbeans/tck/AbstractTest.class");
- assert fileNames.contains("org/jboss/webbeans/tck/impl/util/Reflections.class");
- }
}
Added: tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/war/ArtifactTest.java
===================================================================
--- tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/war/ArtifactTest.java (rev 0)
+++ tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/war/ArtifactTest.java 2009-02-04 18:46:21 UTC (rev 1412)
@@ -0,0 +1,87 @@
+package org.jboss.webbeans.tck.impl.test.packaging.war;
+
+import java.io.File;
+import java.io.FilenameFilter;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.jar.JarEntry;
+import java.util.jar.JarInputStream;
+
+import org.jboss.webbeans.tck.impl.packaging.war.WarArtifactDescriptor;
+import org.jboss.webbeans.tck.impl.test.packaging.AbstractArtifactTest;
+import org.testng.annotations.Test;
+
+public class ArtifactTest extends AbstractArtifactTest
+{
+ @Test
+ public void testDefaultWar() throws Exception
+ {
+ WarArtifactDescriptor war = new WarArtifactDescriptor(null, null);
+ war.getClasses().add(Cow.class);
+ File root = war.create();
+ assert root.listFiles().length == 2;
+ assert root.isDirectory();
+ assert root.listFiles(WEB_INF_FILTER).length == 1;
+ File metaInf = root.listFiles(META_INF_FILTER)[0];
+ assert metaInf.getName().equals("META-INF");
+ assert metaInf.isDirectory();
+ assert metaInf.listFiles().length == 1;
+ assert metaInf.listFiles(BEANS_XML_FILTER).length == 1;
+ File beansXml = metaInf.listFiles(BEANS_XML_FILTER)[0];
+ assert beansXml.isFile();
+ assert beansXml.getName().equals("beans.xml");
+ assert beansXml.length() == 0;
+ File webInf = root.listFiles(WEB_INF_FILTER)[0];
+ assert webInf.getName().equals("WEB-INF");
+ assert webInf.isDirectory();
+ assert webInf.listFiles().length == 2;
+ assert webInf.listFiles(WEB_XML_FILTER).length == 1;
+ File webXml = webInf.listFiles(WEB_XML_FILTER)[0];
+ assert webXml.isFile();
+ assert webXml.getName().equals("web.xml");
+ assert webXml.length() != 0;
+ File currentPackage = getCurrentPackageAsFile(root);
+ File[] cowClasses = currentPackage.listFiles(new FilenameFilter()
+ {
+
+ public boolean accept(File dir, String name)
+ {
+ return name.equals("Cow.class");
+ }
+
+ });
+ assert cowClasses.length == 1;
+ assert cowClasses[0].getName().equals("Cow.class");
+ assert cowClasses[0].isFile();
+ }
+
+
+ @Test
+ public void testJarProduction() throws Exception
+ {
+ WarArtifactDescriptor war = new WarArtifactDescriptor(null, null);
+ war.getClasses().add(Cow.class);
+ JarInputStream is = war.asJar();
+ JarEntry entry;
+ List<String> fileNames = new ArrayList<String>();
+ while ((entry = is.getNextJarEntry()) != null)
+ {
+ fileNames.add(entry.getName());
+ }
+ assert fileNames.contains("META-INF/beans.xml");
+ assert fileNames.contains("WEB-INF/web.xml");
+ assert fileNames.contains("WEB-INF/classes/org/jboss/webbeans/tck/impl/test/packaging/war/Cow.class");
+ assert fileNames.contains("WEB-INF/classes/org/jboss/webbeans/tck/AbstractTest.class");
+ assert fileNames.contains("WEB-INF/classes/org/jboss/webbeans/tck/impl/util/Reflections.class");
+ }
+
+ @Override
+ protected File getPackageAsFile(Package pkg, File root)
+ {
+ root = root.listFiles(WEB_INF_FILTER)[0];
+ root = root.listFiles(CLASSES_FILTER)[0];
+ return super.getPackageAsFile(pkg, root);
+ }
+
+}
+
Property changes on: tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/war/ArtifactTest.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/war/Cow.java
===================================================================
--- tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/war/Cow.java (rev 0)
+++ tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/war/Cow.java 2009-02-04 18:46:21 UTC (rev 1412)
@@ -0,0 +1,6 @@
+package org.jboss.webbeans.tck.impl.test.packaging.war;
+
+class Cow
+{
+
+}
Property changes on: tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/war/Cow.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
17 years, 2 months