[
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