// Path: rahub-forum-service/src/main/java/net/jotorren/microservices/forum/domain/Forum.java
// @Entity
// public class Forum implements Serializable {
// 	private static final long serialVersionUID = -8739470216693425165L;
// 
// 	@Id
// 	@Column(nullable=false)
// 	private String forumId;
// 
// 	@Column(nullable=false)
// 	private String topicName;
// 	
// 	@Column
// 	private String topicCategory;
// 	
// 	@Column(nullable=false)
// 	private String subjectId;
// 
// 	public String getForumId() {
// 		return forumId;
// 	}
// 
// 	public void setForumId(String forumId) {
// 		this.forumId = forumId;
// 	}
// 
// 	public String getTopicName() {
// 		return topicName;
// 	}
// 
// 	public void setTopicName(String topicName) {
// 		this.topicName = topicName;
// 	}
// 
// 	public String getTopicCategory() {
// 		return topicCategory;
// 	}
// 
// 	public void setTopicCategory(String topicCategory) {
// 		this.topicCategory = topicCategory;
// 	}
// 
// 	public String getSubjectId() {
// 		return subjectId;
// 	}
// 
// 	public void setSubjectId(String subjectId) {
// 		this.subjectId = subjectId;
// 	}
// }
// 
// Path: rahub-cross-cutting-concerns/src/main/java/net/jotorren/microservices/tx/CompositeTransactionParticipantDao.java
// public class CompositeTransactionParticipantDao {
// 
// 	@PersistenceContext(type = PersistenceContextType.EXTENDED, synchronization = SynchronizationType.UNSYNCHRONIZED)
// 	private EntityManager em;
// 
// 	public EntityManager getEntityManager() {
// 		return em;
// 	}
// 	
// 	public void save(Object entity) {
// 		em.persist(entity);
// 	}
// 
// 	public <T> T saveOrUpdate(T entity) {
// 		return em.merge(entity);
// 	}
// 
// 	public void remove(Object entity) {
// 		em.remove(entity);
// 	}
// 
// 	@Transactional(readOnly=false)
// 	public void commit() {
// 		em.joinTransaction();
// 	}
// 
// 	public void apply(List<EntityCommand<?>> transactionOperations) {
// 		if (null == transactionOperations) {
// 			return;
// 		}
// 
// 		for (EntityCommand<?> command : transactionOperations) {
// 			switch (command.getAction().ordinal()) {
// 			case 0:
// 				save(command.getEntity());
// 				break;
// 			case 1:
// 				saveOrUpdate(command.getEntity());
// 				break;
// 			case 2:
// 				remove(command.getEntity());
// 				break;
// 			}
// 		}
// 	}
// }


import net.jotorren.microservices.forum.domain.Forum;
import net.jotorren.microservices.tx.CompositeTransactionParticipantDao;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Repository;
package net.jotorren.microservices.forum.dao;



@Repository
@Scope("prototype")
// Path: rahub-forum-service/src/main/java/net/jotorren/microservices/forum/domain/Forum.java
// @Entity
// public class Forum implements Serializable {
// 	private static final long serialVersionUID = -8739470216693425165L;
// 
// 	@Id
// 	@Column(nullable=false)
// 	private String forumId;
// 
// 	@Column(nullable=false)
// 	private String topicName;
// 	
// 	@Column
// 	private String topicCategory;
// 	
// 	@Column(nullable=false)
// 	private String subjectId;
// 
// 	public String getForumId() {
// 		return forumId;
// 	}
// 
// 	public void setForumId(String forumId) {
// 		this.forumId = forumId;
// 	}
// 
// 	public String getTopicName() {
// 		return topicName;
// 	}
// 
// 	public void setTopicName(String topicName) {
// 		this.topicName = topicName;
// 	}
// 
// 	public String getTopicCategory() {
// 		return topicCategory;
// 	}
// 
// 	public void setTopicCategory(String topicCategory) {
// 		this.topicCategory = topicCategory;
// 	}
// 
// 	public String getSubjectId() {
// 		return subjectId;
// 	}
// 
// 	public void setSubjectId(String subjectId) {
// 		this.subjectId = subjectId;
// 	}
// }
// 
// Path: rahub-cross-cutting-concerns/src/main/java/net/jotorren/microservices/tx/CompositeTransactionParticipantDao.java
// public class CompositeTransactionParticipantDao {
// 
// 	@PersistenceContext(type = PersistenceContextType.EXTENDED, synchronization = SynchronizationType.UNSYNCHRONIZED)
// 	private EntityManager em;
// 
// 	public EntityManager getEntityManager() {
// 		return em;
// 	}
// 	
// 	public void save(Object entity) {
// 		em.persist(entity);
// 	}
// 
// 	public <T> T saveOrUpdate(T entity) {
// 		return em.merge(entity);
// 	}
// 
// 	public void remove(Object entity) {
// 		em.remove(entity);
// 	}
// 
// 	@Transactional(readOnly=false)
// 	public void commit() {
// 		em.joinTransaction();
// 	}
// 
// 	public void apply(List<EntityCommand<?>> transactionOperations) {
// 		if (null == transactionOperations) {
// 			return;
// 		}
// 
// 		for (EntityCommand<?> command : transactionOperations) {
// 			switch (command.getAction().ordinal()) {
// 			case 0:
// 				save(command.getEntity());
// 				break;
// 			case 1:
// 				saveOrUpdate(command.getEntity());
// 				break;
// 			case 2:
// 				remove(command.getEntity());
// 				break;
// 			}
// 		}
// 	}
// }


// Path: rahub-forum-service/src/main/java/net/jotorren/microservices/forum/dao/ForumTransactionAwareDao.java
import net.jotorren.microservices.forum.domain.Forum;
import net.jotorren.microservices.tx.CompositeTransactionParticipantDao;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Repository;

package net.jotorren.microservices.forum.dao;



@Repository
@Scope("prototype")
public class ForumTransactionAwareDao extends CompositeTransactionParticipantDao{