Added: openjpa/site/trunk/content/artifacts/daytrader_websphere.patch
URL:
http://svn.apache.org/viewvc/openjpa/site/trunk/content/artifacts/daytrader_websphere.patch?rev=1412171&view=auto
==============================================================================
--- openjpa/site/trunk/content/artifacts/daytrader_websphere.patch (added)
+++ openjpa/site/trunk/content/artifacts/daytrader_websphere.patch Wed Nov 21
16:16:49 2012
@@ -0,0 +1,449 @@
+Index: pom.xml
+===================================================================
+--- pom.xml (revision 952663)
++++ pom.xml (working copy)
+@@ -189,6 +189,18 @@
+ </exclusion>
+ </exclusions>
+ </dependency>
++
++ <dependency>
++ <groupId>org.apache.geronimo.specs</groupId>
++ <artifactId>geronimo-jpa_2.0_spec</artifactId>
++ <version>1.0</version>
++ </dependency>
++
++ <dependency>
++ <groupId>org.apache.openjpa</groupId>
++ <artifactId>openjpa</artifactId>
++ <version>2.0.0</version>
++ </dependency>
+
+ <dependency>
+ <groupId>org.apache.activemq</groupId>
+Index:
modules/ejb/src/main/java/org/apache/geronimo/samples/daytrader/ejb3/TradeSLSBBean.java
+===================================================================
+---
modules/ejb/src/main/java/org/apache/geronimo/samples/daytrader/ejb3/TradeSLSBBean.java
(revision 952663)
++++
modules/ejb/src/main/java/org/apache/geronimo/samples/daytrader/ejb3/TradeSLSBBean.java
(working copy)
+@@ -18,10 +18,15 @@
+ package org.apache.geronimo.samples.daytrader.ejb3;
+
+ import org.apache.geronimo.samples.daytrader.AccountDataBean;
++import org.apache.geronimo.samples.daytrader.AccountDataBean_;
+ import org.apache.geronimo.samples.daytrader.AccountProfileDataBean;
++import org.apache.geronimo.samples.daytrader.AccountProfileDataBean_;
+ import org.apache.geronimo.samples.daytrader.HoldingDataBean;
++import org.apache.geronimo.samples.daytrader.HoldingDataBean_;
+ import org.apache.geronimo.samples.daytrader.OrderDataBean;
++import org.apache.geronimo.samples.daytrader.OrderDataBean_;
+ import org.apache.geronimo.samples.daytrader.QuoteDataBean;
++import org.apache.geronimo.samples.daytrader.QuoteDataBean_;
+ import org.apache.geronimo.samples.daytrader.TradeConfig;
+ import org.apache.geronimo.samples.daytrader.TradeAction;
+ import org.apache.geronimo.samples.daytrader.RunStatsDataBean;
+@@ -43,6 +48,13 @@
+ import javax.persistence.EntityManager;
+ import javax.persistence.PersistenceContext;
+ import javax.persistence.Query;
++import javax.persistence.TypedQuery;
++import javax.persistence.criteria.CriteriaBuilder;
++import javax.persistence.criteria.CriteriaQuery;
++import javax.persistence.criteria.ParameterExpression;
++import javax.persistence.criteria.Path;
++import javax.persistence.criteria.Predicate;
++import javax.persistence.criteria.Root;
+ import javax.transaction.HeuristicMixedException;
+ import javax.transaction.HeuristicRollbackException;
+ import javax.transaction.NotSupportedException;
+@@ -51,6 +63,8 @@
+ import org.apache.geronimo.samples.daytrader.util.FinancialUtils;
+ import org.apache.geronimo.samples.daytrader.util.Log;
+ import org.apache.geronimo.samples.daytrader.util.MDBStats;
++import org.apache.openjpa.persistence.criteria.OpenJPACriteriaQuery;
++import org.apache.openjpa.persistence.query.QueryBuilder;
+
+ @Stateless
+ @TransactionAttribute(TransactionAttributeType.REQUIRED)
+@@ -89,8 +103,14 @@
+ // ordered by their change in value
+ Collection<QuoteDataBean> quotes;
+
+- Query query =
entityManager.createNamedQuery("quoteejb.quotesByChange");
+- quotes = query.getResultList();
++ // Demonstration of the JPA criteria query API for the following
JPQL:
++ // SELECT q FROM quoteejb q WHERE q.symbol LIKE 's:1__' ORDER
BY q.change1 DESC
++ CriteriaBuilder cb = entityManager.getCriteriaBuilder();
++ CriteriaQuery<QuoteDataBean> c =
cb.createQuery(QuoteDataBean.class);
++ Root<QuoteDataBean> qdb = c.from(QuoteDataBean.class);
++ c.where(cb.like(qdb.get(QuoteDataBean_.symbol), "s:1__"));
++ c.orderBy(cb.desc(qdb.get(QuoteDataBean_.change1)));
++ quotes = entityManager.createQuery(c).getResultList();
+
+ QuoteDataBean[] quoteArray = (QuoteDataBean[]) quotes.toArray(new
QuoteDataBean[quotes.size()]);
+ ArrayList<QuoteDataBean> topGainers = new
ArrayList<QuoteDataBean>(5);
+@@ -356,12 +376,25 @@
+
+ // Get the primary keys for all the closed Orders for this
+ // account.
+- Query query =
entityManager.createNamedQuery("orderejb.closedOrders");
+- query.setParameter("userID", userID);
+- Collection results = query.getResultList();
+- Iterator itr = results.iterator();
+-
+- // Spin through the orders to populate the lazy quote fields
++
++ // Demonstration of the JPA criteria query API for the
following JPQL:
++ // SELECT o FROM orderejb o WHERE o.orderStatus = 'closed'
AND o.account.profile.userID = :userID
++ CriteriaBuilder cb = entityManager.getCriteriaBuilder();
++ CriteriaQuery<OrderDataBean> c =
cb.createQuery(OrderDataBean.class);
++ Root<OrderDataBean> odb = c.from(OrderDataBean.class);
++ ParameterExpression<String> uidParm =
cb.parameter(String.class);
++ Path<AccountDataBean> acct = odb.get(OrderDataBean_.account);
++ Path<AccountProfileDataBean> profile =
acct.get(AccountDataBean_.profile);
++ Path<String> uid = profile.get(AccountProfileDataBean_.userID);
++ Predicate closedCondition =
cb.equal(odb.get(OrderDataBean_.orderStatus), "closed");
++ Predicate uidCondition = cb.equal(uid, uidParm);
++ Predicate condition = cb.and(closedCondition, uidCondition);
++ c.where(condition);
++ TypedQuery<OrderDataBean> q = entityManager.createQuery(c);
++ Collection<OrderDataBean> results = q.setParameter(uidParm,
userID).getResultList();
++
++ Iterator itr = results.iterator();
++ // Spin through the orders to populate the lazy quote
fields
+ while (itr.hasNext()){
+ OrderDataBean thisOrder = (OrderDataBean)itr.next();
+ thisOrder.getQuote();
+@@ -427,8 +460,13 @@
+ if (Log.doTrace())
+ Log.trace("TradeSLSBBean:getAllQuotes");
+
+- Query query = entityManager.createNamedQuery("quoteejb.allQuotes");
+- return query.getResultList();
++ // Demonstration of the JPA criteria query API for the following JPQL:
++ // SELECT q FROM quoteejb q
++ CriteriaBuilder cb = entityManager.getCriteriaBuilder();
++ CriteriaQuery<QuoteDataBean> c = cb.createQuery(QuoteDataBean.class);
++ Root<QuoteDataBean> qbd = c.from(QuoteDataBean.class);
++ TypedQuery<QuoteDataBean> q = entityManager.createQuery(c);
++ return q.getResultList();
+ }
+
+ public QuoteDataBean updateQuotePriceVolume(String symbol, BigDecimal
changeFactor, double sharesTraded) {
+@@ -463,6 +501,7 @@
+
+ quote.setPrice(newPrice);
+ quote.setVolume(quote.getVolume() + sharesTraded);
++ quote.setChange(newPrice.subtract(quote.getOpen()).doubleValue());
+ entityManager.merge(quote);
+
+ // TODO find out if requires new here is really intended -- it is
backwards,
+@@ -477,9 +516,22 @@
+ if (Log.doTrace())
+ Log.trace("TradeSLSBBean:getHoldings", userID);
+
+- Query query =
entityManager.createNamedQuery("holdingejb.holdingsByUserID");
+- query.setParameter("userID", userID);
+- Collection<HoldingDataBean> holdings = query.getResultList();
++ // Demonstration of the JPA criteria query API for the following JPQL:
++ // SELECT h FROM holdingejb h where h.account.profile.userID =
:userID
++ CriteriaBuilder cb = entityManager.getCriteriaBuilder();
++ CriteriaQuery<HoldingDataBean> c =
cb.createQuery(HoldingDataBean.class);
++ Root<HoldingDataBean> hdb = c.from(HoldingDataBean.class);
++ ParameterExpression<String> uidParm = cb.parameter(String.class);
++ Path<AccountDataBean> account = hdb.get(HoldingDataBean_.account);
++ Path<AccountProfileDataBean> profile =
account.get(AccountDataBean_.profile);
++ Path<String> uid = profile.get(AccountProfileDataBean_.userID);
++ // The following 'select' method is not needed, since it is the
default. It is just shown for
++ // illustrative purposes.
++ c.select(hdb);
++ c.where(cb.equal(uid, uidParm));
++ TypedQuery<HoldingDataBean> q = entityManager.createQuery(c);
++ Collection<HoldingDataBean> holdings = q.setParameter(uidParm,
userID).getResultList();
++
+ /*
+ * Inflate the lazy data memebers
+ */
+Index:
modules/ejb/src/main/java/org/apache/geronimo/samples/daytrader/TradeServices.java
+===================================================================
+---
modules/ejb/src/main/java/org/apache/geronimo/samples/daytrader/TradeServices.java
(revision 952663)
++++
modules/ejb/src/main/java/org/apache/geronimo/samples/daytrader/TradeServices.java
(working copy)
+@@ -18,8 +18,6 @@
+
+
+ import java.math.BigDecimal;
+-import java.rmi.Remote;
+-import java.rmi.RemoteException;
+ import java.util.Collection;
+
+ /**
+@@ -33,7 +31,7 @@
+ * @see TradeDirect
+ *
+ */
+-public interface TradeServices extends Remote {
++public interface TradeServices {
+
+ /**
+ * Compute and return a snapshot of the current market conditions
+@@ -44,7 +42,7 @@
+ *
+ * @return A snapshot of the current market summary
+ */
+- public MarketSummaryDataBean getMarketSummary() throws Exception,
RemoteException;
++ public MarketSummaryDataBean getMarketSummary() throws Exception;
+
+
+ /**
+@@ -61,7 +59,7 @@
+ */
+
+
+- public OrderDataBean buy(String userID, String symbol, double quantity,
int orderProcessingMode) throws Exception, RemoteException;
++ public OrderDataBean buy(String userID, String symbol, double quantity,
int orderProcessingMode) throws Exception;
+
+ /**
+ * Sell a stock holding and removed the holding for the given user.
+@@ -72,7 +70,7 @@
+ * @param holdingID the users holding to be sold
+ * @return OrderDataBean providing the status of the newly created sell
order
+ */
+- public OrderDataBean sell(String userID, Integer holdingID, int
orderProcessingMode) throws Exception, RemoteException;
++ public OrderDataBean sell(String userID, Integer holdingID, int
orderProcessingMode) throws Exception;
+
+
+ /**
+@@ -87,7 +85,7 @@
+ * @param orderID the Order being queued for processing
+ * @return OrderDataBean providing the status of the completed order
+ */
+- public void queueOrder(Integer orderID, boolean twoPhase) throws
Exception, RemoteException;
++ public void queueOrder(Integer orderID, boolean twoPhase) throws
Exception;
+
+ /**
+ * Complete the Order identefied by orderID
+@@ -102,7 +100,7 @@
+ * @param orderID the Order to complete
+ * @return OrderDataBean providing the status of the completed order
+ */
+- public OrderDataBean completeOrder(Integer orderID, boolean twoPhase)
throws Exception, RemoteException;
++ public OrderDataBean completeOrder(Integer orderID, boolean twoPhase)
throws Exception;
+
+ /**
+ * Cancel the Order identefied by orderID
+@@ -113,7 +111,7 @@
+ * @param orderID the Order to complete
+ * @return OrderDataBean providing the status of the completed order
+ */
+- public void cancelOrder(Integer orderID, boolean twoPhase) throws
Exception, RemoteException;
++ public void cancelOrder(Integer orderID, boolean twoPhase) throws
Exception;
+
+
+ /**
+@@ -123,7 +121,7 @@
+ * @param orderID the order which has completed
+ *
+ */
+- public void orderCompleted(String userID, Integer orderID) throws
Exception, RemoteException;
++ public void orderCompleted(String userID, Integer orderID) throws
Exception;
+
+
+ /**
+@@ -132,7 +130,7 @@
+ * @param userID the customer account to retrieve orders for
+ * @return Collection OrderDataBeans providing detailed order
information
+ */
+- public Collection getOrders(String userID) throws Exception,
RemoteException;
++ public Collection getOrders(String userID) throws Exception;
+
+ /**
+ * Get the collection of completed orders for a given account that need
to be alerted to the user
+@@ -140,7 +138,7 @@
+ * @param userID the customer account to retrieve orders for
+ * @return Collection OrderDataBeans providing detailed order
information
+ */
+- public Collection getClosedOrders(String userID) throws Exception,
RemoteException;
++ public Collection getClosedOrders(String userID) throws Exception;
+
+
+ /**
+@@ -151,7 +149,7 @@
+ * @param details a short description of the stock or company
+ * @return a new QuoteDataBean or null if Quote could not be created
+ */
+- public QuoteDataBean createQuote(String symbol, String companyName,
BigDecimal price) throws Exception, RemoteException;
++ public QuoteDataBean createQuote(String symbol, String companyName,
BigDecimal price) throws Exception;
+
+ /**
+ * Return a {@link QuoteDataBean} describing a current quote for the
given stock symbol
+@@ -159,14 +157,14 @@
+ * @param symbol the stock symbol to retrieve the current Quote
+ * @return the QuoteDataBean
+ */
+- public QuoteDataBean getQuote(String symbol) throws Exception,
RemoteException;
++ public QuoteDataBean getQuote(String symbol) throws Exception;
+
+ /**
+ * Return a {@link java.util.Collection} of {@link QuoteDataBean}
+ * describing all current quotes
+ * @return A collection of QuoteDataBean
+ */
+- public Collection getAllQuotes() throws Exception, RemoteException;
++ public Collection getAllQuotes() throws Exception;
+
+ /**
+ * Update the stock quote price and volume for the specified stock
symbol
+@@ -175,7 +173,7 @@
+ * @param price the updated quote price
+ * @return the QuoteDataBean describing the stock
+ */
+- public QuoteDataBean updateQuotePriceVolume(String symbol, BigDecimal
newPrice, double sharesTraded) throws Exception, RemoteException;
++ public QuoteDataBean updateQuotePriceVolume(String symbol, BigDecimal
newPrice, double sharesTraded) throws Exception;
+
+
+ /**
+@@ -185,7 +183,7 @@
+ * @param userID the customer requesting the portfolio
+ * @return Collection of the users portfolio of stock holdings
+ */
+- public Collection getHoldings(String userID) throws Exception,
RemoteException;
++ public Collection getHoldings(String userID) throws Exception;
+
+ /**
+ * Return a specific user stock holding identifed by the holdingID
+@@ -193,7 +191,7 @@
+ * @param holdingID the holdingID to return
+ * @return a HoldingDataBean describing the holding
+ */
+- public HoldingDataBean getHolding(Integer holdingID) throws Exception,
RemoteException;
++ public HoldingDataBean getHolding(Integer holdingID) throws Exception;
+
+ /**
+ * Return an AccountDataBean object for userID describing the account
+@@ -202,7 +200,7 @@
+ * @return User account data in AccountDataBean
+ */
+ public AccountDataBean getAccountData(String userID)
+- throws Exception, RemoteException;
++ throws Exception;
+
+ /**
+ * Return an AccountProfileDataBean for userID providing the users
profile
+@@ -210,7 +208,7 @@
+ * @param userID the account userID to lookup
+ * @param User account profile data in AccountProfileDataBean
+ */
+- public AccountProfileDataBean getAccountProfileData(String userID) throws
Exception, RemoteException;
++ public AccountProfileDataBean getAccountProfileData(String userID) throws
Exception;
+
+ /**
+ * Update userID's account profile information using the provided
AccountProfileDataBean object
+@@ -218,7 +216,7 @@
+ * @param userID the account userID to lookup
+ * @param User account profile data in AccountProfileDataBean
+ */
+- public AccountProfileDataBean updateAccountProfile(AccountProfileDataBean
profileData) throws Exception, RemoteException;
++ public AccountProfileDataBean updateAccountProfile(AccountProfileDataBean
profileData) throws Exception;
+
+
+ /**
+@@ -228,7 +226,7 @@
+ * @param password the password entered by the customer for
authentication
+ * @return User account data in AccountDataBean
+ */
+- public AccountDataBean login(String userID, String password) throws
Exception, RemoteException;
++ public AccountDataBean login(String userID, String password) throws
Exception;
+
+ /**
+ * Logout the given user
+@@ -237,7 +235,7 @@
+ * @return the login status
+ */
+
+- public void logout(String userID) throws Exception, RemoteException;
++ public void logout(String userID) throws Exception;
+
+ /**
+ * Register a new Trade customer.
+@@ -259,7 +257,7 @@
+ String
address,
+ String email,
+ String
creditcard,
+- BigDecimal
openBalance) throws Exception, RemoteException;
++ BigDecimal
openBalance) throws Exception;
+
+
+ /**
+@@ -271,6 +269,6 @@
+ *
+ * return statistics for this benchmark run
+ */
+- public RunStatsDataBean resetTrade(boolean deleteAll) throws Exception,
RemoteException;
++ public RunStatsDataBean resetTrade(boolean deleteAll) throws Exception;
+ }
+
+Index:
modules/ejb/src/main/java/org/apache/geronimo/samples/daytrader/TradeConfig.java
+===================================================================
+---
modules/ejb/src/main/java/org/apache/geronimo/samples/daytrader/TradeConfig.java
(revision 952663)
++++
modules/ejb/src/main/java/org/apache/geronimo/samples/daytrader/TradeConfig.java
(working copy)
+@@ -38,7 +38,7 @@
+ public static final int EJB3 = 0;
+ public static final int DIRECT = 1;
+ public static final int SESSION3 = 2;
+- public static int runTimeMode = DIRECT;
++ public static int runTimeMode = EJB3;
+
+ /* Trade JPA Layer parameters */
+ public static String[] jpaLayerNames = {"OpenJPA", "Hibernate"};
+Index: modules/ejb/src/main/resources/META-INF/ejb-jar.xml
+===================================================================
+--- modules/ejb/src/main/resources/META-INF/ejb-jar.xml (revision
952663)
++++ modules/ejb/src/main/resources/META-INF/ejb-jar.xml (working copy)
+@@ -25,4 +25,13 @@
+ entity, session and message driven beans using annotations. The
inline annotations
+ can be overriden by modifing this file.
+ -->
++ <assembly-descriptor>
++ <message-destination>
++
<message-destination-name>TradeBrokerQueue</message-destination-name>
++ </message-destination>
++ <message-destination>
++
<message-destination-name>TradeStreamerTopic</message-destination-name>
++ </message-destination>
++ </assembly-descriptor>
++
+ </ejb-jar>
+Index: modules/ejb/pom.xml
+===================================================================
+--- modules/ejb/pom.xml (revision 952663)
++++ modules/ejb/pom.xml (working copy)
+@@ -54,7 +54,8 @@
+ </dependency>
+ <dependency>
+ <groupId>org.apache.geronimo.specs</groupId>
+- <artifactId>geronimo-jpa_3.0_spec</artifactId>
++ <artifactId>geronimo-jpa_2.0_spec</artifactId>
++ <version>1.1</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+@@ -80,6 +81,7 @@
+ <dependency>
+ <groupId>org.apache.openjpa</groupId>
+ <artifactId>openjpa</artifactId>
++ <version>2.0.0</version>
+ <scope>provided</scope>
+ </dependency>
+ <!-- OpenJPA PCEnhancer ant task failed without these packages -->
+Index: modules/web/src/main/webapp/WEB-INF/web.xml
+===================================================================
+--- modules/web/src/main/webapp/WEB-INF/web.xml (revision 952663)
++++ modules/web/src/main/webapp/WEB-INF/web.xml (working copy)
+@@ -82,7 +82,7 @@
+ <init-param>
+ <description>Sets the default RuntimeMode. Legal values include
EJB and Direct</description>
+ <param-name>runTimeMode</param-name>
+- <param-value>DIRECT</param-value>
++ <param-value>Full EJB3</param-value>
+ </init-param>
+ <init-param>
+ <description>Sets the default Order Processing Mode. Legal values
include Synchronous, Asynchronous_1-Phase and Asynchronous_2-Phase</description>
Propchange: openjpa/site/trunk/content/artifacts/daytrader_websphere.patch
------------------------------------------------------------------------------
svn:executable = *