| Summary: | Adding InnerTeam for aspectBinding with the PDE Extension Editor results in wrong code | ||||||
|---|---|---|---|---|---|---|---|
| Product: | [Tools] Objectteams | Reporter: | Jan Marc Hoffmann <exelnet> | ||||
| Component: | OTEquinox | Assignee: | Stephan Herrmann <stephan.herrmann> | ||||
| Status: | VERIFIED FIXED | QA Contact: | |||||
| Severity: | normal | ||||||
| Priority: | P3 | CC: | stephan.herrmann | ||||
| Version: | 1.4 | ||||||
| Target Milestone: | 0.7 M2 | ||||||
| Hardware: | PC | ||||||
| OS: | All | ||||||
| Whiteboard: | |||||||
| Attachments: |
|
||||||
|
Description
Jan Marc Hoffmann
I just (bug 311109) added capability to OT/Equinox to correctly handle the case where a team is specified as package.OuterTeam.InnerTeam. I'm leaving this bug open for now to remind me that we need to settle the issue of '.' vs. '$'. I wonder whether (where?) it is specified how extension points should handle nested classes - by their source name (using '.') or binary name (using '$'). Assuming that the name will be used for a call to loadClass() the binary name is probably correct and OT/Equinox would still need to learn translating Outer$Inner into Outer$__OT__Inner. Created attachment 166721 [details]
patch
This patch adds heuristics that can find the correct binary name
from either a source name (using '$') or a binary name referring to
the interface part with a '$' separator. Either separators are replaced
by "$__OT__" (recursively) to check whether a class of that name exists.
Names with more "$__OT__" are tried before others.
For source names only those names are considered as classes that start
with an upper case letter (according to code conventions), to avoid
gazillions of failing class lookups.
Patch (along with slight update to the extension point docu) is committed as r276. Verified for M2 using I201005052210 For reference: in Luna the '.' notation for inner teams can no longer be supported, a '$' will be mandatory, because we need to generate a dynamic import from the team name, which is impossible, if it contains path segments that could either be a package or an outer class. See also bug 406518. |