From d0cb11fcb8aa56081291f40746ec1c85844ed6a5 Mon Sep 17 00:00:00 2001
From: Roberto Sánchez <roberto.sanchez@curisit.net>
Date: Thu, 26 Dec 2013 16:44:48 +0000
Subject: [PATCH] #333 feature - Fixed some JPA config issues
---
securis/src/main/resources/META-INF/persistence.xml | 21 +++++++
securis/src/main/java/net/curisit/securis/db/License.java | 24 ++++---
securis/src/main/java/net/curisit/securis/db/User.java | 13 ++--
securis/src/main/java/net/curisit/securis/db/Organization.java | 2
securis/src/main/java/net/curisit/securis/MainApp.java | 34 +++++------
securis/src/main/java/net/curisit/securis/services/BasicServices.java | 21 +++++++
securis/src/main/java/net/curisit/securis/dao/UserDao.java | 39 +++++++++++++
securis/src/main/java/net/curisit/securis/db/Pack.java | 8 --
8 files changed, 118 insertions(+), 44 deletions(-)
diff --git a/securis/src/main/java/net/curisit/securis/MainApp.java b/securis/src/main/java/net/curisit/securis/MainApp.java
index 2d81bbb..62d5e13 100644
--- a/securis/src/main/java/net/curisit/securis/MainApp.java
+++ b/securis/src/main/java/net/curisit/securis/MainApp.java
@@ -1,6 +1,7 @@
package net.curisit.securis;
import java.net.URI;
+import java.util.Properties;
import javax.inject.Inject;
import javax.inject.Named;
@@ -29,6 +30,8 @@
import com.google.inject.Injector;
import com.google.inject.Key;
import com.google.inject.name.Names;
+import com.google.inject.persist.PersistFilter;
+import com.google.inject.persist.jpa.JpaPersistModule;
public class MainApp {
@@ -44,8 +47,17 @@
public static void main(String[] args) throws Exception {
log.info("SeCuris init...");
- injector = Guice.createInjector(new SecurisModule(), new RequestsModule());
- // createBiDirectionalGuiceBridge(ServiceLocatorFactory.getInstance().create("default"), new SecurisModule());
+ SecurisModule securisModule = new SecurisModule();
+ JpaPersistModule jpaPersistModule = new JpaPersistModule("localdb");
+ Properties props = new Properties();
+ props.put("javax.persistence.jdbc.password", securisModule.getPassword());
+ props.put("javax.persistence.jdbc.url", securisModule.getUrl(securisModule.getAppDir()));
+ log.info("BD Url: {} {}", securisModule.getUrl(securisModule.getAppDir()), securisModule.getPassword());
+ jpaPersistModule.properties(props);
+
+ injector = Guice.createInjector(securisModule, new RequestsModule(), jpaPersistModule);
+ // injector.getInstance(JpaInitializer.class);
+
startServer(injector.getInstance(Key.get(URI.class, Names.named("base-uri"))));
while (true) {
Thread.currentThread().sleep(100);
@@ -63,7 +75,7 @@
context.setInitParameter("resteasy.role.based.security", "true");
context.setInitParameter("resteasy.providers", DefaultExceptionHandler.class.getName());
context.addFilter(new FilterHolder(injector.getInstance(AuthFilter.class)), "/*", null);
-
+ context.addFilter(new FilterHolder(injector.getInstance(PersistFilter.class)), "/*", null);
ServletHolder sh = new ServletHolder(HttpServletDispatcher.class);
sh.setName("resteasy");
context.addServlet(sh, "/*");
@@ -97,9 +109,6 @@
}
- /**
- * User: Nuwan.N.Bandara
- */
@Provider
public static class DefaultExceptionHandler implements ExceptionMapper<Exception> {
@@ -122,16 +131,3 @@
}
}
-
-/*
- * Constraint constraint = new Constraint(); constraint.setName(Constraint.__FORM_AUTH);; constraint.setRoles(new String[]{"user","admin","moderator"}); constraint.setAuthenticate(true);
- *
- * ConstraintMapping constraintMapping = new ConstraintMapping(); constraintMapping.setConstraint(constraint); constraintMapping.setPathSpec("/*");
- *
- * ConstraintSecurityHandler securityHandler = new ConstraintSecurityHandler(); securityHandler.addConstraintMapping(constraintMapping); HashLoginService loginService = new HashLoginService(); loginService.putUser("username", new
- * Password("password"), new String[] {"user"}); securityHandler.setLoginService(loginService);
- *
- * FormAuthenticator authenticator = new FormAuthenticator("/login", "/login", false); securityHandler.setAuthenticator(authenticator);
- *
- * context.setSecurityHandler(securityHandler);
- */
\ No newline at end of file
diff --git a/securis/src/main/java/net/curisit/securis/dao/UserDao.java b/securis/src/main/java/net/curisit/securis/dao/UserDao.java
new file mode 100644
index 0000000..037c12d
--- /dev/null
+++ b/securis/src/main/java/net/curisit/securis/dao/UserDao.java
@@ -0,0 +1,39 @@
+package net.curisit.securis.dao;
+
+import java.util.Date;
+
+import javax.inject.Inject;
+import javax.inject.Provider;
+import javax.inject.Singleton;
+import javax.persistence.EntityManager;
+
+import net.curisit.integrity.commons.Utils;
+import net.curisit.securis.db.User;
+
+@Singleton
+public class UserDao {
+
+ @Inject
+ public UserDao() {
+ }
+
+ @Inject
+ Provider<EntityManager> emProvider;
+
+ @com.google.inject.persist.Transactional
+ public User test(String username) {
+ EntityManager em = emProvider.get();
+ User user = new User();
+ user.setUsername(username);
+ user.setFullName("Rob San");
+ user.setPassword(Utils.sha256("rob"));
+ user.setLang("en");
+ user.setCreationTimestamp(new Date());
+ user.setRoles(User.Rol.ADMIN | User.Rol.ADVANCE);
+ user.setShortName("Rob");
+ em.persist(user);
+ User u2 = em.find(User.class, username);
+ return u2;
+ }
+
+}
diff --git a/securis/src/main/java/net/curisit/securis/db/License.java b/securis/src/main/java/net/curisit/securis/db/License.java
index c23180b..fb4ce46 100644
--- a/securis/src/main/java/net/curisit/securis/db/License.java
+++ b/securis/src/main/java/net/curisit/securis/db/License.java
@@ -5,6 +5,7 @@
import javax.persistence.Column;
import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
@@ -24,12 +25,13 @@
@Entity
@Table(name = "license")
@NamedQueries(
- { @NamedQuery(name = "list-licenses", query = "SELECT pa FROM Pack pa") })
+ { @NamedQuery(name = "list-licenses", query = "SELECT l FROM License l") })
public class License implements Serializable {
private static final long serialVersionUID = 1L;
@Id
+ @GeneratedValue
private int id;
private String code;
@@ -42,8 +44,8 @@
private Organization organization;
@ManyToOne
- @JoinColumn(name = "license_type_id")
- private LicenseType licenseType;
+ @JoinColumn(name = "pack_id")
+ private Pack pack;
@ManyToOne
@JoinColumn(name = "created_by")
@@ -79,14 +81,6 @@
this.organization = organization;
}
- public LicenseType getLicenseType() {
- return licenseType;
- }
-
- public void setLicenseType(LicenseType licenseType) {
- this.licenseType = licenseType;
- }
-
public User getCreatedBy() {
return createdBy;
}
@@ -103,4 +97,12 @@
this.numLicenses = numLicenses;
}
+ public Pack getPack() {
+ return pack;
+ }
+
+ public void setPack(Pack pack) {
+ this.pack = pack;
+ }
+
}
diff --git a/securis/src/main/java/net/curisit/securis/db/Organization.java b/securis/src/main/java/net/curisit/securis/db/Organization.java
index 0f43b92..71a7ebc 100644
--- a/securis/src/main/java/net/curisit/securis/db/Organization.java
+++ b/securis/src/main/java/net/curisit/securis/db/Organization.java
@@ -49,7 +49,7 @@
joinColumns =
{ @JoinColumn(name = "organization_id", referencedColumnName = "id") }, //
inverseJoinColumns =
- { @JoinColumn(name = "user_id", referencedColumnName = "id") })
+ { @JoinColumn(name = "user_id", referencedColumnName = "username") })
private List<User> users;
@ManyToOne
diff --git a/securis/src/main/java/net/curisit/securis/db/Pack.java b/securis/src/main/java/net/curisit/securis/db/Pack.java
index 04e3306..4c93f08 100644
--- a/securis/src/main/java/net/curisit/securis/db/Pack.java
+++ b/securis/src/main/java/net/curisit/securis/db/Pack.java
@@ -10,7 +10,6 @@
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
-import javax.persistence.JoinTable;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
@@ -55,12 +54,7 @@
@JoinColumn(name = "created_by")
private User createdBy;
- @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
- @JoinTable(name = "license", //
- joinColumns =
- { @JoinColumn(name = "pack_id") }, //
- inverseJoinColumns =
- { @JoinColumn(name = "id") })
+ @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy = "pack")
private Set<License> licenses;
private int numLicenses;
diff --git a/securis/src/main/java/net/curisit/securis/db/User.java b/securis/src/main/java/net/curisit/securis/db/User.java
index e96102e..ba5890f 100644
--- a/securis/src/main/java/net/curisit/securis/db/User.java
+++ b/securis/src/main/java/net/curisit/securis/db/User.java
@@ -35,12 +35,13 @@
@Id
private String username;
+
private String password;
@JsonProperty(value = "short_name")
@Column(name = "short_name")
private String shortName;
- private int role;
+ private int roles;
@JsonProperty(value = "full_name")
@Column(name = "full_name")
@@ -61,7 +62,7 @@
@ManyToMany
@JoinTable(name = "user_organization", //
joinColumns =
- { @JoinColumn(name = "user_id", referencedColumnName = "id") }, //
+ { @JoinColumn(name = "user_id", referencedColumnName = "username") }, //
inverseJoinColumns =
{ @JoinColumn(name = "organization_id", referencedColumnName = "id") } //
)
@@ -83,12 +84,12 @@
this.password = password;
}
- public int getRole() {
- return role;
+ public int getRoles() {
+ return roles;
}
- public void setRole(int role) {
- this.role = role;
+ public void setRoles(int roles) {
+ this.roles = roles;
}
public String getFullName() {
diff --git a/securis/src/main/java/net/curisit/securis/services/BasicServices.java b/securis/src/main/java/net/curisit/securis/services/BasicServices.java
index 8fe0f5b..6216867 100644
--- a/securis/src/main/java/net/curisit/securis/services/BasicServices.java
+++ b/securis/src/main/java/net/curisit/securis/services/BasicServices.java
@@ -3,15 +3,21 @@
import java.net.URI;
import java.util.Date;
+import javax.inject.Inject;
+import javax.inject.Singleton;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriBuilder;
+
+import net.curisit.securis.dao.UserDao;
+import net.curisit.securis.db.User;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -22,10 +28,12 @@
* @author roberto <roberto.sanchez@curisit.net>
*/
@Path("/")
+@Singleton
public class BasicServices {
private static final Logger log = LoggerFactory.getLogger(BasicServices.class);
+ @Inject
public BasicServices() {
}
@@ -54,4 +62,17 @@
return Response.ok().entity("License server running OK. Date: " + new Date()).build();
}
+ @Inject
+ UserDao userDao;
+
+ @GET
+ @Path("/test")
+ @Produces(
+ { MediaType.TEXT_PLAIN })
+ public Response test(@QueryParam("u") String username) {
+ User user = userDao.test(username);
+
+ return Response.ok().entity("User: " + user).build();
+ }
+
}
diff --git a/securis/src/main/resources/META-INF/persistence.xml b/securis/src/main/resources/META-INF/persistence.xml
new file mode 100644
index 0000000..0404023
--- /dev/null
+++ b/securis/src/main/resources/META-INF/persistence.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<persistence version="2.0"
+ xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
+ <persistence-unit name="localdb" transaction-type="RESOURCE_LOCAL">
+ <description>SeCuris LocalDB</description>
+ <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
+
+<!-- <class>net.curisit.securis.db.UserSettingsUnits</class> -->
+
+
+ <properties>
+ <property name="javax.persistence.jdbc.driver" value="org.h2.Driver" />
+ <property name="javax.persistence.jdbc.url"
+ value="jdbc:h2:/tmp/.CurisIntegrity/db/curissecuris" />
+ <property name="javax.persistence.jdbc.user" value="curis" />
+ <property name="javax.persistence.jdbc.password" value="53curi5" />
+ <property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect" />
+ </properties>
+ </persistence-unit>
+</persistence>
--
Gitblit v1.3.2