Skip to content

Commit

Permalink
WELD-1581 Add EnhancedListenerTest
Browse files Browse the repository at this point in the history
- workaround Tomcat embedded and Maven Surefire classloading issue
- upgrade Tomcat 7.x version to 7.0.50
  • Loading branch information
mkouba authored and jharting committed Jan 29, 2014
1 parent 117db37 commit 1fd737a
Show file tree
Hide file tree
Showing 6 changed files with 173 additions and 2 deletions.
2 changes: 1 addition & 1 deletion environments/servlet/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
<jsf.version>2.1</jsf.version>
<jsf-impl.version>2.1.22</jsf-impl.version>
<tomcat.version>6.0.36</tomcat.version>
<tomcat7.version>7.0.47</tomcat7.version>
<tomcat7.version>7.0.50</tomcat7.version>
<jetty6.version>6.1.26</jetty6.version>
<jetty.version>8.1.14.v20131031</jetty.version>
<uel.glassfish.version>2.2</uel.glassfish.version>
Expand Down
2 changes: 1 addition & 1 deletion environments/servlet/tests/base/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
<name>Weld Servlet Integration Tests (Base)</name>

<dependencies>

<dependency>
<groupId>org.jboss.spec.javax.interceptor</groupId>
<artifactId>jboss-interceptors-api_1.2_spec</artifactId>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
/*
* JBoss, Home of Professional Open Source
* Copyright 2014, Red Hat, Inc., 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.weld.environment.servlet.test.bootstrap.enhanced;

import static org.jboss.weld.environment.servlet.test.util.Deployments.baseDeployment;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;

import org.jboss.shrinkwrap.api.asset.Asset;
import org.jboss.shrinkwrap.api.asset.ByteArrayAsset;
import org.jboss.shrinkwrap.api.spec.WebArchive;
import org.jboss.weld.environment.servlet.test.util.Deployments;
import org.junit.Test;

/**
* Verify the <code>org.jboss.weld.environment.servlet.EnhancedListener</code> works correctly on its own, i.e. if the
* <code>org.jboss.weld.environment.servlet.Listener</code> is not configured in web.xml.
*
* Note that Jetty test suite is using both Listener and EnhancedListener for all the tests. However a workaround is required for Tomcat embedded due to Maven
* Surefire classloading issues. See also <a href="http://maven.apache.org/surefire/maven-surefire-plugin/examples/class-loading.html">Classloading and Forking
* in Maven Surefire</a>. Therefore this is the only test in Tomcat test suite for EnhancedListener.
*
* @author Martin Kouba
*/
public class EnhancedListenerTestBase {

public static final Asset WEB_XML = new ByteArrayAsset((Deployments.DEFAULT_WEB_XML_START + Deployments.DEFAULT_WEB_XML_SUFFIX).getBytes());

public static WebArchive deployment() {
return baseDeployment(WEB_XML).addPackage(EnhancedListenerTestBase.class.getPackage());
}

@Test
public void testAloneEnhancedListener(Ping ping) {
// Test whether bootstrap finished successfully
assertNotNull(ping);
assertEquals(Integer.valueOf(1), ping.getObservations());
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
/*
* JBoss, Home of Professional Open Source
* Copyright 2014, Red Hat, Inc., 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.weld.environment.servlet.test.bootstrap.enhanced;

import java.util.concurrent.atomic.AtomicInteger;

import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.context.Initialized;
import javax.enterprise.event.Observes;
import javax.servlet.ServletContext;

@ApplicationScoped
public class Ping {

private AtomicInteger observations = new AtomicInteger(0);

public void observesApplicationContext(@Observes @Initialized(ApplicationScoped.class) ServletContext servletContext) {
observations.incrementAndGet();
}

public Integer getObservations() {
return observations.get();
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
/*
* JBoss, Home of Professional Open Source
* Copyright 2014, Red Hat, Inc., 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.weld.environment.servlet.test.bootstrap.enhanced;

import static org.jboss.weld.environment.servlet.test.util.JettyDeployments.JETTY_ENV;

import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.shrinkwrap.api.spec.WebArchive;
import org.junit.runner.RunWith;

@RunWith(Arquillian.class)
public class EnhancedListenerTest extends EnhancedListenerTestBase {

@Deployment
public static WebArchive deployment() {
return EnhancedListenerTestBase.deployment().addAsWebInfResource(JETTY_ENV, "jetty-env.xml");
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
/*
* JBoss, Home of Professional Open Source
* Copyright 2014, Red Hat, Inc., 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.weld.environment.servlet.test.bootstrap.enhanced;

import static org.jboss.weld.environment.servlet.test.util.TomcatDeployments.CONTEXT_XML;

import javax.servlet.ServletContainerInitializer;

import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.asset.StringAsset;
import org.jboss.shrinkwrap.api.spec.JavaArchive;
import org.jboss.shrinkwrap.api.spec.WebArchive;
import org.jboss.weld.environment.servlet.EnhancedListener;
import org.junit.runner.RunWith;

@RunWith(Arquillian.class)
public class EnhancedListenerTest extends EnhancedListenerTestBase {

@Deployment
public static WebArchive deployment() {
WebArchive archive = EnhancedListenerTestBase.deployment().add(CONTEXT_XML, "META-INF/context.xml");
// WORKAROUND Tomcat embedded and Maven Surefire classloading issue
archive.addAsLibrary(ShrinkWrap.create(JavaArchive.class).addClass(EnhancedListener.class)
.addAsManifestResource(new StringAsset(EnhancedListener.class.getName()), "services/" + ServletContainerInitializer.class.getName()));
return archive;
}

}

0 comments on commit 1fd737a

Please sign in to comment.