uima-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Marshall Schor <...@schor.com>
Subject Re: JIRA UIMA-2217 breaks backwards compatibility
Date Fri, 09 Sep 2011 14:57:12 GMT
One question (which may be very difficult to answer) is what is the impact of
changing these interfaces?

If no one is using them, other than our internal code, then there's little
impact. Given the nature of these, is there a chance that some adopter of the
UIMA framework has implemented their own versions of implementations of these
interfaces?  (My sense is that is it is very unlikely that anyone has
implemented these interfaces other than our code.)  Does using these for JMX
purposes increase the likelyhood of trouble here?

We could release the next version of uimaj-sdk, as 2.4.x indicating essentially
backwards compatibility.  If there were some outside-the-project codes
implementing the changed APIs, these would have to be updated to comply with the
changes (the definition of new methods).

One other strategy might be to do this as a 2.4.x release, and if we then get
feedback from the community that this is breaking things, we can go back to the
2.3.x line, and skip over the 2.4.x line.

Re: keeping the old API, and doing "casting" in the implementation to the
implementing class: does this work in the case of JMX / beans etc?  because
JConsole and other tools would be "reading" these things?

-Marshall

On 9/9/2011 10:08 AM, Jaroslaw Cwiklik wrote:
> I've recently added a new feature (
> https://issues.apache.org/jira/browse/UIMA-2217) to the uima core to expose
> AE state via AE managegement interface. The specific motivation was to be
> able to detect when AE transitions from an Initializing to a Ready state and
> to capture how long AE initializes. As part of this work, I've extended two
> existing uima interfaces
> org.apache.uima.analysis_engine.AnalysisEngineManagement.java and
> AnalysisEngineManagementImplMBean.java with three new methods. It appears
> that by extending these interfaces I may have broken backwards
> compatibility. Marshall pointed out that an alternate approach is needed. It
> was proposed to remove the three new methods I've added to the
> AnalysisEngineManagement.java interface. The implementation of this
> interface AnalysisEngineManagementImpl.java would retain the three new
> methods and any code that needs to access them would need to use
> (AnalysisEngineManagementImpl) cast. Actually, the code I've changed in
> UIMAFramework.java already uses casting so no additional changes would be
> required. To expose the AE state attributes via JMX I propose creating a new
> interface which will extend AnalysisEngineManagementImplMBean.java
> interface. All new methods would go to the new interface. The
> AnalysisEngineManagementImpl.java will need to change to implement the new
> interface instead of the AnalysisEngineManagementImplMBean. Please comment
> if the above changes seem ok, or provide alternate approach(es). Thanks.
>
> JC
>

Mime
View raw message