[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
[dsdp-tm-dev] Important: @noextend in interfaces
|
Hi Dave's,
I'd like to remind you once again that M6 is our final
chance to get @noextend right on interfaces.
I did what I could so far, but now I need your
expertise!
If in doubt, better add an @noextend tag (since
removing it is not an API breakage, but adding it later is!)
Please read the bug carefully and review what you
can.
Thanks,
--
Martin Oberhuber, Senior Member of Technical
Staff, Wind River
Target Management Project
Lead, DSDP PMC Member
Just a reminder: In 3.4, the @noimplement tag on an interface also meant
that clients should not extend the interface. If you want to keep this
restriction in 3.5, you must add the @noextend tag to interfaces before
3.5M6 ships. If you want to revert to the old meaning of @noimplement later,
this will effectively be a breaking API change (but lifting the restriction
later will not be breaking). The
contract change John mentioned below is actually the other way 'round: If you
don't add @noextend now, you effectively change the API (albeit in a
non-breaking way). Markus
From:
| John Arthorne
<John_Arthorne@xxxxxxxxxx>
|
To:
| Cross project issues
<cross-project-issues-dev@xxxxxxxxxxx>
|
Date:
| 2008-11-18 21:16
|
Subject:
| Re: [cross-project-issues-dev] API
Tooling tag changes -> regexes to replace in
batch |
I suggest that people wait to see
what errors come up before making big changes to their API contracts. The
example problem on IResource mentioned by Michael turned out to be an invalid
problem (https://bugs.eclipse.org/bugs/show_bug.cgi?id=255646). Since most APIs don't currently specify
@noextend on their interfaces, adding this new restriction is a contract change
that needs to be considered carefully.
John
Markus Keller
<markus_keller@xxxxxxxxxx> Sent by:
cross-project-issues-dev-bounces@xxxxxxxxxxx
11/18/2008 02:34 PM
Please respond
to Cross project issues
<cross-project-issues-dev@xxxxxxxxxxx> |
|
To
| Cross project issues
<cross-project-issues-dev@xxxxxxxxxxx>
|
cc
|
|
Subject
| Re: [cross-project-issues-dev] API
Tooling tag changes -> regexes to
replace in batch |
|
Most of the existing
@noimplement tags should probably be replaced by @noimplement &
@noextend.
To
make this change in batch, you can search for this regex in *.java
files:
\*
@noimplement This interface is not intended to be implemented by
clients\.\R
Then, verify the results in the Search view, select the matches
you want to update, and choose 'Replace Selected...' from the context menu.
Replace them with regex:
\0 * @noextend This interface is not intended to be extended by
clients.\R
To
later find @noimplement interfaces where the above replacement has not been
applied, search for:
\* @noimplement This interface is not intended to be implemented by
clients\.\R(?! \* @noextend This interface is not intended to be extended by
clients\.)
If
you used non-standard Javadoc tags, you may have to adapt the regular
expressions.
HTH,
Markus
From:
| Michael Rennie
<Michael_Rennie@xxxxxxxxxx>
|
To:
| cross-project-issues-dev@xxxxxxxxxxx
|
Date:
| 2008-11-17 22:57
|
Subject:
| [cross-project-issues-dev] API Tooling
tag changes |
Preamble
Available in this weeks' I-build the supported tags for an
interface are being reverted to include the @noextend tag once
again.
The bug fix
in question is https://bugs.eclipse.org/bugs/show_bug.cgi?id=230189. The bug fix that is being reverted is https://bugs.eclipse.org/bugs/show_bug.cgi?id=227368.
Effect on Clients
Since the fix to bug 227368 the @noimplement tag
has been pulling double duty as both a no implement AND no extend restriction.
With the fix 230189 this is no longer true, @noimplement only means no
implement, so to also get a no extend restriction you must add the @noextend tag
back to these interfaces.
The effect of this change is that you may see
some unexpected errors about added methods or fields, problems that would have
been suppressed by the no implement tag alone before, which now require the
@noextend tag as well.
For example the problem:
The method
org.eclipse.core.resources.IResource.isHidden(int) in an interface that is
intended to be implemented or extended has been added
shows up, but will be removed once
an @noextend tag is added to IResource.
Michael Rennie _______________________________________________
cross-project-issues-dev
mailing list
cross-project-issues-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/cross-project-issues-dev
_______________________________________________
cross-project-issues-dev
mailing list
cross-project-issues-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/cross-project-issues-dev
_______________________________________________
cross-project-issues-dev
mailing list
cross-project-issues-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/cross-project-issues-dev