Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephan Herrmann2017-01-14 13:14:19 -0500
committerStephan Herrmann2017-01-15 13:35:53 -0500
commitb8cfa8b73c41199370f42c8762faff1dfd17701f (patch)
treedb06d658982c1b4efb9311ad7ca173c2a985120b
parent650f3e04b107411ea88c9a9eaad2896bcb98a6a0 (diff)
downloadorg.eclipse.objectteams-b8cfa8b73c41199370f42c8762faff1dfd17701f.tar.gz
org.eclipse.objectteams-b8cfa8b73c41199370f42c8762faff1dfd17701f.tar.xz
org.eclipse.objectteams-b8cfa8b73c41199370f42c8762faff1dfd17701f.zip
Bug 510466: [otdre] binding to indirectly inherited base method is not
activated - excluding changes in o.e.o.jdt.ui
-rw-r--r--plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otredyn/runtime/TeamManager.java18
1 files changed, 11 insertions, 7 deletions
diff --git a/plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otredyn/runtime/TeamManager.java b/plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otredyn/runtime/TeamManager.java
index 93b17184d..e49742cf0 100644
--- a/plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otredyn/runtime/TeamManager.java
+++ b/plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otredyn/runtime/TeamManager.java
@@ -181,14 +181,9 @@ public class TeamManager implements ITeamManager {
private void handleBindingForBase(ITeam t, ITeamManager.TeamStateChange stateChange, IBinding binding, IBoundClass boundClass, IClassIdentifierProvider provider) {
IMethod method = boundClass.getMethod(binding.getMemberName(), binding.getMemberSignature(), binding.getBaseFlags(), binding.isHandleCovariantReturn());
- int joinpointId = getJoinpointId(boundClass
- .getMethodIdentifier(method));
+ int joinpointId = getJoinpointId(boundClass.getMethodIdentifier(method));
synchronized (method) {
- changeTeamsForJoinpoint(t, binding.getPerTeamId(), joinpointId, stateChange);
- List<Integer> subJoinpoints = joinpointToSubJoinpoints.get(joinpointId);
- if (subJoinpoints != null)
- for (Integer subJoinpoint : subJoinpoints)
- changeTeamsForJoinpoint(t, binding.getPerTeamId(), subJoinpoint, stateChange);
+ stateChangeForJoinpoint(t, stateChange, binding, boundClass, method, joinpointId);
}
boundClass.handleAddingOfBinding(binding); // TODO: do we want/need to group all bindings into one action?
@@ -196,6 +191,15 @@ public class TeamManager implements ITeamManager {
handleBindingForBase(t, stateChange, binding, tsubBase, provider);
}
}
+
+ private void stateChangeForJoinpoint(ITeam t, ITeamManager.TeamStateChange stateChange, IBinding binding,
+ IBoundClass boundClass, IMethod method, int joinpointId) {
+ changeTeamsForJoinpoint(t, binding.getPerTeamId(), joinpointId, stateChange);
+ List<Integer> subJoinpoints = joinpointToSubJoinpoints.get(joinpointId);
+ if (subJoinpoints != null)
+ for (Integer subJoinpoint : subJoinpoints)
+ stateChangeForJoinpoint(t, stateChange, binding, boundClass, method, subJoinpoint);
+ }
/**
* When a team is about to be activated propagate its bindings to all base classes,

Back to the top