Skip to content

Commit

Permalink
Merge branch 'master' of github.com:seam/examples
Browse files Browse the repository at this point in the history
  • Loading branch information
sbryzak committed Mar 25, 2011
2 parents d2e6eba + 3958ec6 commit 5383422
Show file tree
Hide file tree
Showing 11 changed files with 142 additions and 142 deletions.
1 change: 1 addition & 0 deletions .gitignore
Expand Up @@ -3,3 +3,4 @@ target
.project
.settings
*.sw?
transaction.log
53 changes: 38 additions & 15 deletions booking/pom.xml
Expand Up @@ -34,12 +34,13 @@
<webapp.directory>src/main/webapp</webapp.directory>
<jboss.home>${env.JBOSS_HOME}</jboss.home>
<jboss.domain>default</jboss.domain>
<arquillian.version>1.0.0.Alpha3</arquillian.version>
<arquillian.version>1.0.0.Alpha5</arquillian.version>
<glassfish.version>3.1</glassfish.version>
<jpamodelgen.version>1.1.1.Final</jpamodelgen.version>
<jboss-as-client.version>6.0.0.Final</jboss-as-client.version>
<jboss-javaee6-spec.version>1.0.0.Final</jboss-javaee6-spec.version>
<jboss-server-manager.version>1.0.3.GA</jboss-server-manager.version>
<jersey.version>1.5</jersey.version>
</properties>

<dependencies>
Expand Down Expand Up @@ -142,6 +143,12 @@
<version>${arquillian.version}</version>
<scope>test</scope>
</dependency>

<dependency>
<groupId>org.jboss.weld</groupId>
<artifactId>weld-core</artifactId>
<scope>test</scope>
</dependency>

<dependency>
<groupId>org.jboss.spec</groupId>
Expand Down Expand Up @@ -297,21 +304,23 @@
</profile>

<profile>
<id>jbossas-remote-6</id>
<id>itest-jbossas-remote</id>
<dependencies>
<dependency>
<groupId>org.jboss.arquillian.container</groupId>
<artifactId>arquillian-jbossas-remote-6</artifactId>
<version>${arquillian.version}</version>
<scope>test</scope>
</dependency>
<!--
<dependency>
<groupId>org.jboss.spec</groupId>
<artifactId>jboss-javaee-6.0</artifactId>
<version>${jboss-javaee6-spec.version}</version>
<type>pom</type>
<scope>provided</scope>
</dependency>
-->
<!-- need for org.jnp.interfaces.NamingContextFactory -->
<dependency>
<groupId>org.jboss.jbossas</groupId>
Expand All @@ -333,12 +342,14 @@
</build>
</profile>

<!-- Arquillian's Embedded GlassFish 3.1 adapter is not working correctly -->
<!--
<profile>
<id>glassfish-embedded-3</id>
<id>itest-glassfish-embedded</id>
<dependencies>
<dependency>
<groupId>org.jboss.arquillian.container</groupId>
<artifactId>arquillian-glassfish-embedded-3</artifactId>
<artifactId>arquillian-glassfish-embedded-3.1</artifactId>
<version>${arquillian.version}</version>
<scope>test</scope>
</dependency>
Expand All @@ -361,14 +372,11 @@
<plugins>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<!-- don't use version 2.5 as it creates seperate test suites per class -->
<version>2.4.3</version>
<configuration>
<systemProperties>
<!-- This optional property fixes an annoyance with Glassfish that puts derby.log in the project root -->
<property>
<name>derby.stream.error.file</name>
<!-- If you save the log in target it is less likely to get committed in your project -->
<value>target/derby.log</value>
</property>
</systemProperties>
Expand All @@ -377,25 +385,41 @@
</plugins>
</build>
</profile>
-->

