From db545b8bf18425b89c9df7cd0c828945e9888b2c Mon Sep 17 00:00:00 2001 From: Alex Eng Date: Thu, 7 Apr 2016 08:57:58 +1000 Subject: [PATCH] fix(copy version): fix null pointer exception when copy version https://zanata.atlassian.net/browse/ZNTA-1001 https://zanata.atlassian.net/browse/ZNTA-959 --- .../java/org/zanata/action/VersionHome.java | 10 +--------- .../service/impl/CopyVersionServiceImpl.java | 13 ++++++++++-- .../impl/CopyVersionServiceImplTest.java | 20 ------------------- 3 files changed, 12 insertions(+), 31 deletions(-) diff --git a/zanata-war/src/main/java/org/zanata/action/VersionHome.java b/zanata-war/src/main/java/org/zanata/action/VersionHome.java index 78ff97ab51..fffe2191dd 100644 --- a/zanata-war/src/main/java/org/zanata/action/VersionHome.java +++ b/zanata-war/src/main/java/org/zanata/action/VersionHome.java @@ -377,16 +377,8 @@ public String createVersion() { } public void copyVersion() { - getInstance().setSlug(inputSlugValue); - getInstance().setStatus(EntityStatus.READONLY); - - // create basic version here - HProject project = getProject(); - project.addIteration(getInstance()); - super.persist(); - copyVersionManager.startCopyVersion(projectSlug, - copyFromVersionSlug, getInstance().getSlug()); + copyFromVersionSlug, inputSlugValue); conversationScopeMessages .setMessage(FacesMessage.SEVERITY_INFO, msgs. diff --git a/zanata-war/src/main/java/org/zanata/service/impl/CopyVersionServiceImpl.java b/zanata-war/src/main/java/org/zanata/service/impl/CopyVersionServiceImpl.java index 9db9d73cae..b8464b9911 100644 --- a/zanata-war/src/main/java/org/zanata/service/impl/CopyVersionServiceImpl.java +++ b/zanata-war/src/main/java/org/zanata/service/impl/CopyVersionServiceImpl.java @@ -21,13 +21,16 @@ import org.zanata.async.AsyncTaskResult; import org.zanata.async.ContainsAsyncMethods; import org.zanata.async.handle.CopyVersionTaskHandle; +import org.zanata.common.EntityStatus; import org.zanata.dao.DocumentDAO; +import org.zanata.dao.ProjectDAO; import org.zanata.dao.ProjectIterationDAO; import org.zanata.dao.TextFlowDAO; import org.zanata.dao.TextFlowTargetDAO; import org.zanata.file.FilePersistService; import org.zanata.model.HDocument; import org.zanata.model.HLocale; +import org.zanata.model.HProject; import org.zanata.model.HProjectIteration; import org.zanata.model.HRawDocument; import org.zanata.model.HSimpleComment; @@ -72,6 +75,9 @@ public class CopyVersionServiceImpl implements CopyVersionService { @In private ProjectIterationDAO projectIterationDAO; + @In + private ProjectDAO projectDAO; + @In private DocumentDAO documentDAO; @@ -118,12 +124,15 @@ public void copyVersion(@Nonnull String projectSlug, + newVersionSlug); // Copy of HProjectIteration - HProjectIteration newVersion = - projectIterationDAO.getBySlug(projectSlug, newVersionSlug); + HProjectIteration newVersion = new HProjectIteration(); try { + newVersion.setSlug(newVersionSlug); + newVersion.setStatus(EntityStatus.READONLY); + newVersion.setProject(version.getProject()); newVersion = copyVersionSettings(version, newVersion); newVersion = projectIterationDAO.makePersistent(newVersion); + projectIterationDAO.flush(); // Copy of HDocument int docSize = diff --git a/zanata-war/src/test/java/org/zanata/service/impl/CopyVersionServiceImplTest.java b/zanata-war/src/test/java/org/zanata/service/impl/CopyVersionServiceImplTest.java index 1aa863d132..ea78ac3fe3 100644 --- a/zanata-war/src/test/java/org/zanata/service/impl/CopyVersionServiceImplTest.java +++ b/zanata-war/src/test/java/org/zanata/service/impl/CopyVersionServiceImplTest.java @@ -155,9 +155,6 @@ public void testTextFlowBatching() { String existingVersionSlug = existingDoc.getProjectIteration().getSlug(); - createNewVersion(existingProjectSlug, existingVersionSlug, - newVersionSlug); - insertTextFlowAndTargetToDoc(existingDoc, tfCount, false); spyService.copyVersion(existingProjectSlug, existingVersionSlug, @@ -183,9 +180,6 @@ public void testTextFlowTargetBatching() { String existingVersionSlug = existingDoc.getProjectIteration().getSlug(); - createNewVersion(existingProjectSlug, existingVersionSlug, - newVersionSlug); - int tftSize = insertTextFlowAndTargetToDoc(existingDoc, 1, true); spyService.copyVersion(existingProjectSlug, existingVersionSlug, @@ -245,7 +239,6 @@ public void testCopyVersion() { String projectSlug = "sample-project"; String versionSlug = "1.0"; String newVersionSlug = "new-version"; - createNewVersion(projectSlug, versionSlug, newVersionSlug); runCopyVersion(projectSlug, versionSlug, newVersionSlug); } @@ -255,7 +248,6 @@ public void testCopyVersion2() { String projectSlug = "sample-project"; String versionSlug = "2.0"; String newVersionSlug = "new-version2"; - createNewVersion(projectSlug, versionSlug, newVersionSlug); runCopyVersion(projectSlug, versionSlug, newVersionSlug); } @@ -321,18 +313,6 @@ private void runCopyVersion(String projectSlug, String versionSlug, } } - private HProjectIteration createNewVersion(String projectSlug, - String versionSlug, String newVersionSlug) { - - HProjectIteration existingVersion = - projectIterationDAO.getBySlug(projectSlug, versionSlug); - - HProjectIteration newVersion = new HProjectIteration(); - newVersion.setSlug(newVersionSlug); - newVersion.setProject(existingVersion.getProject()); - return projectIterationDAO.makePersistent(newVersion); - } - @Test public void testCopyVersionSettings() { String projectSlug = "sample-project";