diff options
author | Stephan Herrmann | 2017-01-14 18:14:19 +0000 |
---|---|---|
committer | Stephan Herrmann | 2017-01-15 18:35:53 +0000 |
commit | b8cfa8b73c41199370f42c8762faff1dfd17701f (patch) | |
tree | db06d658982c1b4efb9311ad7ca173c2a985120b | |
parent | 650f3e04b107411ea88c9a9eaad2896bcb98a6a0 (diff) | |
download | org.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.java | 18 |
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, |