geronimo-scm mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From viol...@apache.org
Subject svn commit: r1076572 [2/3] - in /geronimo/daytrader/trunk/javaee6/modules: core/src/main/java/org/apache/geronimo/daytrader/javaee6/core/direct/ web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/ web/src/main/java/org/apache/geronimo/daytrade...
Date Thu, 03 Mar 2011 10:01:52 GMT
Added: geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/TradeAction.java
URL: http://svn.apache.org/viewvc/geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/TradeAction.java?rev=1076572&view=auto
==============================================================================
--- geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/TradeAction.java (added)
+++ geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/TradeAction.java Thu Mar  3 10:01:51 2011
@@ -0,0 +1,573 @@
+/**
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You 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.apache.geronimo.daytrader.javaee6.web;
+
+import java.math.BigDecimal;
+import java.util.Collection;
+
+import javax.naming.InitialContext;
+
+import org.apache.geronimo.daytrader.javaee6.entities.AccountDataBean;
+import org.apache.geronimo.daytrader.javaee6.entities.AccountProfileDataBean;
+import org.apache.geronimo.daytrader.javaee6.entities.HoldingDataBean;
+import org.apache.geronimo.daytrader.javaee6.entities.OrderDataBean;
+import org.apache.geronimo.daytrader.javaee6.entities.QuoteDataBean;
+import org.apache.geronimo.daytrader.javaee6.core.api.TradeServices;
+
+import org.apache.geronimo.daytrader.javaee6.core.beans.MarketSummaryDataBean;
+import org.apache.geronimo.daytrader.javaee6.core.beans.RunStatsDataBean;
+import org.apache.geronimo.daytrader.javaee6.core.direct.FinancialUtils;
+import org.apache.geronimo.daytrader.javaee6.core.direct.TradeJDBCDirect;
+import org.apache.geronimo.daytrader.javaee6.core.direct.TradeJEEDirect;
+import org.apache.geronimo.daytrader.javaee6.core.direct.TradeJPADirect;
+
+
+import org.apache.geronimo.daytrader.javaee6.utils.Log;
+import org.apache.geronimo.daytrader.javaee6.utils.TradeConfig;
+
+
+/**
+ * The TradeAction class provides the generic client side access to each of the
+ * Trade brokerage user operations. These include login, logout, buy, sell,
+ * getQuote, etc. The TradeAction class does not handle user interface
+ * processing and should be used by a class that is UI specific. For example,
+ * {trade_client.TradeServletAction}manages a web interface to Trade,
+ * making calls to TradeAction methods to actually performance each operation.
+ */
+
+public class TradeAction implements TradeServices {
+    // This lock is used to serialize market summary operations.
+    private static final Integer marketSummaryLock = new Integer(0);
+    private static long nextMarketSummary = System.currentTimeMillis();
+    private static MarketSummaryDataBean cachedMSDB = MarketSummaryDataBean.getRandomInstance();
+    
+    // make this static so the trade impl can be cached
+    // - ejb3 mode is the only thing that really uses this
+    // - can go back and update other modes to take advantage (ie. TradeDirect)
+    private static TradeServices trade = null;
+
+    public TradeAction() {
+        if (Log.doTrace())
+            Log.trace("TradeAction:TradeAction()");
+        createTrade();
+    }
+
+    public TradeAction(TradeServices trade) {
+        if (Log.doActionTrace())
+            Log.trace("TradeAction:TradeAction(trade)");
+        this.trade = trade;
+    }
+
+    private void createTrade() {
+        RuntimeException re = null;
+        
+        if (TradeConfig.runTimeMode == TradeConfig.EJB3) {
+            try {
+                Class c = Class.forName("org.apache.geronimo.daytrader.javaee6.web.ejb3.TradeSLSBBean");
+                if ((trade == null) ||
+                    (!(trade.getClass().isAssignableFrom(c)))) {
+                    InitialContext context = new InitialContext();
+                    try {
+                        trade = (TradeServices) context.lookup("java:global/daytrader/web/TradeSLSBBean");                
+                    } catch (Exception ex) {
+                        Log.error("TradeAction:createTrade - Lookup of TradeSLSBRemote failed!!!");
+                        trade = (TradeServices) context.lookup("java:global/TradeSLSBBean");
+                    }
+                }
+            }
+            catch (Exception e) {
+                Log.error("TradeAction:TradeAction() Creation of Trade EJB 3 failed\n" + e);
+                re = new RuntimeException(e);
+            }
+        } else if (TradeConfig.runTimeMode == TradeConfig.SESSION3) {
+            try {
+                Class c = Class.forName("org.apache.geronimo.daytrader.javaee6.web.ejb3.DirectSLSBBean");
+                if ((trade == null) ||
+                    (!(trade.getClass().isAssignableFrom(c)))) {
+                    InitialContext context = new InitialContext();
+                    try {
+                        trade = (TradeServices) context.lookup("java:global/daytrader/web/DirectSLSBBean");                
+                    } catch (Exception ex) {
+                        Log.error("TradeAction:createTrade - Lookup of DirectSLSBRemote failed!!!");
+                        trade = (TradeServices) context.lookup("java:global/DirectSLSBBean");
+                    }
+                }
+            }
+            catch (Exception e) {
+                Log.error("TradeAction:TradeAction() Creation of Trade SESSION3 failed\n" + e);
+                re = new RuntimeException(e);
+            }
+        } else if (TradeConfig.runTimeMode == TradeConfig.DIRECT) {
+            try {
+                trade = new TradeJEEDirect();
+            }
+            catch (Exception e) {
+                Log.error("TradeAction:TradeAction() Creation of Trade JDBC Direct failed\n" + e);
+                re = new RuntimeException(e);
+            }
+        } else if (TradeConfig.runTimeMode == TradeConfig.JDBC) {
+            try {
+                trade = new TradeJDBCDirect();
+            }
+            catch (Exception e) {
+                Log.error("TradeAction:TradeAction() Creation of TradeJDBCDirect failed\n" + e);
+                re = new RuntimeException(e);
+            }
+        } else if (TradeConfig.runTimeMode == TradeConfig.JPA) {
+            try {
+                trade = new TradeJPADirect();
+            }
+            catch (Exception e) {
+                Log.error("TradeAction:TradeAction() Creation of TradeJPADirect failed\n" + e);
+                re = new RuntimeException(e);
+            }
+        } else {
+            Log.error("TradeAction:TradeAction() Unknown Trade runtime mode.");
+            re = new IllegalArgumentException("TradeAction:TradeAction() Unknown runTimeMode=" + TradeConfig.runTimeMode);
+        }
+        
+        if (re != null) {
+            throw re;
+        }
+    }
+
+
+    /**
+     * Market Summary is inherently a heavy database operation.  For servers that have a caching
+     * story this is a great place to cache data that is good for a period of time.  In order to
+     * provide a flexible framework for this we allow the market summary operation to be
+     * invoked on every transaction, time delayed or never.  This is configurable in the 
+     * configuration panel.  
+     *
+     * @return An instance of the market summary
+     */
+    public MarketSummaryDataBean getMarketSummary() throws Exception {
+    
+        if (Log.doActionTrace()) {
+            Log.trace("TradeAction:getMarketSummary()");
+        }
+    
+        if (TradeConfig.getMarketSummaryInterval() == 0) return getMarketSummaryInternal();
+        if (TradeConfig.getMarketSummaryInterval() < 0) return cachedMSDB;
+    
+        /**
+         * This is a little funky.  If its time to fetch a new Market summary then we'll synchronize
+         * access to make sure only one requester does it.  Others will merely return the old copy until
+         * the new MarketSummary has been executed.
+         */
+         long currentTime = System.currentTimeMillis();
+         
+         if (currentTime > nextMarketSummary) {
+             long oldNextMarketSummary = nextMarketSummary;
+             boolean fetch = false;
+
+             synchronized (marketSummaryLock) {
+                 /**
+                  * Is it still ahead or did we miss lose the race?  If we lost then let's get out
+                  * of here as the work has already been done.
+                  */
+                 if (oldNextMarketSummary == nextMarketSummary) {
+                     fetch = true;
+                     nextMarketSummary += TradeConfig.getMarketSummaryInterval()*1000;
+                     
+                     /** 
+                      * If the server has been idle for a while then its possible that nextMarketSummary
+                      * could be way off.  Rather than try and play catch up we'll simply get in sync with the 
+                      * current time + the interval.
+                      */ 
+                     if (nextMarketSummary < currentTime) {
+                         nextMarketSummary = currentTime + TradeConfig.getMarketSummaryInterval()*1000;
+                     }
+                 }
+             }
+
+            /**
+             * If we're the lucky one then let's update the MarketSummary
+             */
+            if (fetch) {
+                cachedMSDB = getMarketSummaryInternal();
+            }
+        }
+         
+        return cachedMSDB;
+    }
+
+    /**
+     * Compute and return a snapshot of the current market conditions This
+     * includes the TSIA - an index of the price of the top 100 Trade stock
+     * quotes The openTSIA ( the index at the open) The volume of shares traded,
+     * Top Stocks gain and loss
+     *
+     * @return A snapshot of the current market summary
+     */
+    public MarketSummaryDataBean getMarketSummaryInternal() throws Exception {
+        if (Log.doActionTrace()) {
+            Log.trace("TradeAction:getMarketSummaryInternal()");
+        }
+        MarketSummaryDataBean marketSummaryData = null;
+        marketSummaryData = trade.getMarketSummary();
+        return marketSummaryData;
+    }
+
+    /**
+     * Purchase a stock and create a new holding for the given user. Given a
+     * stock symbol and quantity to purchase, retrieve the current quote price,
+     * debit the user's account balance, and add holdings to user's portfolio.
+     *
+     * @param userID   the customer requesting the stock purchase
+     * @param symbol   the symbol of the stock being purchased
+     * @param quantity the quantity of shares to purchase
+     * @return OrderDataBean providing the status of the newly created buy order
+     */
+    public OrderDataBean buy(String userID, String symbol, double quantity, int orderProcessingMode) throws Exception {
+        if (Log.doActionTrace())
+            Log.trace("TradeAction:buy", userID, symbol, new Double(quantity), new Integer(orderProcessingMode));
+        OrderDataBean orderData;
+        orderData = trade.buy(userID, symbol, quantity, orderProcessingMode);
+        //after the purchase or sell of a stock, update the stocks volume and
+        // price
+        updateQuotePriceVolume(symbol, TradeConfig.getRandomPriceChangeFactor(), quantity);
+        return orderData;
+    }
+
+    /**
+     * Sell(SOAP 2.2 Wrapper converting int to Integer) a stock holding and
+     * removed the holding for the given user. Given a Holding, retrieve current
+     * quote, credit user's account, and reduce holdings in user's portfolio.
+     *
+     * @param userID    the customer requesting the sell
+     * @param holdingID the users holding to be sold
+     * @return OrderDataBean providing the status of the newly created sell
+     *         order
+     */
+    public OrderDataBean sell(String userID, int holdingID, int orderProcessingMode) throws Exception {
+        return sell(userID, new Integer(holdingID), orderProcessingMode);
+    }
+
+    /**
+     * Sell a stock holding and removed the holding for the given user. Given a
+     * Holding, retrieve current quote, credit user's account, and reduce
+     * holdings in user's portfolio.
+     *
+     * @param userID    the customer requesting the sell
+     * @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 {
+        if (Log.doActionTrace())
+            Log.trace("TradeAction:sell", userID, holdingID, new Integer(orderProcessingMode));
+        OrderDataBean orderData;
+        orderData = trade.sell(userID, holdingID, orderProcessingMode);
+        if (!(orderData.getOrderStatus().equalsIgnoreCase("cancelled")))
+            //after the purchase or sell of a stock, update the stocks volume
+            // and price
+            updateQuotePriceVolume(orderData.getSymbol(), TradeConfig.getRandomPriceChangeFactor(), orderData.getQuantity());
+        return orderData;
+    }
+
+    /**
+     * Queue the Order identified by orderID to be processed
+     * <p/>
+     * Orders are submitted through JMS to a Trading Broker and completed
+     * asynchronously. This method queues the order for processing
+     * <p/>
+     * The boolean twoPhase specifies to the server implementation whether or
+     * not the method is to participate in a global transaction
+     *
+     * @param orderID the Order being queued for processing
+     */
+    public void queueOrder(Integer orderID, boolean twoPhase) {
+        throw new UnsupportedOperationException("TradeAction: queueOrder method not supported");
+    }
+
+    /**
+     * Complete the Order identefied by orderID Orders are submitted through JMS
+     * to a Trading agent and completed asynchronously. This method completes
+     * the order For a buy, the stock is purchased creating a holding and the
+     * users account is debited For a sell, the stock holding is removed and the
+     * users account is credited with the proceeds
+     * <p/>
+     * The boolean twoPhase specifies to the server implementation whether or
+     * not the method is to participate in a global transaction
+     *
+     * @param orderID the Order to complete
+     * @return OrderDataBean providing the status of the completed order
+     */
+    public OrderDataBean completeOrder(Integer orderID, boolean twoPhase) {
+        throw new UnsupportedOperationException("TradeAction: completeOrder method not supported");
+    }
+
+    /**
+     * Cancel the Order identified by orderID
+     * <p/>
+     * Orders are submitted through JMS to a Trading Broker and completed
+     * asynchronously. This method queues the order for processing
+     * <p/>
+     * The boolean twoPhase specifies to the server implementation whether or
+     * not the method is to participate in a global transaction
+     *
+     * @param orderID the Order being queued for processing
+     */
+    public void cancelOrder(Integer orderID, boolean twoPhase) {
+        throw new UnsupportedOperationException("TradeAction: cancelOrder method not supported");
+    }
+
+    public void orderCompleted(String userID, Integer orderID) throws Exception {
+        if (Log.doActionTrace())
+            Log.trace("TradeAction:orderCompleted", userID, orderID);
+        if (Log.doTrace())
+            Log.trace("OrderCompleted", userID, orderID);
+    }
+
+    /**
+     * Get the collection of all orders for a given account
+     *
+     * @param userID the customer account to retrieve orders for
+     * @return Collection OrderDataBeans providing detailed order information
+     */
+    public Collection getOrders(String userID) throws Exception {
+        if (Log.doActionTrace())
+            Log.trace("TradeAction:getOrders", userID);
+        Collection orderDataBeans;
+        orderDataBeans = trade.getOrders(userID);
+        return orderDataBeans;
+    }
+
+    /**
+     * Get the collection of completed orders for a given account that need to
+     * be alerted to the user
+     *
+     * @param userID the customer account to retrieve orders for
+     * @return Collection OrderDataBeans providing detailed order information
+     */
+    public Collection getClosedOrders(String userID) throws Exception {
+        if (Log.doActionTrace())
+            Log.trace("TradeAction:getClosedOrders", userID);
+        Collection orderDataBeans;
+        orderDataBeans = trade.getClosedOrders(userID);
+        return orderDataBeans;
+    }
+
+    /**
+     * Given a market symbol, price, and details, create and return a new
+     * {@link QuoteDataBean}
+     *
+     * @param symbol  the symbol of the stock
+     * @param price   the current stock price
+     * @return a new QuoteDataBean or null if Quote could not be created
+     */
+    public QuoteDataBean createQuote(String symbol, String companyName, BigDecimal price) throws Exception {
+        if (Log.doActionTrace())
+            Log.trace("TradeAction:createQuote", symbol, companyName, price);
+        QuoteDataBean quoteData;
+        quoteData = trade.createQuote(symbol, companyName, price);
+        return quoteData;
+    }
+
+    /**
+     * Return a collection of {@link QuoteDataBean}describing all current
+     * quotes
+     *
+     * @return the collection of QuoteDataBean
+     */
+    public Collection getAllQuotes() throws Exception {
+        if (Log.doActionTrace()) {
+            Log.trace("TradeAction:getAllQuotes");
+        }
+        Collection quotes;
+        quotes = trade.getAllQuotes();
+        return quotes;
+    }
+
+    /**
+     * Return a {@link QuoteDataBean}describing a current quote for the given
+     * stock symbol
+     *
+     * @param symbol the stock symbol to retrieve the current Quote
+     * @return the QuoteDataBean
+     */
+    public QuoteDataBean getQuote(String symbol) throws Exception {
+        if (Log.doActionTrace())
+            Log.trace("TradeAction:getQuote", symbol);
+        if ((symbol == null) || (symbol.length() == 0) || (symbol.length() > 10)) {
+            if (Log.doActionTrace()) {
+                Log.trace("TradeAction:getQuote   ---  primitive workload");
+            }
+            return new QuoteDataBean("Invalid symbol", "", 0.0, FinancialUtils.ZERO, FinancialUtils.ZERO, FinancialUtils.ZERO, FinancialUtils.ZERO, 0.0);
+        }
+        QuoteDataBean quoteData;
+        quoteData = trade.getQuote(symbol);
+        return quoteData;
+    }
+
+    /**
+     * Update the stock quote price for the specified stock symbol
+     *
+     * @param symbol for stock quote to update
+     * @return the QuoteDataBean describing the stock
+     */
+    /* avoid data collision with synch */
+    public QuoteDataBean updateQuotePriceVolume(String symbol, BigDecimal changeFactor, double sharesTraded) throws Exception {
+        if (Log.doActionTrace())
+            Log.trace("TradeAction:updateQuotePriceVolume", symbol, changeFactor, new Double(sharesTraded));
+        QuoteDataBean quoteData = null;
+        try {
+            quoteData = trade.updateQuotePriceVolume(symbol, changeFactor, sharesTraded);
+        }
+        catch (Exception e) {
+            Log.error("TradeAction:updateQuotePrice -- ", e);
+        }
+        return quoteData;
+    }
+
+    /**
+     * Return the portfolio of stock holdings for the specified customer as a
+     * collection of HoldingDataBeans
+     *
+     * @param userID the customer requesting the portfolio
+     * @return Collection of the users portfolio of stock holdings
+     */
+    public Collection getHoldings(String userID) throws Exception {
+        if (Log.doActionTrace())
+            Log.trace("TradeAction:getHoldings", userID);
+        Collection holdingDataBeans;
+        holdingDataBeans = trade.getHoldings(userID);
+        return holdingDataBeans;
+    }
+
+    /**
+     * Return a specific user stock holding identifed by the holdingID
+     *
+     * @param holdingID the holdingID to return
+     * @return a HoldingDataBean describing the holding
+     */
+    public HoldingDataBean getHolding(Integer holdingID) throws Exception {
+        if (Log.doActionTrace())
+            Log.trace("TradeAction:getHolding", holdingID);
+        HoldingDataBean holdingData;
+        holdingData = trade.getHolding(holdingID);
+        return holdingData;
+    }
+
+    /**
+     * Return an AccountDataBean object for userID describing the account
+     *
+     * @param userID the account userID to lookup
+     * @return User account data in AccountDataBean
+     */
+    public AccountDataBean getAccountData(String userID) throws Exception {
+        if (Log.doActionTrace())
+            Log.trace("TradeAction:getAccountData", userID);
+        AccountDataBean accountData;
+        accountData = trade.getAccountData(userID);
+        return accountData;
+    }
+
+    /**
+     * Return an AccountProfileDataBean for userID providing the users profile
+     *
+     * @param userID the account userID to lookup
+     */
+    public AccountProfileDataBean getAccountProfileData(String userID) throws Exception {
+        if (Log.doActionTrace())
+            Log.trace("TradeAction:getAccountProfileData", userID);
+        AccountProfileDataBean accountProfileData;
+        accountProfileData = trade.getAccountProfileData(userID);
+        return accountProfileData;
+    }
+
+    /**
+     * Update userID's account profile information using the provided
+     * AccountProfileDataBean object
+     *
+     * @param accountProfileData   account profile data in AccountProfileDataBean
+     */
+    public AccountProfileDataBean updateAccountProfile(AccountProfileDataBean accountProfileData) throws Exception {
+        if (Log.doActionTrace())
+            Log.trace("TradeAction:updateAccountProfile", accountProfileData);
+        accountProfileData = trade.updateAccountProfile(accountProfileData);
+        return accountProfileData;
+    }
+
+    /**
+     * Attempt to authenticate and login a user with the given password
+     *
+     * @param userID   the customer to login
+     * @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 {
+        if (Log.doActionTrace())
+            Log.trace("TradeAction:login", userID, password);
+        AccountDataBean accountData;
+        accountData = trade.login(userID, password);
+        return accountData;
+    }
+
+    /**
+     * Logout the given user
+     *
+     * @param userID the customer to logout
+     */
+    public void logout(String userID) throws Exception {
+        if (Log.doActionTrace())
+            Log.trace("TradeAction:logout", userID);
+        trade.logout(userID);
+    }
+
+    /**
+     * Register a new Trade customer. Create a new user profile, user registry
+     * entry, account with initial balance, and empty portfolio.
+     *
+     * @param userID         the new customer to register
+     * @param password       the customers password
+     * @param fullname       the customers fullname
+     * @param address        the customers street address
+     * @param email          the customers email address
+     * @param creditCard     the customers creditcard number
+     * @param openBalance the amount to charge to the customers credit to open the
+     *                       account and set the initial balance
+     * @return the userID if successful, null otherwise
+     */
+    public AccountDataBean register(String userID, String password, String fullname, String address, String email, String creditCard, BigDecimal openBalance) throws Exception {
+        if (Log.doActionTrace())
+            Log.trace("TradeAction:register", userID, password, fullname, address, email, creditCard, openBalance);
+        AccountDataBean accountData;
+        accountData = trade.register(userID, password, fullname, address, email, creditCard, openBalance);
+        return accountData;
+    }
+
+    public AccountDataBean register(String userID, String password, String fullname, String address, String email, String creditCard, String openBalanceString) throws Exception {
+        BigDecimal openBalance = new BigDecimal(openBalanceString);
+        return register(userID, password, fullname, address, email, creditCard, openBalance);
+    }
+
+    /**
+     * Reset the TradeData by - removing all newly registered users by scenario
+     * servlet (i.e. users with userID's beginning with "ru:") * - removing all
+     * buy/sell order pairs - setting logoutCount = loginCount
+     *
+     * return statistics for this benchmark run
+     */
+    public RunStatsDataBean resetTrade(boolean deleteAll) throws Exception {
+        RunStatsDataBean runStatsData;
+        runStatsData = trade.resetTrade(deleteAll);
+        return runStatsData;
+    }
+    
+}

