You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by im...@apache.org on 2007/03/12 20:51:34 UTC

svn commit: r517357 - in /myfaces/fusion/trunk/examples/src/main: java/org/apache/myfaces/examples/configurator/backings/ java/org/apache/myfaces/examples/configurator/model/dao/ java/org/apache/myfaces/examples/configurator/model/po/ resources/META-IN...

Author: imario
Date: Mon Mar 12 12:51:33 2007
New Revision: 517357

URL: http://svn.apache.org/viewvc?view=rev&rev=517357
Log:
added @Transactional function test

Added:
    myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/configurator/backings/Customer.java
      - copied, changed from r515737, myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/configurator/backings/Checkout.java
    myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/configurator/model/dao/CustomerDAO.java
      - copied, changed from r515737, myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/configurator/model/dao/PieceDAO.java
    myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/configurator/model/po/Customer.java
      - copied, changed from r515737, myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/configurator/model/po/Piece.java
    myfaces/fusion/trunk/examples/src/main/webapp/configurator/Customer.jsp
      - copied, changed from r515737, myfaces/fusion/trunk/examples/src/main/webapp/configurator/Checkout.jsp
Modified:
    myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/configurator/model/dao/PieceDAO.java
    myfaces/fusion/trunk/examples/src/main/resources/META-INF/persistence.xml
    myfaces/fusion/trunk/examples/src/main/webapp/WEB-INF/applicationContext.xml
    myfaces/fusion/trunk/examples/src/main/webapp/WEB-INF/faces-config.xml
    myfaces/fusion/trunk/examples/src/main/webapp/configurator/ComponentSelection.jsp
    myfaces/fusion/trunk/examples/src/main/webapp/default.css

Copied: myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/configurator/backings/Customer.java (from r515737, myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/configurator/backings/Checkout.java)
URL: http://svn.apache.org/viewvc/myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/configurator/backings/Customer.java?view=diff&rev=517357&p1=myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/configurator/backings/Checkout.java&r1=515737&p2=myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/configurator/backings/Customer.java&r2=517357
==============================================================================
--- myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/configurator/backings/Checkout.java (original)
+++ myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/configurator/backings/Customer.java Mon Mar 12 12:51:33 2007
@@ -18,12 +18,57 @@
  */
 package org.apache.myfaces.examples.configurator.backings;
 
-import org.apache.myfaces.fusion.conversation.ConversationUtils;
+import org.apache.myfaces.examples.configurator.model.dao.CustomerDAO;
+import org.springframework.transaction.annotation.Transactional;
+import org.apache.myfaces.examples.lib.FacesConst;
 
-public class Checkout
+public class Customer
 {
+	private CustomerDAO customerDao;
+	private org.apache.myfaces.examples.configurator.model.po.Customer customer;
+
+	public CustomerDAO getCustomerDao()
+	{
+		return customerDao;
+	}
+
+	public void setCustomerDao(CustomerDAO customerDao)
+	{
+		this.customerDao = customerDao;
+	}
+
 	public void initView()
 	{
-		ConversationUtils.ensureConversationRedirect("configuratorData", "/configurator/ComponentSelection.faces");
+		if (customer == null)
+		{
+			customer = new org.apache.myfaces.examples.configurator.model.po.Customer();
+		}
+	}
+
+	public org.apache.myfaces.examples.configurator.model.po.Customer getCustomer()
+	{
+		return customer;
+	}
+
+	@Transactional
+	public String saveAction()
+	{
+		// should insert or update
+		getCustomerDao().save(getCustomer());
+		
+		return FacesConst.SUCCESS;
+	}
+
+	@Transactional
+	public String updateAction()
+	{
+		// should update
+		return FacesConst.SUCCESS;
+	}
+
+	public String checkAction()
+	{
+		// should not issue a db request even if you changed something in the view
+		return FacesConst.SUCCESS;
 	}
-}
+}
\ No newline at end of file

Copied: myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/configurator/model/dao/CustomerDAO.java (from r515737, myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/configurator/model/dao/PieceDAO.java)
URL: http://svn.apache.org/viewvc/myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/configurator/model/dao/CustomerDAO.java?view=diff&rev=517357&p1=myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/configurator/model/dao/PieceDAO.java&r1=515737&p2=myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/configurator/model/dao/CustomerDAO.java&r2=517357
==============================================================================
--- myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/configurator/model/dao/PieceDAO.java (original)
+++ myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/configurator/model/dao/CustomerDAO.java Mon Mar 12 12:51:33 2007
@@ -1,17 +1,17 @@
 package org.apache.myfaces.examples.configurator.model.dao;
 
