// Path: src/main/java/com/bitfiction/mvctemplate/model/User.java
// @Entity
// @Table(name = "user")
// @SequenceGenerator(name="seqUser", initialValue=10, allocationSize=100)
// public class User implements Serializable {
// 
//    // Composite-id class must implement Serializable
//    private static final long serialVersionUID = 1L;
//    
//    // Avoid org.hibernate.InstantiationException: No default constructor for entity	   
//    public User() {
// 	   super();
//    }
//    
//    public User(String username, String password) {
// 		this(username, password, null, null);
//    }
//    
//    public User(String username, String password,  BaseEntity baseEntity, Set<Role> roles) {
// 		super();
// 		this.username = username;
// 		this.password = password;
// 		this.baseEntity = baseEntity;
// 		this.roles = roles;
//    }
//    
//    @Id
//    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="seqUser")
//    @Column(name="id")
//    private Long id;
//    
//    @Id
//    @Column(name="username", length = 127)
//    private String username;
//    
//    @Column(name="password", length = 127)
//    private String password;
//    
//    @JsonIgnore
//    @OneToOne(fetch=FetchType.EAGER, optional=true)
//    @JoinColumn(name="baseEntityId", referencedColumnName="id")
//    private BaseEntity baseEntity;
// 
//    @JsonIgnore
//    @ManyToMany(fetch=FetchType.EAGER, cascade = {CascadeType.ALL})
//    @JoinTable(name="userrole",
//               joinColumns={@JoinColumn(referencedColumnName="id"),
// 		   				   @JoinColumn(referencedColumnName="username")},
//               inverseJoinColumns={@JoinColumn(referencedColumnName="id")})
//    private Set<Role> roles = new HashSet<Role>();
// 	
//     public Long getId() {
// 		return id;
// 	}
// 	
// 	public void setId(Long id) {
// 		this.id = id;
// 	}
//    
// 	public String getUsername() {
// 		return username;
// 	}
// 	
// 	public void setUsername(String username) {
// 		this.username = username;
// 	}
// 	
// 	public String getPassword() {
// 		return password;
// 	}
// 	
// 	public void setPassword(String password) {
// 		this.password = password;
// 	}
// 
// 	public Set<Role> getRoles() {
// 		return roles;
// 	}
// 
// 	public void setRoles(Set<Role> roles) {
// 		this.roles = roles;
// 	}
// 	
// 	public boolean hasRole(String rolename) {
// 		if (this.getRoles() != null) {
// 			for (Role role: this.getRoles()) {
// 				if (role.getRolename().equalsIgnoreCase(rolename)) {
// 					return true;
// 				}
// 			}
// 		}
// 		return false;
// 	}
// 
// 	public BaseEntity getBaseEntity() {
// 		return baseEntity;
// 	}
// 
// 	public void setBaseEntity(BaseEntity baseEntity) {
// 		this.baseEntity = baseEntity;
// 	}
// 
// }


import java.io.IOException;
import java.util.logging.Logger;
import javax.inject.Inject;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.bitfiction.mvctemplate.model.User;
package com.bitfiction.mvctemplate.web.servlet;




@WebServlet("/logout")
public class LogoutServlet extends HttpServlet {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@Inject
	private Logger log;
	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		String username = "unknown";
		if (request.getSession() != null && request.getSession().getAttribute("passuser") != null) {
// Path: src/main/java/com/bitfiction/mvctemplate/model/User.java
// @Entity
// @Table(name = "user")
// @SequenceGenerator(name="seqUser", initialValue=10, allocationSize=100)
// public class User implements Serializable {
// 
//    // Composite-id class must implement Serializable
//    private static final long serialVersionUID = 1L;
//    
//    // Avoid org.hibernate.InstantiationException: No default constructor for entity	   
//    public User() {
// 	   super();
//    }
//    
//    public User(String username, String password) {
// 		this(username, password, null, null);
//    }
//    
//    public User(String username, String password,  BaseEntity baseEntity, Set<Role> roles) {
// 		super();
// 		this.username = username;
// 		this.password = password;
// 		this.baseEntity = baseEntity;
// 		this.roles = roles;
//    }
//    
//    @Id
//    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="seqUser")
//    @Column(name="id")
//    private Long id;
//    
//    @Id
//    @Column(name="username", length = 127)
//    private String username;
//    
//    @Column(name="password", length = 127)
//    private String password;
//    
//    @JsonIgnore
//    @OneToOne(fetch=FetchType.EAGER, optional=true)
//    @JoinColumn(name="baseEntityId", referencedColumnName="id")
//    private BaseEntity baseEntity;
// 
//    @JsonIgnore
//    @ManyToMany(fetch=FetchType.EAGER, cascade = {CascadeType.ALL})
//    @JoinTable(name="userrole",
//               joinColumns={@JoinColumn(referencedColumnName="id"),
// 		   				   @JoinColumn(referencedColumnName="username")},
//               inverseJoinColumns={@JoinColumn(referencedColumnName="id")})
//    private Set<Role> roles = new HashSet<Role>();
// 	
//     public Long getId() {
// 		return id;
// 	}
// 	
// 	public void setId(Long id) {
// 		this.id = id;
// 	}
//    
// 	public String getUsername() {
// 		return username;
// 	}
// 	
// 	public void setUsername(String username) {
// 		this.username = username;
// 	}
// 	
// 	public String getPassword() {
// 		return password;
// 	}
// 	
// 	public void setPassword(String password) {
// 		this.password = password;
// 	}
// 
// 	public Set<Role> getRoles() {
// 		return roles;
// 	}
// 
// 	public void setRoles(Set<Role> roles) {
// 		this.roles = roles;
// 	}
// 	
// 	public boolean hasRole(String rolename) {
// 		if (this.getRoles() != null) {
// 			for (Role role: this.getRoles()) {
// 				if (role.getRolename().equalsIgnoreCase(rolename)) {
// 					return true;
// 				}
// 			}
// 		}
// 		return false;
// 	}
// 
// 	public BaseEntity getBaseEntity() {
// 		return baseEntity;
// 	}
// 
// 	public void setBaseEntity(BaseEntity baseEntity) {
// 		this.baseEntity = baseEntity;
// 	}
// 
// }


// Path: src/main/java/com/bitfiction/mvctemplate/web/servlet/LogoutServlet.java
import java.io.IOException;
import java.util.logging.Logger;
import javax.inject.Inject;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.bitfiction.mvctemplate.model.User;

package com.bitfiction.mvctemplate.web.servlet;




@WebServlet("/logout")
public class LogoutServlet extends HttpServlet {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@Inject
	private Logger log;
	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		String username = "unknown";
		if (request.getSession() != null && request.getSession().getAttribute("passuser") != null) {
			username = ((User) request.getSession().getAttribute("passuser")).getUsername();