[98742] Define JUnit testcases for new environment/operation API in wst.common.
diff --git a/tests/org.eclipse.wst.common.tests.ui/src/org/eclipse/wst/common/tests/ui/manager/TestGroupManager.java b/tests/org.eclipse.wst.common.tests.ui/src/org/eclipse/wst/common/tests/ui/manager/TestGroupManager.java
index 9556121..806cb6e 100644
--- a/tests/org.eclipse.wst.common.tests.ui/src/org/eclipse/wst/common/tests/ui/manager/TestGroupManager.java
+++ b/tests/org.eclipse.wst.common.tests.ui/src/org/eclipse/wst/common/tests/ui/manager/TestGroupManager.java
@@ -99,12 +99,12 @@
// / \ / \
// A C E G
operationManager = new OperationManager(dataModelManager, opD, EnvironmentService.getEclipseConsoleEnvironment() );
- operationManager.addPreOperation(opD.getID(), opB);
- operationManager.addPostOperation(opD.getID(), opF);
- operationManager.addPreOperation(opB.getID(), opA);
- operationManager.addPostOperation(opB.getID(), opC);
- operationManager.addPreOperation(opF.getID(), opE);
- operationManager.addPostOperation(opF.getID(), opG);
+ operationManager.addExtendedPreOperation(opD.getID(), opB);
+ operationManager.addExtendedPostOperation(opD.getID(), opF);
+ operationManager.addExtendedPreOperation(opB.getID(), opA);
+ operationManager.addExtendedPostOperation(opB.getID(), opC);
+ operationManager.addExtendedPreOperation(opF.getID(), opE);
+ operationManager.addExtendedPostOperation(opF.getID(), opG);
// Page groups are organized as follows:
//
diff --git a/tests/org.eclipse.wst.common.tests/frameworktests/org/eclipse/wst/common/frameworks/operations/tests/manager/BaseOperation.java b/tests/org.eclipse.wst.common.tests/frameworktests/org/eclipse/wst/common/frameworks/operations/tests/manager/BaseOperation.java
index e55e7b7..aa9f8d7 100644
--- a/tests/org.eclipse.wst.common.tests/frameworktests/org/eclipse/wst/common/frameworks/operations/tests/manager/BaseOperation.java
+++ b/tests/org.eclipse.wst.common.tests/frameworktests/org/eclipse/wst/common/frameworks/operations/tests/manager/BaseOperation.java
@@ -10,7 +10,9 @@
*******************************************************************************/
package org.eclipse.wst.common.frameworks.operations.tests.manager;
+import java.util.ArrayList;
import java.util.HashSet;
+import java.util.List;
import java.util.Set;
import java.util.Vector;
@@ -22,13 +24,16 @@
import org.eclipse.wst.common.environment.ILog;
import org.eclipse.wst.common.frameworks.datamodel.AbstractDataModelOperation;
import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
+import org.eclipse.wst.common.frameworks.datamodel.IDataModelOperation;
public class BaseOperation extends AbstractDataModelOperation {
- private Vector resultList;
- private Vector undoList;
+ protected Vector resultList;
+ protected Vector undoList;
private IStatus status;
private boolean checkModels;
private boolean modelsOK = false;
+ private ArrayList preOps = new ArrayList();
+ private ArrayList postOps = new ArrayList();
public BaseOperation(String id, Vector resultList, Vector undoList) {
setID(id);
@@ -45,6 +50,8 @@
public IStatus execute(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
resultList.add(this);
+ getDataModel().setProperty( "executedOps", resultList );
+ getDataModel().setProperty( "executedUndoOps", undoList );
if( checkModels ) modelsOK = checkModels();
getEnvironment().getLog().log( ILog.OK, 1234, this, "BaseOperation", (Throwable)null );
@@ -62,6 +69,26 @@
return Status.OK_STATUS;
}
+ public void addPostOp( IDataModelOperation operation )
+ {
+ postOps.add( operation );
+ }
+
+ public void addPreOp( IDataModelOperation operation )
+ {
+ preOps.add( operation );
+ }
+
+ public List getPostOperations()
+ {
+ return postOps;
+ }
+
+ public List getPreOperations()
+ {
+ return preOps;
+ }
+
public void setCheckModels( boolean checkModels )
{
this.checkModels = checkModels;
@@ -78,6 +105,7 @@
ids.add( "testprovider1" );
ids.add( "testprovider2" );
+ ids.add( "testExtendedProvider" );
return ids;
}
diff --git a/tests/org.eclipse.wst.common.tests/frameworktests/org/eclipse/wst/common/frameworks/operations/tests/manager/TestExtendedOperation.java b/tests/org.eclipse.wst.common.tests/frameworktests/org/eclipse/wst/common/frameworks/operations/tests/manager/TestExtendedOperation.java
new file mode 100644
index 0000000..97bbbed
--- /dev/null
+++ b/tests/org.eclipse.wst.common.tests/frameworktests/org/eclipse/wst/common/frameworks/operations/tests/manager/TestExtendedOperation.java
@@ -0,0 +1,57 @@
+/***************************************************************************************************
+ * Copyright (c) 2003, 2005 IBM Corporation and others. All rights reserved. This program and the
+ * accompanying materials are 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: IBM Corporation - initial API and implementation
+ **************************************************************************************************/
+package org.eclipse.wst.common.frameworks.operations.tests.manager;
+
+import java.util.HashSet;
+import java.util.Set;
+import java.util.Vector;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
+
+public class TestExtendedOperation extends BaseOperation
+{
+
+ public TestExtendedOperation()
+ {
+ super( "TestExtendedOperation", null, null);
+ }
+
+ public IStatus execute(IProgressMonitor monitor, IAdaptable info) throws ExecutionException
+ {
+ IDataModel model = getDataModel();
+ Vector resultList = (Vector)model.getProperty( "executedOps" );
+ resultList.add(this);
+
+ return Status.OK_STATUS;
+ }
+
+ public IStatus undo(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
+ IDataModel model = getDataModel();
+ Vector resultList = (Vector)model.getProperty( "executedOps" );
+ Vector undoList = (Vector)model.getProperty( "executedUndoOps" );
+
+ resultList.remove(resultList.size() - 1);
+ undoList.add(this);
+ return Status.OK_STATUS;
+ }
+
+ public Set getDataModelIDs()
+ {
+ HashSet ids = new HashSet();
+
+ ids.add( "testExtendedProvider" );
+
+ return ids;
+ }
+
+}
diff --git a/tests/org.eclipse.wst.common.tests/frameworktests/org/eclipse/wst/common/frameworks/operations/tests/manager/TestExtendedProvider.java b/tests/org.eclipse.wst.common.tests/frameworktests/org/eclipse/wst/common/frameworks/operations/tests/manager/TestExtendedProvider.java
new file mode 100644
index 0000000..da60289
--- /dev/null
+++ b/tests/org.eclipse.wst.common.tests/frameworktests/org/eclipse/wst/common/frameworks/operations/tests/manager/TestExtendedProvider.java
@@ -0,0 +1,34 @@
+/***************************************************************************************************
+ * Copyright (c) 2003, 2005 IBM Corporation and others. All rights reserved. This program and the
+ * accompanying materials are 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: IBM Corporation - initial API and implementation
+ **************************************************************************************************/
+package org.eclipse.wst.common.frameworks.operations.tests.manager;
+
+import java.util.Set;
+import org.eclipse.wst.common.frameworks.datamodel.AbstractDataModelProvider;
+
+public class TestExtendedProvider extends AbstractDataModelProvider
+{
+ public Set getPropertyNames(){
+ Set propertyNames = super.getPropertyNames();
+ propertyNames.add("executedOps");
+ propertyNames.add("executedUndoOps");
+
+ return propertyNames;
+ }
+
+ public void init()
+ {
+ }
+
+ public String getID()
+ {
+ return "TestExtendedProvider";
+ }
+
+
+}
diff --git a/tests/org.eclipse.wst.common.tests/frameworktests/org/eclipse/wst/common/frameworks/operations/tests/manager/TestOperationManager.java b/tests/org.eclipse.wst.common.tests/frameworktests/org/eclipse/wst/common/frameworks/operations/tests/manager/TestOperationManager.java
index ebe8b28..b076a96 100644
--- a/tests/org.eclipse.wst.common.tests/frameworktests/org/eclipse/wst/common/frameworks/operations/tests/manager/TestOperationManager.java
+++ b/tests/org.eclipse.wst.common.tests/frameworktests/org/eclipse/wst/common/frameworks/operations/tests/manager/TestOperationManager.java
@@ -71,12 +71,12 @@
// / \ / \
// A C E G
manager = new OperationManager(dataModelManager, opD, EnvironmentService.getEclipseConsoleEnvironment() );
- manager.addPreOperation(opD.getID(), opB);
- manager.addPostOperation(opD.getID(), opF);
- manager.addPreOperation(opB.getID(), opA);
- manager.addPostOperation(opB.getID(), opC);
- manager.addPreOperation(opF.getID(), opE);
- manager.addPostOperation(opF.getID(), opG);
+ manager.addExtendedPreOperation(opD.getID(), opB);
+ manager.addExtendedPostOperation(opD.getID(), opF);
+ manager.addExtendedPreOperation(opB.getID(), opA);
+ manager.addExtendedPostOperation(opB.getID(), opC);
+ manager.addExtendedPreOperation(opF.getID(), opE);
+ manager.addExtendedPostOperation(opF.getID(), opG);
}
public void testRunAll() throws Exception {
@@ -343,7 +343,71 @@
manager.undoLastRun();
checkResults();
}
+
+ public void testRunWithChildOperations() throws Exception
+ {
+ StopListener stopListener1 = new StopListener(new String[]{"B"});
+ StopListener stopListener2 = new StopListener( new String[]{ "APre1Pre1", "APost1", "B" } );
+
+ BaseOperation opAPre1 = new BaseOperation("APre1", executedOps, executedUndoOps);
+ BaseOperation opAPre2 = new BaseOperation("APre2", executedOps, executedUndoOps);
+ BaseOperation opAPost1 = new BaseOperation("APost1", executedOps, executedUndoOps);
+ BaseOperation opAPre1Pre1 = new BaseOperation("APre1Pre1", executedOps, executedUndoOps);
+ BaseOperation opAPre2Post1 = new BaseOperation("APre2Post2", executedOps, executedUndoOps);
+
+ opA.addPreOp( opAPre1 );
+ opA.addPreOp( opAPre2 );
+ opA.addPostOp( opAPost1 );
+ opAPre1.addPreOp( opAPre1Pre1 );
+ opAPre2.addPostOp( opAPre2Post1 );
+
+ manager.setPostExecuteListener(stopListener1);
+
+ expectedOps.add(opAPre1Pre1);
+ expectedOps.add(opAPre1);
+ expectedOps.add( new TestExtendedOperation() );
+ expectedOps.add(opAPre2);
+ expectedOps.add(opAPre2Post1);
+ expectedOps.add(opA);
+ expectedOps.add(opAPost1);
+ expectedOps.add(opB);
+ manager.runOperations();
+ checkResults();
+ expectedOps.removeAllElements();
+ expectedUndoOps.add(opB);
+ expectedUndoOps.add(opAPost1);
+ expectedUndoOps.add(opA);
+ expectedUndoOps.add(opAPre2Post1);
+ expectedUndoOps.add(opAPre2);
+ expectedUndoOps.add( new TestExtendedOperation() );
+ expectedUndoOps.add(opAPre1);
+ expectedUndoOps.add(opAPre1Pre1);
+ manager.undoLastRun();
+ checkResults();
+
+ reset();
+ manager.setPostExecuteListener(stopListener2);
+
+ expectedOps.add(opAPre1Pre1);
+ manager.runOperations();
+ checkResults();
+
+ expectedOps.add(opAPre1);
+ expectedOps.add( new TestExtendedOperation() );
+ expectedOps.add(opAPre2);
+ expectedOps.add(opAPre2Post1);
+ expectedOps.add(opA);
+ expectedOps.add(opAPost1);
+ manager.runOperations();
+ checkResults();
+
+ expectedOps.add(opB);
+ manager.runOperations();
+ checkResults();
+
+ }
+
private void reset() {
executedOps.removeAllElements();
expectedOps.removeAllElements();
diff --git a/tests/org.eclipse.wst.common.tests/plugin.xml b/tests/org.eclipse.wst.common.tests/plugin.xml
index 2f13f4a..0a77b07 100644
--- a/tests/org.eclipse.wst.common.tests/plugin.xml
+++ b/tests/org.eclipse.wst.common.tests/plugin.xml
@@ -47,6 +47,9 @@
class="org.eclipse.wst.common.frameworks.operations.tests.manager.TestProvider2"
id="testprovider2"/>
<DataModelProvider
+ class="org.eclipse.wst.common.frameworks.operations.tests.manager.TestExtendedProvider"
+ id="testExtendedProvider"/>
+ <DataModelProvider
class="bogusClass"
id="bogus"/>
<ProviderDefinesType
@@ -104,6 +107,9 @@
id="org.eclipse.wst.common.frameworks.datamodel.tests.extended.H"
preOperationClass="org.eclipse.wst.common.frameworks.datamodel.tests.extended.G"/>
<operationExtension
+ id="APre2"
+ preOperationClass="org.eclipse.wst.common.frameworks.operations.tests.manager.TestExtendedOperation"/>
+ <operationExtension
id="org.eclipse.wst.common.frameworks.datamodel.tests.extended.H"/>
</extension>