package org.jboss.seam.example.seamspace; import static org.jboss.seam.ScopeType.CONVERSATION; import java.io.Serializable; import java.util.Date; import javax.ejb.Remove; import javax.persistence.EntityManager; import javax.persistence.NoResultException; import org.jboss.seam.annotations.Begin; import org.jboss.seam.annotations.Destroy; import org.jboss.seam.annotations.End; import org.jboss.seam.annotations.Factory; import org.jboss.seam.annotations.In; import org.jboss.seam.annotations.Name; import org.jboss.seam.annotations.Out; import org.jboss.seam.annotations.Scope; import org.jboss.seam.annotations.web.RequestParameter; import org.jboss.seam.contexts.Contexts; import org.jboss.seam.faces.FacesMessages; import org.jboss.seam.security.Identity; @Scope(CONVERSATION) @Name("friendAction") public class FriendAction implements Serializable { private static final long serialVersionUID = 4565339001481077911L; @RequestParameter("name") private String name; @Out(required = false) private FriendComment friendComment; @Out(required = false) private MemberFriend friendRequest; @In(required = false) private Member authenticatedMember; @In private EntityManager entityManager; @Factory("friendComment") @Begin public void createComment() { try { Member member = (Member) entityManager.createQuery( "from Member where memberName = :memberName") .setParameter("memberName", name) .getSingleResult(); Contexts.getMethodContext().set("friends", member.getFriends()); Identity.instance().checkPermission(member, "createFriendComment"); friendComment = new FriendComment(); friendComment.setFriend(authenticatedMember); friendComment.setMember(member); } catch (NoResultException ex) { FacesMessages.instance().add("Member not found."); } } @End public void saveComment() { friendComment.setCommentDate(new Date()); entityManager.persist(friendComment); } @Begin public void createRequest() { try { Member member = (Member) entityManager.createQuery( "from Member where memberName = :memberName") .setParameter("memberName", name) .getSingleResult(); Contexts.getMethodContext().set("friends", member.getFriends()); Identity.instance().checkPermission(member, "createFriendRequest"); friendRequest = new MemberFriend(); friendRequest.setFriend(authenticatedMember); friendRequest.setMember(member); } catch (NoResultException ex) { FacesMessages.instance().add("Member not found."); } } @End public void saveRequest() { friendRequest.getMember().getFriends().add(friendRequest); entityManager.persist(friendRequest); FacesMessages.instance().add("Friend request sent"); } @Remove @Destroy public void destroy() { } }