ctx.error("Could not install or update " + moduleDef.getName() + " module. Task '" + currentTask.getName() + "' failed. (" + ExceptionUtils.getRootCauseMessage(e) + ")", e); success = false; } catch (RuntimeException e) { ctx.error("Error while installing or updating " + moduleDef.getName() + " module. Task '" + (currentTask == null ? "<null>" : currentTask.getName()) + "' failed. (" + ExceptionUtils.getRootCauseMessage(e) + ")", e); ctx.setStatus(InstallStatus.installFailed); throw e;
@Test public void testTaskExecutionExceptionInterruptsTasksAddsExplicitErrorMessage() throws RepositoryException, TaskExecutionException { final ModuleDefinition mod = new ModuleDefinition("foo", Version.parseVersion("2.3.4"), null, null); final InstallContextImpl ctx = createStrictMock(InstallContextImpl.class); final Delta d1 = createStrictMock(Delta.class); final Task t1 = createStrictMock(Task.class); final Task t2 = createStrictMock(Task.class); ctx.setCurrentModule(mod); expect(d1.getTasks()).andReturn(Arrays.asList(t1, t2)); t1.execute(ctx); expectLastCall().andThrow(new TaskExecutionException("boo")); expect(t1.getName()).andReturn("task#1").anyTimes(); ctx.error(eq("Could not install or update foo module. Task 'task#1' failed. (TaskExecutionException: boo)"), isA(TaskExecutionException.class)); ctx.setCurrentModule(null); expect(ctx.getJCRSession(anyObject())).andAnswer(new IAnswer<Session>() { public Session answer() throws Throwable { return repositoryManager.getSystemSession(getCurrentArguments()[0].toString()); } }).anyTimes(); replay(ctx, d1, t1, t2); final ModuleManager.ModuleAndDeltas moduleAndDeltas = new ModuleManager.ModuleAndDeltas(mod, Version.parseVersion("1.2.3"), Arrays.asList(d1)); new ModuleManagerImpl(ctx, Sets.newHashSet(new BetwixtModuleDefinitionReader()), moduleRegistry, new DependencyCheckerImpl(), new Node2BeanProcessorImpl(new TypeMappingImpl(), new Node2BeanTransformerImpl(new PreConfiguredBeanUtils())), repositoryManager).installOrUpdateModule(moduleAndDeltas, ctx); verify(ctx, d1, t1, t2); }