Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [cross-project-issues-dev] API Tooling tag changes -> regexes to replace in batch


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



Back to the top