Modified: geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/TradeConfigServlet.java
URL: http://svn.apache.org/viewvc/geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/TradeConfigServlet.java?rev=1076572&r1=1076571&r2=1076572&view=diff
==============================================================================
--- geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/TradeConfigServlet.java (original)
+++ geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/TradeConfigServlet.java Thu Mar  3 10:01:51 2011
@@ -103,8 +103,6 @@ public class TradeConfigServlet extends 
     void doConfigUpdate(HttpServletRequest req, HttpServletResponse resp)
         throws Exception {
 
-        TradeConfig currentConfig = new TradeConfig();
-
         String currentConfigStr = "\n\n########## Trade configuration update. Current config:\n\n";
         String runTimeModeStr = req.getParameter("RunTimeMode");
         if (runTimeModeStr != null)
@@ -175,7 +173,8 @@ public class TradeConfigServlet extends 
         }
         currentConfigStr += "\t\tOrderProcessingMode:\t" + TradeConfig.orderProcessingModeNames[TradeConfig.orderProcessingMode]  + "\n";        
         
-        String accessModeStr = req.getParameter("AcessMode");
+        //String accessModeStr = req.getParameter("AcessMode");
+        String accessModeStr = "Standard";
         if (accessModeStr != null)
         {
             try

Modified: geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/TradeServletAction.java
URL: http://svn.apache.org/viewvc/geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/TradeServletAction.java?rev=1076572&r1=1076571&r2=1076572&view=diff
==============================================================================
--- geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/TradeServletAction.java (original)
+++ geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/TradeServletAction.java Thu Mar  3 10:01:51 2011
@@ -20,7 +20,7 @@ import javax.servlet.*;
 import javax.servlet.http.*;
 
 import org.apache.geronimo.daytrader.javaee6.core.api.TradeServices;
-import org.apache.geronimo.daytrader.javaee6.core.direct.TradeAction;
+import org.apache.geronimo.daytrader.javaee6.web.TradeAction;
 import org.apache.geronimo.daytrader.javaee6.entities.*;
 import org.apache.geronimo.daytrader.javaee6.utils.*;
 
@@ -42,11 +42,12 @@ import java.math.BigDecimal;
  * {@link TradeAction} methods to actually perform each trading operation.
  * 
  */
+
 public class TradeServletAction {
 
     private TradeServices tAction = null;
 
-    TradeServletAction() {
+    public TradeServletAction() {
         if (TradeConfig.getAccessMode() == TradeConfig.STANDARD) {
             tAction = new TradeAction();
         } else if (TradeConfig.getAccessMode() == TradeConfig.WEBSERVICES) {             

Added: geronimo/daytrader/trunk/javaee6/modules/web/src/main/webapp/WEB-INF/faces-config.xml
URL: http://svn.apache.org/viewvc/geronimo/daytrader/trunk/javaee6/modules/web/src/main/webapp/WEB-INF/faces-config.xml?rev=1076572&view=auto
==============================================================================
--- geronimo/daytrader/trunk/javaee6/modules/web/src/main/webapp/WEB-INF/faces-config.xml (added)
+++ geronimo/daytrader/trunk/javaee6/modules/web/src/main/webapp/WEB-INF/faces-config.xml Thu Mar  3 10:01:51 2011
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You 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.
+-->
+<faces-config
+    xmlns="http://java.sun.com/xml/ns/javaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
+    version="2.0">
+     <navigation-rule>
+      <from-view-id>/welcome.xhtml</from-view-id>
+        <navigation-case>
+            <from-outcome>Ready to Trade</from-outcome>
+            <to-view-id>/tradehome.xhtml</to-view-id>
+        </navigation-case>
+        <navigation-case>
+            <from-outcome>welcome</from-outcome>
+            <to-view-id>/welcome.xhtml</to-view-id>
+        </navigation-case>         
+    </navigation-rule> 
+    <navigation-rule>
+        <from-view-id>/register.xhtml</from-view-id>
+        <navigation-case>
+            <from-outcome>Registration operation succeeded</from-outcome>
+            <to-view-id>/welcome.xhtml</to-view-id>
+        </navigation-case>
+        <navigation-case>
+            <from-outcome>Registration operation failed</from-outcome>
+            <to-view-id>/register.xhtml</to-view-id>
+        </navigation-case>        
+    </navigation-rule>  
+    <navigation-rule>
+        <from-view-id>/tradehome.xhtml</from-view-id>
+        <navigation-case>
+            <from-outcome>quotes</from-outcome>
+            <to-view-id>/quote.xhtml</to-view-id>
+        </navigation-case>
+        <navigation-case>
+            <from-outcome>Registration operation failed</from-outcome>
+            <to-view-id>/register.xhtml</to-view-id>
+        </navigation-case>        
+    </navigation-rule>
+     <navigation-rule>
+        <from-view-id>/account.xhtml</from-view-id>        
+       <navigation-case>
+            <from-outcome>quotes</from-outcome>
+            <to-view-id>/quote.xhtml</to-view-id>
+        </navigation-case>  
+       <navigation-case>
+            <from-outcome>Go to account</from-outcome>
+            <to-view-id>/quote.xhtml</to-view-id>
+        </navigation-case>        
+    </navigation-rule> 
+<navigation-rule>
+        <from-view-id>/portfolio.xhtml</from-view-id>       
+<navigation-case>
+            <from-outcome>quotes</from-outcome>
+            <to-view-id>/quote.xhtml</to-view-id>
+        </navigation-case>        
+    </navigation-rule>      
+    <navigation-rule>
+        <from-view-id>/configure.xhtml</from-view-id>
+        <navigation-case>
+            <from-outcome>welcome</from-outcome>
+            <to-view-id>/welcome.xhtml</to-view-id>
+        </navigation-case>
+        <navigation-case>
+            <from-outcome>config</from-outcome>
+            <to-view-id>/config.xhtml</to-view-id>
+        </navigation-case>
+         <navigation-case>
+            <from-outcome>stats</from-outcome>
+            <to-view-id>/config.xhtml</to-view-id>
+        </navigation-case>
+    </navigation-rule>
+</faces-config>

Modified: geronimo/daytrader/trunk/javaee6/modules/web/src/main/webapp/WEB-INF/web.xml
URL: http://svn.apache.org/viewvc/geronimo/daytrader/trunk/javaee6/modules/web/src/main/webapp/WEB-INF/web.xml?rev=1076572&r1=1076571&r2=1076572&view=diff
==============================================================================
--- geronimo/daytrader/trunk/javaee6/modules/web/src/main/webapp/WEB-INF/web.xml (original)
+++ geronimo/daytrader/trunk/javaee6/modules/web/src/main/webapp/WEB-INF/web.xml Thu Mar  3 10:01:51 2011
@@ -40,7 +40,28 @@
         <display-name>tradehome</display-name>
         <servlet-name>tradehome</servlet-name>
         <jsp-file>/tradehome.jsp</jsp-file>
-    </servlet>     
+    </servlet>
+    <context-param>
+        <param-name>com.sun.faces.verifyObjects</param-name>
+        <param-value>false</param-value>
+    </context-param>
+    <context-param>
+        <param-name>com.sun.faces.validateXml</param-name>
+        <param-value>false</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.CONFIG_FILES</param-name>
+        <param-value>/WEB-INF/faces-config.xml</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+        </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>*.faces</url-pattern>
+    </servlet-mapping>
 
     <session-config>
         <session-timeout>30</session-timeout>
@@ -80,7 +101,8 @@
         <res-type>javax.jms.TopicConnectionFactory</res-type>
         <res-auth>Application</res-auth>
         <res-sharing-scope>Shareable</res-sharing-scope>
-    </resource-ref> -->
+    </resource-ref>   -->
+   
     
     
     <!-- 

Added: geronimo/daytrader/trunk/javaee6/modules/web/src/main/webapp/account.xhtml
URL: http://svn.apache.org/viewvc/geronimo/daytrader/trunk/javaee6/modules/web/src/main/webapp/account.xhtml?rev=1076572&view=auto
==============================================================================
--- geronimo/daytrader/trunk/javaee6/modules/web/src/main/webapp/account.xhtml (added)
+++ geronimo/daytrader/trunk/javaee6/modules/web/src/main/webapp/account.xhtml Thu Mar  3 10:01:51 2011
@@ -0,0 +1,361 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You 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.
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:h="http://java.sun.com/jsf/html"
+    xmlns:f="http://java.sun.com/jsf/core"
+    xmlns:ui="http://java.sun.com/jsf/facelets">
+<h:head>
+    <title>Trade Account information</title>
+    <link rel="stylesheet" href="style.css" type="text/css" />
+</h:head>
+<h:body bgcolor="#ffffff" link="#000099" vlink="#000099">
+<h:form>
+<table height="54">
+    <tbody>
+        <tr>
+            <td bgcolor="#c93333" align="left" width="640" height="10" colspan="5"><b><font
+                color="#ffffff">DayTrader Account</font></b></td>
+            <td align="center" bgcolor="#000000" width="100" height="10"><font
+                color="#ffffff"><b>DayTrader</b></font></td>
+        </tr>
+        <tr align="left">
+            <td><b><h:outputLink value="tradehome.faces">Home</h:outputLink></b><b> </b></td>
+            <td><b><h:outputLink value="account.faces">Account</h:outputLink></b><b> </b></td>
+            <td><b><h:outputLink value="portfolio.faces">Portfolio</h:outputLink></b><b> </b></td>
+            <td><b><h:outputLink value="quote.faces">Quotes/Trade</h:outputLink></b></td>
+            <td><b><h:commandLink action="#{tradeapp.logout}">Logoff</h:commandLink></b></td>
+            <td></td>
+        </tr>
+        <tr>
+            <td align="right" colspan="6">
+            <hr/>
+            <font color="#ff0000" size="-2"><h:outputLabel value="#{accountdata.currentTime}" color="#ff0000" /></font></td>
+        </tr>
+       
+        <tr>
+            <td colspan="6" bgcolor="#ff0000"><blink><b><font color="#ffffff">Alert:
+            The following Order(s) have completed.</font></b></blink></td>
+        </tr>
+        <tr align="center">
+            <td colspan="6">
+            <h:dataTable id="orders" value="#{accountdata.closedOrders}"
+            var="item" border="1">
+            <f:facet name="header">
+                <h:outputText value="Alert: The following Order(s) have completed."
+                    color="#ff0000" />
+            </f:facet>
+
+            <h:column>
+                <f:facet name="header">
+                    <h:outputText value="order id" />
+                </f:facet>
+                <h:outputText value="#{item.orderID}"></h:outputText>
+            </h:column>
+
+            <h:column>
+                <f:facet name="header">
+                    <h:outputText value="order status" />
+                </f:facet>
+                <h:outputText value="#{item.orderStatus}"></h:outputText>
+            </h:column>
+
+            <h:column>
+                <f:facet name="header">
+                    <h:outputText value="creation date" />
+                </f:facet>
+                <h:outputText value="#{item.openDate}"></h:outputText>
+            </h:column>
+
+            <h:column>
+                <f:facet name="header">
+                    <h:outputText value="completion date" />
+                </f:facet>
+                <h:outputText value="#{item.completionDate}"></h:outputText>
+            </h:column>
+
+            <h:column>
+                <f:facet name="header">
+                    <h:outputText value="txn fee" />
+                </f:facet>
+                <h:outputText value="#{item.orderFee}"></h:outputText>
+            </h:column>
+
+            <h:column>
+                <f:facet name="header">
+                    <h:outputText value="type" />
+                </f:facet>
+                <h:outputText value="#{item.orderType}"></h:outputText>
+            </h:column>
+
+            <h:column>
+                <f:facet name="header">
+                    <h:outputText value="symbol" />
+                </f:facet>
+                <h:outputText value="#{item.symbol}"></h:outputText>
+            </h:column>
+
+            <h:column>
+                <f:facet name="header">
+                    <h:outputText value="quantity" />
+                </f:facet>
+                <h:outputText value="#{item.quantity}"></h:outputText>
+            </h:column>
+        </h:dataTable>
+            </td>
+        </tr>
+       
+    </tbody>
+</table>
+<table width="620">
+    <tbody>
+        <tr>
+            <td valign="top" width="643">
+            <table width="100%">
+                <tbody>
+                    <tr>
+                        <td colspan="8"><font color="#ff0000">result</font></td>
+                    </tr>
+                    <tr>
+                        <td colspan="8" align="left" bgcolor="#cccccc"><b>Account
+                        Information</b></td>
+                    </tr>
+                    <tr>
+                        <td align="right" valign="bottom"><a href="docs/glossary.html">account
+                        created:</a></td>
+                        <td align="left" valign="bottom" colspan="2"><h:outputText value="#{accountdata.creationDate}" /></td>
+                        <td align="right" valign="bottom"><a href="docs/glossary.html">last
+                        login: </a></td>
+                        <td align="left" valign="bottom" colspan="3"><h:outputText value="#{accountdata.lastLogin}" /></td>
+                        <td align="left" valign="bottom"></td>
+                    </tr>
+                    <tr>
+                        <td align="right" valign="bottom"><a href="docs/glossary.html">account
+                        ID</a></td>
+                        <td valign="bottom"><h:outputText value="#{accountdata.accountID}" /></td>
+                        <td valign="bottom"></td>
+                        <td align="right" valign="bottom"><a href="docs/glossary.html">total
+                        logins: </a></td>
+                        <td valign="bottom"><h:outputText value="#{accountdata.loginCount}" /></td>
+                        <td valign="bottom"></td>
+                        <td align="right" valign="bottom"><a href="docs/glossary.html">cash
+                        balance: </a></td>
+                        <td valign="bottom"><h:outputText value="#{accountdata.balance}" /></td>
+                    </tr>
+                    <tr>
+                        <td align="right" valign="bottom"><a href="docs/glossary.html">user
+                        ID:</a></td>
+                        <td valign="bottom"><h:outputText value="#{accountdata.profileID}" /></td>
+                        <td valign="bottom"></td>
+                        <td align="right" valign="bottom"><a href="docs/glossary.html">total
+                        logouts: </a></td>
+                        <td valign="bottom"><h:outputText value="#{accountdata.logoutCount}" /></td>
+                        <td valign="bottom"></td>
+                        <td valign="bottom" align="right"><a href="docs/glossary.html">opening
+                        balance: </a></td>
+                        <td valign="bottom"><h:outputText value="#{accountdata.openBalance}" /></td>
+                    </tr>
+                    <tr>
+                        <td colspan="8"></td>
+                    </tr>
+                </tbody>
+            </table>
+            <table width="100%">
+                <tbody>
+
+                    <tr>
+                        <td colspan="5" bgcolor="#cccccc"><b>Total Orders: </b></td>
+                        <td bgcolor="#cccccc" align="right"><b>
+                        <a href="app?action=account&amp;showAllOrders=true">show all orders</a></b></td>
+                    </tr>
+                    <tr align="center">
+                        <td colspan="6">
+                        <h:dataTable id="orders" value="#{accountdata.allOrders}" var="item">
+        <f:facet name="header">
+            <h:outputText value="Recent Orders" color="#ff0000" />
+        </f:facet>
+
+        <h:column>
+            <f:facet name="header">
+                <h:outputText value="order id" />
+            </f:facet>
+            <h:outputText value="#{item.orderID}"></h:outputText>
+        </h:column>
+
+        <h:column>
+            <f:facet name="header">
+                <h:outputText value="order status" />
+            </f:facet>
+            <h:outputText value="#{item.orderStatus}"></h:outputText>
+        </h:column>
+
+        <h:column>
+            <f:facet name="header">
+                <h:outputText value="creation date" />
+            </f:facet>
+            <h:outputText value="#{item.openDate}"></h:outputText>
+        </h:column>
+
+        <h:column>
+            <f:facet name="header">
+                <h:outputText value="completion date" />
+            </f:facet>
+            <h:outputText value="#{item.completionDate}"></h:outputText>
+        </h:column>
+
+        <h:column>
+            <f:facet name="header">
+                <h:outputText value="txn fee" />
+            </f:facet>
+            <h:outputText value="#{item.orderFee}"></h:outputText>
+        </h:column>
+
+        <h:column>
+            <f:facet name="header">
+                <h:outputText value="type" />
+            </f:facet>
+            <h:outputText value="#{item.orderType}"></h:outputText>
+        </h:column>
+
+        <h:column>
+            <f:facet name="header">
+                <h:outputText value="symbol" />
+            </f:facet>
+            <h:outputText value="#{item.symbol}"></h:outputText>
+        </h:column>
+
+        <h:column>
+            <f:facet name="header">
+                <h:outputText value="quantity" />
+            </f:facet>
+            <h:outputText value="#{item.quantity}"></h:outputText>
+        </h:column>
+
+        <h:column>
+            <f:facet name="header">
+                <h:outputText value="price" />
+            </f:facet>
+            <h:outputText value="#{item.price}"></h:outputText>
+        </h:column>
+
+        <h:column>
+            <f:facet name="header">
+                <h:outputText value="total" />
+            </f:facet>
+            <h:outputText value="#{item.total}"></h:outputText>
+        </h:column>
+    </h:dataTable>
+                        </td>
+                    </tr>
+                    <tr>
+                        <td colspan="6"></td>
+                    </tr>
+                </tbody>
+            </table>
+            
+            <table width="100%">
+                <tbody>
+                    <tr>
+                        <td colspan="6" bgcolor="#cccccc"><b>Account Profile</b></td>
+                    </tr>
+                    <tr>
+                        <td align="right" valign="top" width="113"><a
+                            href="docs/glossary.html">user ID:</a></td>
+                        <td align="left" valign="top" colspan="2" width="228"><h:inputText id="uid" value="#{tradeapp.userID}" required="true" /></td>
+                            
+                        <td align="right" valign="top" width="73" colspan="2"><a
+                            href="docs/glossary.html">full name: </a></td>
+                        <td align="left" valign="top"><h:inputText id="fullname" value="#{tradeapp.fullname}"
+                readonly="true" /></td>
+                    </tr>
+                    <tr>
+                        <td align="right" width="113"><a href="docs/glossary.html">password:
+                        </a></td>
+                        <td colspan="2" width="228"><h:inputSecret id="password" value="#{tradeapp.password}"
+                required="true">
+                <f:validateLength minimum="1" maximum="12" />
+            </h:inputSecret></td>
+                        <td align="right" width="73" colspan="2"><a
+                            href="docs/glossary.html">address: </a></td>
+                        <td><h:inputText id="address" value="#{tradeapp.address}" readonly="true" /></td>
+                    </tr>
+                    <tr>
+                        <td align="right" width="113"><a href="docs/glossary.html">confirm
+                        password: </a><br/>
+                        </td>
+                        <td colspan="2" align="left" width="228"><h:inputText id="cpassword" value="#{tradeapp.cpassword}"
+                required="true" /></td>
+                        <td align="right" width="73" colspan="2"><a
+                            href="docs/glossary.html">credit card: </a></td>
+                        <td align="left"><h:inputText id="ccn" value="#{tradeapp.ccn}" required="true" ><f:validateLength minimum="1" maximum="30" /></h:inputText></td>
+                    </tr>
+                    <tr>
+                        <td align="right" width="113"><a href="docs/glossary.html">email
+                        address: </a></td>
+                        <td colspan="2" align="left" width="228">
+                        <h:inputText id="email" value="#{tradeapp.email}" required="true" />
+                        </td>
+                        <td align="right" width="73" colspan="2"></td>
+                        <td align="center">
+                        <h:commandButton id="submit" type="submit" value="Update Profile" action="#{tradeapp.updateProfile}" /></td>
+                    </tr>
+                    <tr>
+                        <td width="113"></td>
+                        <td colspan="5"></td>
+                    </tr>
+                </tbody>
+            </table>
+            
+            </td>
+        </tr>
+    </tbody>
+</table>
+<table height="54" style="font-size: smaller">
+    <tbody>
+        <tr>
+            <td colspan="2">
+            <hr/>
+            </td>
+        </tr>
+        <tr>
+            <td colspan="2">
+            <table width="100%" style="font-size: smaller">
+                <tbody>
+                    <tr>
+                        <td>Note: Click any <a href="docs/glossary.html">symbol</a> for a
+                        quote or to trade.</td>
+                        <td align="right">
+                        <h:commandButton id="submit" type="submit" value="quotes" action="#{quotedata.getQuotesBySymbols}" />
+                        <h:inputText id="symbols" value="#{quotedata.symbols}" required="true"><f:validateLength minimum="1" maximum="40" /></h:inputText>
+                        </td>
+                    </tr>
+                </tbody>
+            </table>
+            </td>
+        </tr>
+        <tr>
+            <td bgcolor="#c93333" align="left" width="640" height="10"><b><font
+                color="#ffffff">DayTrader Account</font></b></td>
+            <td align="center" bgcolor="#000000" width="100" height="10"><font
+                color="#ffffff"><b>DayTrader</b></font></td>
+        </tr>
+    </tbody>
+</table>
+</h:form>
+</h:body>
+</html>

Added: geronimo/daytrader/trunk/javaee6/modules/web/src/main/webapp/config.xhtml
URL: http://svn.apache.org/viewvc/geronimo/daytrader/trunk/javaee6/modules/web/src/main/webapp/config.xhtml?rev=1076572&view=auto
==============================================================================
--- geronimo/daytrader/trunk/javaee6/modules/web/src/main/webapp/config.xhtml (added)
+++ geronimo/daytrader/trunk/javaee6/modules/web/src/main/webapp/config.xhtml Thu Mar  3 10:01:51 2011
@@ -0,0 +1,219 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You 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.
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:h="http://java.sun.com/jsf/html"
+    xmlns:f="http://java.sun.com/jsf/core"
+    xmlns:ui="http://java.sun.com/jsf/facelets">
+    <h:head>
+    <meta http-equiv="Content-Style-Type" content="text/css" />
+    <title>Welcome to Daytrader</title>    
+</h:head>
+<h:body bgcolor="#ffffff" link="#000099">
+
+<table style="font-size: smaller">
+	<tbody>
+		<tr>
+			<td bgcolor="#c93333" align="left" width="640" height="10"><b><font
+				color="#ffffff">DayTrader Configuration</font></b></td>
+			<td align="center" bgcolor="#000000" width="100" height="10"><font
+				color="#ffffff"><b>DayTrader</b></font></td>
+		</tr>
+		<tr>
+			<td colspan="6">
+			<hr/>
+			</td>
+		</tr>
+		<tr>
+			<td colspan="6"></td>
+		</tr>
+	</tbody>
+</table>
+<h:form>
+<table width="740" height="30">
+	<tbody>
+		<tr>
+			<td></td>
+			<td><font color="#ff0033"><h:outputLabel value="#{tradeconfig.result}"/></font></td>
+			<td></td>
+		</tr>
+	</tbody>
+</table>
+
+<table border="1" width="740">
+	<tbody>
+		<tr>
+			<td colspan="2">The current DayTrader runtime configuration is
+			detailed below. View and optionally update run-time parameters.
+			&nbsp;<br/>
+			<br/>
+			<b>NOTE: </b>Parameters settings will return to default
+			on&nbsp;server restart. To make configuration settings persistent
+			across application server stop/starts, edit the servlet init
+			parameters for each DayTrader servlet. This is described in the 
+			<a href="docs/tradeFAQ.html">DayTrader FAQ</a><br/>
+			<hr/>
+			</td>
+		</tr>
+		<tr>
+			<td align="left"><b>Run-Time Mode </b>
+			<p align="left">
+			<h:selectOneRadio value="#{tradeconfig.runtimeMode}">
+                    <f:selectItems value="#{tradeconfig.runtimeModeList}" />
+                </h:selectOneRadio></p>
+			</td>
+			<td><br/>
+			Run Time Mode determines server implementation of the TradeServices
+			to use in the DayTrader application Enterprise Java Beans including
+			Session, Entity and Message beans or Direct mode which uses direct
+			database and JMS access. See <a href="docs/tradeFAQ.html">DayTrader
+			FAQ</a> for details.<br/>
+			</td>
+		</tr>
+		
+		
+		<tr>
+			<td align="left"><b>JPA Layer</b>
+			<p align="left"><h:selectOneRadio value="#{tradeconfig.JPALayer}">
+                    <f:selectItems value="#{tradeconfig.JPALayerList}" />
+                </h:selectOneRadio></p>
+			</td>
+			<td><br/>
+			JPA Layer determines what kind of JPA Implementation Daytrader 
+			EJB classes use. Typically, Apache Geronimo uses OpenJPA, and RedHat
+			JBoss 5 uses Hibernate.<br/>
+			</td>
+		</tr>
+
+
+		<tr>
+			<td align="left"><b>Order-Processing Mode </b>
+			<p align="left">
+			<h:selectOneRadio value="#{tradeconfig.orderProcessingMode}">
+                    <f:selectItems value="#{tradeconfig.orderProcessingModeList}" />
+                </h:selectOneRadio></p>
+			</td>
+			<td><br/>
+			Order Processing Mode determines the mode for completing stock
+			purchase and sell operations. Synchronous mode completes the order
+			immediately. Asychronous_2-Phase performs a 2-phase commit over the EJB Entity/DB
+ 			and MDB/JMS transactions. See <a href="docs/tradeFAQ.html">DayTrader
+ 			FAQ</a> for details. <b></b><br/>
+ 			</td>
+		</tr>
+		
+		<tr>
+			<td align="left"><b>Scenario Workload Mix</b>
+			<p align="left"><h:selectOneRadio value="#{tradeconfig.workloadMix}">
+                    <f:selectItems value="#{tradeconfig.workloadMixNamesList}" />
+                </h:selectOneRadio></p>
+			</td>
+			<td>This setting determines the runtime workload mix of DayTrader
+			operations when driving the benchmark through TradeScenarioServlet.
+			See <a href="docs/tradeFAQ.html">DayTrader FAQ</a> for details.</td>
+		</tr>
+		<tr>
+			<td align="left"><b>WebInterface</b>
+			<p align="left"><h:selectOneRadio value="#{tradeconfig.webInterface}">
+                    <f:selectItems value="#{tradeconfig.webInterfaceList}" />
+                </h:selectOneRadio></p>
+			</td>
+			<td>This setting determines the Web interface technology used, JSPs
+			or JSPs with static images and GIFs.</td>
+		</tr>
+		
+		<tr>
+			<td colspan="2" align="center"><b>Miscellaneous Settings</b></td>
+		</tr>
+		<tr>
+			<td align="left"><b>DayTrader Max Users </b><br/>
+			<h:inputText value="#{tradeconfig.maxUsers}" required="true"></h:inputText><br/>
+			<b>Trade Max Quotes</b><br/>
+			<h:inputText value="#{tradeconfig.maxQuotes}" required="true"></h:inputText></td>
+			<td>By default the DayTrader database is populated with 200 users
+			(uid:0 - uid:199) and 400 quotes (s:0 - s:399). <br/>
+			</td>
+		</tr>
+		<tr>
+			<td align="left"><b>Market Summary Interval</b><br/>
+			<h:inputText value="#{tradeconfig.marketSummaryInterval}" required="true"></h:inputText></td>
+			<td>&lt; 0 Do not perform Market Summary Operations.<br/>
+			= 0 Perform market Summary on every request.<br/>
+			<br/>&gt; 0 number of seconds between Market Summary Operations<br/></td>
+		</tr>
+		<tr>
+			<td align="left"><b>Primitive Iteration</b><br/>
+			<h:inputText value="#{tradeconfig.primIterations}" required="true"></h:inputText></td>
+			<td>By default the DayTrader primitives are execute one operation per
+			web request. Change this value to repeat operations multiple times
+			per web request.</td>
+		</tr>
+		<tr>
+			<td align="left"><h:selectBooleanCheckbox title="Publish Quote Updates"
+                    value="#{tradeconfig.publishQuotePriceChange}"></h:selectBooleanCheckbox>
+               <b><font size="-1">Publish Quote Updates</font></b><br/>
+            </td>
+            <td>
+                Publish quote price changes to a JMS topic.<br/>
+            </td>
+        </tr>
+		<tr>
+			<td align="left"><h:selectBooleanCheckbox title="Enable long run support"
+                    value="#{tradeconfig.longRun}"></h:selectBooleanCheckbox><b><font size="-1">Enable long run support</font></b><br/>
+            </td>
+            <td>
+                Enable long run support by disabling the show all orders query performed on the Account page.<br/>
+            </td>
+        </tr>
+       <tr>
+            <td align="left">
+            <h:selectBooleanCheckbox title="Enable operation trace"
+                    value="#{tradeconfig.actionTrace}"></h:selectBooleanCheckbox><b><font size="-1">Enable operation trace</font></b><br/>
+			<h:selectBooleanCheckbox title="Enable full trace"
+                    value="#{tradeconfig.trace}"></h:selectBooleanCheckbox> <b><font size="-1">Enable full trace</font></b>
+			</td>
+			<td>Enable DayTrader processing trace messages<br/>
+			</td>
+		</tr>
+		<tr>
+			<td colspan="2" align="right"> <h:commandButton id="submit" type="submit" value="Update Config"  action="#{tradeconfig.updateConfig}" /></td>
+		</tr>
+	</tbody>
+</table>
+
+<table width="740" height="54" style="font-size: smaller">
+	<tbody>
+		<tr>
+			<td colspan="2">
+			<hr/>
+			</td>
+		</tr>
+		<tr>
+			<td colspan="2"></td>
+		</tr>
+		<tr>
+			<td bgcolor="#c93333" align="left" width="640" height="10"><b><font
+				color="#ffffff">DayTrader Configuration</font></b></td>
+			<td align="center" bgcolor="#000000" width="100" height="10"><font
+				color="#ffffff"><b>DayTrader</b></font></td>
+		</tr>
+	</tbody>
+</table>
+</h:form>
+</h:body>
+</html>

Added: geronimo/daytrader/trunk/javaee6/modules/web/src/main/webapp/configure.xhtml
URL: http://svn.apache.org/viewvc/geronimo/daytrader/trunk/javaee6/modules/web/src/main/webapp/configure.xhtml?rev=1076572&view=auto
==============================================================================
--- geronimo/daytrader/trunk/javaee6/modules/web/src/main/webapp/configure.xhtml (added)
+++ geronimo/daytrader/trunk/javaee6/modules/web/src/main/webapp/configure.xhtml Thu Mar  3 10:01:51 2011
@@ -0,0 +1,100 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You 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.
+-->
+<!-- Sample HTML file -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:h="http://java.sun.com/jsf/html"
+    xmlns:f="http://java.sun.com/jsf/core"
+    xmlns:ui="http://java.sun.com/jsf/facelets">
+
+<h:head>
+    <meta http-equiv="Content-Style-Type" content="text/css" />
+    <title>Configuration and utilities</title>
+</h:head>
+
+<h:body BGCOLOR="#FFFFFF">
+<h:form>
+<table width="740" align="left" border="1">
+    <tbody>
+       <tr>
+            <td align="center" colspan="2">
+                <h3>Configuration Utilities </h3>
+            </td>
+        </tr>
+       <tr>
+            <td align="center"><b><font face="Times New Roman" size="-1">Benchmark
+                Configuration <br/>
+                Tools</font></b></td>
+            <td align="center"><b><font face="Times New Roman" size="-1"></font>Description
+            </b></td>
+        </tr>
+       <tr>
+            <td><h:commandLink action="#{tradeconfig.resetTrade}"><font face="Times New Roman"
+                                                         size="-1">Reset DayTrader<br/>
+                (to be done before each run)</font></h:commandLink></td>
+            <td>Reset the DayTrader runtime to a clean starting point by logging
+                off all users, removing new registrations and other general cleanup.
+                For consistent results this URL should be run <b>before each </b>Trade
+                run.</td>
+        </tr>
+       <tr>
+            <td><h:outputLink value="config.faces"><font face="Times New Roman"
+                                                      size="-1">Configure DayTrader run-time parameters</font></h:outputLink></td>
+            <td>This link provides an interface to set configuration parameters
+                that control DayTrader run-time characteristics such as using EJBs or
+                JDBC. This link also provides utilities such as setting the UID and
+                Password for a remote or protected database when using JDBC.</td>
+        </tr>
+       <tr>
+            <td><h:commandLink action="#{tradeconfig.buildDBTables}"><font
+                    face="Times New Roman" size="-1">(Re)-create
+                &nbsp;DayTrader&nbsp;Database Tables and Indexes</font></h:commandLink></td>
+            <td>This link is used to (a) initially create or (b) drop and re-create the
+                DayTrader tables. <b>A DayTrader database should exist before doing this action</b>, 
+                the existing DayTrader tables, if any, are dropped, then new
+                tables and indexes are created. <b>Please stop and re-start the Daytrader application 
+                (or your application server) after this action and then use the "Repopulate 
+                DayTrader Database" link below to repopulate the new database tables.</b></td>
+        </tr>
+       <tr>
+            <td><h:commandLink action="#{tradeconfig.buildDB}"><font
+                    face="Times New Roman" size="-1">(Re)-populate
+                &nbsp;DayTrader&nbsp;Database</font></h:commandLink></td>
+            <td>This link is used to initially populate or re-populate the
+                DayTrader database with fictitious users (uid:0, uid:1, ...) and
+                stocks (s:0, s:1, ...). First all existing users and stocks are
+                deleted (if any). The database is then populated with a new set of
+                DayTrader users and stocks. This option does not drop and recreate the 
+                Daytrader db tables.</td>
+        </tr>
+       <tr>
+            <td><h:commandLink action="#{tradeconfig.buildDB}"><font face="Times New Roman"
+                                                         size="-1">Test DayTrader Scenario</font></h:commandLink></td>
+            <td>This links pops up a browser to manually step through a DayTrader
+                scenario by hitting &quot;Reload&quot; on your browser</td>
+        </tr>
+       <tr>
+            <td><h:outputLink value="docs/tradeversion.html"><font size="-1">DayTrader
+                Version</font></h:outputLink></td>
+            <td>DayTrader application version and change history information</td>
+        </tr>
+    </tbody>
+</table>
+</h:form>
+</h:body>
+</html>

Added: geronimo/daytrader/trunk/javaee6/modules/web/src/main/webapp/contentHome.xhtml
URL: http://svn.apache.org/viewvc/geronimo/daytrader/trunk/javaee6/modules/web/src/main/webapp/contentHome.xhtml?rev=1076572&view=auto
==============================================================================
--- geronimo/daytrader/trunk/javaee6/modules/web/src/main/webapp/contentHome.xhtml (added)
+++ geronimo/daytrader/trunk/javaee6/modules/web/src/main/webapp/contentHome.xhtml Thu Mar  3 10:01:51 2011
@@ -0,0 +1,78 @@
+<!--
+ Licensed to the apache Software Foundation (aSF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The aSF licenses this file to You 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.
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html>
+<head>
+<meta http-equiv="Content-Style-Type" content="text/css" />
+<title>Geronimo performance benchmark sample overview</title>
+</head>
+
+<body bgcolor="#FFFFFF">
+<table width="740">
+	<tr>
+		<td>
+		<hr/>
+		</td>
+	</tr>
+	<tr>
+		<td>
+		<p align="left"><font size="+1"><b>Overview</b></font></p>
+		<blockquote><font face="Times New Roman" size="-1">The Geronimo<SUp>TM</SUp>
+		performance benchmark sample provides a suite of apache developed
+		workloads for characterizing performance of the Geronimo J2EE
+		application Server. The workloads consist of an end to end web
+		application and a full set of primitives. The applications are a
+		collection of Java classes, Java Servlets, Java Server pages, Web
+		Services, and Enterprise Java Beans built to open J2EE apIs. Together
+		these provide versatile and portable test cases designed to measure
+		aspects of scalability and performance.</font></blockquote>
+		<p align="center"><img src="images/tradeOverview.png" width="717" height="538" border="0" alt="" /> <br/>
+		<b>Daytrader J2EE Components </b><br/>
+		<b>Model-View-Controller architecture</b></p>
+		<blockquote><font size="-1"><b>Daytrader</b><br/>
+		Daytrader is the Geronimo end-to-end benchmark and performance sample
+		application. The new Daytrader benchmark has been re-designed and
+		developed to cover Geronimo's significantly expanding programming
+		model. This provides a real world workload driving Geronimo's
+		implementation of J2EE 1.4 and Web Services including key Geronimo
+		performance components and features.<br/>
+		<br/>
+		Daytrader's new design spans J2EE 1.4 including the new EJB 2.1
+		component architecture, Message Driven beans, transactions (1-phase,
+		2-phase commit) and Web Services (SOap, WSDL).<br/>
+		<br/>
+		<b>primitives</b><br/>
+		</font><font face="Times New Roman" size="-1">The <a
+			href="web_prmtv.faces">primitives</a> provide a set of workloads to
+		individually test various components of the Geronimo application
+		Server. The primitives leverage the Daytrader application
+		infrastructure to test specific Geronimo J2EE components such as the
+		servlet engine, JSp support, EJB Entitiy, Session and Message Driven
+		beans, HTTp Session support and more.</font></blockquote>
+		<blockquote><font face="Times New Roman" size="-1">additional overview
+		information is included in the <a href="docs/tradeFaQ.html">FAQ</a></font></blockquote>
+		</td>
+	</tr>
+	<tr>
+		<td>
+		<hr/>
+		</td>
+	</tr>
+</table>
+</body>
+</html>

Modified: geronimo/daytrader/trunk/javaee6/modules/web/src/main/webapp/displayQuote.jsp
URL: http://svn.apache.org/viewvc/geronimo/daytrader/trunk/javaee6/modules/web/src/main/webapp/displayQuote.jsp?rev=1076572&r1=1076571&r2=1076572&view=diff
==============================================================================
--- geronimo/daytrader/trunk/javaee6/modules/web/src/main/webapp/displayQuote.jsp (original)
+++ geronimo/daytrader/trunk/javaee6/modules/web/src/main/webapp/displayQuote.jsp Thu Mar  3 10:01:51 2011
@@ -15,7 +15,7 @@
   limitations under the License.
 -->
 <%@ page
-    import="java.math.BigDecimal, org.apache.geronimo.daytrader.javaee6.core.direct.*, org.apache.geronimo.daytrader.javaee6.entities.*, org.apache.geronimo.daytrader.javaee6.utils.*,org.apache.geronimo.daytrader.javaee6.core.api.*"
+    import="java.math.BigDecimal, org.apache.geronimo.daytrader.javaee6.core.direct.*, org.apache.geronimo.daytrader.javaee6.entities.*, org.apache.geronimo.daytrader.javaee6.utils.*,org.apache.geronimo.daytrader.javaee6.core.api.*, org.apache.geronimo.daytrader.javaee6.web.TradeAction"
     session="true" isThreadSafe="true" isErrorPage="false"%>
 <% 
     String symbol = request.getParameter("symbol");

Added: geronimo/daytrader/trunk/javaee6/modules/web/src/main/webapp/footer.xhtml
URL: http://svn.apache.org/viewvc/geronimo/daytrader/trunk/javaee6/modules/web/src/main/webapp/footer.xhtml?rev=1076572&view=auto
==============================================================================
--- geronimo/daytrader/trunk/javaee6/modules/web/src/main/webapp/footer.xhtml (added)
+++ geronimo/daytrader/trunk/javaee6/modules/web/src/main/webapp/footer.xhtml Thu Mar  3 10:01:51 2011
@@ -0,0 +1,42 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You 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.
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html>
+<head>
+<title>daytrader2_matts_mods</title>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+</head>
+<body bgcolor="#FFFFFF" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
+<table id="Table_01" width="785" height="58" border="0" cellpadding="0" cellspacing="0">
+	<tr>
+		<td>
+			<table id="footer" width="784" height="58" border="0" cellpadding="0" cellspacing="0">
+				<tr>
+					<td>
+						<img src="images/bottomRedBar.gif" width="784" height="5" alt="" /></td>
+				</tr>
+				<tr>
+					<td>
+						<img src="images/copyRight.gif" width="784" height="53" alt="" /></td>
+				</tr>
+			</table></td>
+	</tr>
+</table>
+<!-- End ImageReady Slices -->
+</body>
+</html>

Added: geronimo/daytrader/trunk/javaee6/modules/web/src/main/webapp/header.xhtml
URL: http://svn.apache.org/viewvc/geronimo/daytrader/trunk/javaee6/modules/web/src/main/webapp/header.xhtml?rev=1076572&view=auto
==============================================================================
--- geronimo/daytrader/trunk/javaee6/modules/web/src/main/webapp/header.xhtml (added)
+++ geronimo/daytrader/trunk/javaee6/modules/web/src/main/webapp/header.xhtml Thu Mar  3 10:01:51 2011
@@ -0,0 +1,97 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You 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.
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html>
+<head>
+<title>DayTrader Header</title>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+</head>
+<body bgcolor="#FFFFFF" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
+
+<table id="Table_01" width="785" height="90" border="0" cellpadding="0" cellspacing="0">
+	<tr>
+		<td width="1" height="1" rowspan="3">
+			<img src="images/spacer.gif" width="1" height="1" alt="" /></td>
+		<td>
+			<table id="header" width="784" height="89" border="0" cellpadding="0" cellspacing="0">
+				<tr>
+					<td colspan="4">
+						<img src="images/dayTraderLogo.gif" width="319" height="53" alt="" /></td>
+					<td width="465" height="53" colspan="6">
+						<img src="images/spacer.gif" width="465" height="53" alt="" /></td>
+				</tr>
+				<tr>
+					<td>
+						<a href="contentHome.faces" target="TradeMainContent"
+							onmouseover="window.status='Choose to see the DayTrader Architecture';  return true;"
+							onmouseout="window.status='';  return true;">
+							<img src="images/home.gif" width="92" height="29" border="0" alt="" /></a></td>
+					<td width="1" height="29">
+						<img src="images/spacer.gif" width="1" height="29" alt="" /></td>
+					<td>
+						<a href="welcome.faces" target="TradeMainContent"
+							onmouseover="window.status='Select this tab to log on and trade portfolios.  Users are u:n and passwords are xxx';  return true;"
+							onmouseout="window.status='';  return true;">
+							<img src="images/tradingAndPortfolios.gif" width="140" height="29" border="0" alt="" /></a></td>
+					<td colspan="2">
+						<a href="configure.faces" target="TradeMainContent"
+							onmouseover="window.status='Allows for runtime configuration of DayTrader';  return true;"
+							onmouseout="window.status='';  return true;">
+							<img src="images/configuration.gif" width="91" height="29" border="0" alt="" /></a></td>					
+					<td>
+						<a href="web_prmtv.faces" target="TradeMainContent"
+							onmouseover="window.status='Primitives used to test various J2EE and Server Features';  return true;"
+							onmouseout="window.status='';  return true;">
+							<img src="images/primitives.gif" width="78" height="29" border="0" alt="" /></a></td>
+					<td>
+						<a href="docs/tradeFAQ.html" target="TradeMainContent">
+							<img src="images/faq.gif" width="86" height="29" border="0" alt="" /></a></td>					
+					<td width="96" height="29">
+						<img src="images/spacer.gif" width="96" height="29" alt="" /></td>
+				</tr>
+				<tr>
+					<td colspan="10">
+						<img src="images/topRedBar.gif" width="550" height="6" alt="" /></td>
+				</tr>
+				<tr>
+					<td>
+						<img src="images/spacer.gif" width="92" height="1" alt="" /></td>
+					<td>
+						<img src="images/spacer.gif" width="1" height="1" alt="" /></td>
+					<td>
+						<img src="images/spacer.gif" width="140" height="1" alt="" /></td>
+					<td>
+						<img src="images/spacer.gif" width="86" height="1" alt="" /></td>
+					<td>
+						<img src="images/spacer.gif" width="5" height="1" alt="" /></td>
+					<td>
+						<img src="images/spacer.gif" width="77" height="1" alt="" /></td>
+					<td>
+						<img src="images/spacer.gif" width="78" height="1" alt="" /></td>
+					<td>
+						<img src="images/spacer.gif" width="86" height="1" alt="" /></td>
+					<td>
+						<img src="images/spacer.gif" width="123" height="1" alt="" /></td>
+					<td>
+						<img src="images/spacer.gif" width="96" height="1" alt="" /></td>
+				</tr>
+			</table></td>
+	</tr>
+</table>
+</body>
+</html>

Added: geronimo/daytrader/trunk/javaee6/modules/web/src/main/webapp/index.xhtml
URL: http://svn.apache.org/viewvc/geronimo/daytrader/trunk/javaee6/modules/web/src/main/webapp/index.xhtml?rev=1076572&view=auto
==============================================================================
--- geronimo/daytrader/trunk/javaee6/modules/web/src/main/webapp/index.xhtml (added)
+++ geronimo/daytrader/trunk/javaee6/modules/web/src/main/webapp/index.xhtml Thu Mar  3 10:01:51 2011
@@ -0,0 +1,39 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You 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.
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 frameset//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:h="http://java.sun.com/jsf/html"
+    xmlns:f="http://java.sun.com/jsf/core"
+    xmlns:ui="http://java.sun.com/jsf/facelets">
+<head>
+<meta http-equiv="Content-Style-Type" content="text/css" />
+<title>DayTrader</title>
+</head>
+
+<frameset rows="90,*,58" cols="785" frameborder="no" framespacing="0" border="0" >
+	<frame src="./header.faces" scrolling="NO" name="TradeframeTop" noresize="noresize" />
+	<frame src="./contentHome.faces" scrolling="AUTO" name="TradeMainContent" noresize="noresize" />
+	<frame src="./footer.faces" name="TradeframeBottom" scrolling="NO" noresize="noresize" />
+	<noframes>
+	<body>
+	<P>Need browser which supports frames to see this page</P>
+	</body>
+	</noframes>
+</frameset>
+
+</html>

Modified: geronimo/daytrader/trunk/javaee6/modules/web/src/main/webapp/marketSummary.jsp
URL: http://svn.apache.org/viewvc/geronimo/daytrader/trunk/javaee6/modules/web/src/main/webapp/marketSummary.jsp?rev=1076572&r1=1076571&r2=1076572&view=diff
==============================================================================
--- geronimo/daytrader/trunk/javaee6/modules/web/src/main/webapp/marketSummary.jsp (original)
+++ geronimo/daytrader/trunk/javaee6/modules/web/src/main/webapp/marketSummary.jsp Thu Mar  3 10:01:51 2011
@@ -17,7 +17,7 @@
 
 
 <%@ page
-    import="java.util.Collection, java.util.Iterator, org.apache.geronimo.daytrader.javaee6.core.direct.*, org.apache.geronimo.daytrader.javaee6.core.api.*, org.apache.geronimo.daytrader.javaee6.entities.*, org.apache.geronimo.daytrader.javaee6.core.beans.*"
+    import="java.util.Collection, java.util.Iterator, org.apache.geronimo.daytrader.javaee6.core.direct.*, org.apache.geronimo.daytrader.javaee6.core.api.*, org.apache.geronimo.daytrader.javaee6.entities.*, org.apache.geronimo.daytrader.javaee6.core.beans.*, org.apache.geronimo.daytrader.javaee6.web.TradeAction"
     session="true" isThreadSafe="true" isErrorPage="false"%>
 
 <%



Mime
View raw message