<!--
<profile>
<id>glassfish-remote-3</id>
<id>itest-glassfish-remote</id>
<dependencies>
<dependency>
<groupId>org.jboss.arquillian.container</groupId>
<artifactId>arquillian-glassfish-remote-3</artifactId>
<artifactId>arquillian-glassfish-remote-3.1</artifactId>
<version>${arquillian.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.glassfish.extras</groupId>
<artifactId>glassfish-embedded-all</artifactId>
<version>${glassfish.version}</version>
<scope>provided</scope>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-bundle</artifactId>
<version>${jersey.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.sun.jersey.contribs</groupId>
<artifactId>jersey-multipart</artifactId>
<version>${jersey.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<excludes>
<exclude>org/jboss/seam/examples/booking/booking/BookingAgentTest.java</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
<testResources>
<testResource>
<directory>src/test/resources</directory>
Expand All @@ -406,7 +430,6 @@
</testResources>
</build>
</profile>
-->
</profiles>

<scm>
Expand Down
15 changes: 14 additions & 1 deletion booking/readme.md
Expand Up @@ -97,7 +97,7 @@ Create a database connection to the following database
* Username: APP
* Password: APP

## Installing Hibernate 3.5 (JPA 2) on GlassFish 3
### Installing Hibernate 3.5 (JPA 2) on GlassFish 3

We recommend that you switch from EclipseLink to Hibernate. If you want to
run the application on GlassFish 3.0.1, you'll need to use Hibernate to work
Expand All @@ -109,3 +109,16 @@ around several bugs in that version of EclipseLink.
* ./bin/updatetool (may have to run it twice if it's not already installed)
* GlassFish Server Open Source Edition > Available Add-ons > Hibernate JPA
* Install

## Running integration tests

The integration tests are based on Arquillian (http://arquillian.org)

With JBoss AS started, you can run the tests using the following command:

mvn test -Pitest-jbossas-remote

With GlassFish 3.1 started, you can run the tests using the following command:

mvn test -Pitest-glassfish-remote

Expand Up @@ -112,9 +112,5 @@ private void queryHotels(final SearchCriteria criteria) {
}
log.info(messageBuilder.get().text("Found {0} hotel(s) matching search term [ {1} ] (limit {2})")
.textParams(hotels.size(), criteria.getQuery(), criteria.getPageSize()).build().getText());
/*
* System.out.println(messageBuilder.get().text("Found {0} hotel(s) matching search term [ {1} ] (limit {2})")
* .textParams(hotels.size(), criteria.getQuery(), criteria.getPageSize()).build().getText());
*/
}
}
@@ -0,0 +1,19 @@
package org.jboss.seam.examples.booking.booking;

import javax.enterprise.inject.Produces;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

import org.jboss.seam.examples.booking.account.Authenticated;
import org.jboss.seam.examples.booking.model.User;

public class AuthenticatedUserProducer {
@PersistenceContext
EntityManager em;

@Produces
@Authenticated
public User getRegisteredUser() {
return em.find(User.class, "ike");
}
}
Expand Up @@ -16,13 +16,9 @@
*/
package org.jboss.seam.examples.booking.booking;

import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;

import javax.enterprise.inject.Instance;
import javax.enterprise.inject.Produces;
import javax.enterprise.inject.spi.BeanManager;
import javax.inject.Inject;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
Expand All @@ -31,39 +27,41 @@
import org.jboss.arquillian.api.Deployment;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.seam.examples.booking.account.Authenticated;
import org.jboss.seam.examples.booking.i18n.DefaultBundleKey;
import org.jboss.seam.examples.booking.log.BookingLog;
import org.jboss.seam.examples.booking.model.Booking;
import org.jboss.seam.examples.booking.model.CreditCardType;
import org.jboss.seam.examples.booking.model.Hotel;
import org.jboss.seam.examples.booking.model.User;
import org.jboss.seam.examples.booking.support.MavenArtifactResolver;
import org.jboss.seam.examples.booking.support.NoOpLogger;
import org.jboss.shrinkwrap.api.Archive;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.asset.StringAsset;
import org.jboss.shrinkwrap.api.asset.EmptyAsset;
import org.jboss.shrinkwrap.api.spec.WebArchive;
import org.jboss.weld.Container;
import org.jboss.weld.context.bound.BoundConversationContext;
import org.jboss.weld.context.bound.BoundRequest;
import org.jboss.weld.context.bound.MutableBoundRequest;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;

@RunWith(Arquillian.class)
public class BookingAgentTest {
@Deployment
public static Archive<?> createTestArchive() {
WebArchive war = ShrinkWrap
public static WebArchive createDeployment() {
return ShrinkWrap
.create(WebArchive.class, "test.war")
.addPackage(Hotel.class.getPackage())
.addClasses(BookingAgent.class, BookingAgent.class, Confirmed.class, Authenticated.class, NoOpLogger.class)
.addLibraries(MavenArtifactResolver.resolve("joda-time:joda-time:1.6"),
MavenArtifactResolver.resolve("org.jboss.seam.international:seam-international-api:3.0.0.Alpha1"),
MavenArtifactResolver.resolve("org.jboss.seam.international:seam-international:3.0.0.Alpha1"))
.addWebResource("test-persistence.xml", "classes/META-INF/persistence.xml")
.addWebResource(new StringAsset(""), "beans.xml");
return war;
.addClasses(BookingAgent.class, BookingAgent.class, Confirmed.class, Authenticated.class, DefaultBundleKey.class, AuthenticatedUserProducer.class)
.addPackage(BookingLog.class.getPackage())
.addAsLibraries(
MavenArtifactResolver.resolve("joda-time:joda-time:1.6"),
MavenArtifactResolver.resolve("org.jboss.seam.solder:seam-solder:3.0.0.CR4"),
MavenArtifactResolver.resolve("org.jboss.seam.international:seam-international:3.0.0.CR4"))
.addAsWebInfResource("test-persistence.xml", "classes/META-INF/persistence.xml")
.addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml");
}

@Inject
BeanManager beanManager;

@Inject
UserTransaction utx;

Expand Down Expand Up @@ -91,38 +89,31 @@ public void prepareSeedData() throws Exception {
public void testBookHotel() throws Exception {
prepareSeedData();

// we have to depend on the Weld API to setup the conversation scope
/*
* TODO uncomment here ConversationContext cc = new ConversationContext(); cc.setBeanStore(new HashMapBeanStore());
* cc.setActive(true); ((BeanManagerImpl) beanManager).addContext(cc);
*/

bookingAgent.selectHotel(1l);
bookingAgent.bookHotel();
Booking booking = bookingInstance.get();
booking.setCreditCardNumber("1111222233334444");
booking.setCreditCardExpiryMonth(1);
booking.setCreditCardExpiryYear(2012);
booking.setCreditCardType(CreditCardType.VISA);
booking.setBeds(1);
booking.setSmoking(false);
bookingAgent.confirm();

Assert.assertEquals(1, em.createQuery("select b from Booking b").getResultList().size());
}
BoundConversationContext ctx = null;
BoundRequest storage = new MutableBoundRequest(new HashMap<String, Object>(), new HashMap<String, Object>());
try {
ctx = Container.instance().deploymentManager().instance().select(BoundConversationContext.class).get();
ctx.associate(storage);
ctx.activate();

@Produces
@Authenticated
User getRegisteredUser() {
return em.find(User.class, "ike");
bookingAgent.selectHotel(1l);
bookingAgent.bookHotel();
Booking booking = bookingInstance.get();
booking.setCreditCardNumber("1111222233334444");
booking.setCreditCardExpiryMonth(1);
booking.setCreditCardExpiryYear(2012);
booking.setCreditCardType(CreditCardType.VISA);
booking.setBeds(1);
booking.setSmoking(false);
bookingAgent.confirm();

Assert.assertEquals(1, em.createQuery("select b from Booking b").getResultList().size());
}
finally {
if (ctx != null && ctx.isActive()) {
ctx.deactivate();
ctx.dissociate(storage);
}
}
}
/*
* TODO uncomment here public static class HashMapBeanStore extends AbstractMapBackedBeanStore implements Serializable {
*
* protected Map<String, ContextualInstance<? extends Object>> delegate;
*
* public HashMapBeanStore() { delegate = new HashMap<String, ContextualInstance<? extends Object>>(); }
*
* @Override protected Map<String, ContextualInstance<? extends Object>> delegate() { return delegate; } }
*/
}

0 comments on commit 5383422

Please sign in to comment.