From af938bc34db86a1ed8d70bda5d7cfe4490c44eee Mon Sep 17 00:00:00 2001 From: "Carlos A. Munoz" Date: Tue, 27 Aug 2013 16:10:56 +1000 Subject: [PATCH] Fix manual merge compilation errors. Make sure the translation memory uses of the async classes is working properly. --- .../action/TranslationMemoryAction.java | 28 +++++++++++++------ .../service/AsyncTaskManagerService.java | 2 -- .../impl/AsyncTaskManagerServiceImpl.java | 24 +++++----------- 3 files changed, 27 insertions(+), 27 deletions(-) diff --git a/zanata-war/src/main/java/org/zanata/action/TranslationMemoryAction.java b/zanata-war/src/main/java/org/zanata/action/TranslationMemoryAction.java index 187fdcd6f8..8bc8bbda64 100644 --- a/zanata-war/src/main/java/org/zanata/action/TranslationMemoryAction.java +++ b/zanata-war/src/main/java/org/zanata/action/TranslationMemoryAction.java @@ -24,6 +24,7 @@ import java.io.Serializable; import java.util.List; +import java.util.concurrent.ExecutionException; import javax.faces.event.ValueChangeEvent; @@ -49,6 +50,8 @@ import org.zanata.rest.service.TranslationMemoryResourceService; import org.zanata.service.SlugEntityService; +import com.google.common.base.Optional; + /** * Controller class for the Translation Memory UI. * @@ -78,7 +81,7 @@ public class TranslationMemoryAction extends EntityHome */ @In(scope=ScopeType.PAGE, required=false) @Out(scope=ScopeType.PAGE, required=false) - private ProcessHandle myProcessHandle; + private AsyncTaskHandle myTaskHandle; /** * Stores the last process error, but only for the duration of the event. @@ -131,7 +134,7 @@ public Void call() throws Exception private boolean isProcessing() { - return myProcessHandle != null; + return myTaskHandle != null; } public boolean isProcessErrorPollEnabled() @@ -148,13 +151,22 @@ public boolean isProcessErrorPollEnabled() public String getProcessError() { if (myProcessError != null) return myProcessError; - if (myProcessHandle != null && myProcessHandle.isFinished()) + if (myTaskHandle != null && myTaskHandle.isDone()) { - processManagerServiceImpl.removeIfInactive(myProcessHandle); - Throwable error = myProcessHandle.getError(); - // remember the result, just until this event finishes - this.myProcessError = error != null ? error.getMessage() : ""; - this.myProcessHandle = null; + try + { + myTaskHandle.get(); + } + catch (InterruptedException e) + { + // no error, just interrupted + } + catch (ExecutionException e) + { + // remember the result, just until this event finishes + this.myProcessError = e.getCause() != null ? e.getCause().getMessage() : ""; + } + myTaskHandle = null; return myProcessError; } return ""; diff --git a/zanata-war/src/main/java/org/zanata/service/AsyncTaskManagerService.java b/zanata-war/src/main/java/org/zanata/service/AsyncTaskManagerService.java index 742d282321..7c4f04c229 100644 --- a/zanata-war/src/main/java/org/zanata/service/AsyncTaskManagerService.java +++ b/zanata-war/src/main/java/org/zanata/service/AsyncTaskManagerService.java @@ -67,8 +67,6 @@ public interface AsyncTaskManagerService */ AsyncTaskHandle getHandleByKey(Serializable key); - AsyncTaskHandle getHandle(String taskId, boolean removeIfFinished); - /** * @return All handles for all tasks being managed by this service. */ diff --git a/zanata-war/src/main/java/org/zanata/service/impl/AsyncTaskManagerServiceImpl.java b/zanata-war/src/main/java/org/zanata/service/impl/AsyncTaskManagerServiceImpl.java index 47b317e05f..835bffb673 100644 --- a/zanata-war/src/main/java/org/zanata/service/impl/AsyncTaskManagerServiceImpl.java +++ b/zanata-war/src/main/java/org/zanata/service/impl/AsyncTaskManagerServiceImpl.java @@ -87,35 +87,25 @@ public > void startTask(AsyncTask task, Se @Override public AsyncTaskHandle getHandle(String taskId) - { - return getHandle(taskId, false); - } - - @Override - public AsyncTaskHandle getHandleByKey(Serializable key) - { - return handlesByKey.get(key); - } - - @Override - public AsyncTaskHandle getHandle(String taskId, boolean removeIfFinished) { try { Long taskKey = Long.parseLong(taskId); AsyncTaskHandle handle = handlesById.getIfPresent(taskKey); - if( removeIfFinished ) - { - handlesById.invalidate(taskKey); - } return handle; } catch (NumberFormatException e) { - return null; // Non-number keys don't exist in this implementation + return null; // Non-number keys are not allowed in this implementation } } + @Override + public AsyncTaskHandle getHandleByKey(Serializable key) + { + return handlesByKey.get(key); + } + @Override public void clearInactive() {