You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by ho...@apache.org on 2005/10/03 04:35:08 UTC

svn commit: r293214 [1/4] - in /geronimo/trunk/sandbox/daytrader: ./ modules/ear/ modules/ear/src/META-INF/ modules/ear/src/application/ modules/ear/src/conf/ modules/ear/src/test-cactus/ modules/ear/src/webapp2/ modules/ear/target/ modules/ejb/src/MET...

Author: hogstrom
Date: Sun Oct  2 19:34:49 2005
New Revision: 293214

URL: http://svn.apache.org/viewcvs?rev=293214&view=rev
Log:
Updates to maven scripts and directory structure for day trader

Added:
    geronimo/trunk/sandbox/daytrader/modules/ear/src/META-INF/
      - copied from r292905, geronimo/trunk/sandbox/daytrader/modules/ear/src/application/META-INF/
    geronimo/trunk/sandbox/daytrader/modules/ear/src/META-INF/application.xml
      - copied unchanged from r293212, geronimo/trunk/sandbox/daytrader/modules/ear/src/application/META-INF/application.xml
    geronimo/trunk/sandbox/daytrader/modules/ejb/src/META-INF/
    geronimo/trunk/sandbox/daytrader/modules/ejb/src/META-INF/ejb-jar.xml   (with props)
    geronimo/trunk/sandbox/daytrader/modules/streamer/src/client/
    geronimo/trunk/sandbox/daytrader/modules/streamer/src/client/META-INF/
    geronimo/trunk/sandbox/daytrader/modules/streamer/src/client/META-INF/MANIFEST.MF
    geronimo/trunk/sandbox/daytrader/modules/streamer/src/client/META-INF/application-client.xml   (with props)
    geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/
    geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/
    geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/
    geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/
    geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/
    geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/
    geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/OrdersAlertFilter.java   (with props)
    geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/TestServlet.java   (with props)
    geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/TradeAppServlet.java   (with props)
    geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/TradeBuildDB.java   (with props)
    geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/TradeConfigServlet.java   (with props)
    geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/TradeScenarioServlet.java   (with props)
    geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/TradeServletAction.java   (with props)
    geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/TradeWebContextListener.java   (with props)
    geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/
    geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingBean.java   (with props)
    geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingJDBCRead.java   (with props)
    geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingJDBCWrite.java   (with props)
    geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet.java   (with props)
    geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2EntityLocal.java   (with props)
    geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2EntityRemote.java   (with props)
    geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2Include.java   (with props)
    geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2IncludeRcv.java   (with props)
    geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2JNDI.java   (with props)
    geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2Jsp.java   (with props)
    geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2MDBQueue.java   (with props)
    geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2MDBTopic.java   (with props)
    geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2Servlet.java   (with props)
    geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2ServletRcv.java   (with props)
    geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2Session.java   (with props)
    geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2Session2CMROne2Many.java   (with props)
    geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2Session2CMROne2One.java   (with props)
    geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2Session2Entity.java   (with props)
    geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2Session2EntityCollection.java   (with props)
    geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2TwoPhase.java   (with props)
    geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServletWriter.java   (with props)
    geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingSession1.java   (with props)
    geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingSession2.java   (with props)
    geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingSession3.java   (with props)
    geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingSession3Object.java   (with props)
Removed:
    geronimo/trunk/sandbox/daytrader/modules/ear/src/application/
    geronimo/trunk/sandbox/daytrader/modules/ear/src/conf/
    geronimo/trunk/sandbox/daytrader/modules/ear/src/test-cactus/
    geronimo/trunk/sandbox/daytrader/modules/ear/src/webapp2/
    geronimo/trunk/sandbox/daytrader/modules/ear/target/
    geronimo/trunk/sandbox/daytrader/modules/ejb/src/java/example/
    geronimo/trunk/sandbox/daytrader/modules/ejb/src/test-cactus/
    geronimo/trunk/sandbox/daytrader/modules/streamer/src/conf/
    geronimo/trunk/sandbox/daytrader/modules/streamer/target/
    geronimo/trunk/sandbox/daytrader/modules/web/src/conf/
    geronimo/trunk/sandbox/daytrader/modules/web/target/
Modified:
    geronimo/trunk/sandbox/daytrader/maven.xml
    geronimo/trunk/sandbox/daytrader/modules/ear/project.properties
    geronimo/trunk/sandbox/daytrader/modules/ear/project.xml
    geronimo/trunk/sandbox/daytrader/project.properties

Modified: geronimo/trunk/sandbox/daytrader/maven.xml
URL: http://svn.apache.org/viewcvs/geronimo/trunk/sandbox/daytrader/maven.xml?rev=293214&r1=293213&r2=293214&view=diff
==============================================================================
--- geronimo/trunk/sandbox/daytrader/maven.xml (original)
+++ geronimo/trunk/sandbox/daytrader/maven.xml Sun Oct  2 19:34:49 2005
@@ -1,10 +1,24 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project xmlns:j="jelly:core" xmlns:ant="jelly:ant" xmlns:maven="jelly:maven" default="multiproject:build">
   <goal name="multiproject:build">
+    <attainGoal name="multiproject:jar-install" />
     <attainGoal name="multiproject:ejb-install" />
+    <attainGoal name="multiproject:streamer-install" />
     <attainGoal name="multiproject:war-install" />
     <attainGoal name="multiproject:ear" />
   </goal>
+  <goal name="multiproject:clean">
+   <maven:reactor
+      basedir="."
+      banner="Cleaning"
+      includes="${maven.multiproject.includes}"
+      excludes="${maven.multiproject.excludes}"
+      postProcessing="true"
+      goals="clean"
+      ignoreFailures="${maven.multiproject.ignoreFailures}"
+    />
+  </goal>
+  
   <goal name="multiproject:war">
     <maven:reactor
       basedir="."
@@ -38,6 +52,28 @@
       ignoreFailures="${maven.multiproject.ignoreFailures}"
     />
   </goal>
+    <goal name="multiproject:jar-install">
+    <maven:reactor
+      basedir="."
+      banner="Creating JARs"
+      includes="${maven.multiproject.jar.includes}"
+      excludes="${maven.multiproject.jar.excludes}"
+      postProcessing="true"
+      goals="jar:install"
+      ignoreFailures="${maven.multiproject.ignoreFailures}"
+    />
+    </goal>
+    <goal name="multiproject:streamer-install">
+    <maven:reactor
+      basedir="."
+      banner="Creating Streamer Application Client"
+      includes="${maven.multiproject.streamer.includes}"
+      excludes="${maven.multiproject.streamer.excludes}"
+      postProcessing="true"
+      goals="jar:install"
+      ignoreFailures="${maven.multiproject.ignoreFailures}"
+    />
+    </goal>
   <goal name="multiproject:war-install">
     <maven:reactor
       basedir="."

Modified: geronimo/trunk/sandbox/daytrader/modules/ear/project.properties
URL: http://svn.apache.org/viewcvs/geronimo/trunk/sandbox/daytrader/modules/ear/project.properties?rev=293214&r1=293213&r2=293214&view=diff
==============================================================================
--- geronimo/trunk/sandbox/daytrader/modules/ear/project.properties (original)
+++ geronimo/trunk/sandbox/daytrader/modules/ear/project.properties Sun Oct  2 19:34:49 2005
@@ -1,11 +1 @@
-maven.xdoc.date=left
-maven.ejb.src=${maven.build.dir}/xdoclet/ejb
-maven.eclipse.classpath.include=${maven.build.dir}/xdoclet/ejbdoclet,src/test-cactus
-maven.xdoclet.ejbdoclet.utilobject.0.cacheHomes=true
-maven.xdoclet.ejbdoclet.utilobject.0.includeGUID=true
-maven.xdoclet.ejbdoclet.dataobject.0=true
-maven.xdoclet.ejbdoclet.entityfacade.0=true
-maven.xdoclet.ejbdoclet.valueobject.0=true
-maven.xdoclet.ejbdoclet.deploymentdescriptor.0.validateXML=true
-cactus.src.mergewebxml = src/conf/cactus-web.xml
-cactus.is.ear=true
+maven.ear.appxml=${maven.ear.src}/META-INF/application.xml

Modified: geronimo/trunk/sandbox/daytrader/modules/ear/project.xml
URL: http://svn.apache.org/viewcvs/geronimo/trunk/sandbox/daytrader/modules/ear/project.xml?rev=293214&r1=293213&r2=293214&view=diff
==============================================================================
--- geronimo/trunk/sandbox/daytrader/modules/ear/project.xml (original)
+++ geronimo/trunk/sandbox/daytrader/modules/ear/project.xml Sun Oct  2 19:34:49 2005
@@ -52,11 +52,6 @@
           <ear.bundle>true</ear.bundle>
       </properties>
     </dependency>
