/******************************************************************************* * Copyright (c) 2014 Red Hat, Inc. * Distributed under license by Red Hat, Inc. All rights reserved. * This program is made available under the terms of the * Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Red Hat, Inc. - initial API and implementation * Tomas Milata - Added Batch diagram editor (JBIDE-19717). ******************************************************************************/ package org.jboss.tools.batch.ui.itest; import java.text.MessageFormat; import org.eclipse.sapphire.ElementList; import org.eclipse.sapphire.Value; import org.eclipse.sapphire.modeling.Status; import org.eclipse.sapphire.ui.forms.swt.MasterDetailsEditorPage; import org.eclipse.wst.sse.ui.StructuredTextEditor; import org.jboss.tools.batch.internal.core.validation.BatchValidationMessages; import org.jboss.tools.batch.ui.editor.internal.model.BatchletOrChunk; import org.jboss.tools.batch.ui.editor.internal.model.Chunk; import org.jboss.tools.batch.ui.editor.internal.model.Flow; import org.jboss.tools.batch.ui.editor.internal.model.FlowElement; import org.jboss.tools.batch.ui.editor.internal.model.Job; import org.jboss.tools.batch.ui.editor.internal.model.JobListener; import org.jboss.tools.batch.ui.editor.internal.model.JobXMLEditor; import org.jboss.tools.batch.ui.editor.internal.model.RefAttributeElement; import org.jboss.tools.batch.ui.editor.internal.model.Step; import org.jboss.tools.batch.ui.editor.internal.model.StepListener; /** * @author */ public class BatchEditorTest extends AbstractBatchSapphireEditorTest { public void testEditor() { editor = openEditor("src/META-INF/batch-jobs/job.xml"); JobXMLEditor jobEditor = (JobXMLEditor)editor; Job job = jobEditor.getSchema(); assertNotNull(job); ElementList<FlowElement> es = job.getFlowElements(); assertEquals(1, es.size()); Step step = (Step)es.get(0); ElementList<BatchletOrChunk> ch = step.getBatchletOrChunk(); Chunk chunk = (Chunk) (ch.iterator().next()); assertEquals("myReader", chunk.getReader().getRef().content()); assertEquals("myItemWriter", chunk.getWriter().getRef().content()); assertEquals("myItemProcessor", chunk.getProcessor().content().getRef().content()); StructuredTextEditor textEditor = jobEditor.getSourceEditor(); assertNotNull(textEditor); MasterDetailsEditorPage formEditor = jobEditor.getFormEditor(); assertNotNull(formEditor); } public void testValidation() { editor = openEditor("src/META-INF/batch-jobs/job-validation-1.xml"); JobXMLEditor jobEditor = (JobXMLEditor)editor; Job job = jobEditor.getSchema(); ElementList<FlowElement> es = job.getFlowElements(); Step step = (Step)es.get(0); Status status = step.getId().validation(); assertTrue(status.ok()); step = (Step)es.get(1); status = step.getId().validation(); assertFalse(status.ok()); Flow flow = (Flow)es.get(2); status = flow.getId().validation(); assertFalse(status.ok()); } public void testRestartableInvalid() throws Exception { editor = openEditor("src/META-INF/batch-jobs/job-restartable-invalid.xml"); JobXMLEditor jobEditor = (JobXMLEditor)editor; Job job = jobEditor.getSchema(); Value<Boolean> restartable = job.getRestartable(); assertEquals("xxxx", restartable.text()); assertEquals(Boolean.TRUE, restartable.content()); //default value Status s = restartable.validation(); assertFalse(s.ok()); } public void testRestartableValid() throws Exception { editor = openEditor("src/META-INF/batch-jobs/job-restartable-valid.xml"); JobXMLEditor jobEditor = (JobXMLEditor)editor; Job job = jobEditor.getSchema(); Value<Boolean> restartable = job.getRestartable(); assertEquals("false", restartable.text()); assertEquals(Boolean.FALSE, restartable.content()); Status s = restartable.validation(); assertTrue(s.ok()); } public void testBatchletRefValidation() throws Exception { Job job = openJob("src/META-INF/batch-jobs/job3.xml"); ElementList<FlowElement> es = job.getFlowElements(); assertRefValidation(findBatchlet(es, 0), null); assertRefValidation(findBatchlet(es, 2), BatchValidationMessages.BATCHLET_IS_NOT_FOUND); assertRefValidation(findBatchlet(es, 1), BatchValidationMessages.BATCHLET_IS_EXPECTED); } public void testReaderRefValidation() throws Exception { Job job = openJob("src/META-INF/batch-jobs/job7.xml"); ElementList<FlowElement> es = job.getFlowElements(); assertRefValidation(findReader(es, 0), null); assertRefValidation(findReader(es, 1), BatchValidationMessages.READER_IS_NOT_FOUND); assertRefValidation(findReader(es, 2), BatchValidationMessages.READER_IS_EXPECTED); } public void testProcessorRefValidation() throws Exception { Job job = openJob("src/META-INF/batch-jobs/job7.xml"); ElementList<FlowElement> es = job.getFlowElements(); assertRefValidation(findProcessor(es, 0), null); assertRefValidation(findProcessor(es, 1), BatchValidationMessages.PROCESSOR_IS_NOT_FOUND); assertRefValidation(findProcessor(es, 2), BatchValidationMessages.PROCESSOR_IS_EXPECTED); } public void testWriterRefValidation() throws Exception { Job job = openJob("src/META-INF/batch-jobs/job7.xml"); ElementList<FlowElement> es = job.getFlowElements(); assertRefValidation(findWriter(es, 0), null); assertRefValidation(findWriter(es, 1), BatchValidationMessages.WRITER_IS_NOT_FOUND); assertRefValidation(findWriter(es, 2), BatchValidationMessages.WRITER_IS_EXPECTED); } public void testCheckpointAlgorithmRefValidation() throws Exception { Job job = openJob("src/META-INF/batch-jobs/job7.xml"); ElementList<FlowElement> es = job.getFlowElements(); assertRefValidation(findCheckpointAlgorithm(es, 0), null); assertRefValidation(findCheckpointAlgorithm(es, 1), BatchValidationMessages.CHECKPOINT_ALGORITHM_IS_NOT_FOUND); assertRefValidation(findCheckpointAlgorithm(es, 2), BatchValidationMessages.CHECKPOINT_ALGORITHM_IS_EXPECTED); } public void testJobListenerRefValidation() throws Exception { Job job = openJob("src/META-INF/batch-jobs/job8.xml"); ElementList<JobListener> es = job.getListeners(); assertRefValidation(es.get(0), null); assertRefValidation(es.get(1), BatchValidationMessages.JOB_LISTENER_IS_NOT_FOUND); assertRefValidation(es.get(2), BatchValidationMessages.JOB_LISTENER_IS_EXPECTED); } public void testStepListenerRefValidation() throws Exception { Job job = openJob("src/META-INF/batch-jobs/job9.xml"); ElementList<StepListener> es = findStep(job.getFlowElements(), 0).getListeners(); assertRefValidation(es.get(2), null); assertRefValidation(es.get(1), BatchValidationMessages.STEP_LISTENER_IS_NOT_FOUND); assertRefValidation(es.get(0), BatchValidationMessages.STEP_LISTENER_IS_EXPECTED); } public void testMapperRefValidation() throws Exception { Job job = openJob("src/META-INF/batch-jobs/job10.xml"); ElementList<FlowElement> es = job.getFlowElements(); assertRefValidation(findMapper(es, 0), null); assertRefValidation(findMapper(es, 1), BatchValidationMessages.MAPPER_IS_NOT_FOUND); assertRefValidation(findMapper(es, 2), BatchValidationMessages.MAPPER_IS_EXPECTED); } public void testCollectorRefValidation() throws Exception { Job job = openJob("src/META-INF/batch-jobs/job10.xml"); ElementList<FlowElement> es = job.getFlowElements(); assertRefValidation(findCollector(es, 0), null); assertRefValidation(findCollector(es, 1), BatchValidationMessages.COLLECTOR_IS_NOT_FOUND); assertRefValidation(findCollector(es, 2), BatchValidationMessages.COLLECTOR_IS_EXPECTED); } public void testAnalyzerRefValidation() throws Exception { Job job = openJob("src/META-INF/batch-jobs/job10.xml"); ElementList<FlowElement> es = job.getFlowElements(); assertRefValidation(findAnalyzer(es, 0), null); assertRefValidation(findAnalyzer(es, 1), BatchValidationMessages.ANALYZER_IS_NOT_FOUND); assertRefValidation(findAnalyzer(es, 2), BatchValidationMessages.ANALYZER_IS_EXPECTED); } public void testReducerRefValidation() throws Exception { Job job = openJob("src/META-INF/batch-jobs/job10.xml"); ElementList<FlowElement> es = job.getFlowElements(); assertRefValidation(findReducer(es, 0), null); assertRefValidation(findReducer(es, 1), BatchValidationMessages.REDUCER_IS_NOT_FOUND); assertRefValidation(findReducer(es, 2), BatchValidationMessages.REDUCER_IS_EXPECTED); } void assertRefValidation(RefAttributeElement artifact, String messagePattern) { assertNotNull(artifact); Status status = artifact.getRef().validation(); if(messagePattern == null) { assertTrue(status.ok()); } else { assertFalse(status.ok()); String message = MessageFormat.format(messagePattern, artifact.getRef().content()); assertEquals(message, status.message()); } } }