-import org.apache.myfaces.examples.configurator.model.po.Piece;
+import org.apache.myfaces.examples.configurator.model.po.Customer;
 
 import javax.persistence.EntityManager;
 import javax.persistence.PersistenceContext;
 
-public class PieceDAO
+public class CustomerDAO
 {
 	@PersistenceContext
 	private EntityManager entityManager;
 
-	public Piece getByKey(Long pieceId)
+	public void save(Customer customer)
 	{
-		return entityManager.find(Piece.class, pieceId);
+		entityManager.persist(customer);
 	}
 }

Modified: myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/configurator/model/dao/PieceDAO.java
URL: http://svn.apache.org/viewvc/myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/configurator/model/dao/PieceDAO.java?view=diff&rev=517357&r1=517356&r2=517357
==============================================================================
--- myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/configurator/model/dao/PieceDAO.java (original)
+++ myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/configurator/model/dao/PieceDAO.java Mon Mar 12 12:51:33 2007
@@ -10,6 +10,16 @@
 	@PersistenceContext
 	private EntityManager entityManager;
 
+	public EntityManager getEntityManager()
+	{
+		return entityManager;
+	}
+
+	public void setEntityManager(EntityManager entityManager)
+	{
+		this.entityManager = entityManager;
+	}
+
 	public Piece getByKey(Long pieceId)
 	{
 		return entityManager.find(Piece.class, pieceId);

Copied: myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/configurator/model/po/Customer.java (from r515737, myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/configurator/model/po/Piece.java)
URL: http://svn.apache.org/viewvc/myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/configurator/model/po/Customer.java?view=diff&rev=517357&p1=myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/configurator/model/po/Piece.java&r1=515737&p2=myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/configurator/model/po/Customer.java&r2=517357
==============================================================================
--- myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/configurator/model/po/Piece.java (original)
+++ myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/configurator/model/po/Customer.java Mon Mar 12 12:51:33 2007
@@ -4,28 +4,20 @@
 import javax.persistence.GeneratedValue;
 import javax.persistence.GenerationType;
 import javax.persistence.Id;
-import javax.persistence.ManyToOne;
 import javax.persistence.Version;
-import javax.persistence.Column;
 
 @Entity
-public class Piece
+public class Customer
 {
 	@Id
 	@GeneratedValue(strategy = GenerationType.TABLE)
 	private Long id;
 
-	@ManyToOne
-	private Component component;
+	private String firstName;
 
-	// business key
-	@Column(nullable = false)
-	private String number;
+	private String lastName;
 
-	@Column(nullable = false)
-	private String description;
-
-	private double price;
+	private String email;
 
 	@Version
 	private Long version;
@@ -40,44 +32,34 @@
 		this.id = id;
 	}
 
-	public Component getComponent()
-	{
-		return component;
-	}
-
-	public void setComponent(Component component)
-	{
-		this.component = component;
-	}
-
-	public String getNumber()
+	public String getFirstName()
 	{
-		return number;
+		return firstName;
 	}
 
-	public void setNumber(String number)
+	public void setFirstName(String firstName)
 	{
-		this.number = number;
+		this.firstName = firstName;
 	}
 
-	public String getDescription()
+	public String getLastName()
 	{
-		return description;
+		return lastName;
 	}
 
-	public void setDescription(String description)
+	public void setLastName(String lastName)
 	{
-		this.description = description;
+		this.lastName = lastName;
 	}
 
-	public double getPrice()
+	public String getEmail()
 	{
-		return price;
+		return email;
 	}
 
-	public void setPrice(double price)
+	public void setEmail(String email)
 	{
-		this.price = price;
+		this.email = email;
 	}
 
 	public Long getVersion()

Modified: myfaces/fusion/trunk/examples/src/main/resources/META-INF/persistence.xml
URL: http://svn.apache.org/viewvc/myfaces/fusion/trunk/examples/src/main/resources/META-INF/persistence.xml?view=diff&rev=517357&r1=517356&r2=517357
==============================================================================
--- myfaces/fusion/trunk/examples/src/main/resources/META-INF/persistence.xml (original)
+++ myfaces/fusion/trunk/examples/src/main/resources/META-INF/persistence.xml Mon Mar 12 12:51:33 2007
@@ -28,6 +28,7 @@
 			<class>org.apache.myfaces.examples.configurator.model.po.OrderHead</class>
 			<class>org.apache.myfaces.examples.configurator.model.po.OrderItem</class>
 			<class>org.apache.myfaces.examples.configurator.model.po.Piece</class>
+			<class>org.apache.myfaces.examples.configurator.model.po.Customer</class>
 			<class>org.apache.myfaces.examples.ballot.model.Item</class>
 			<class>org.apache.myfaces.examples.ballot.model.Topic</class>
 			<class>org.apache.myfaces.examples.ballot.model.Vote</class>

Modified: myfaces/fusion/trunk/examples/src/main/webapp/WEB-INF/applicationContext.xml
URL: http://svn.apache.org/viewvc/myfaces/fusion/trunk/examples/src/main/webapp/WEB-INF/applicationContext.xml?view=diff&rev=517357&r1=517356&r2=517357
==============================================================================
--- myfaces/fusion/trunk/examples/src/main/webapp/WEB-INF/applicationContext.xml (original)
+++ myfaces/fusion/trunk/examples/src/main/webapp/WEB-INF/applicationContext.xml Mon Mar 12 12:51:33 2007
@@ -130,6 +130,11 @@
 		autowire="byName">
 	</bean>
 	<bean
+		name="customerDao"
+		class="org.apache.myfaces.examples.configurator.model.dao.CustomerDAO"
+		autowire="byName">
+	</bean>
+	<bean
 		name="initialization"
 		class="org.apache.myfaces.examples.configurator.model.Initialization">
 	</bean>
@@ -138,6 +143,15 @@
 	<bean
 		name="configuratorData"
 		class="org.apache.myfaces.examples.configurator.backings.ConfiguratorData"
+		scope="conversation"
+		autowire="byName">
+
+		<aop:scoped-proxy/>
+	</bean>
+
+	<bean
+		name="configuratorCustomer"
+		class="org.apache.myfaces.examples.configurator.backings.Customer"
 		scope="conversation"
 		autowire="byName">
 

Modified: myfaces/fusion/trunk/examples/src/main/webapp/WEB-INF/faces-config.xml
URL: http://svn.apache.org/viewvc/myfaces/fusion/trunk/examples/src/main/webapp/WEB-INF/faces-config.xml?view=diff&rev=517357&r1=517356&r2=517357
==============================================================================
--- myfaces/fusion/trunk/examples/src/main/webapp/WEB-INF/faces-config.xml (original)
+++ myfaces/fusion/trunk/examples/src/main/webapp/WEB-INF/faces-config.xml Mon Mar 12 12:51:33 2007
@@ -58,6 +58,15 @@
 	</navigation-rule>
 
 	<navigation-rule>
+		<description>edit/create customer</description>
+		<navigation-case>
+			<from-outcome>editCustomer</from-outcome>
+			<to-view-id>/configurator/Customer.jsp</to-view-id>
+			<redirect/>
+		</navigation-case>
+	</navigation-rule>
+
+	<navigation-rule>
 		<description>edit/new topic</description>
 		<navigation-case>
 			<from-action>#{ballotHall.newTopicAction}</from-action>

Modified: myfaces/fusion/trunk/examples/src/main/webapp/configurator/ComponentSelection.jsp
URL: http://svn.apache.org/viewvc/myfaces/fusion/trunk/examples/src/main/webapp/configurator/ComponentSelection.jsp?view=diff&rev=517357&r1=517356&r2=517357
==============================================================================
--- myfaces/fusion/trunk/examples/src/main/webapp/configurator/ComponentSelection.jsp (original)
+++ myfaces/fusion/trunk/examples/src/main/webapp/configurator/ComponentSelection.jsp Mon Mar 12 12:51:33 2007
@@ -32,6 +32,12 @@
 		<h:outputText value="Assemble your PC" />
 	</t:htmlTag>
 
+	<t:panelGrid columns="1">
+		<h:commandLink
+				action="editCustomer"
+				value="Customer" />
+	</t:panelGrid>
+
 	<t:panelGrid
 			columns="2"
 			columnClasses="fixtext,selection">

Copied: myfaces/fusion/trunk/examples/src/main/webapp/configurator/Customer.jsp (from r515737, myfaces/fusion/trunk/examples/src/main/webapp/configurator/Checkout.jsp)
URL: http://svn.apache.org/viewvc/myfaces/fusion/trunk/examples/src/main/webapp/configurator/Customer.jsp?view=diff&rev=517357&p1=myfaces/fusion/trunk/examples/src/main/webapp/configurator/Checkout.jsp&r1=515737&p2=myfaces/fusion/trunk/examples/src/main/webapp/configurator/Customer.jsp&r2=517357
==============================================================================
--- myfaces/fusion/trunk/examples/src/main/webapp/configurator/Checkout.jsp (original)
+++ myfaces/fusion/trunk/examples/src/main/webapp/configurator/Customer.jsp Mon Mar 12 12:51:33 2007
@@ -29,74 +29,49 @@
 	<h:form>
 
 		<t:htmlTag value="h3">
-			<h:outputText value="Buy your PC"/>
+			<h:outputText value="Enter your data"/>
 		</t:htmlTag>
 
-		<t:dataTable
-			var="order"
-			value="#{configuratorData.orderItems}"
-			rowClasses="TR1, TR2">
-
+		<h:panelGrid columns="2">
 			<f:facet name="footer">
-				<h:panelGroup>
-					<h:commandButton value="Cancel" action="#{configuratorData.cancelAction}"/>
-					<h:commandButton value="Buy" action="#{configuratorData.buyAction}"/>
-				</h:panelGroup>
+				<h:panelGrid
+						columns="2"
+						columnClasses="tRight, tRight">
+					<h:outputText value="just calls an empty method without @Transactional - should NOT issue any db request" />
+					<h:commandButton value="Check" action="#{configuratorCustomer.checkAction}"/>
+
+					<h:outputText value="persist the entity using entityManager.persist and @Transactional - should issue insert or update db request" />
+					<h:commandButton value="Save" action="#{configuratorCustomer.saveAction}"/>
+
+					<h:outputText value="just calles a @Transactional method; no entityManager involved - should issue an update db request ONLY if you've saved before" />
+					<h:commandButton value="Update" action="#{configuratorCustomer.updateAction}"/>
+				</h:panelGrid>
 			</f:facet>
 
-			<h:column>
-				<f:facet name="header">
-					<h:outputText value="position"/>
-				</f:facet>
-				<h:outputText value="#{order.posnr}"/>
-			</h:column>
-
-			<h:column>
-				<f:facet name="header">
-					<h:outputText value="count"/>
-				</f:facet>
-				<h:inputText value="#{order.amount}">
-					<s:convertNumber
-						groupingUsed="true"
-						minFractionDigits="0"
-						maxFractionDigits="0"/>
-				</h:inputText>
-			</h:column>
-
-			<h:column>
-				<f:facet name="header">
-					<h:outputText value="number"/>
-				</f:facet>
-				<h:outputText value="#{order.piece.number}"/>
-			</h:column>
-
-			<h:column>
-				<f:facet name="header">
-					<h:outputText value="description"/>
-				</f:facet>
-				<h:outputText value="#{order.piece.description}"/>
-			</h:column>
-
-			<h:column>
-				<f:facet name="header">
-					<h:outputText value="price"/>
-				</f:facet>
-				<h:outputText value="#{order.piece.price}">
-					<f:convertNumber
-						groupingUsed="true"
-						minFractionDigits="2"
-						maxFractionDigits="2"/>
-				</h:outputText>
-			</h:column>
-
-			<h:column>
-				<f:facet name="header">
-					<h:outputText value="value"/>
-				</f:facet>
-				<h:outputText value="???"/>
-			</h:column>
-
-		</t:dataTable>
+			<h:outputLabel
+				for="firstname"
+				value="First name" />
+			<h:inputText
+				id="firstname"
+				value="#{configuratorCustomer.customer.firstName}"
+				required="true"/>
+
+			<h:outputLabel
+				for="lastname"
+				value="First name" />
+			<h:inputText
+				id="lastname"
+				value="#{configuratorCustomer.customer.lastName}"
+				required="true"/>
+
+			<h:outputLabel
+				for="email"
+				value="E-Mail" />
+			<h:inputText
+				id="email"
+				value="#{configuratorCustomer.customer.email}"
+				required="true"/>
+		</h:panelGrid>
 
 	</h:form>
 

Modified: myfaces/fusion/trunk/examples/src/main/webapp/default.css
URL: http://svn.apache.org/viewvc/myfaces/fusion/trunk/examples/src/main/webapp/default.css?view=diff&rev=517357&r1=517356&r2=517357
==============================================================================
--- myfaces/fusion/trunk/examples/src/main/webapp/default.css (original)
+++ myfaces/fusion/trunk/examples/src/main/webapp/default.css Mon Mar 12 12:51:33 2007
@@ -99,4 +99,14 @@
 .nowrap
 {
 	white-space: nowrap;
+}
+
+.tLeft
+{
+	text-align: left;
+}
+
+.tRight
+{
+	text-align: right;
 }