-<!--    <dependency>
-      <groupId>geronimo-spec</groupId>
-      <artifactId>geronimo-spec-j2ee</artifactId>
-      <version>1.4-rc4</version>
-    </dependency> -->
     
   </dependencies>
   <build>
@@ -71,12 +66,6 @@
       </excludes>
     </unitTest>
     <resources>
-        <resource>
-            <directory>src/application</directory>
-            <includes>
-                <include>META-INF/application-client.xml</include>
-            </includes>
-        </resource>
     </resources>
   </build>
 </project>

Added: geronimo/trunk/sandbox/daytrader/modules/ejb/src/META-INF/ejb-jar.xml
URL: http://svn.apache.org/viewcvs/geronimo/trunk/sandbox/daytrader/modules/ejb/src/META-INF/ejb-jar.xml?rev=293214&view=auto
==============================================================================
--- geronimo/trunk/sandbox/daytrader/modules/ejb/src/META-INF/ejb-jar.xml (added)
+++ geronimo/trunk/sandbox/daytrader/modules/ejb/src/META-INF/ejb-jar.xml Sun Oct  2 19:34:49 2005
@@ -0,0 +1,937 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ejb-jar version="2.1"
+    xmlns="http://java.sun.com/xml/ns/j2ee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd"> 
+    <display-name>TradeEJBs</display-name>
+    <enterprise-beans>
+        <session>
+            <description>Trade Session EJB manages all Trading services</description>
+            <display-name>TradeEJB</display-name>
+            <ejb-name>TradeEJB</ejb-name>
+            <home>org.apache.geronimo.samples.daytrader.ejb.TradeHome</home>
+            <remote>org.apache.geronimo.samples.daytrader.ejb.Trade</remote>
+            <ejb-class>org.apache.geronimo.samples.daytrader.ejb.TradeBean</ejb-class>
+            <session-type>Stateless</session-type>
+            <transaction-type>Container</transaction-type>
+            <env-entry>
+                <env-entry-name>orderBySQLSupported</env-entry-name>
+                <env-entry-type>java.lang.Boolean</env-entry-type>
+                <env-entry-value>true</env-entry-value>
+            </env-entry>
+            <env-entry>
+                <env-entry-name>updateQuotePrices</env-entry-name>
+                <env-entry-type>java.lang.Boolean</env-entry-type>
+                <env-entry-value>true</env-entry-value>
+            </env-entry>
+            <env-entry>
+                <env-entry-name>publishQuotePriceChange</env-entry-name>
+                <env-entry-type>java.lang.Boolean</env-entry-type>
+                <env-entry-value>true</env-entry-value>
+            </env-entry>
+            <ejb-ref>
+                <ejb-ref-name>ejb/Trade</ejb-ref-name>
+                <ejb-ref-type>Session</ejb-ref-type>
+                <home>org.apache.geronimo.samples.daytrader.ejb.TradeHome</home>
+                <remote>org.apache.geronimo.samples.daytrader.ejb.Trade</remote>
+                <ejb-link>TradeEJB</ejb-link>
+            </ejb-ref>
+            <ejb-local-ref>
+                <ejb-ref-name>ejb/Quote</ejb-ref-name>
+                <ejb-ref-type>Entity</ejb-ref-type>
+                <local-home>org.apache.geronimo.samples.daytrader.ejb.LocalQuoteHome</local-home>
+                <local>org.apache.geronimo.samples.daytrader.ejb.LocalQuote</local>
+                <ejb-link>QuoteEJB</ejb-link>
+            </ejb-local-ref>
+            <ejb-local-ref>
+                <ejb-ref-name>ejb/Account</ejb-ref-name>
+                <ejb-ref-type>Entity</ejb-ref-type>
+                <local-home>org.apache.geronimo.samples.daytrader.ejb.LocalAccountHome</local-home>
+                <local>org.apache.geronimo.samples.daytrader.ejb.LocalAccount</local>
+                <ejb-link>AccountEJB</ejb-link>
+            </ejb-local-ref>
+            <ejb-local-ref>
+                <ejb-ref-name>ejb/Holding</ejb-ref-name>
+                <ejb-ref-type>Entity</ejb-ref-type>
+                <local-home>org.apache.geronimo.samples.daytrader.ejb.LocalHoldingHome</local-home>
+                <local>org.apache.geronimo.samples.daytrader.ejb.LocalHolding</local>
+                <ejb-link>HoldingEJB</ejb-link>
+            </ejb-local-ref>
+            <ejb-local-ref>
+                <ejb-ref-name>ejb/Order</ejb-ref-name>
+                <ejb-ref-type>Entity</ejb-ref-type>
+                <local-home>org.apache.geronimo.samples.daytrader.ejb.LocalOrderHome</local-home>
+                <local>org.apache.geronimo.samples.daytrader.ejb.LocalOrder</local>
+                <ejb-link>OrderEJB</ejb-link>
+            </ejb-local-ref>
+            <ejb-local-ref>
+                <ejb-ref-name>ejb/KeySequence</ejb-ref-name>
+                <ejb-ref-type>Session</ejb-ref-type>
+                <local-home>org.apache.geronimo.samples.daytrader.ejb.LocalKeySequenceHome</local-home>
+                <local>org.apache.geronimo.samples.daytrader.ejb.LocalKeySequence</local>
+                <ejb-link>KeySequenceEJB</ejb-link>
+            </ejb-local-ref>
+            <ejb-local-ref>
+                <ejb-ref-name>ejb/AccountProfile</ejb-ref-name>
+                <ejb-ref-type>Entity</ejb-ref-type>
+                <local-home>org.apache.geronimo.samples.daytrader.ejb.LocalAccountProfileHome</local-home>
+                <local>org.apache.geronimo.samples.daytrader.ejb.LocalAccountProfile</local>
+                <ejb-link>AccountProfileEJB</ejb-link>
+            </ejb-local-ref>
+            <resource-ref>
+                <res-ref-name>jms/QueueConnectionFactory</res-ref-name>
+                <res-type>javax.jms.QueueConnectionFactory</res-type>
+                <res-auth>Application</res-auth>
+                <res-sharing-scope>Shareable</res-sharing-scope>
+            </resource-ref>
+            <resource-ref>
+                <res-ref-name>jms/TopicConnectionFactory</res-ref-name>
+                <res-type>javax.jms.TopicConnectionFactory</res-type>
+                <res-auth>Application</res-auth>
+                <res-sharing-scope>Shareable</res-sharing-scope>
+            </resource-ref>
+            <resource-ref>
+                <res-ref-name>jdbc/TradeDataSource</res-ref-name>
+                <res-type>javax.sql.DataSource</res-type>
+                <res-auth>Container</res-auth>
+                <res-sharing-scope>Shareable</res-sharing-scope>
+            </resource-ref>
+            <message-destination-ref>
+                <message-destination-ref-name>jms/TradeBrokerQueue</message-destination-ref-name>
+                <message-destination-type>javax.jms.Queue</message-destination-type>
+                <message-destination-usage>Produces</message-destination-usage>
+                <message-destination-link>TradeBrokerQueue</message-destination-link>
+            </message-destination-ref>
+            <message-destination-ref>
+                <message-destination-ref-name>jms/TradeStreamerTopic</message-destination-ref-name>
+                <message-destination-type>javax.jms.Topic</message-destination-type>
+                <message-destination-usage>Produces</message-destination-usage>
+                <message-destination-link>TradeStreamerTopic</message-destination-link>
+            </message-destination-ref>
+            <security-identity>
+                <description/>
+                <use-caller-identity/>
+            </security-identity>
+        </session>
+        <entity>
+            <display-name>HoldingEJB</display-name>
+            <ejb-name>HoldingEJB</ejb-name>
+            <local-home>org.apache.geronimo.samples.daytrader.ejb.LocalHoldingHome</local-home>
+            <local>org.apache.geronimo.samples.daytrader.ejb.LocalHolding</local>
+            <ejb-class>org.apache.geronimo.samples.daytrader.ejb.HoldingBean</ejb-class>
+            <persistence-type>Container</persistence-type>
+            <prim-key-class>java.lang.Integer</prim-key-class>
+            <reentrant>false</reentrant>
+            <cmp-version>2.x</cmp-version>
+            <abstract-schema-name>Holding</abstract-schema-name>
+            <cmp-field>
+                <field-name>purchasePrice</field-name>
+            </cmp-field>
+            <cmp-field>
+                <field-name>holdingID</field-name>
+            </cmp-field>
+            <cmp-field>
+                <field-name>quantity</field-name>
+            </cmp-field>
+            <cmp-field>
+                <field-name>purchaseDate</field-name>
+            </cmp-field>
+            <primkey-field>holdingID</primkey-field>
+            <security-identity>
+                <description/>
+                <use-caller-identity/>
+            </security-identity>
+            <query>
+                <description/>
+                <query-method>
+                    <method-name>ejbSelectQuoteFromSymbol</method-name>
+                    <method-params>
+                        <method-param>java.lang.String</method-param>
+                    </method-params>
+                </query-method>
+                <result-type-mapping>Local</result-type-mapping>
+                <ejb-ql>SELECT OBJECT(q) from Quote q WHERE q.symbol = ?1</ejb-ql>
+            </query>
+            <query>
+                <description/>
+                <query-method>
+                    <method-name>findAll</method-name>
+                    <method-params/>
+                </query-method>
+                <result-type-mapping>Local</result-type-mapping>
+                <ejb-ql>SELECT OBJECT(h) from Holding h</ejb-ql>
+            </query>
+            <query>
+                <description/>
+                <query-method>
+                    <method-name>findByUserID</method-name>
+                    <method-params>
+                        <method-param>java.lang.String</method-param>
+                    </method-params>
+                </query-method>
+                <result-type-mapping>Local</result-type-mapping>
+                <ejb-ql>SELECT OBJECT(h) FROM Holding h WHERE
+                    h.account.profile.userID  = ?1</ejb-ql>
+            </query>
+            <query>
+                <description/>
+                <query-method>
+                    <method-name>findByAccountID</method-name>
+                    <method-params>
+                        <method-param>java.lang.Integer</method-param>
+                    </method-params>
+                </query-method>
+                <result-type-mapping>Local</result-type-mapping>
+                <ejb-ql>SELECT OBJECT(h) FROM Holding h WHERE
+                    h.account.accountID  = ?1</ejb-ql>
+            </query>
+            <query>
+                <query-method>
+                    <method-name>findByPrimaryKeyForUpdate</method-name>
+                    <method-params>
+                        <method-param>java.lang.Integer</method-param>
+                    </method-params>
+                </query-method>
+                <result-type-mapping>Local</result-type-mapping>
+                <ejb-ql>SELECT OBJECT(h) FROM Holding h WHERE
+                    h.holdingID = ?1</ejb-ql>
+            </query>
+        </entity>
+        <message-driven>
+            <display-name>TradeBrokerMDB</display-name>
+            <ejb-name>TradeBrokerMDB</ejb-name>
+            <ejb-class>org.apache.geronimo.samples.daytrader.ejb.TradeBrokerMDB</ejb-class>
+            <transaction-type>Container</transaction-type>
+            <message-destination-type>javax.jms.Queue</message-destination-type>
+            <message-destination-link>TradeBrokerQueue</message-destination-link>
+            <env-entry>
+                <env-entry-name>statInterval</env-entry-name>
+                <env-entry-type>java.lang.Integer</env-entry-type>
+                <env-entry-value>100</env-entry-value>
+            </env-entry>
+            <ejb-ref>
+                <ejb-ref-name>ejb/Trade</ejb-ref-name>
+                <ejb-ref-type>Session</ejb-ref-type>
+                <home>org.apache.geronimo.samples.daytrader.ejb.TradeHome</home>
+                <remote>org.apache.geronimo.samples.daytrader.ejb.Trade</remote>
+                <ejb-link>TradeEJB</ejb-link>
+            </ejb-ref>
+        </message-driven>
+        <entity>
+            <display-name>AccountProfileEJB</display-name>
+            <ejb-name>AccountProfileEJB</ejb-name>
+            <local-home>org.apache.geronimo.samples.daytrader.ejb.LocalAccountProfileHome</local-home>
+            <local>org.apache.geronimo.samples.daytrader.ejb.LocalAccountProfile</local>
+            <ejb-class>org.apache.geronimo.samples.daytrader.ejb.AccountProfileBean</ejb-class>
+            <persistence-type>Container</persistence-type>
+            <prim-key-class>java.lang.String</prim-key-class>
+            <reentrant>false</reentrant>
+            <cmp-version>2.x</cmp-version>
+            <abstract-schema-name>AccountProfile</abstract-schema-name>
+            <cmp-field>
+                <field-name>address</field-name>
+            </cmp-field>
+            <cmp-field>
+                <field-name>password</field-name>
+            </cmp-field>
+            <cmp-field>
+                <field-name>userID</field-name>
+            </cmp-field>
+            <cmp-field>
+                <field-name>email</field-name>
+            </cmp-field>
+            <cmp-field>
+                <field-name>creditCard</field-name>
+            </cmp-field>
+            <cmp-field>
+                <field-name>fullName</field-name>
+            </cmp-field>
+            <primkey-field>userID</primkey-field>
+            <security-identity>
+                <description/>
+                <use-caller-identity/>
+            </security-identity>
+            <query id="Query_5">
+                <description/>
+                <query-method>
+                    <method-name>findAll</method-name>
+                    <method-params/>
+                </query-method>
+                <result-type-mapping>Local</result-type-mapping>
+                <ejb-ql>SELECT OBJECT(a) FROM AccountProfile a</ejb-ql>
+            </query>
+            <query>
+                <description/>
+                <query-method>
+                    <method-name>findByPrimaryKeyForUpdate</method-name>
+                    <method-params>
+                        <method-param>java.lang.String</method-param>
+                    </method-params>
+                </query-method>
+                <result-type-mapping>Local</result-type-mapping>
+                <ejb-ql>SELECT OBJECT(a) FROM AccountProfile a where
+                    a.userID = ?1</ejb-ql>
+            </query>
+        </entity>
+        <entity>
+            <description>Stock price quotes including current, open, high, low, etc.</description>
+            <display-name>QuoteEJB</display-name>
+            <ejb-name>QuoteEJB</ejb-name>
+            <home>org.apache.geronimo.samples.daytrader.ejb.QuoteHome</home>
+            <remote>org.apache.geronimo.samples.daytrader.ejb.Quote</remote>
+            <local-home>org.apache.geronimo.samples.daytrader.ejb.LocalQuoteHome</local-home>
+            <local>org.apache.geronimo.samples.daytrader.ejb.LocalQuote</local>
+            <ejb-class>org.apache.geronimo.samples.daytrader.ejb.QuoteBean</ejb-class>
+            <persistence-type>Container</persistence-type>
+            <prim-key-class>java.lang.String</prim-key-class>
+            <reentrant>false</reentrant>
+            <cmp-version>2.x</cmp-version>
+            <abstract-schema-name>Quote</abstract-schema-name>
+            <cmp-field>
+                <field-name>low</field-name>
+            </cmp-field>
+            <cmp-field>
+                <field-name>open</field-name>
+            </cmp-field>
+            <cmp-field>
+                <field-name>volume</field-name>
+            </cmp-field>
+            <cmp-field>
+                <field-name>price</field-name>
+            </cmp-field>
+            <cmp-field>
+                <field-name>high</field-name>
+            </cmp-field>
+            <cmp-field>
+                <field-name>companyName</field-name>
+            </cmp-field>
+            <cmp-field>
+                <field-name>symbol</field-name>
+            </cmp-field>
+            <cmp-field>
+                <field-name>change</field-name>
+            </cmp-field>
+            <primkey-field>symbol</primkey-field>
+            <security-identity>
+                <description/>
+                <use-caller-identity/>
+            </security-identity>
+            <query id="Query_6">
+                <description/>
+                <query-method>
+                    <method-name>findAll</method-name>
+                    <method-params/>
+                </query-method>
+                <result-type-mapping>Local</result-type-mapping>
+                <ejb-ql>SELECT OBJECT(q) FROM Quote q</ejb-ql>
+            </query>
+            <query>
+                <description/>
+                <query-method>
+                    <method-name>findQuotes</method-name>
+                    <method-params>
+                        <method-param>java.lang.String</method-param>
+                    </method-params>
+                </query-method>
+                <result-type-mapping>Local</result-type-mapping>
+                <ejb-ql>SELECT OBJECT(q) FROM Quote q</ejb-ql>
+            </query>
+            <query>
+                <description/>
+                <query-method>
+                    <method-name>findOne</method-name>
+                    <method-params/>
+                </query-method>
+                <result-type-mapping>Local</result-type-mapping>
+                <ejb-ql>SELECT OBJECT(q) FROM Quote q where q.symbol = 's:0'</ejb-ql>
+            </query>
+            <query>
+                <query-method>
+                    <method-name>findTSIAQuotesOrderByChange</method-name>
+                    <method-params/>
+                </query-method>
+                <result-type-mapping>Local</result-type-mapping>
+                <ejb-ql>SELECT OBJECT(q) FROM Quote q WHERE q.symbol LIKE 's:1__' ORDER BY q.change DESC</ejb-ql>
+            </query>
+            <query id="Query_10">
+                <description/>
+                <query-method>
+                    <method-name>ejbSelectTotalVolume</method-name>
+                    <method-params/>
+                </query-method>
+                <result-type-mapping>Local</result-type-mapping>
+                <ejb-ql>SELECT q.volume FROM Quote q</ejb-ql>
+            </query>
+            <query>
+                <query-method>
+                    <method-name>findTSIAQuotes</method-name>
+                    <method-params/>
+                </query-method>
+                <result-type-mapping>Local</result-type-mapping>
+                <ejb-ql>SELECT OBJECT(q) FROM Quote q WHERE q.symbol LIKE 's:1__'</ejb-ql>
+            </query>
+            <query>
+                <query-method id="QueryMethod_21">
+                    <method-name>findByPrimaryKeyForUpdate</method-name>
+                    <method-params>
+                        <method-param>java.lang.String</method-param>
+                    </method-params>
+                </query-method>
+                <result-type-mapping>Local</result-type-mapping>
+                <ejb-ql>SELECT OBJECT(q) FROM Quote q where q.symbol = ?1</ejb-ql>
+            </query>
+        </entity>
+        <session>
+            <display-name>KeySequenceEJB</display-name>
+            <ejb-name>KeySequenceEJB</ejb-name>
+            <local-home>org.apache.geronimo.samples.daytrader.ejb.LocalKeySequenceHome</local-home>
+            <local>org.apache.geronimo.samples.daytrader.ejb.LocalKeySequence</local>
+            <ejb-class>org.apache.geronimo.samples.daytrader.ejb.KeySequenceBean</ejb-class>
+            <session-type>Stateless</session-type>
+            <transaction-type>Container</transaction-type>
+            <ejb-local-ref>
+                <ejb-ref-name>ejb/KeyGen</ejb-ref-name>
+                <ejb-ref-type>Entity</ejb-ref-type>
+                <local-home>org.apache.geronimo.samples.daytrader.ejb.LocalKeyGenHome</local-home>
+                <local>org.apache.geronimo.samples.daytrader.ejb.LocalKeyGen</local>
+                <ejb-link>KeyGenEJB</ejb-link>
+            </ejb-local-ref>
+            <security-identity>
+                <description/>
+                <use-caller-identity/>
+            </security-identity>
+        </session>
+        <entity>
+            <display-name>KeyGenEJB</display-name>
+            <ejb-name>KeyGenEJB</ejb-name>
+            <local-home>org.apache.geronimo.samples.daytrader.ejb.LocalKeyGenHome</local-home>
+            <local>org.apache.geronimo.samples.daytrader.ejb.LocalKeyGen</local>
+            <ejb-class>org.apache.geronimo.samples.daytrader.ejb.KeyGenBean</ejb-class>
+            <persistence-type>Container</persistence-type>
+            <prim-key-class>java.lang.String</prim-key-class>
+            <reentrant>false</reentrant>
+            <cmp-version>2.x</cmp-version>
+            <abstract-schema-name>KeyGen</abstract-schema-name>
+            <cmp-field>
+                <field-name>keyVal</field-name>
+            </cmp-field>
+            <cmp-field>
+                <field-name>keyName</field-name>
+            </cmp-field>
+            <primkey-field>keyName</primkey-field>
+            <security-identity>
+                <description/>
+                <use-caller-identity/>
+            </security-identity>
+            <query>
+                <query-method>
+                    <method-name>findByPrimaryKeyForUpdate</method-name>
+                    <method-params>
+                        <method-param>java.lang.String</method-param>
+                    </method-params>
+                </query-method>
+                <result-type-mapping>Local</result-type-mapping>
+                <ejb-ql>SELECT OBJECT(kg) FROM KeyGen kg where
+                    kg.keyName = ?1</ejb-ql>
+            </query>
+        </entity>
+        <entity>
+            <display-name>AccountEJB</display-name>
+            <ejb-name>AccountEJB</ejb-name>
+            <local-home>org.apache.geronimo.samples.daytrader.ejb.LocalAccountHome</local-home>
+            <local>org.apache.geronimo.samples.daytrader.ejb.LocalAccount</local>
+            <ejb-class>org.apache.geronimo.samples.daytrader.ejb.AccountBean</ejb-class>
+            <persistence-type>Container</persistence-type>
+            <prim-key-class>java.lang.Integer</prim-key-class>
+            <reentrant>false</reentrant>
+            <cmp-version>2.x</cmp-version>
+            <abstract-schema-name>Account</abstract-schema-name>
+            <cmp-field>
+                <field-name>creationDate</field-name>
+            </cmp-field>
+            <cmp-field>
+                <field-name>openBalance</field-name>
+            </cmp-field>
+            <cmp-field>
+                <field-name>logoutCount</field-name>
+            </cmp-field>
+            <cmp-field>
+                <field-name>balance</field-name>
+            </cmp-field>
+            <cmp-field>
+                <field-name>accountID</field-name>
+            </cmp-field>
+            <cmp-field>
+                <field-name>lastLogin</field-name>
+            </cmp-field>
+            <cmp-field>
+                <field-name>loginCount</field-name>
+            </cmp-field>
+            <primkey-field>accountID</primkey-field>
+            <ejb-local-ref>
+                <ejb-ref-name>ejb/AccountProfile</ejb-ref-name>
+                <ejb-ref-type>Entity</ejb-ref-type>
+                <local-home>org.apache.geronimo.samples.daytrader.ejb.LocalAccountProfileHome</local-home>
+                <local>org.apache.geronimo.samples.daytrader.ejb.LocalAccountProfile</local>
+                <ejb-link>AccountProfileEJB</ejb-link>
+            </ejb-local-ref>
+            <security-identity>
+                <description/>
+                <use-caller-identity/>
+            </security-identity>
+            <query>
+                <description/>
+                <query-method>
+                    <method-name>findByUserID</method-name>
+                    <method-params>
+                        <method-param>java.lang.String</method-param>
+                    </method-params>
+                </query-method>
+                <ejb-ql>SELECT OBJECT(a) FROM Account a WHERE
+                    a.profile.userID = ?1</ejb-ql>
+            </query>
+            <query>
+                <description/>
+                <query-method>
+                    <method-name>findAll</method-name>
+                    <method-params/>
+                </query-method>
+                <ejb-ql>SELECT OBJECT(a) FROM Account a</ejb-ql>
+            </query>
+            <query>
+                <query-method>
+                    <method-name>findByUserIDForUpdate</method-name>
+                    <method-params>
+                        <method-param>java.lang.String</method-param>
+                    </method-params>
+                </query-method>
+                <result-type-mapping>Local</result-type-mapping>
+                <ejb-ql>SELECT OBJECT(a) FROM Account a WHERE
+                    a.profile.userID = ?1</ejb-ql>
+            </query>
+            <query>
+                <query-method>
+                    <method-name>ejbSelectClosedOrders</method-name>
+                    <method-params>
+                        <method-param>java.lang.Integer</method-param>
+                    </method-params>
+                </query-method>
+                <ejb-ql>SELECT o.orderID FROM Orders o WHERE
+                    o.orderStatus = 'closed' AND o.account.accountID  = ?1</ejb-ql>
+            </query>
+            <query>
+                <query-method>
+                    <method-name>findByPrimaryKeyForUpdate</method-name>
+                    <method-params>
+                        <method-param>java.lang.Integer</method-param>
+                    </method-params>
+                </query-method>
+                <result-type-mapping>Local</result-type-mapping>
+                <ejb-ql>SELECT OBJECT(a) FROM Account a where
+                    a.accountID = ?1</ejb-ql>
+            </query>
+        </entity>
+        <entity>
+            <display-name>OrderEJB</display-name>
+            <ejb-name>OrderEJB</ejb-name>
+            <local-home>org.apache.geronimo.samples.daytrader.ejb.LocalOrderHome</local-home>
+            <local>org.apache.geronimo.samples.daytrader.ejb.LocalOrder</local>
+            <ejb-class>org.apache.geronimo.samples.daytrader.ejb.OrderBean</ejb-class>
+            <persistence-type>Container</persistence-type>
+            <prim-key-class>java.lang.Integer</prim-key-class>
+            <reentrant>false</reentrant>
+            <cmp-version>2.x</cmp-version>
+            <abstract-schema-name>Orders</abstract-schema-name>
+            <cmp-field>
+                <field-name>orderFee</field-name>
+            </cmp-field>
+            <cmp-field>
+                <field-name>completionDate</field-name>
+            </cmp-field>
+            <cmp-field>
+                <field-name>orderType</field-name>
+            </cmp-field>
+            <cmp-field>
+                <field-name>orderStatus</field-name>
+            </cmp-field>
+            <cmp-field>
+                <field-name>price</field-name>
+            </cmp-field>
+            <cmp-field>
+                <field-name>quantity</field-name>
+            </cmp-field>
+            <cmp-field>
+                <field-name>openDate</field-name>
+            </cmp-field>
+            <cmp-field>
+                <field-name>orderID</field-name>
+            </cmp-field>
+            <primkey-field>orderID</primkey-field>
+            <security-identity>
+                <description/>
+                <use-caller-identity/>
+            </security-identity>
+            <query>
+                <description/>
+                <query-method>
+                    <method-name>findAll</method-name>
+                    <method-params/>
+                </query-method>
+                <result-type-mapping>Local</result-type-mapping>
+                <ejb-ql>SELECT OBJECT(o) FROM Orders o</ejb-ql>
+            </query>
+            <query>
+                <description/>
+                <query-method>
+                    <method-name>findClosedOrders</method-name>
+                    <method-params>
+                        <method-param>java.lang.String</method-param>
+                    </method-params>
+                </query-method>
+                <result-type-mapping>Local</result-type-mapping>
+                <ejb-ql>SELECT OBJECT(o) FROM Orders o WHERE
+                    o.orderStatus = 'closed' AND
+                    o.account.profile.userID  = ?1</ejb-ql>
+            </query>
+            <query>
+                <description/>
+                <query-method>
+                    <method-name>findByUserID</method-name>
+                    <method-params>
+                        <method-param>java.lang.String</method-param>
+                    </method-params>
+                </query-method>
+                <result-type-mapping>Local</result-type-mapping>
+                <ejb-ql>SELECT OBJECT(o) FROM Orders o WHERE
+                    o.account.profile.userID  = ?1 ORDER BY o.orderID DESC</ejb-ql>
+            </query>
+            <query>
+                <query-method>
+                    <method-name>findByPrimaryKeyForUpdate</method-name>
+                    <method-params>
+                        <method-param>java.lang.Integer</method-param>
+                    </method-params>
+                </query-method>
+                <result-type-mapping>Local</result-type-mapping>
+                <ejb-ql>SELECT OBJECT(o) FROM Orders o WHERE o.orderID = ?1</ejb-ql>
+            </query>
+            <query>
+                <query-method>
+                    <method-name>findClosedOrdersForUpdate</method-name>
+                    <method-params>
+                        <method-param>java.lang.String</method-param>
+                    </method-params>
+                </query-method>
+                <result-type-mapping>Local</result-type-mapping>
+                <ejb-ql>SELECT OBJECT(o) FROM Orders o WHERE
+                    o.orderStatus = 'closed' AND
+                    o.account.profile.userID  = ?1</ejb-ql>
+            </query>
+        </entity>
+        <message-driven>
+            <ejb-name>TradeStreamerMDB</ejb-name>
+            <ejb-class>org.apache.geronimo.samples.daytrader.ejb.TradeStreamerMDB</ejb-class>
+            <transaction-type>Container</transaction-type>
+            <message-destination-type>javax.jms.Topic</message-destination-type>
+            <message-destination-link>TradeStreamerTopic</message-destination-link>
+            <env-entry>
+                <env-entry-name>statInterval</env-entry-name>
+                <env-entry-type>java.lang.Integer</env-entry-type>
+                <env-entry-value>100</env-entry-value>
+            </env-entry>
+        </message-driven>
+    </enterprise-beans>
+    <relationships>
+        <ejb-relation>
+            <ejb-relation-name>Account-Orders</ejb-relation-name>
+            <ejb-relationship-role>
+                <ejb-relationship-role-name>AccountEJB</ejb-relationship-role-name>
+                <multiplicity>One</multiplicity>
+                <relationship-role-source>
+                    <ejb-name>AccountEJB</ejb-name>
+                </relationship-role-source>
+                <cmr-field>
+                    <cmr-field-name>orders</cmr-field-name>
+                    <cmr-field-type>java.util.Collection</cmr-field-type>
+                </cmr-field>
+            </ejb-relationship-role>
+            <ejb-relationship-role>
+                <ejb-relationship-role-name>Order-Has-Account</ejb-relationship-role-name>
+                <multiplicity>Many</multiplicity>
+                <cascade-delete/>
+                <relationship-role-source>
+                    <ejb-name>OrderEJB</ejb-name>
+                </relationship-role-source>
+                <cmr-field>
+                    <cmr-field-name>account</cmr-field-name>
+                </cmr-field>
+            </ejb-relationship-role>
+        </ejb-relation>
+        <ejb-relation>
+            <ejb-relation-name>Account-AccountProfile</ejb-relation-name>
+            <ejb-relationship-role>
+                <ejb-relationship-role-name>Account-Has-AccountProfile</ejb-relationship-role-name>
+                <multiplicity>One</multiplicity>
+                <relationship-role-source>
+                    <ejb-name>AccountEJB</ejb-name>
+                </relationship-role-source>
+                <cmr-field>
+                    <cmr-field-name>profile</cmr-field-name>
+                </cmr-field>
+            </ejb-relationship-role>
+            <ejb-relationship-role>
+                <ejb-relationship-role-name>AccountProfileEJB</ejb-relationship-role-name>
+                <multiplicity>One</multiplicity>
+                <cascade-delete/>
+                <relationship-role-source>
+                    <ejb-name>AccountProfileEJB</ejb-name>
+                </relationship-role-source>
+                <cmr-field>
+                    <cmr-field-name>account</cmr-field-name>
+                </cmr-field>
+            </ejb-relationship-role>
+        </ejb-relation>
+        <ejb-relation>
+            <ejb-relation-name>Account-Holdings</ejb-relation-name>
+            <ejb-relationship-role>
+                <ejb-relationship-role-name>AccountEJB</ejb-relationship-role-name>
+                <multiplicity>One</multiplicity>
+                <relationship-role-source>
+                    <ejb-name>AccountEJB</ejb-name>
+                </relationship-role-source>
+                <cmr-field>
+                    <cmr-field-name>holdings</cmr-field-name>
+                    <cmr-field-type>java.util.Collection</cmr-field-type>
+                </cmr-field>
+            </ejb-relationship-role>
+            <ejb-relationship-role>
+                <ejb-relationship-role-name>Holding-Has-Account</ejb-relationship-role-name>
+                <multiplicity>Many</multiplicity>
+                <cascade-delete/>
+                <relationship-role-source>
+                    <ejb-name>HoldingEJB</ejb-name>
+                </relationship-role-source>
+                <cmr-field>
+                    <cmr-field-name>account</cmr-field-name>
+                </cmr-field>
+            </ejb-relationship-role>
+        </ejb-relation>
+        <ejb-relation>
+            <ejb-relation-name>Quote-Holdings</ejb-relation-name>
+            <ejb-relationship-role>
+                <ejb-relationship-role-name>Holding-Has-Quote</ejb-relationship-role-name>
+                <multiplicity>Many</multiplicity>
+                <relationship-role-source>
+                    <ejb-name>HoldingEJB</ejb-name>
+                </relationship-role-source>
+                <cmr-field>
+                    <cmr-field-name>quote</cmr-field-name>
+                </cmr-field>
+            </ejb-relationship-role>
+            <ejb-relationship-role>
+                <ejb-relationship-role-name>QuoteEJB</ejb-relationship-role-name>
+                <multiplicity>One</multiplicity>
+                <relationship-role-source>
+                    <ejb-name>QuoteEJB</ejb-name>
+                </relationship-role-source>
+            </ejb-relationship-role>
+        </ejb-relation>
+        <ejb-relation>
+            <ejb-relation-name>Quote-Orders</ejb-relation-name>
+            <ejb-relationship-role>
+                <ejb-relationship-role-name>Order-Has-Quote</ejb-relationship-role-name>
+                <multiplicity>Many</multiplicity>
+                <cascade-delete/>
+                <relationship-role-source>
+                    <ejb-name>OrderEJB</ejb-name>
+                </relationship-role-source>
+                <cmr-field>
+                    <cmr-field-name>quote</cmr-field-name>
+                </cmr-field>
+            </ejb-relationship-role>
+            <ejb-relationship-role>
+                <ejb-relationship-role-name>QuoteEJB</ejb-relationship-role-name>
+                <multiplicity>One</multiplicity>
+                <relationship-role-source>
+                    <ejb-name>QuoteEJB</ejb-name>
+                </relationship-role-source>
+                <cmr-field>
+                    <cmr-field-name>orders</cmr-field-name>
+                    <cmr-field-type>java.util.Collection</cmr-field-type>
+                </cmr-field>
+            </ejb-relationship-role>
+        </ejb-relation>
+        <ejb-relation>
+            <ejb-relation-name>Order-Holding</ejb-relation-name>
+            <ejb-relationship-role>
+                <ejb-relationship-role-name>Order-Has-Holding</ejb-relationship-role-name>
+                <multiplicity>One</multiplicity>
+                <relationship-role-source>
+                    <ejb-name>OrderEJB</ejb-name>
+                </relationship-role-source>
+                <cmr-field>
+                    <cmr-field-name>holding</cmr-field-name>
+                </cmr-field>
+            </ejb-relationship-role>
+            <ejb-relationship-role>
+                <ejb-relationship-role-name>HoldingEJB</ejb-relationship-role-name>
+                <multiplicity>One</multiplicity>
+                <cascade-delete/>
+                <relationship-role-source>
+                    <ejb-name>HoldingEJB</ejb-name>
+                </relationship-role-source>
+            </ejb-relationship-role>
+        </ejb-relation>
+    </relationships>
+    <assembly-descriptor>
+        <method-permission>
+            <description>UncheckedPermission:+:Unchecked method permission</description>
+            <unchecked/>
+            <method>
+                <ejb-name>AccountEJB</ejb-name>
+                <method-name>*</method-name>
+            </method>
+            <method>
+                <ejb-name>AccountProfileEJB</ejb-name>
+                <method-name>*</method-name>
+            </method>
+            <method>
+                <ejb-name>HoldingEJB</ejb-name>
+                <method-name>*</method-name>
+            </method>
+            <method>
+                <ejb-name>KeyGenEJB</ejb-name>
+                <method-name>*</method-name>
+            </method>
+            <method>
+                <ejb-name>KeySequenceEJB</ejb-name>
+                <method-name>*</method-name>
+            </method>
+            <method>
+                <ejb-name>OrderEJB</ejb-name>
+                <method-name>*</method-name>
+            </method>
+            <method>
+                <ejb-name>QuoteEJB</ejb-name>
+                <method-name>*</method-name>
+            </method>
+            <method>
+                <ejb-name>TradeEJB</ejb-name>
+                <method-name>*</method-name>
+            </method>
+        </method-permission>
+        <container-transaction>
+            <method>
+                <ejb-name>TradeEJB</ejb-name>
+                <method-intf>Remote</method-intf>
+                <method-name>publishQuotePriceChange</method-name>
+                <method-params>
+                    <method-param>org.apache.geronimo.samples.daytrader.QuoteDataBean</method-param>
+                    <method-param>java.math.BigDecimal</method-param>
+                    <method-param>java.math.BigDecimal</method-param>
+                    <method-param>double</method-param>
+                </method-params>
+            </method>
+            <method>
+                <ejb-name>TradeEJB</ejb-name>
+                <method-intf>Remote</method-intf>
+                <method-name>cancelOrderOnePhase</method-name>
+                <method-params>
+                    <method-param>java.lang.Integer</method-param>
+                </method-params>
+            </method>
+            <method>
+                <ejb-name>TradeEJB</ejb-name>
+                <method-intf>Remote</method-intf>
+                <method-name>completeOrderOnePhaseDirect</method-name>
+                <method-params>
+                    <method-param>java.lang.Integer</method-param>
+                </method-params>
+            </method>
+            <method>
+                <ejb-name>TradeEJB</ejb-name>
+                <method-intf>Remote</method-intf>
+                <method-name>queueOrderOnePhase</method-name>
+                <method-params>
+                    <method-param>java.lang.Integer</method-param>
+                </method-params>
+            </method>
+            <trans-attribute>RequiresNew</trans-attribute>
+        </container-transaction>
+        <container-transaction>
+            <method>
+                <ejb-name>TradeEJB</ejb-name>
+                <method-intf>Remote</method-intf>
+                <method-name>cancelOrderOnePhaseDirect</method-name>
+                <method-params>
+                    <method-param>java.lang.Integer</method-param>
+                </method-params>
+            </method>
+            <method>
+                <ejb-name>TradeEJB</ejb-name>
+                <method-intf>Remote</method-intf>
+                <method-name>completeOrderOnePhaseDirect</method-name>
+                <method-params>
+                    <method-param>java.lang.Integer</method-param>
+                </method-params>
+            </method>
+            <method>
+                <ejb-name>TradeEJB</ejb-name>
+                <method-intf>Remote</method-intf>
+                <method-name>resetTrade</method-name>
+                <method-params>
+                    <method-param>boolean</method-param>
+                </method-params>
+            </method>
+            <trans-attribute>NotSupported</trans-attribute>
+        </container-transaction>
+        <container-transaction>
+            <method>
+                <ejb-name>AccountEJB</ejb-name>
+                <method-name>*</method-name>
+            </method>
+            <method>
+                <ejb-name>AccountProfileEJB</ejb-name>
+                <method-name>*</method-name>
+            </method>
+            <method>
+                <ejb-name>HoldingEJB</ejb-name>
+                <method-name>*</method-name>
+            </method>
+            <method>
+                <ejb-name>KeyGenEJB</ejb-name>
+                <method-name>*</method-name>
+            </method>
+            <method>
+                <ejb-name>KeySequenceEJB</ejb-name>
+                <method-name>*</method-name>
+            </method>
+            <method>
+                <ejb-name>OrderEJB</ejb-name>
+                <method-name>*</method-name>
+            </method>
+            <method>
+                <ejb-name>QuoteEJB</ejb-name>
+                <method-name>*</method-name>
+            </method>
+            <method>
+                <ejb-name>TradeBrokerMDB</ejb-name>
+                <method-name>*</method-name>
+            </method>
+            <method>
+                <ejb-name>TradeEJB</ejb-name>
+                <method-name>*</method-name>
+            </method>
+            <method>
+                <ejb-name>TradeStreamerMDB</ejb-name>
+                <method-name>*</method-name>
+            </method>
+            <trans-attribute>Required</trans-attribute>
+        </container-transaction>
+        <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>

