diff --git a/server/zanata-war/src/main/java/org/zanata/dao/AbstractDAOImpl.java b/server/zanata-war/src/main/java/org/zanata/dao/AbstractDAOImpl.java index f081e7df8e..c203a64e33 100644 --- a/server/zanata-war/src/main/java/org/zanata/dao/AbstractDAOImpl.java +++ b/server/zanata-war/src/main/java/org/zanata/dao/AbstractDAOImpl.java @@ -49,16 +49,23 @@ public Class getPersistentClass() { return persistentClass; } + /** + * Use session.get() instead of session.load() to prevent non-null entity + * being return if does not exists. + * + * See {@link org.hibernate.Session#get(Class, Serializable)} and + * {@link org.hibernate.Session#load(Class, Serializable)} for documentation. + */ @SuppressWarnings("unchecked") @Override public T findById(ID id, boolean lock) { T entity; if (lock) { entity = - (T) getSession().load(getPersistentClass(), id, + (T) getSession().get(getPersistentClass(), id, LockOptions.UPGRADE); } else { - entity = (T) getSession().load(getPersistentClass(), id); + entity = (T) getSession().get(getPersistentClass(), id); } return entity; diff --git a/server/zanata-war/src/main/java/org/zanata/rest/service/GlossaryService.java b/server/zanata-war/src/main/java/org/zanata/rest/service/GlossaryService.java index db89838b14..b3df6b3aeb 100644 --- a/server/zanata-war/src/main/java/org/zanata/rest/service/GlossaryService.java +++ b/server/zanata-war/src/main/java/org/zanata/rest/service/GlossaryService.java @@ -11,7 +11,6 @@ import java.util.zip.ZipOutputStream; import javax.enterprise.context.RequestScoped; -import javax.persistence.EntityNotFoundException; import javax.ws.rs.DefaultValue; import javax.ws.rs.Path; import javax.ws.rs.QueryParam; @@ -334,19 +333,17 @@ public Response deleteEntry(Long id) { if (response != null) { return response; } - try { - HGlossaryEntry entry = glossaryDAO.findById(id); - if(entry != null) { - GlossaryEntry deletedEntry = generateGlossaryEntry(entry); - glossaryDAO.makeTransient(entry); - glossaryDAO.flush(); - return Response.ok(deletedEntry).build(); - } - } catch (EntityNotFoundException enfe) { - // Drop to NOT FOUND response + HGlossaryEntry entry = glossaryDAO.findById(id); + + if(entry != null) { + GlossaryEntry deletedEntry = generateGlossaryEntry(entry); + glossaryDAO.makeTransient(entry); + glossaryDAO.flush(); + return Response.ok(deletedEntry).build(); + } else { + return Response.status(Response.Status.NOT_FOUND) + .entity("Glossary entry not found: " + id).build(); } - return Response.status(Response.Status.NOT_FOUND) - .entity("Glossary entry " + id + " not found").build(); } @Override