[jboss-cvs] JBossAS SVN: r99132 - in projects/snowdrop/examples/trunk/sportsclub: sportsclub-ear and 9 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Thu Jan 7 18:20:20 EST 2010
Author: marius.bogoevici
Date: 2010-01-07 18:20:20 -0500 (Thu, 07 Jan 2010)
New Revision: 99132
Added:
projects/snowdrop/examples/trunk/sportsclub/sportsclub-invoicing-webmvc/src/main/java/org/jboss/snowdrop/samples/sportsclub/infrastructure/
projects/snowdrop/examples/trunk/sportsclub/sportsclub-invoicing-webmvc/src/main/java/org/jboss/snowdrop/samples/sportsclub/infrastructure/NoopTransactionManager.java
projects/snowdrop/examples/trunk/sportsclub/sportsclub-invoicing-webmvc/src/main/java/org/jboss/snowdrop/samples/sportsclub/service/
projects/snowdrop/examples/trunk/sportsclub/sportsclub-invoicing-webmvc/src/main/java/org/jboss/snowdrop/samples/sportsclub/service/payment/
projects/snowdrop/examples/trunk/sportsclub/sportsclub-invoicing-webmvc/src/main/java/org/jboss/snowdrop/samples/sportsclub/service/payment/PaymentProcessor.java
Modified:
projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/entity/Balance.java
projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/entity/Payment.java
projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/entity/PaymentNotification.java
projects/snowdrop/examples/trunk/sportsclub/sportsclub-ear/pom.xml
projects/snowdrop/examples/trunk/sportsclub/sportsclub-invoicing-ejb/src/main/java/org/jboss/spring/samples/sportsclub/invoicing/services/BillingService.java
projects/snowdrop/examples/trunk/sportsclub/sportsclub-invoicing-ejb/src/main/java/org/jboss/spring/samples/sportsclub/invoicing/services/BillingServiceImpl.java
projects/snowdrop/examples/trunk/sportsclub/sportsclub-invoicing-ejb/src/test/java/org/jboss/spring/samples/sportsclub/invoicing/services/TestBillingService.java
projects/snowdrop/examples/trunk/sportsclub/sportsclub-invoicing-webmvc/pom.xml
projects/snowdrop/examples/trunk/sportsclub/sportsclub-invoicing-webmvc/src/main/java/org/jboss/snowdrop/samples/sportsclub/springmvc/BasicController.java
projects/snowdrop/examples/trunk/sportsclub/sportsclub-invoicing-webmvc/src/main/webapp/WEB-INF/spring-business-context.xml
Log:
adding JMS/JCA PaymentProcessor
Modified: projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/entity/Balance.java
===================================================================
--- projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/entity/Balance.java 2010-01-07 22:25:44 UTC (rev 99131)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/entity/Balance.java 2010-01-07 23:20:20 UTC (rev 99132)
@@ -22,11 +22,11 @@
public void credit(BigDecimal amount)
{
- this.amount.subtract(amount);
+ this.amount = this.amount.subtract(amount);
}
public void debit(BigDecimal amount)
{
- this.amount.add(amount);
+ this.amount = this.amount.add(amount);
}
}
Modified: projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/entity/Payment.java
===================================================================
--- projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/entity/Payment.java 2010-01-07 22:25:44 UTC (rev 99131)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/entity/Payment.java 2010-01-07 23:20:20 UTC (rev 99132)
@@ -3,13 +3,16 @@
import java.math.BigDecimal;
import java.util.Date;
+import javax.annotation.Generated;
import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
@Entity
public class Payment
{
+ @GeneratedValue
@Id
Long id;
Modified: projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/entity/PaymentNotification.java
===================================================================
--- projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/entity/PaymentNotification.java 2010-01-07 22:25:44 UTC (rev 99131)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/entity/PaymentNotification.java 2010-01-07 23:20:20 UTC (rev 99132)
@@ -1,20 +1,21 @@
package org.jboss.snowdrop.samples.sportsclub.domain.entity;
+import java.io.Serializable;
import java.math.BigDecimal;
-public class PaymentNotification
+public class PaymentNotification implements Serializable
{
- String accountNumber;
+ Long accountNumber;
BigDecimal amount;
- public String getAccountNumber()
+ public Long getAccountNumber()
{
return accountNumber;
}
- public void setAccountNumber(String accountNumber)
+ public void setAccountNumber(Long accountNumber)
{
this.accountNumber = accountNumber;
}
Modified: projects/snowdrop/examples/trunk/sportsclub/sportsclub-ear/pom.xml
===================================================================
--- projects/snowdrop/examples/trunk/sportsclub/sportsclub-ear/pom.xml 2010-01-07 22:25:44 UTC (rev 99131)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-ear/pom.xml 2010-01-07 23:20:20 UTC (rev 99132)
@@ -62,6 +62,10 @@
<type>war</type>
<version>${project.version}</version>
</dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-webmvc</artifactId>
+ </dependency>
</dependencies>
<build>
Modified: projects/snowdrop/examples/trunk/sportsclub/sportsclub-invoicing-ejb/src/main/java/org/jboss/spring/samples/sportsclub/invoicing/services/BillingService.java
===================================================================
--- projects/snowdrop/examples/trunk/sportsclub/sportsclub-invoicing-ejb/src/main/java/org/jboss/spring/samples/sportsclub/invoicing/services/BillingService.java 2010-01-07 22:25:44 UTC (rev 99131)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-invoicing-ejb/src/main/java/org/jboss/spring/samples/sportsclub/invoicing/services/BillingService.java 2010-01-07 23:20:20 UTC (rev 99132)
@@ -12,5 +12,4 @@
{
Invoice generateInvoice(Account account);
- void processPayment(Account account, BigDecimal amount);
}
Modified: projects/snowdrop/examples/trunk/sportsclub/sportsclub-invoicing-ejb/src/main/java/org/jboss/spring/samples/sportsclub/invoicing/services/BillingServiceImpl.java
===================================================================
--- projects/snowdrop/examples/trunk/sportsclub/sportsclub-invoicing-ejb/src/main/java/org/jboss/spring/samples/sportsclub/invoicing/services/BillingServiceImpl.java 2010-01-07 22:25:44 UTC (rev 99131)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-invoicing-ejb/src/main/java/org/jboss/spring/samples/sportsclub/invoicing/services/BillingServiceImpl.java 2010-01-07 23:20:20 UTC (rev 99132)
@@ -58,16 +58,5 @@
return invoice;
}
- public void processPayment(Account account, BigDecimal amount)
- {
- Payment payment = new Payment();
- payment.setAccount(account);
- payment.setAmount(amount);
- payment.setDate(new Date());
- paymentRepository.save(payment);
- Balance balance = account.getBalance();
- balance.credit(amount);
- accountRepository.save(account);
- }
}
Modified: projects/snowdrop/examples/trunk/sportsclub/sportsclub-invoicing-ejb/src/test/java/org/jboss/spring/samples/sportsclub/invoicing/services/TestBillingService.java
===================================================================
--- projects/snowdrop/examples/trunk/sportsclub/sportsclub-invoicing-ejb/src/test/java/org/jboss/spring/samples/sportsclub/invoicing/services/TestBillingService.java 2010-01-07 22:25:44 UTC (rev 99131)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-invoicing-ejb/src/test/java/org/jboss/spring/samples/sportsclub/invoicing/services/TestBillingService.java 2010-01-07 23:20:20 UTC (rev 99132)
@@ -1,8 +1,11 @@
package org.jboss.spring.samples.sportsclub.invoicing.services;
+import junit.framework.Assert;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+import org.springframework.transaction.PlatformTransactionManager;
+import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.annotation.Transactional;
import org.jboss.snowdrop.samples.sportsclub.domain.entity.Account;
@@ -10,6 +13,8 @@
import org.jboss.snowdrop.samples.sportsclub.domain.repository.AccountRepository;
import org.junit.Test;
import org.junit.runner.RunWith;
+import org.springframework.transaction.support.TransactionCallback;
+import org.springframework.transaction.support.TransactionTemplate;
/**
* @author Marius Bogoevici
@@ -25,11 +30,33 @@
@Autowired
AccountRepository accountRepository;
- @Transactional @Test
+ @Autowired
+ private PlatformTransactionManager transactionManager;
+
+ @Test
public void testBillingService()
{
- Account account = accountRepository.findById(1l);
- Invoice invoice = billingService.generateInvoice(account);
+
+ final Invoice invoice = (Invoice)new TransactionTemplate(transactionManager).execute(new TransactionCallback()
+ {
+ public Object doInTransaction(TransactionStatus status)
+ {
+ Account account = accountRepository.findById(1l);
+ Invoice invoice = billingService.generateInvoice(account);
+ return invoice;
+ }
+ });
+
+
+ new TransactionTemplate(transactionManager).execute(new TransactionCallback()
+ {
+ public Object doInTransaction(TransactionStatus status)
+ {
+ Account account = accountRepository.findById(1l);
+ Assert.assertEquals(account.getBalance().getAmount(), invoice.getAmount());
+ return null;
+ }
+ });
}
}
Modified: projects/snowdrop/examples/trunk/sportsclub/sportsclub-invoicing-webmvc/pom.xml
===================================================================
--- projects/snowdrop/examples/trunk/sportsclub/sportsclub-invoicing-webmvc/pom.xml 2010-01-07 22:25:44 UTC (rev 99131)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-invoicing-webmvc/pom.xml 2010-01-07 23:20:20 UTC (rev 99132)
@@ -19,9 +19,20 @@
</dependency>
<dependency>
<groupId>org.springframework</groupId>
+ <artifactId>spring</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
+ <scope>provided</scope>
</dependency>
<dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-web</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
<groupId>org.hibernate</groupId>
<artifactId>ejb3-persistence</artifactId>
</dependency>
@@ -29,6 +40,7 @@
<groupId>org.jboss.snowdrop</groupId>
<artifactId>snowdrop-vfs</artifactId>
<version>1.0.0.GA</version>
+ <scope>provided</scope>
</dependency>
<dependency>
<groupId>org.jboss.javaee</groupId>
@@ -59,6 +71,12 @@
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
+ <dependency>
+ <groupId>javax.jms</groupId>
+ <artifactId>jms</artifactId>
+ <version>1.1</version>
+ <scope>provided</scope>
+ </dependency>
</dependencies>
<build>
<finalName>sportsclub-invoicing-webmvc</finalName>
Added: projects/snowdrop/examples/trunk/sportsclub/sportsclub-invoicing-webmvc/src/main/java/org/jboss/snowdrop/samples/sportsclub/infrastructure/NoopTransactionManager.java
===================================================================
--- projects/snowdrop/examples/trunk/sportsclub/sportsclub-invoicing-webmvc/src/main/java/org/jboss/snowdrop/samples/sportsclub/infrastructure/NoopTransactionManager.java (rev 0)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-invoicing-webmvc/src/main/java/org/jboss/snowdrop/samples/sportsclub/infrastructure/NoopTransactionManager.java 2010-01-07 23:20:20 UTC (rev 99132)
@@ -0,0 +1,36 @@
+package org.jboss.snowdrop.samples.sportsclub.infrastructure;
+
+import javax.transaction.NotSupportedException;
+import javax.transaction.Status;
+import javax.transaction.SystemException;
+import javax.transaction.Transaction;
+
+import org.springframework.transaction.jta.JtaTransactionManager;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: marius
+ * Date: 7-Jan-2010
+ * Time: 3:38:05 PM
+ * To change this template use File | Settings | File Templates.
+ */
+public class NoopTransactionManager extends JtaTransactionManager
+{
+
+ @Override
+ public Transaction createTransaction(String name, int timeout)
+ throws NotSupportedException, SystemException
+ {
+ Transaction transaction = this.getTransactionManager().getTransaction();
+
+ if (transaction != null && (transaction.getStatus() != Status.STATUS_NO_TRANSACTION))
+ return transaction;
+ else {
+ return super.createTransaction(name, timeout);
+ }
+ }
+
+
+
+
+}
Added: projects/snowdrop/examples/trunk/sportsclub/sportsclub-invoicing-webmvc/src/main/java/org/jboss/snowdrop/samples/sportsclub/service/payment/PaymentProcessor.java
===================================================================
--- projects/snowdrop/examples/trunk/sportsclub/sportsclub-invoicing-webmvc/src/main/java/org/jboss/snowdrop/samples/sportsclub/service/payment/PaymentProcessor.java (rev 0)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-invoicing-webmvc/src/main/java/org/jboss/snowdrop/samples/sportsclub/service/payment/PaymentProcessor.java 2010-01-07 23:20:20 UTC (rev 99132)
@@ -0,0 +1,43 @@
+package org.jboss.snowdrop.samples.sportsclub.service.payment;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import org.jboss.snowdrop.samples.sportsclub.domain.entity.Account;
+import org.jboss.snowdrop.samples.sportsclub.domain.entity.Balance;
+import org.jboss.snowdrop.samples.sportsclub.domain.entity.Payment;
+import org.jboss.snowdrop.samples.sportsclub.domain.entity.PaymentNotification;
+import org.jboss.snowdrop.samples.sportsclub.domain.repository.AccountRepository;
+import org.jboss.snowdrop.samples.sportsclub.domain.repository.PaymentRepository;
+import sun.security.krb5.internal.ktab.KeyTab;
+
+/**
+ * @author Marius Bogoevici
+ */
+ at Component
+public class PaymentProcessor
+{
+
+ @Autowired
+ private AccountRepository accountRepository;
+
+ @Autowired
+ private PaymentRepository paymentRepository;
+
+ public void processPaymentNotification(PaymentNotification paymentNotification)
+ {
+ Account account = accountRepository.findById(paymentNotification.getAccountNumber());
+ Payment payment = new Payment();
+ payment.setAccount(account);
+ payment.setAmount(paymentNotification.getAmount());
+ payment.setDate(new Date());
+ System.out.println(account);
+ paymentRepository.save(payment);
+ Balance balance = account.getBalance();
+ balance.credit(paymentNotification.getAmount());
+ accountRepository.save(account);
+ }
+}
Modified: projects/snowdrop/examples/trunk/sportsclub/sportsclub-invoicing-webmvc/src/main/java/org/jboss/snowdrop/samples/sportsclub/springmvc/BasicController.java
===================================================================
--- projects/snowdrop/examples/trunk/sportsclub/sportsclub-invoicing-webmvc/src/main/java/org/jboss/snowdrop/samples/sportsclub/springmvc/BasicController.java 2010-01-07 22:25:44 UTC (rev 99131)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-invoicing-webmvc/src/main/java/org/jboss/snowdrop/samples/sportsclub/springmvc/BasicController.java 2010-01-07 23:20:20 UTC (rev 99132)
@@ -1,13 +1,17 @@
package org.jboss.snowdrop.samples.sportsclub.springmvc;
+import java.math.BigDecimal;
+
import javax.ejb.EJB;
import org.jboss.snowdrop.samples.sportsclub.domain.entity.Account;
import org.jboss.snowdrop.samples.sportsclub.domain.entity.Invoice;
+import org.jboss.snowdrop.samples.sportsclub.domain.entity.PaymentNotification;
import org.jboss.snowdrop.samples.sportsclub.ejb.SubscriptionService;
import org.jboss.spring.samples.sportsclub.invoicing.services.BillingService;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.jms.core.JmsTemplate;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
@@ -22,12 +26,18 @@
@EJB(mappedName = "sportsclub-ear-1.0-SNAPSHOT/SubscriptionServiceImpl/local")
SubscriptionService subscriptionService;
+ @Autowired
+ private JmsTemplate jmsTemplate;
@RequestMapping("/basic.do")
ModelAndView doSomething()
{
Account account = subscriptionService.findAccountsBySubscriberName("Vimes", 0, 1).get(0);
Invoice invoice = billingService.generateInvoice(account);
+ PaymentNotification paymentNotification = new PaymentNotification();
+ paymentNotification.setAccountNumber(account.getId());
+ paymentNotification.setAmount(BigDecimal.valueOf(50l));
+ jmsTemplate.convertAndSend(paymentNotification);
return new ModelAndView("dummy", "invoice", invoice);
}
}
Modified: projects/snowdrop/examples/trunk/sportsclub/sportsclub-invoicing-webmvc/src/main/webapp/WEB-INF/spring-business-context.xml
===================================================================
--- projects/snowdrop/examples/trunk/sportsclub/sportsclub-invoicing-webmvc/src/main/webapp/WEB-INF/spring-business-context.xml 2010-01-07 22:25:44 UTC (rev 99131)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-invoicing-webmvc/src/main/webapp/WEB-INF/spring-business-context.xml 2010-01-07 23:20:20 UTC (rev 99132)
@@ -1,6 +1,62 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:context="http://www.springframework.org/schema/context"
+ xmlns:jee="http://www.springframework.org/schema/jee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
+ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+ http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
+ http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee.xsd">
+ <import resource="classpath*:dao-context.xml"/>
+
+ <import resource="classpath*:infrastructure.xml"/>
+
+ <context:component-scan base-package="org.jboss.snowdrop.samples.sportsclub.service.payment"/>
+
+ <bean id="jmsContainer" class="org.springframework.jms.listener.endpoint.JmsMessageEndpointManager">
+ <property name="messageListener" ref="messageListener"/>
+ <property name="activationSpec">
+ <bean class="org.jboss.resource.adapter.jms.inflow.JmsActivationSpec">
+ <property name="destination" value="queue/sportsclub"/>
+ <property name="destinationType" value="javax.jms.Queue"/>
+ <property name="acknowledgeMode" value="AUTO_ACKNOWLEDGE"/>
+ <property name="clientId" value="remote"/>
+ <property name="subscriptionName" value="jca-payment-processor"/>
+ <property name="maxSession" value="1"/>
+ <property name="maxMessages" value="1"/>
+ <property name="useDLQ" value="false"/>
+ </bean>
+ </property>
+ <property name="resourceAdapter">
+ <bean factory-bean="mBeanServer" factory-method="getAttribute">
+ <constructor-arg>
+ <bean class="org.springframework.jmx.support.ObjectNameManager" factory-method="getInstance">
+ <constructor-arg value="jboss.jca:name='jms-ra.rar',service=RARDeployment"/>
+ </bean>
+ </constructor-arg>
+ <constructor-arg value="ResourceAdapter"/>
+ </bean>
+ </property>
+ <property name="transactionManager">
+ <bean class="org.jboss.snowdrop.samples.sportsclub.infrastructure.NoopTransactionManager"/>
+ </property>
+ </bean>
+
+ <bean id="mBeanServer" class="org.jboss.mx.util.MBeanServerLocator" factory-method="locateJBoss"/>
+
+ <bean id="messageListener" class="org.springframework.jms.listener.adapter.MessageListenerAdapter">
+ <property name="delegate" ref="paymentProcessor"/>
+ <property name="defaultListenerMethod" value="processPaymentNotification"/>
+ </bean>
+
+ <jee:jndi-lookup id="jcaConnectionFactory" jndi-name="java:/JmsXA"/>
+
+ <bean class="org.springframework.jms.core.JmsTemplate">
+ <property name="connectionFactory" ref="jcaConnectionFactory"/>
+ <property name="defaultDestinationName" value="queue/sportsclub"/>
+ <property name="destinationResolver">
+ <bean class="org.springframework.jms.support.destination.JndiDestinationResolver"/>
+ </property>
+ </bean>
+
</beans>
\ No newline at end of file
More information about the jboss-cvs-commits
mailing list