Propchange: geronimo/trunk/sandbox/daytrader/modules/ejb/src/META-INF/ejb-jar.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: geronimo/trunk/sandbox/daytrader/modules/streamer/src/client/META-INF/MANIFEST.MF
URL: http://svn.apache.org/viewcvs/geronimo/trunk/sandbox/daytrader/modules/streamer/src/client/META-INF/MANIFEST.MF?rev=293214&view=auto
==============================================================================
--- geronimo/trunk/sandbox/daytrader/modules/streamer/src/client/META-INF/MANIFEST.MF (added)
+++ geronimo/trunk/sandbox/daytrader/modules/streamer/src/client/META-INF/MANIFEST.MF Sun Oct  2 19:34:49 2005
@@ -0,0 +1,6 @@
+Manifest-Version: 1.0
+Class-Path:  daytrader-ejb-1.0-SNAPSHOT.jar
+Created-By: 1.4.2_08 (Sun Microsystems Inc.)
+Ant-Version: Apache Ant 1.5.4 
+Main-Class: org.apache.geronimo.samples.daytrader.client.TradeClient
+

Added: geronimo/trunk/sandbox/daytrader/modules/streamer/src/client/META-INF/application-client.xml
URL: http://svn.apache.org/viewcvs/geronimo/trunk/sandbox/daytrader/modules/streamer/src/client/META-INF/application-client.xml?rev=293214&view=auto
==============================================================================
--- geronimo/trunk/sandbox/daytrader/modules/streamer/src/client/META-INF/application-client.xml (added)
+++ geronimo/trunk/sandbox/daytrader/modules/streamer/src/client/META-INF/application-client.xml Sun Oct  2 19:34:49 2005
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<application-client id="Application-client_ID" version="1.4"
+    xmlns="http://java.sun.com/xml/ns/j2ee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/application-client_1_4.xsd">
+
+      <display-name>TradeStreamerAppClient</display-name>
+      <ejb-ref>
+         <ejb-ref-name>ejb/Trade</ejb-ref-name>
+         <ejb-ref-type>Session</ejb-ref-type>
+         <home>org.apache.geronimo.samples.daytrader.ejb.TradeHome</home>
+         <remote>org.apache.geronimo.samples.daytrader.ejb.Trade</remote>
+         <ejb-link>TradeEJB</ejb-link>
+      </ejb-ref>
+      <resource-ref>
+         <res-ref-name>jms/TopicConnectionFactory</res-ref-name>
+         <res-type>javax.jms.TopicConnectionFactory</res-type>
+         <res-auth>Application</res-auth>
+         <res-sharing-scope>Shareable</res-sharing-scope>
+      </resource-ref>
+      <message-destination-ref>
+         <message-destination-ref-name>jms/TradeStreamerTopic</message-destination-ref-name>
+         <message-destination-type>javax.jms.Topic</message-destination-type>
+         <message-destination-usage>Produces</message-destination-usage>
+         <message-destination-link>TradeStreamerTopic</message-destination-link>
+      </message-destination-ref>
+</application-client>

