@Override public T call() throws Exception { if (command.getProgressListener().isCanceled()) { this.status = Status.CANCELLED; return null; } this.status = Status.RUNNING; try { command.setProgressListener(progress); T result = command.call(); if (command.getProgressListener().isCanceled()) { this.status = Status.CANCELLED; } else { this.status = Status.FINISHED; } return result; } catch (Throwable e) { this.status = Status.FAILED; throw e; } } }
@Test public void testProgressListener() { AbstractGeoGigOp<String> testOp = new AbstractGeoGigOp<String>() { @Override protected String _call() { return "myValue"; } }; DefaultProgressListener listener = new DefaultProgressListener(); listener.setMaxProgress(1000); listener.setDescription("command progress"); testOp.setProgressListener(null); assertTrue(testOp.getProgressListener() instanceof ProgressListener); testOp.setProgressListener(listener); assertEquals(listener, testOp.getProgressListener()); ProgressListener subProgress = testOp.subProgress(100); subProgress.setMaxProgress(100); subProgress.setProgress(50); assertEquals(50, (int) listener.getProgress()); subProgress.complete(); assertEquals(100, (int) listener.getProgress()); }