Roberto Sánchez
2013-12-26 d0cb11fcb8aa56081291f40746ec1c85844ed6a5
#333 feature - Fixed some JPA config issues
2 files added
6 files modified
changed files
securis/src/main/java/net/curisit/securis/MainApp.java patch | view | blame | history
securis/src/main/java/net/curisit/securis/dao/UserDao.java patch | view | blame | history
securis/src/main/java/net/curisit/securis/db/License.java patch | view | blame | history
securis/src/main/java/net/curisit/securis/db/Organization.java patch | view | blame | history
securis/src/main/java/net/curisit/securis/db/Pack.java patch | view | blame | history
securis/src/main/java/net/curisit/securis/db/User.java patch | view | blame | history
securis/src/main/java/net/curisit/securis/services/BasicServices.java patch | view | blame | history
securis/src/main/resources/META-INF/persistence.xml patch | view | blame | history
securis/src/main/java/net/curisit/securis/MainApp.java
....@@ -1,6 +1,7 @@
11 package net.curisit.securis;
22
33 import java.net.URI;
4
+import java.util.Properties;
45
56 import javax.inject.Inject;
67 import javax.inject.Named;
....@@ -29,6 +30,8 @@
2930 import com.google.inject.Injector;
3031 import com.google.inject.Key;
3132 import com.google.inject.name.Names;
33
+import com.google.inject.persist.PersistFilter;
34
+import com.google.inject.persist.jpa.JpaPersistModule;
3235
3336 public class MainApp {
3437
....@@ -44,8 +47,17 @@
4447 public static void main(String[] args) throws Exception {
4548 log.info("SeCuris init...");
4649
47
- injector = Guice.createInjector(new SecurisModule(), new RequestsModule());
48
- // createBiDirectionalGuiceBridge(ServiceLocatorFactory.getInstance().create("default"), new SecurisModule());
50
+ SecurisModule securisModule = new SecurisModule();
51
+ JpaPersistModule jpaPersistModule = new JpaPersistModule("localdb");
52
+ Properties props = new Properties();
53
+ props.put("javax.persistence.jdbc.password", securisModule.getPassword());
54
+ props.put("javax.persistence.jdbc.url", securisModule.getUrl(securisModule.getAppDir()));
55
+ log.info("BD Url: {} {}", securisModule.getUrl(securisModule.getAppDir()), securisModule.getPassword());
56
+ jpaPersistModule.properties(props);
57
+
58
+ injector = Guice.createInjector(securisModule, new RequestsModule(), jpaPersistModule);
59
+ // injector.getInstance(JpaInitializer.class);
60
+
4961 startServer(injector.getInstance(Key.get(URI.class, Names.named("base-uri"))));
5062 while (true) {
5163 Thread.currentThread().sleep(100);
....@@ -63,7 +75,7 @@
6375 context.setInitParameter("resteasy.role.based.security", "true");
6476 context.setInitParameter("resteasy.providers", DefaultExceptionHandler.class.getName());
6577 context.addFilter(new FilterHolder(injector.getInstance(AuthFilter.class)), "/*", null);
66
-
78
+ context.addFilter(new FilterHolder(injector.getInstance(PersistFilter.class)), "/*", null);
6779 ServletHolder sh = new ServletHolder(HttpServletDispatcher.class);
6880 sh.setName("resteasy");
6981 context.addServlet(sh, "/*");
....@@ -97,9 +109,6 @@
97109
98110 }
99111
100
- /**
101
- * User: Nuwan.N.Bandara
102
- */
103112 @Provider
104113 public static class DefaultExceptionHandler implements ExceptionMapper<Exception> {
105114
....@@ -122,16 +131,3 @@
122131 }
123132
124133 }
125
-
126
-/*
127
- * Constraint constraint = new Constraint(); constraint.setName(Constraint.__FORM_AUTH);; constraint.setRoles(new String[]{"user","admin","moderator"}); constraint.setAuthenticate(true);
128
- *
129
- * ConstraintMapping constraintMapping = new ConstraintMapping(); constraintMapping.setConstraint(constraint); constraintMapping.setPathSpec("/*");
130
- *
131
- * ConstraintSecurityHandler securityHandler = new ConstraintSecurityHandler(); securityHandler.addConstraintMapping(constraintMapping); HashLoginService loginService = new HashLoginService(); loginService.putUser("username", new
132
- * Password("password"), new String[] {"user"}); securityHandler.setLoginService(loginService);
133
- *
134
- * FormAuthenticator authenticator = new FormAuthenticator("/login", "/login", false); securityHandler.setAuthenticator(authenticator);
135
- *
136
- * context.setSecurityHandler(securityHandler);
137
- */
securis/src/main/java/net/curisit/securis/dao/UserDao.java
....@@ -0,0 +1,39 @@
1
+package net.curisit.securis.dao;
2
+
3
+import java.util.Date;
4
+
5
+import javax.inject.Inject;
6
+import javax.inject.Provider;
7
+import javax.inject.Singleton;
8
+import javax.persistence.EntityManager;
9
+
10
+import net.curisit.integrity.commons.Utils;
11
+import net.curisit.securis.db.User;
12
+
13
+@Singleton
14
+public class UserDao {
15
+
16
+ @Inject
17
+ public UserDao() {
18
+ }
19
+
20
+ @Inject
21
+ Provider<EntityManager> emProvider;
22
+
23
+ @com.google.inject.persist.Transactional
24
+ public User test(String username) {
25
+ EntityManager em = emProvider.get();
26
+ User user = new User();
27
+ user.setUsername(username);
28
+ user.setFullName("Rob San");
29
+ user.setPassword(Utils.sha256("rob"));
30
+ user.setLang("en");
31
+ user.setCreationTimestamp(new Date());
32
+ user.setRoles(User.Rol.ADMIN | User.Rol.ADVANCE);
33
+ user.setShortName("Rob");
34
+ em.persist(user);
35
+ User u2 = em.find(User.class, username);
36
+ return u2;
37
+ }
38
+
39
+}
securis/src/main/java/net/curisit/securis/db/License.java
....@@ -5,6 +5,7 @@
55
66 import javax.persistence.Column;
77 import javax.persistence.Entity;
8
+import javax.persistence.GeneratedValue;
89 import javax.persistence.Id;
910 import javax.persistence.JoinColumn;
1011 import javax.persistence.ManyToOne;
....@@ -24,12 +25,13 @@
2425 @Entity
2526 @Table(name = "license")
2627 @NamedQueries(
27
- { @NamedQuery(name = "list-licenses", query = "SELECT pa FROM Pack pa") })
28
+ { @NamedQuery(name = "list-licenses", query = "SELECT l FROM License l") })
2829 public class License implements Serializable {
2930
3031 private static final long serialVersionUID = 1L;
3132
3233 @Id
34
+ @GeneratedValue
3335 private int id;
3436
3537 private String code;
....@@ -42,8 +44,8 @@
4244 private Organization organization;
4345
4446 @ManyToOne
45
- @JoinColumn(name = "license_type_id")
46
- private LicenseType licenseType;
47
+ @JoinColumn(name = "pack_id")
48
+ private Pack pack;
4749
4850 @ManyToOne
4951 @JoinColumn(name = "created_by")
....@@ -79,14 +81,6 @@
7981 this.organization = organization;
8082 }
8183
82
- public LicenseType getLicenseType() {
83
- return licenseType;
84
- }
85
-
86
- public void setLicenseType(LicenseType licenseType) {
87
- this.licenseType = licenseType;
88
- }
89
-
9084 public User getCreatedBy() {
9185 return createdBy;
9286 }
....@@ -103,4 +97,12 @@
10397 this.numLicenses = numLicenses;
10498 }
10599
100
+ public Pack getPack() {
101
+ return pack;
102
+ }
103
+
104
+ public void setPack(Pack pack) {
105
+ this.pack = pack;
106
+ }
107
+
106108 }
securis/src/main/java/net/curisit/securis/db/Organization.java
....@@ -49,7 +49,7 @@
4949 joinColumns =
5050 { @JoinColumn(name = "organization_id", referencedColumnName = "id") }, //
5151 inverseJoinColumns =
52
- { @JoinColumn(name = "user_id", referencedColumnName = "id") })
52
+ { @JoinColumn(name = "user_id", referencedColumnName = "username") })
5353 private List<User> users;
5454
5555 @ManyToOne
securis/src/main/java/net/curisit/securis/db/Pack.java
....@@ -10,7 +10,6 @@
1010 import javax.persistence.FetchType;
1111 import javax.persistence.Id;
1212 import javax.persistence.JoinColumn;
13
-import javax.persistence.JoinTable;
1413 import javax.persistence.ManyToOne;
1514 import javax.persistence.NamedQueries;
1615 import javax.persistence.NamedQuery;
....@@ -55,12 +54,7 @@
5554 @JoinColumn(name = "created_by")
5655 private User createdBy;
5756
58
- @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
59
- @JoinTable(name = "license", //
60
- joinColumns =
61
- { @JoinColumn(name = "pack_id") }, //
62
- inverseJoinColumns =
63
- { @JoinColumn(name = "id") })
57
+ @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy = "pack")
6458 private Set<License> licenses;
6559
6660 private int numLicenses;
securis/src/main/java/net/curisit/securis/db/User.java
....@@ -35,12 +35,13 @@
3535
3636 @Id
3737 private String username;
38
+
3839 private String password;
3940 @JsonProperty(value = "short_name")
4041 @Column(name = "short_name")
4142 private String shortName;
4243
43
- private int role;
44
+ private int roles;
4445
4546 @JsonProperty(value = "full_name")
4647 @Column(name = "full_name")
....@@ -61,7 +62,7 @@
6162 @ManyToMany
6263 @JoinTable(name = "user_organization", //
6364 joinColumns =
64
- { @JoinColumn(name = "user_id", referencedColumnName = "id") }, //
65
+ { @JoinColumn(name = "user_id", referencedColumnName = "username") }, //
6566 inverseJoinColumns =
6667 { @JoinColumn(name = "organization_id", referencedColumnName = "id") } //
6768 )
....@@ -83,12 +84,12 @@
8384 this.password = password;
8485 }
8586
86
- public int getRole() {
87
- return role;
87
+ public int getRoles() {
88
+ return roles;
8889 }
8990
90
- public void setRole(int role) {
91
- this.role = role;
91
+ public void setRoles(int roles) {
92
+ this.roles = roles;
9293 }
9394
9495 public String getFullName() {
securis/src/main/java/net/curisit/securis/services/BasicServices.java
....@@ -3,15 +3,21 @@
33 import java.net.URI;
44 import java.util.Date;
55
6
+import javax.inject.Inject;
7
+import javax.inject.Singleton;
68 import javax.servlet.http.HttpServletRequest;
79 import javax.servlet.http.HttpSession;
810 import javax.ws.rs.GET;
911 import javax.ws.rs.Path;
1012 import javax.ws.rs.Produces;
13
+import javax.ws.rs.QueryParam;
1114 import javax.ws.rs.core.Context;
1215 import javax.ws.rs.core.MediaType;
1316 import javax.ws.rs.core.Response;
1417 import javax.ws.rs.core.UriBuilder;
18
+
19
+import net.curisit.securis.dao.UserDao;
20
+import net.curisit.securis.db.User;
1521
1622 import org.slf4j.Logger;
1723 import org.slf4j.LoggerFactory;
....@@ -22,10 +28,12 @@
2228 * @author roberto <roberto.sanchez@curisit.net>
2329 */
2430 @Path("/")
31
+@Singleton
2532 public class BasicServices {
2633
2734 private static final Logger log = LoggerFactory.getLogger(BasicServices.class);
2835
36
+ @Inject
2937 public BasicServices() {
3038 }
3139
....@@ -54,4 +62,17 @@
5462 return Response.ok().entity("License server running OK. Date: " + new Date()).build();
5563 }
5664
65
+ @Inject
66
+ UserDao userDao;
67
+
68
+ @GET
69
+ @Path("/test")
70
+ @Produces(
71
+ { MediaType.TEXT_PLAIN })
72
+ public Response test(@QueryParam("u") String username) {
73
+ User user = userDao.test(username);
74
+
75
+ return Response.ok().entity("User: " + user).build();
76
+ }
77
+
5778 }
securis/src/main/resources/META-INF/persistence.xml
....@@ -0,0 +1,21 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<persistence version="2.0"
3
+ xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4
+ xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
5
+ <persistence-unit name="localdb" transaction-type="RESOURCE_LOCAL">
6
+ <description>SeCuris LocalDB</description>
7
+ <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
8
+
9
+<!-- <class>net.curisit.securis.db.UserSettingsUnits</class> -->
10
+
11
+
12
+ <properties>
13
+ <property name="javax.persistence.jdbc.driver" value="org.h2.Driver" />
14
+ <property name="javax.persistence.jdbc.url"
15
+ value="jdbc:h2:/tmp/.CurisIntegrity/db/curissecuris" />
16
+ <property name="javax.persistence.jdbc.user" value="curis" />
17
+ <property name="javax.persistence.jdbc.password" value="53curi5" />
18
+ <property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect" />
19
+ </properties>
20
+ </persistence-unit>
21
+</persistence>