Propchange: geronimo/trunk/sandbox/daytrader/modules/streamer/src/client/META-INF/application-client.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/OrdersAlertFilter.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/OrdersAlertFilter.java?rev=293214&view=auto
==============================================================================
--- geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/OrdersAlertFilter.java (added)
+++ geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/OrdersAlertFilter.java Sun Oct  2 19:34:49 2005
@@ -0,0 +1,104 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable 
+ *
+ *  Licensed 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.samples.daytrader.web;
+
+import java.io.IOException;
+import javax.servlet.*;
+import javax.servlet.http.*;
+
+import org.apache.geronimo.samples.daytrader.soap.*;
+import org.apache.geronimo.samples.daytrader.util.*;
+
+import org.apache.geronimo.samples.daytrader.*;
+
+public class OrdersAlertFilter implements Filter {
+
+	/**
+	 * Constructor for CompletedOrdersAlertFilter
+	 */
+	public OrdersAlertFilter() {
+		super();
+	}
+
+	/**
+	 * @see Filter#init(FilterConfig)
+	 */
+	private FilterConfig filterConfig = null;
+	public void init(FilterConfig filterConfig) throws ServletException {
+	      this.filterConfig = filterConfig;
+	}
+
+	/**
+	 * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
+	 */
+	public void doFilter(
+		ServletRequest req,
+		ServletResponse resp,
+		FilterChain chain)
+		throws IOException, ServletException {
+		if (filterConfig == null)
+			return;
+		
+		try
+		{
+			String action = req.getParameter("action");
+			if ( action != null ) 
+			{
+				action = action.trim();
+				if ( (action.length() > 0) && (!action.equals("logout")) )
+				{
+					String userID;
+					if ( action.equals("login") )
+						userID = req.getParameter("uid");
+					else
+						userID = (String) ((HttpServletRequest) req).getSession().getAttribute("uidBean");
+					if ( (userID != null) && (userID.trim().length()>0) )
+					{	
+						TradeServices tAction=null;
+						if(TradeConfig.getAccessMode() == TradeConfig.STANDARD)
+							tAction = new TradeAction();
+						else if(TradeConfig.getAccessMode() == TradeConfig.WEBSERVICES)
+							tAction = new TradeWebSoapProxy();										
+						java.util.Collection closedOrders = tAction.getClosedOrders(userID);
+						if ( (closedOrders!=null) && (closedOrders.size() > 0) )
+							req.setAttribute("closedOrders", closedOrders);
+						if (Log.doTrace()) Log.printCollection("OrderAlertFilter: userID="+userID+" closedOrders=", closedOrders);
+					}
+				}	
+			}
+		}
+		catch (Exception e)
+		{
+			Log.error(e, "OrdersAlertFilter - Error checking for closedOrders");
+		}
+
+        ServletContext sc = filterConfig.getServletContext();
+        //String xyz = (String) sc.getAttribute("hitCounter");
+		chain.doFilter(req, resp/*wrapper*/);        
+
+	}
+
+	/**
+	 * @see Filter#destroy()
+	 */
+	public void destroy() {
+		this.filterConfig = null;	
+	}
+
+}
+

