diff --git a/jpacrepo.iml b/jpacrepo.iml index fdc2763..f603ead 100644 --- a/jpacrepo.iml +++ b/jpacrepo.iml @@ -14,13 +14,69 @@ - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -40,22 +96,10 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/src/main/java/org/jpacrepo/service/PacmanServiceEJB.java b/src/main/java/org/jpacrepo/service/PacmanServiceEJB.java index 75d9189..8d6786a 100644 --- a/src/main/java/org/jpacrepo/service/PacmanServiceEJB.java +++ b/src/main/java/org/jpacrepo/service/PacmanServiceEJB.java @@ -279,7 +279,6 @@ public class PacmanServiceEJB implements PacmanServiceView { criteriaQuery.select(builder.count(entity)); } - TypedQuery query = em.createQuery(criteriaQuery); return em.createQuery(criteriaQuery).getSingleResult(); } diff --git a/src/main/java/org/jpacrepo/service/PacmanWebService.java b/src/main/java/org/jpacrepo/service/PacmanWebService.java index 16720f9..3453428 100644 --- a/src/main/java/org/jpacrepo/service/PacmanWebService.java +++ b/src/main/java/org/jpacrepo/service/PacmanWebService.java @@ -10,9 +10,13 @@ import org.jpacrepo.model.PkgName; import org.jpacrepo.pacbase.Parser; import org.jpacrepo.persistence.QueryEngine; +import javax.annotation.Resource; import javax.ejb.Singleton; +import javax.ejb.TransactionManagement; +import javax.ejb.TransactionManagementType; import javax.inject.Inject; import javax.persistence.*; +import javax.transaction.UserTransaction; import javax.ws.rs.*; import javax.ws.rs.core.*; import java.io.*; @@ -26,11 +30,14 @@ import java.util.logging.Logger; @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}) @Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}) @Singleton +@TransactionManagement(TransactionManagementType.BEAN) public class PacmanWebService { @PersistenceContext(unitName = "jpacrepo_pu") private EntityManager em; + @Resource + private UserTransaction ut; @Context private UriInfo uriInfo; @@ -187,6 +194,7 @@ public class PacmanWebService IOUtils.copy(input, fos); fos.close(); + ut.begin(); PkgData pkg = serviceParser.parseFile(file); TypedQuery nquery = em.createQuery(nameQuery, PkgName.class); @@ -198,13 +206,15 @@ public class PacmanWebService } em.persist(pkg); - log.log(Level.INFO, String.format("Persisiting package %s", pkg.fileName)); + log.log(Level.INFO, String.format("Persisting package %s", pkg.fileName)); URI pkgUri = uriInfo.getAbsolutePathBuilder().path(pkg.fileName).build(); + ut.commit(); return Response.created(pkgUri).build(); } catch (Exception e) { Files.delete(file.toPath()); + ut.rollback(); throw e; } }