[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