Propchange: geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/OrdersAlertFilter.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/TestServlet.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/TestServlet.java?rev=293214&view=auto
==============================================================================
--- geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/TestServlet.java (added)
+++ geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/TestServlet.java Sun Oct  2 19:34:49 2005
@@ -0,0 +1,107 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable 
+ *
+ *  Licensed 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.samples.daytrader.web;
+
+import javax.servlet.*;
+import javax.servlet.http.*;
+
+import org.apache.geronimo.samples.daytrader.util.*;
+
+import java.io.IOException;
+import java.math.BigDecimal;
+import org.apache.geronimo.samples.daytrader.*;
+
+public class TestServlet extends HttpServlet {
+
+
+	public void init(ServletConfig config) throws ServletException
+	{
+		super.init(config);
+	}
+	
+	
+   /**
+	* Process incoming HTTP GET requests
+	*
+	* @param request Object that encapsulates the request to the servlet
+	* @param response Object that encapsulates the response from the servlet
+	*/
+	public void doGet(HttpServletRequest request, HttpServletResponse response)
+		throws ServletException, IOException
+	{
+		performTask(request,response);
+	}
+
+   /**
+	* Process incoming HTTP POST requests
+	*
+	* @param request Object that encapsulates the request to the servlet
+	* @param response Object that encapsulates the response from the servlet
+	*/
+	public void doPost(HttpServletRequest request, HttpServletResponse response)
+		throws ServletException, IOException
+	{
+		performTask(request,response);
+	}	
+
+   /**
+	* Main service method for TradeAppServlet
+	*
+	* @param request Object that encapsulates the request to the servlet
+	* @param response Object that encapsulates the response from the servlet
+	*/    	
+	public void performTask(HttpServletRequest req, HttpServletResponse resp)
+		throws ServletException, IOException 
+	{
+		try {
+			Log.debug("Enter TestServlet doGet");
+			TradeConfig.runTimeMode = TradeConfig.DIRECT;
+			for (int i=0; i<10; i++) 
+			{
+				new TradeAction().createQuote("s:"+i, "Company " + i, new BigDecimal(i*1.1));
+			}
+			/*
+			
+			AccountDataBean accountData = new TradeAction().register("user1", "password", "fullname", "address", 
+											"email", "creditCard", new BigDecimal(123.45), false);
+
+			OrderDataBean orderData = new TradeAction().buy("user1", "s:1", 100.0);
+			orderData = new TradeAction().buy("user1", "s:2", 200.0);
+			Thread.sleep(5000);
+			accountData = new TradeAction().getAccountData("user1");
+			Collection holdingDataBeans = new TradeAction().getHoldings("user1");
+			PrintWriter out = resp.getWriter();
+			resp.setContentType("text/html");
+			out.write("<HEAD></HEAD><BODY><BR><BR>");
+			out.write(accountData.toString());
+			Log.printCollection("user1 Holdings", holdingDataBeans);
+			ServletContext sc  = getServletContext();
+			req.setAttribute("results", "Success");
+			req.setAttribute("accountData", accountData);
+			req.setAttribute("holdingDataBeans", holdingDataBeans);
+			getServletContext().getRequestDispatcher("/tradehome.jsp").include(req, resp);
+			out.write("<BR><BR>done.</BODY>");
+			*/
+		}
+		catch (Exception e)
+		{
+			Log.error("TestServletException", e);
+		}
+	}
+}
+

