From 4c13c7324a920f5cca9601154e5224e5d7484fa9 Mon Sep 17 00:00:00 2001
From: rsanchez <rsanchez@curisit.net>
Date: Fri, 12 Dec 2014 18:09:27 +0000
Subject: [PATCH] #2140 fix - Many changes related with cahce and JPA cycling relationships
---
securis/src/main/resources/META-INF/persistence.xml | 5
securis/src/main/webapp/js/catalogs.js | 41 +++++---
securis/src/main/webapp/js/admin.js | 19 ++-
securis/src/main/java/net/curisit/securis/db/Application.java | 25 ++--
securis/src/main/java/net/curisit/securis/db/LicenseTypeMetadata.java | 20 ---
securis/src/main/java/net/curisit/securis/services/BasicServices.java | 3
securis/src/main/java/net/curisit/securis/db/ApplicationMetadata.java | 23 ---
securis/src/main/java/net/curisit/securis/services/ApplicationResource.java | 45 ++++++--
securis/src/main/java/net/curisit/securis/services/PackResource.java | 6
securis/src/main/java/net/curisit/securis/services/LicenseTypeResource.java | 9 +
securis/src/main/java/net/curisit/securis/db/Organization.java | 14 +-
securis/src/main/java/net/curisit/securis/services/UserResource.java | 15 ++-
securis/src/main/java/net/curisit/securis/services/LicenseResource.java | 3
securis/src/main/java/net/curisit/securis/db/LicenseType.java | 5
securis/src/main/java/net/curisit/securis/services/OrganizationResource.java | 20 ++--
15 files changed, 141 insertions(+), 112 deletions(-)
diff --git a/securis/src/main/java/net/curisit/securis/db/Application.java b/securis/src/main/java/net/curisit/securis/db/Application.java
index 49dd65c..b70867e 100644
--- a/securis/src/main/java/net/curisit/securis/db/Application.java
+++ b/securis/src/main/java/net/curisit/securis/db/Application.java
@@ -22,6 +22,7 @@
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonManagedReference;
import com.fasterxml.jackson.annotation.JsonProperty;
/**
@@ -56,13 +57,14 @@
@JsonProperty("creation_timestamp")
private Date creationTimestamp;
- @JsonIgnore
// We don't include the referenced entities to limit the size of each row at
- // the listing
+ // // the listing
+ @JsonIgnore
@OneToMany(fetch = FetchType.LAZY, mappedBy = "application")
private Set<LicenseType> licenseTypes;
@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy = "application")
+ @JsonManagedReference
private Set<ApplicationMetadata> metadata;
public Integer getId() {
@@ -90,7 +92,6 @@
}
public Date getCreationTimestamp() {
- LOG.info("APP {} TS: {}", this.id, this.creationTimestamp);
return creationTimestamp;
}
@@ -98,16 +99,9 @@
this.creationTimestamp = creationTimestamp;
}
- public Set<LicenseType> getLicenseTypes() {
- return licenseTypes;
- }
-
- public void setLicenseTypes(Set<LicenseType> licenseTypes) {
- this.licenseTypes = licenseTypes;
- }
-
@JsonProperty("metadata")
public Set<ApplicationMetadata> getApplicationMetadata() {
+ LOG.info("Getting metadata from app: {}", metadata);
return metadata;
}
@@ -137,4 +131,13 @@
public void setLicenseFilename(String licenseFilename) {
this.licenseFilename = licenseFilename;
}
+
+ public Set<LicenseType> getLicenseTypes() {
+ LOG.info("Getting list license types!!!!");
+ return licenseTypes;
+ }
+
+ public void setLicenseTypes(Set<LicenseType> licenseTypes) {
+ this.licenseTypes = licenseTypes;
+ }
}
diff --git a/securis/src/main/java/net/curisit/securis/db/ApplicationMetadata.java b/securis/src/main/java/net/curisit/securis/db/ApplicationMetadata.java
index fc42d08..c17a3e8 100644
--- a/securis/src/main/java/net/curisit/securis/db/ApplicationMetadata.java
+++ b/securis/src/main/java/net/curisit/securis/db/ApplicationMetadata.java
@@ -16,7 +16,7 @@
import org.apache.logging.log4j.Logger;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
-import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonBackReference;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.fasterxml.jackson.annotation.JsonProperty;
@@ -38,10 +38,10 @@
private static final long serialVersionUID = 1L;
- @JsonIgnore
@Id
@ManyToOne
@JoinColumn(name = "application_id")
+ @JsonBackReference
private Application application;
@Id
@@ -65,6 +65,7 @@
}
public Application getApplication() {
+ LOG.info("Getting application from app metadata: {}", application);
return application;
}
@@ -73,27 +74,11 @@
}
public Date getCreationTimestamp() {
- LOG.info("APP_MD (app: {}) {} TS: {}", this.application.getId(), this.key, this.creationTimestamp);
return creationTimestamp;
}
public void setCreationTimestamp(Date creationTimestamp) {
this.creationTimestamp = creationTimestamp;
- }
-
- @JsonProperty("application_id")
- public Integer getApplicationId() {
- return application == null ? null : application.getId();
- }
-
- @JsonProperty("application_id")
- public void setApplicationId(Integer idApplication) {
- if (idApplication == null) {
- application = null;
- } else {
- application = new Application();
- application.setId(idApplication);
- }
}
public String getValue() {
@@ -129,7 +114,7 @@
@Override
public String toString() {
- return String.format("ApplicationMetadata (%s - %s)", this.application == null ? null : application.getId(), this.key);
+ return String.format("ApplicationMetadata (%s)", this.key);
}
}
diff --git a/securis/src/main/java/net/curisit/securis/db/LicenseType.java b/securis/src/main/java/net/curisit/securis/db/LicenseType.java
index c42353b..cfaef9d 100644
--- a/securis/src/main/java/net/curisit/securis/db/LicenseType.java
+++ b/securis/src/main/java/net/curisit/securis/db/LicenseType.java
@@ -25,6 +25,7 @@
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonManagedReference;
import com.fasterxml.jackson.annotation.JsonProperty;
/**
@@ -59,11 +60,12 @@
private Date creationTimestamp;
@JsonIgnore
- @ManyToOne
+ @ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "application_id")
private Application application;
@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy = "licenseType")
+ @JsonManagedReference
private Set<LicenseTypeMetadata> metadata;
public Set<LicenseTypeMetadata> getMetadata() {
@@ -107,6 +109,7 @@
}
public Application getApplication() {
+ LOG.info("Getting APP from LicType");
return application;
}
diff --git a/securis/src/main/java/net/curisit/securis/db/LicenseTypeMetadata.java b/securis/src/main/java/net/curisit/securis/db/LicenseTypeMetadata.java
index d9ba048..f6c263e 100644
--- a/securis/src/main/java/net/curisit/securis/db/LicenseTypeMetadata.java
+++ b/securis/src/main/java/net/curisit/securis/db/LicenseTypeMetadata.java
@@ -12,10 +12,10 @@
import javax.persistence.Table;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
+import com.fasterxml.jackson.annotation.JsonBackReference;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
-import com.fasterxml.jackson.annotation.JsonProperty;
/**
* Entity implementation class for Entity: licensetype_metadata
@@ -32,10 +32,11 @@
private static final long serialVersionUID = 1L;
- @Id
@JsonIgnore
+ @Id
@ManyToOne
@JoinColumn(name = "license_type_id")
+ @JsonBackReference
private LicenseType licenseType;
@Id
@@ -45,21 +46,6 @@
private String value;
private boolean mandatory;
-
- @JsonProperty("licensetype_id")
- public Integer getLicenseTypeId() {
- return licenseType == null ? null : licenseType.getId();
- }
-
- @JsonProperty("licensetype_id")
- public void setLicenseTypeId(Integer idLicenseType) {
- if (idLicenseType == null) {
- licenseType = null;
- } else {
- licenseType = new LicenseType();
- licenseType.setId(idLicenseType);
- }
- }
public LicenseType getLicenseType() {
return licenseType;
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 56a42a9..78c8ced 100644
--- a/securis/src/main/java/net/curisit/securis/db/Organization.java
+++ b/securis/src/main/java/net/curisit/securis/db/Organization.java
@@ -1,8 +1,8 @@
package net.curisit.securis.db;
import java.io.Serializable;
-import java.util.ArrayList;
import java.util.Date;
+import java.util.HashSet;
import java.util.List;
import java.util.Set;
@@ -72,7 +72,7 @@
inverseJoinColumns = {
@JoinColumn(name = "username", referencedColumnName = "username")
})
- private List<User> users;
+ private Set<User> users;
@JsonIgnore
// We don't include the users to limit the size of each row a the listing
@@ -125,11 +125,11 @@
this.creationTimestamp = creationTimestamp;
}
- public List<User> getUsers() {
+ public Set<User> getUsers() {
return users;
}
- public void setUsers(List<User> users) {
+ public void setUsers(Set<User> users) {
this.users = users;
}
@@ -166,7 +166,7 @@
@JsonProperty("users_ids")
public void setUsersIds(List<String> usersIds) {
- users = new ArrayList<>();
+ users = new HashSet<>();
if (usersIds != null) {
for (String userid : usersIds) {
User u = new User();
@@ -177,11 +177,11 @@
}
@JsonProperty("users_ids")
- public List<String> getUsersIds() {
+ public Set<String> getUsersIds() {
if (users == null) {
return null;
}
- List<String> ids = new ArrayList<>();
+ Set<String> ids = new HashSet<>();
for (User user : users) {
ids.add(user.getUsername());
}
diff --git a/securis/src/main/java/net/curisit/securis/services/ApplicationResource.java b/securis/src/main/java/net/curisit/securis/services/ApplicationResource.java
index 916511f..db7bf67 100644
--- a/securis/src/main/java/net/curisit/securis/services/ApplicationResource.java
+++ b/securis/src/main/java/net/curisit/securis/services/ApplicationResource.java
@@ -26,10 +26,14 @@
import net.curisit.integrity.commons.Utils;
import net.curisit.securis.DefaultExceptionHandler;
+import net.curisit.securis.SeCurisException;
import net.curisit.securis.db.Application;
import net.curisit.securis.db.ApplicationMetadata;
import net.curisit.securis.security.BasicSecurityContext;
import net.curisit.securis.security.Securable;
+import net.curisit.securis.services.exception.SeCurisServiceException;
+import net.curisit.securis.services.exception.SeCurisServiceException.ErrorCodes;
+import net.curisit.securis.utils.JsonUtils;
import net.curisit.securis.utils.TokenHelper;
import org.apache.logging.log4j.LogManager;
@@ -71,6 +75,7 @@
LOG.info("Getting applications list ");
EntityManager em = emProvider.get();
+ em.clear();
TypedQuery<Application> q = em.createNamedQuery("list-applications", Application.class);
List<Application> list = q.getResultList();
@@ -80,6 +85,7 @@
/**
*
* @return the server version in format majorVersion.minorVersion
+ * @throws SeCurisServiceException
*/
@GET
@Path("/{appid}")
@@ -87,7 +93,7 @@
MediaType.APPLICATION_JSON
})
@Securable
- public Response get(@PathParam("appid") String appid, @HeaderParam(TokenHelper.TOKEN_HEADER_PÀRAM) String token) {
+ public Response get(@PathParam("appid") String appid) throws SeCurisServiceException {
LOG.info("Getting application data for id: {}: ", appid);
if (appid == null || "".equals(appid)) {
LOG.error("Application ID is mandatory");
@@ -95,12 +101,28 @@
}
EntityManager em = emProvider.get();
- Application app = em.find(Application.class, Integer.parseInt(appid));
+ em.clear();
+
+ Application app = null;
+ try {
+ LOG.info("READY to GET app: {}", appid);
+ app = em.find(Application.class, Integer.parseInt(appid));
+ } catch (Exception e) {
+ LOG.info("ERROR GETTING app: {}", e);
+ }
if (app == null) {
LOG.error("Application with id {} not found in DB", appid);
+ throw new SeCurisServiceException(ErrorCodes.NOT_FOUND, "Application not found with ID: " + appid);
+ }
- return Response.status(Status.NOT_FOUND).header(DefaultExceptionHandler.ERROR_MESSAGE_HEADER, "Application not found with ID: " + appid)
- .build();
+ try {
+ LOG.info("JSON for APP:\n\n\n");
+ LOG.info(JsonUtils.toJSON(app));
+ } catch (SeCurisException e) {
+ LOG.info("ERROR {}", e);
+
+ } catch (Exception e) {
+ LOG.info("ERROR??? {}", e);
}
return Response.ok(app).build();
}
@@ -199,14 +221,13 @@
return Response.status(Status.NOT_FOUND).header(DefaultExceptionHandler.ERROR_MESSAGE_HEADER, "Application not found with ID: " + appid)
.build();
}
-
- if (app.getLicenseTypes() != null && !app.getLicenseTypes().isEmpty()) {
- return Response
- .status(Status.FORBIDDEN)
- .header(DefaultExceptionHandler.ERROR_MESSAGE_HEADER,
- "Application can not be deleted becasue has assigned one or more License types, ID: " + appid).build();
- }
-
+ /*
+ * if (app.getLicenseTypes() != null &&
+ * !app.getLicenseTypes().isEmpty()) { throw new
+ * SeCurisServiceException(ErrorCodes.NOT_FOUND,
+ * "Application can not be deleted becasue has assigned one or more License types, ID: "
+ * + appid); }
+ */
em.remove(app);
return Response.ok(Utils.createMap("success", true, "id", appid)).build();
}
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 40ad38d..4500539 100644
--- a/securis/src/main/java/net/curisit/securis/services/BasicServices.java
+++ b/securis/src/main/java/net/curisit/securis/services/BasicServices.java
@@ -27,6 +27,8 @@
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
+import com.google.inject.persist.Transactional;
+
/**
* Basic services for login and basic app wrkflow
*
@@ -98,6 +100,7 @@
@Produces({
MediaType.APPLICATION_JSON
})
+ @Transactional
public Response check(@HeaderParam(TokenHelper.TOKEN_HEADER_PÀRAM) String token, @QueryParam("token") String token2) {
if (token == null) {
token = token2;
diff --git a/securis/src/main/java/net/curisit/securis/services/LicenseResource.java b/securis/src/main/java/net/curisit/securis/services/LicenseResource.java
index 6456bf5..cf10c6b 100644
--- a/securis/src/main/java/net/curisit/securis/services/LicenseResource.java
+++ b/securis/src/main/java/net/curisit/securis/services/LicenseResource.java
@@ -107,6 +107,7 @@
LOG.info("Getting licenses list ");
EntityManager em = emProvider.get();
+ em.clear();
if (!bsc.isUserInRole(BasicSecurityContext.ROL_ADMIN)) {
Pack pack = em.find(Pack.class, packId);
@@ -141,6 +142,7 @@
LOG.info("Getting organization data for id: {}: ", licId);
EntityManager em = emProvider.get();
+ em.clear();
License lic = getCurrentLicense(licId, bsc, em);
return Response.ok(lic).build();
}
@@ -156,6 +158,7 @@
@Produces({
MediaType.APPLICATION_OCTET_STREAM
})
+ @Transactional
public Response download(@PathParam("licId") Integer licId, @Context BasicSecurityContext bsc) throws SeCurisServiceException {
EntityManager em = emProvider.get();
diff --git a/securis/src/main/java/net/curisit/securis/services/LicenseTypeResource.java b/securis/src/main/java/net/curisit/securis/services/LicenseTypeResource.java
index 79f4e5c..dd92706 100644
--- a/securis/src/main/java/net/curisit/securis/services/LicenseTypeResource.java
+++ b/securis/src/main/java/net/curisit/securis/services/LicenseTypeResource.java
@@ -32,6 +32,8 @@
import net.curisit.securis.db.LicenseTypeMetadata;
import net.curisit.securis.security.BasicSecurityContext;
import net.curisit.securis.security.Securable;
+import net.curisit.securis.services.exception.SeCurisServiceException;
+import net.curisit.securis.services.exception.SeCurisServiceException.ErrorCodes;
import net.curisit.securis.utils.TokenHelper;
import org.apache.logging.log4j.LogManager;
@@ -73,6 +75,7 @@
LOG.info("Getting license types list ");
EntityManager em = emProvider.get();
+ em.clear();
TypedQuery<LicenseType> q = em.createNamedQuery("list-license_types", LicenseType.class);
List<LicenseType> list = q.getResultList();
@@ -82,6 +85,7 @@
/**
*
* @return the server version in format majorVersion.minorVersion
+ * @throws SeCurisServiceException
*/
@GET
@Path("/{ltid}")
@@ -89,7 +93,7 @@
MediaType.APPLICATION_JSON
})
@Securable
- public Response get(@PathParam("ltid") String ltid, @HeaderParam(TokenHelper.TOKEN_HEADER_PÀRAM) String token) {
+ public Response get(@PathParam("ltid") String ltid, @HeaderParam(TokenHelper.TOKEN_HEADER_PÀRAM) String token) throws SeCurisServiceException {
LOG.info("Getting license type data for id: {}: ", ltid);
if (ltid == null || "".equals(ltid)) {
LOG.error("LicenseType ID is mandatory");
@@ -97,10 +101,11 @@
}
EntityManager em = emProvider.get();
+ em.clear();
LicenseType lt = em.find(LicenseType.class, Integer.parseInt(ltid));
if (lt == null) {
LOG.error("LicenseType with id {} not found in DB", ltid);
- return Response.status(Status.NOT_FOUND).build();
+ throw new SeCurisServiceException(ErrorCodes.NOT_FOUND, "LicenseType was not found in DB");
}
return Response.ok(lt).build();
}
diff --git a/securis/src/main/java/net/curisit/securis/services/OrganizationResource.java b/securis/src/main/java/net/curisit/securis/services/OrganizationResource.java
index 27e956c..25a5b07 100644
--- a/securis/src/main/java/net/curisit/securis/services/OrganizationResource.java
+++ b/securis/src/main/java/net/curisit/securis/services/OrganizationResource.java
@@ -1,8 +1,9 @@
package net.curisit.securis.services;
-import java.util.ArrayList;
import java.util.Date;
+import java.util.HashSet;
import java.util.List;
+import java.util.Set;
import javax.annotation.security.RolesAllowed;
import javax.inject.Inject;
@@ -35,7 +36,6 @@
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
-import org.jboss.resteasy.spi.ResteasyProviderFactory;
import com.google.inject.persist.Transactional;
@@ -69,9 +69,8 @@
public Response index(@Context BasicSecurityContext bsc) {
LOG.info("Getting organizations list ");
- BasicSecurityContext bsc2 = ResteasyProviderFactory.getContextData(BasicSecurityContext.class);
- LOG.debug("securityContext ROL_ADMIN?: {}", bsc.isUserInRole(BasicSecurityContext.ROL_ADMIN));
EntityManager em = emProvider.get();
+ em.clear();
TypedQuery<Organization> q;
if (bsc.isUserInRole(BasicSecurityContext.ROL_ADMIN)) {
LOG.info("GEtting all orgs for user: " + bsc.getUserPrincipal());
@@ -103,6 +102,7 @@
}
EntityManager em = emProvider.get();
+ em.clear();
Organization org = em.find(Organization.class, Integer.parseInt(orgid));
if (org == null) {
LOG.error("Organization with id {} not found in DB", orgid);
@@ -141,10 +141,10 @@
return Response.status(Status.NOT_FOUND).header(DefaultExceptionHandler.ERROR_MESSAGE_HEADER, e.getMessage()).build();
}
- List<User> users = null;
- List<String> usersIds = org.getUsersIds();
+ Set<User> users = null;
+ Set<String> usersIds = org.getUsersIds();
if (usersIds != null && !usersIds.isEmpty()) {
- users = new ArrayList<>();
+ users = new HashSet<>();
for (String username : usersIds) {
User user = em.find(User.class, username);
if (user == null) {
@@ -176,10 +176,10 @@
org.setParentOrganization(parentOrg);
}
- private void setOrgUsers(Organization org, List<String> usersIds, EntityManager em) throws SeCurisException {
- List<User> users = null;
+ private void setOrgUsers(Organization org, Set<String> usersIds, EntityManager em) throws SeCurisException {
+ Set<User> users = null;
if (usersIds != null && !usersIds.isEmpty()) {
- users = new ArrayList<>();
+ users = new HashSet<>();
for (String username : usersIds) {
User user = em.find(User.class, username);
if (user == null) {
diff --git a/securis/src/main/java/net/curisit/securis/services/PackResource.java b/securis/src/main/java/net/curisit/securis/services/PackResource.java
index f5cb7d3..31840e5 100644
--- a/securis/src/main/java/net/curisit/securis/services/PackResource.java
+++ b/securis/src/main/java/net/curisit/securis/services/PackResource.java
@@ -40,7 +40,6 @@
import net.curisit.securis.services.exception.SeCurisServiceException;
import net.curisit.securis.services.exception.SeCurisServiceException.ErrorCodes;
import net.curisit.securis.services.helpers.LicenseHelper;
-import net.curisit.securis.services.helpers.UserHelper;
import net.curisit.securis.utils.LicUtils;
import net.curisit.securis.utils.TokenHelper;
@@ -67,9 +66,6 @@
Provider<EntityManager> emProvider;
@Inject
- private UserHelper userHelper;
-
- @Inject
private LicenseHelper licenseHelper;
/**
@@ -86,6 +82,7 @@
LOG.info("Getting packs list ");
EntityManager em = emProvider.get();
+ em.clear();
TypedQuery<Pack> q;
if (bsc.isUserInRole(BasicSecurityContext.ROL_ADMIN)) {
@@ -127,6 +124,7 @@
}
EntityManager em = emProvider.get();
+ em.clear();
Pack pack = em.find(Pack.class, packId);
if (pack == null) {
LOG.error("Pack with id {} not found in DB", packId);
diff --git a/securis/src/main/java/net/curisit/securis/services/UserResource.java b/securis/src/main/java/net/curisit/securis/services/UserResource.java
index f2e8b89..3169039 100644
--- a/securis/src/main/java/net/curisit/securis/services/UserResource.java
+++ b/securis/src/main/java/net/curisit/securis/services/UserResource.java
@@ -76,6 +76,7 @@
LOG.info("Getting users list ");
EntityManager em = emProvider.get();
+ em.clear();
TypedQuery<User> q = em.createNamedQuery("list-users", User.class);
List<User> list = q.getResultList();
@@ -102,6 +103,7 @@
}
EntityManager em = emProvider.get();
+ em.clear();
User lt = em.find(User.class, uid);
if (lt == null) {
LOG.error("User with id {} not found in DB", uid);
@@ -136,7 +138,8 @@
if (user.getPassword() != null && !"".equals(user.getPassword())) {
user.setPassword(Utils.sha256(user.getPassword()));
} else {
- return Response.status(DefaultExceptionHandler.DEFAULT_APP_ERROR_STATUS_CODE).header(DefaultExceptionHandler.ERROR_MESSAGE_HEADER, "User password is mandatory").build();
+ return Response.status(DefaultExceptionHandler.DEFAULT_APP_ERROR_STATUS_CODE)
+ .header(DefaultExceptionHandler.ERROR_MESSAGE_HEADER, "User password is mandatory").build();
}
user.setModificationTimestamp(new Date());
user.setLastLogin(null);
@@ -197,7 +200,9 @@
currentUser.setPassword(Utils.sha256(user.getPassword()));
} else {
// Password has not been modified
- //return Response.status(DefaultExceptionHandler.DEFAULT_APP_ERROR_STATUS_CODE).header(DefaultExceptionHandler.ERROR_MESSAGE_HEADER, "User password is mandatory").build();
+ // return
+ // Response.status(DefaultExceptionHandler.DEFAULT_APP_ERROR_STATUS_CODE).header(DefaultExceptionHandler.ERROR_MESSAGE_HEADER,
+ // "User password is mandatory").build();
}
currentUser.setLastLogin(user.getLastLogin());
@@ -238,7 +243,7 @@
LOG.info("user: {}, pass: {}", username, password);
LOG.info("is user in role: {} == {} ? ", "advance", request.isUserInRole("advance"));
LOG.info("is user in role: {} == {} ? ", "admin", request.isUserInRole("admin"));
-
+
EntityManager em = emProvider.get();
User user = em.find(User.class, username);
if (user == null) {
@@ -246,7 +251,7 @@
return Response.status(Status.UNAUTHORIZED).build();
}
String securedPassword = Utils.sha256(password);
-
+
if (securedPassword == null || !securedPassword.equals(user.getPassword())) {
// TODO: Code to test exception handling
return Response.status(Status.UNAUTHORIZED).build();
@@ -256,7 +261,7 @@
try {
em.persist(user);
em.getTransaction().commit();
- } catch(PersistenceException ex) {
+ } catch (PersistenceException ex) {
LOG.error("Error updating last login date for user: {}", username);
LOG.error(ex);
em.getTransaction().rollback();
diff --git a/securis/src/main/resources/META-INF/persistence.xml b/securis/src/main/resources/META-INF/persistence.xml
index 478499c..3f8e643 100644
--- a/securis/src/main/resources/META-INF/persistence.xml
+++ b/securis/src/main/resources/META-INF/persistence.xml
@@ -17,10 +17,9 @@
<property name="hibernate.connection.datasource" value="java:comp/env/jdbc/SeCurisDS" />
<property name="hibernate.cache.use_second_level_cache" value="false" />
- <property name="hibernate.show_sql" value="false" />
+ <property name="hibernate.show_sql" value="true" />
- <!-- <property name="hibernate.format_sql" value="true"/>
- -->
+ <property name="hibernate.format_sql" value="false"/>
</properties>
</persistence-unit>
diff --git a/securis/src/main/webapp/js/admin.js b/securis/src/main/webapp/js/admin.js
index 3d320fa..387a333 100644
--- a/securis/src/main/webapp/js/admin.js
+++ b/securis/src/main/webapp/js/admin.js
@@ -69,10 +69,7 @@
$scope.selectCatalog = _changeCatalog;
- $scope.edit = function(data) {
- $scope.showForm = true;
- $scope.isNew = false;
- // Next line is a workaround due to some issues with values with ID == 0
+ $scope._loadFormu = function(elementData) {
$('select').val(null);
$scope.formu = {}
var fields = Catalogs.getMetadata().fields;
@@ -83,13 +80,23 @@
// next lines are a workaround to avoid an issue where we try to show a form with "select" fields (if select field value doesn't change
$scope.formu[field.name] = null;
setTimeout(function() {
- $scope.formu[field.name] = data[field.name];
+ $scope.formu[field.name] = elementData[field.name];
$scope.$apply();
}, 0);
} else {
- if (!field.listingOnly) $scope.formu[field.name] = data[field.name] || null;
+ if (!field.listingOnly) $scope.formu[field.name] = elementData[field.name] || null;
}
})
+ }
+
+ $scope.edit = function(data) {
+ $scope.showForm = true;
+ $scope.isNew = false;
+ $scope._loadFormu(data);
+ Catalogs.get(data[Catalogs.getPk()], function(eleData) {
+ $scope._loadFormu(eleData);
+ });
+ // Next line is a workaround due to some issues with values with ID == 0
setTimeout(function() {
$('#'+Catalogs.getFFF()).focus();
}, 0);
diff --git a/securis/src/main/webapp/js/catalogs.js b/securis/src/main/webapp/js/catalogs.js
index e1d458f..bfef4a8 100644
--- a/securis/src/main/webapp/js/catalogs.js
+++ b/securis/src/main/webapp/js/catalogs.js
@@ -18,19 +18,19 @@
function($rootScope, $http, $resource, $q) {
var resources = {
application : $resource(
- 'application/:appId', {
- appId : '@id'
+ 'application/:id', {
+ id : '@id'
}),
- user : $resource('user/:userId', {
- userId : '@username'
+ user : $resource('user/:id', {
+ id : '@username'
}),
organization : $resource(
- 'organization/:orgId', {
- orgId : '@id'
+ 'organization/:id', {
+ id : '@id'
}),
licensetype : $resource(
- 'licensetype/:licenseTypeId', {
- licenseTypeId : '@id'
+ 'licensetype/:id', {
+ id : '@id'
})
}
@@ -68,12 +68,15 @@
return resources[res];
}
this.getPk = function(catalogMetadata) {
- if (!catalogMetadata)
+ if (!catalogMetadata) {
catalogMetadata = _current;
+ }
- for (var i = 0; i < catalogMetadata.fields.length; i++)
- if (catalogMetadata.fields[i].pk)
+ for (var i = 0; i < catalogMetadata.fields.length; i++) {
+ if (catalogMetadata.fields[i].pk) {
return catalogMetadata.fields[i].name;
+ }
+ }
return null;
}
@@ -167,19 +170,27 @@
}
this.save = function(data) {
- if (!_current)
+ if (!_current) {
throw new Error('There is no current catalog selected');
-
+ }
var resource = this.getResource();
return resource.save(data, _success, _fail);
+ }
+ this.get = function(id, _onsuccess, _onfail) {
+ if (!_current) {
+ throw new Error('There is no current catalog selected');
+ }
+ var resource = this.getResource();
+ return resource.get({id: id}, _onsuccess, _onfail);
}
this.remove = function(data) {
return this.getResource().remove({}, data,
_success, _fail)
}
this.query = function() {
- return this.getResource().query({},
- _success, _fail);
+ var list = this.getResource().query();
+ list.$promise.then(_success, _fail);
+ return list;
}
this.refreshRef = function(refs, res,
preloadedData) {
--
Gitblit v1.3.2