diff options
author | Uwe Stieber | 2014-07-18 13:47:33 +0000 |
---|---|---|
committer | Uwe Stieber | 2014-07-18 13:47:33 +0000 |
commit | 0750e5747ab70cdf106b0a8f7e7001b4ef73af12 (patch) | |
tree | ebe6961ff141b7fc9902f09e3755e415042dc92a | |
parent | 8456c650b568031448a2f5613f78e7f39fc40d5e (diff) | |
download | org.eclipse.tcf-0750e5747ab70cdf106b0a8f7e7001b4ef73af12.tar.gz org.eclipse.tcf-0750e5747ab70cdf106b0a8f7e7001b4ef73af12.tar.xz org.eclipse.tcf-0750e5747ab70cdf106b0a8f7e7001b4ef73af12.zip |
Target Explorer: Fix launch value-add and chain peers steps if channel is opened with no value add flag set
3 files changed, 50 insertions, 34 deletions
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.core/src/org/eclipse/tcf/te/tcf/core/internal/channelmanager/iterators/ChainPeersIterator.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.core/src/org/eclipse/tcf/te/tcf/core/internal/channelmanager/iterators/ChainPeersIterator.java index a0e5ef47e..44f1a3ec5 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.core/src/org/eclipse/tcf/te/tcf/core/internal/channelmanager/iterators/ChainPeersIterator.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.core/src/org/eclipse/tcf/te/tcf/core/internal/channelmanager/iterators/ChainPeersIterator.java @@ -22,6 +22,7 @@ import org.eclipse.tcf.te.runtime.stepper.StepperAttributeUtil; import org.eclipse.tcf.te.runtime.stepper.interfaces.IFullQualifiedId; import org.eclipse.tcf.te.runtime.stepper.interfaces.IStepAttributes; import org.eclipse.tcf.te.runtime.stepper.interfaces.IStepContext; +import org.eclipse.tcf.te.tcf.core.interfaces.IChannelManager; import org.eclipse.tcf.te.tcf.core.interfaces.IPeerProperties; import org.eclipse.tcf.te.tcf.core.iterators.AbstractPeerStepGroupIterator; import org.eclipse.tcf.te.tcf.core.util.persistence.PeerDataHelper; @@ -50,19 +51,22 @@ public class ChainPeersIterator extends AbstractPeerStepGroupIterator { final IPeer peer = getActivePeerContext(context, data, fullQualifiedId); final String peerId = peer.getID(); + final boolean useValueAdds = !StepperAttributeUtil.getBooleanProperty(IChannelManager.FLAG_NO_VALUE_ADD, fullQualifiedId, data); peers.clear(); Runnable runnable = new Runnable() { @Override public void run() { - IValueAdd[] valueAdds = ValueAddManager.getInstance().getValueAdd(peer); - for (IValueAdd valueAdd : valueAdds) { - IPeer valueAddPeer = valueAdd.getPeer(peerId); - if (valueAddPeer != null) { - peers.add(valueAddPeer); + if (useValueAdds) { + IValueAdd[] valueAdds = ValueAddManager.getInstance().getValueAdd(peer); + for (IValueAdd valueAdd : valueAdds) { + IPeer valueAddPeer = valueAdd.getPeer(peerId); + if (valueAddPeer != null) { + peers.add(valueAddPeer); + } } - } + } String proxyConfiguration = peer.getAttributes().get(IPeerProperties.PROP_PROXIES); if (proxyConfiguration != null) { diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.core/src/org/eclipse/tcf/te/tcf/core/internal/channelmanager/steps/LaunchValueAddStep.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.core/src/org/eclipse/tcf/te/tcf/core/internal/channelmanager/steps/LaunchValueAddStep.java index d562889e2..0f6c707a1 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.core/src/org/eclipse/tcf/te/tcf/core/internal/channelmanager/steps/LaunchValueAddStep.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.core/src/org/eclipse/tcf/te/tcf/core/internal/channelmanager/steps/LaunchValueAddStep.java @@ -23,6 +23,7 @@ import org.eclipse.tcf.te.runtime.stepper.StepperAttributeUtil; import org.eclipse.tcf.te.runtime.stepper.interfaces.IFullQualifiedId; import org.eclipse.tcf.te.runtime.stepper.interfaces.IStepContext; import org.eclipse.tcf.te.tcf.core.activator.CoreBundleActivator; +import org.eclipse.tcf.te.tcf.core.interfaces.IChannelManager; import org.eclipse.tcf.te.tcf.core.interfaces.steps.ITcfStepAttributes; import org.eclipse.tcf.te.tcf.core.steps.AbstractPeerStep; import org.eclipse.tcf.te.tcf.core.va.interfaces.IValueAdd; @@ -61,28 +62,33 @@ public class LaunchValueAddStep extends AbstractPeerStep { final IValueAdd valueAdd = (IValueAdd)StepperAttributeUtil.getProperty(ITcfStepAttributes.ATTR_VALUE_ADD, fullQualifiedId, data); final String peerId = getActivePeerContext(context, data, fullQualifiedId).getID(); + final boolean useValueAdds = !StepperAttributeUtil.getBooleanProperty(IChannelManager.FLAG_NO_VALUE_ADD, fullQualifiedId, data); - Runnable runnable = new Runnable() { - @Override - public void run() { - valueAdd.isAlive(peerId, new Callback() { - @Override - protected void internalDone(Object caller, IStatus status) { - boolean alive = ((Boolean)getResult()).booleanValue(); + if (useValueAdds) { + Runnable runnable = new Runnable() { + @Override + public void run() { + valueAdd.isAlive(peerId, new Callback() { + @Override + protected void internalDone(Object caller, IStatus status) { + boolean alive = ((Boolean)getResult()).booleanValue(); - if (!alive) { - valueAdd.launch(peerId, callback); + if (!alive) { + valueAdd.launch(peerId, callback); + } + else { + callback(data, fullQualifiedId, callback, Status.OK_STATUS, null); + } } - else { - callback(data, fullQualifiedId, callback, Status.OK_STATUS, null); - } - } - }); - } - }; + }); + } + }; - if (Protocol.isDispatchThread()) runnable.run(); - else Protocol.invokeLater(runnable); + if (Protocol.isDispatchThread()) runnable.run(); + else Protocol.invokeLater(runnable); + } else { + callback(data, fullQualifiedId, callback, Status.OK_STATUS, null); + } } /* (non-Javadoc) @@ -92,17 +98,22 @@ public class LaunchValueAddStep extends AbstractPeerStep { public void rollback(final IStepContext context, final IPropertiesContainer data, final IStatus status, final IFullQualifiedId fullQualifiedId, final IProgressMonitor monitor, final ICallback callback) { final IValueAdd valueAdd = (IValueAdd)StepperAttributeUtil.getProperty(ITcfStepAttributes.ATTR_VALUE_ADD, fullQualifiedId, data); final String peerId = getActivePeerContext(context, data, fullQualifiedId).getID(); + final boolean useValueAdds = !StepperAttributeUtil.getBooleanProperty(IChannelManager.FLAG_NO_VALUE_ADD, fullQualifiedId, data); - Runnable runnable = new Runnable() { - @SuppressWarnings("synthetic-access") - @Override - public void run() { - valueAdd.shutdown(peerId, callback); - LaunchValueAddStep.super.rollback(context, data, status, fullQualifiedId, monitor, callback); - } - }; + if (useValueAdds) { + Runnable runnable = new Runnable() { + @SuppressWarnings("synthetic-access") + @Override + public void run() { + valueAdd.shutdown(peerId, callback); + LaunchValueAddStep.super.rollback(context, data, status, fullQualifiedId, monitor, callback); + } + }; - if (Protocol.isDispatchThread()) runnable.run(); - else Protocol.invokeLater(runnable); + if (Protocol.isDispatchThread()) runnable.run(); + else Protocol.invokeLater(runnable); + } else { + super.rollback(context, data, status, fullQualifiedId, monitor, callback); + } } } diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tests/src/org/eclipse/tcf/te/tests/tcf/tests/TcfCoreTests.java b/target_explorer/plugins/org.eclipse.tcf.te.tests/src/org/eclipse/tcf/te/tests/tcf/tests/TcfCoreTests.java index 5097c8ef6..670acff4c 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tests/src/org/eclipse/tcf/te/tests/tcf/tests/TcfCoreTests.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tests/src/org/eclipse/tcf/te/tests/tcf/tests/TcfCoreTests.java @@ -84,6 +84,7 @@ public class TcfCoreTests extends TcfTestCase { int counter = 10; while (counter > 0 && channel.getState() != IChannel.STATE_CLOSED) { waitAndDispatch(200); + counter--; } assertTrue("Channel is not in expected closed action.", channel.getState() == IChannel.STATE_CLOSED); //$NON-NLS-1$ } |