Propchange: geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/TestServlet.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/TradeAppServlet.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/TradeAppServlet.java?rev=293214&view=auto
==============================================================================
--- geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/TradeAppServlet.java (added)
+++ geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/TradeAppServlet.java Sun Oct  2 19:34:49 2005
@@ -0,0 +1,239 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable 
+ *
+ *  Licensed 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.samples.daytrader.web;
+
+import javax.servlet.*;
+import javax.servlet.http.*;
+
+import org.apache.geronimo.samples.daytrader.direct.*;
+import org.apache.geronimo.samples.daytrader.util.*;
+
+import java.io.IOException;
+import org.apache.geronimo.samples.daytrader.*;
+
+/**
+ *
+ * TradeAppServlet provides the standard web interface to Trade and can be accessed with the Go Trade! link. 
+ * Driving benchmark load using this interface requires a sophisticated web load generator that is capable of 
+ * filling HTML forms and posting dynamic data.
+ */
+
+public class TradeAppServlet extends HttpServlet {
+
+   /**
+	* Servlet initialization method.
+	*/	
+	public void init(ServletConfig config) throws ServletException
+	{
+		super.init(config);
+		java.util.Enumeration en = config.getInitParameterNames();
+		while ( en.hasMoreElements() )
+		{
+			String parm = (String) en.nextElement();
+			String value = config.getInitParameter(parm);
+			TradeConfig.setConfigParam(parm, value);
+		}
+		try
+		{
+			TradeDirect.init();		
+		}
+		catch (Exception e)
+		{
+			Log.error(e, "TradeAppServlet:init -- Error initializing TradeDirect");
+		}
+	}
+	
+	
+   /**
+	* Returns a string that contains information about TradeScenarioServlet
+	*
+	* @return The servlet information
+	*/
+	public java.lang.String getServletInfo()
+	{
+		return "TradeAppServlet provides the standard web interface to Trade";
+	}	
+
+
+   /**
+	* Process incoming HTTP GET requests
+	*
+	* @param request Object that encapsulates the request to the servlet
+	* @param response Object that encapsulates the response from the servlet
+	*/
+	public void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
+		throws ServletException, IOException
+	{
+		performTask(request,response);
+	}
+
+   /**
+	* Process incoming HTTP POST requests
+	*
+	* @param request Object that encapsulates the request to the servlet
+	* @param response Object that encapsulates the response from the servlet
+	*/
+	public void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
+		throws ServletException, IOException
+	{
+		performTask(request,response);
+	}	
+
+   /**
+	* Main service method for TradeAppServlet
+	*
+	* @param request Object that encapsulates the request to the servlet
+	* @param response Object that encapsulates the response from the servlet
+	*/    	
+	public void performTask(HttpServletRequest req, HttpServletResponse resp)
+		throws ServletException, IOException {
+
+		String action = null;
+		String userID = null;
+		// String to create full dispatch path to TradeAppServlet w/ request Parameters
+		String dispPath = null; // Dispatch Path to TradeAppServlet
+
+
+		resp.setContentType("text/html");
+		TradeServletAction tsAction = new TradeServletAction();
+
+
+		//Dyna - need status string - prepended to output
+			action = req.getParameter("action");
+
+
+			ServletContext ctx = getServletConfig().getServletContext();
+
+			if (action == null)
+			{
+				tsAction.doWelcome(ctx, req, resp, "");
+				return;
+			}
+			else if (action.equals("login"))
+			{
+				userID = req.getParameter("uid");
+				String passwd = req.getParameter("passwd");
+				String inScenario = req.getParameter("inScenario");
+				tsAction.doLogin(ctx, req, resp, userID, passwd);
+				return;
+			}
+			else if (action.equals("register"))
+			{
+				userID = req.getParameter("user id");
+				String passwd = req.getParameter("passwd");
+				String cpasswd = req.getParameter("confirm passwd");
+				String fullname = req.getParameter("Full Name");
+				String ccn = req.getParameter("Credit Card Number");
+				String money = req.getParameter("money");
+				String email = req.getParameter("email");
+				String smail = req.getParameter("snail mail");
+				tsAction.doRegister(
+					ctx, 
+					req, 
+					resp, 
+					userID, 
+					passwd, 
+					cpasswd, 
+					fullname, 
+					ccn, 
+					money, 
+					email, 
+					smail); 
+				return;
+			}
+
+			// The rest of the operations require the user to be logged in -
+			//Get the Session and validate the user.
+			HttpSession session = req.getSession();
+			userID = (String) session.getAttribute("uidBean");
+
+			if (userID == null)
+			{
+				System.out.println("TradeAppServlet service error: User Not Logged in");
+				tsAction.doWelcome(ctx, req, resp, "User Not Logged in");
+				return;
+			}
+			if ( action.equals("quotes"))
+			{
+				String symbols = req.getParameter("symbols");
+				tsAction.doQuotes(ctx, req, resp, userID, symbols);
+			}
+			else if (action.equals("buy"))
+			{
+				String symbol = req.getParameter("symbol");
+				String quantity = req.getParameter("quantity");
+				tsAction.doBuy(ctx, req, resp, userID, symbol, quantity);
+			}
+			else if (action.equals("sell"))
+			{
+				int holdingID = Integer.parseInt(req.getParameter("holdingID"));
+				tsAction.doSell(ctx, req, resp, userID, new Integer(holdingID));
+			}
+			else if (action.equals("portfolio") || action.equals("portfolioNoEdge"))
+			{
+				tsAction.doPortfolio(ctx, req, resp, userID, "Portfolio as of " + new java.util.Date());
+			}
+			else if (action.equals("logout"))
+			{
+				tsAction.doLogout(ctx, req, resp, userID);
+			}
+			else if (action.equals("home"))
+			{
+				tsAction.doHome(ctx, req, resp, userID, "Ready to Trade");
+			}
+			else if (action.equals("account"))
+			{
+				tsAction.doAccount(ctx, req, resp, userID, "");
+			}
+			else if (action.equals("update_profile"))
+			{
+				String   password = req.getParameter("password");				
+				String  cpassword = req.getParameter("cpassword");								
+				String   fullName = req.getParameter("fullname");
+				String    address = req.getParameter("address");
+				String creditcard = req.getParameter("creditcard");
+				String      email = req.getParameter("email");
+				tsAction.doAccountUpdate(
+					ctx, 
+					req, 
+					resp, 
+					userID, 
+					password   == null? "":password.trim(),
+					cpassword  == null? "":cpassword.trim(),
+					fullName   == null? "":fullName.trim(), 
+					address    == null? "":address.trim(), 
+					creditcard == null? "":creditcard.trim(), 
+					email      == null? "":email.trim()); 
+			}
+			else
+			{
+				System.out.println("TradeAppServlet: Invalid Action=" + action);
+				tsAction.doWelcome(ctx, req, resp, "TradeAppServlet: Invalid Action" + action);
+			}
+	}
+
+		
+	private void sendRedirect(HttpServletResponse resp, String page)
+		throws ServletException, IOException {
+		resp.sendRedirect(resp.encodeRedirectURL(page));
+	}
+
+	// URL Path Prefix for dispatching to TradeAppServlet
+	private final static String tasPathPrefix = "/app?action=";
+			
+}
\ No newline at end of file

Propchange: geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/TradeAppServlet.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/TradeBuildDB.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/TradeBuildDB.java?rev=293214&view=auto
==============================================================================
--- geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/TradeBuildDB.java (added)
+++ geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/TradeBuildDB.java Sun Oct  2 19:34:49 2005
@@ -0,0 +1,156 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable 
+ *
+ *  Licensed 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.samples.daytrader.web;
+
+import java.math.BigDecimal;
+
+import org.apache.geronimo.samples.daytrader.util.*;
+
+import org.apache.geronimo.samples.daytrader.*;
+
+/**
+ * TradeBuildDB uses operations provided by the TradeApplication to initially populate a Trade
+ * database. Specifically, a new Trade User population is created using UserIDs of the form "uid:xxx" 
+ * where xxx is a sequential number (e.g. uid:0, uid:1, etc.). New stocks are also created of the 
+ * form "s:xxx", again where xxx represents sequential numbers (e.g. s:1, s:2, etc.)
+ */
+public class TradeBuildDB {
+
+	private boolean verbose = true;
+	private TradeConfig t = new TradeConfig();
+
+	/**
+	  * Populate a Trade DB using standard out as a log
+	  */
+	public TradeBuildDB() throws Exception {
+		this(new java.io.PrintWriter(System.out));
+	}
+
+	/**
+		* Populate a Trade DB, logging to the provided output stream
+		*/
+	public TradeBuildDB(java.io.PrintWriter out) throws Exception {
+		String symbol, companyName;
+		int errorCount = 0; // Give up gracefully after 10 errors
+		TradeAction tradeAction = new TradeAction();
+
+		//  TradeStatistics.statisticsEnabled=false;  // disable statistics
+		out.println(
+			"<HEAD><BR><EM> TradeBuildDB: Building Trade Database...</EM><BR> This operation will take several minutes. Please wait...</HEAD>");
+
+		out.println("<BODY>");
+		out.println(
+			"<BR>TradeBuildDB: **** Creating " + TradeConfig.getMAX_QUOTES() + " Quotes ****</BR>");
+		//Attempt to delete all of the Trade users and Trade Quotes first
+		try
+		{
+			tradeAction.resetTrade(true);
+		}
+		catch (Exception e)
+		{
+			Log.error(e, "TradeBuildDB: Unable to delete Trade users (uid:0, uid:1, ...) and Trade Quotes (s:0, s:1, ...)");
+		}
+		for (int i = 0; i < TradeConfig.getMAX_QUOTES(); i++) {
+			symbol = "s:" + i;
+			companyName = "S" + i + " Incorporated";
+			try {
+				QuoteDataBean quoteData =
+					tradeAction.createQuote(
+						symbol,
+						companyName,
+						new java.math.BigDecimal(TradeConfig.rndPrice()));
+				if (i % 10 == 0) {
+					out.print("....." + symbol);
+					if (i % 100 == 0) {
+						out.println(" -<BR>");
+						out.flush();
+					}
+				}
+			} catch (Exception e) {
+				if (errorCount++ >= 10) {
+					String error = "Populate Trade DB aborting after 10 create quote errors. Check the EJB datasource configuration. Check the log for details <BR><BR> Exception is: <BR> " + e.toString();						
+					Log.error(e, error);
+					throw e;
+				}	
+			}
+		}
+		out.println("<BR>");
+		out.println("<BR>**** Registering " + TradeConfig.getMAX_USERS() + " Users **** ");
+		errorCount = 0; //reset for user registrations
+
+		// Registration is a formal operation in Trade 2. 
+		for (int i = 0; i < TradeConfig.getMAX_USERS(); i++) {
+			String userID = "uid:" + i;
+			String fullname = TradeConfig.rndFullName();
+			String email = TradeConfig.rndEmail(userID);
+			String address = TradeConfig.rndAddress();
+			String creditcard = TradeConfig.rndCreditCard();
+			double initialBalance = (double) (TradeConfig.rndInt(100000)) + 200000;
+			if (i == 0) {
+				initialBalance = 1000000; // uid:0 starts with a cool million.
+			}
+			try {
+				AccountDataBean accountData =
+					tradeAction.register(
+						userID,
+						"xxx",
+						fullname,
+						address,
+						email,
+						creditcard,
+						new BigDecimal(initialBalance));
+				String results;
+				if (accountData != null) {
+					if (i % 50 == 0) {
+						out.print("<BR>Account# " +accountData.getAccountID() + " userID=" + userID);
+					} // end-if
+
+					int holdings = TradeConfig.rndInt(TradeConfig.getMAX_HOLDINGS()+1); // 0-MAX_HOLDING (inclusive), avg holdings per user = (MAX-0)/2
+					double quantity = 0;
+					OrderDataBean orderData;
+					for (int j = 0; j < holdings; j++) {
+						symbol = TradeConfig.rndSymbol();
+						quantity = TradeConfig.rndQuantity();
+						orderData = tradeAction.buy(userID, symbol, quantity, TradeConfig.orderProcessingMode);
+					} // end-for
+					if (i % 50 == 0) {
+						out.println(" has " + holdings + " holdings.");
+						out.flush();
+					} // end-if
+				} else {
+					out.println("<BR>UID " + userID + " already registered.</BR>");
+					out.flush();
+				} // end-if
+
+			} catch (Exception e) {
+				if (errorCount++ >= 10) {
+					AccountProfileDataBean accountProfileData = null;
+
+					String error = "Populate Trade DB aborting after 10 user registration errors. Check the log for details. <BR><BR> Exception is: <BR>"	+ e.toString();
+					Log.error(e, error);
+					throw e;					
+				}
+			}
+		} // end-for
+		out.println("</BODY>");
+	}
+	public static void main(String args[]) throws Exception {
+		new TradeBuildDB();
+
+	}
+}
\ No newline at end of file

Propchange: geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/TradeBuildDB.java
------------------------------------------------------------------------------
    svn:eol-style = native