> On Jul 10, 2017, at 6:10 AM, Daniel Fuchs <[email protected]> wrote:
>
> Hi Joe,
>
> Looks good to me. I have two additional comments, one nit - and
> one for some later follow-up - so no need for a new webrev.
>
>
> 1. Nit: I think it should be final as well:
>
> +++
> new/src/java.xml/share/classes/com/sun/org/apache/xml/internal/serializer/OutputPropertiesFactory.java
> 2017-07-07 21:15:14.418212557 -0700
> [...]
> - private static Integer m_synch_object = new Integer(1);
> + private static Object m_synch_object = new Object();
>
+1
otherwise looks OK (including Daniel’s comment of course below ;-) )
>
> 2. Can you also add the following items to the list of things
> that should be investigated in a followup/cleanup?
> It bothers me that a non-deprecated method still needs to call
> a deprecated API:
>
> +++
> new/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/dom/PSVIElementNSImpl.java
> 2017-07-07 21:15:01.881586697 -0700
> [...]
> + @SuppressWarnings("deprecation")
> public String getSchemaDefault() {
> return fDeclaration == null ? null :
> fDeclaration.getConstraintValue();
> }
>
> +++
> new/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/xs/AttributePSVImpl.java
> 2017-07-07 21:15:04.749729882 -0700
> [...]
> + @SuppressWarnings("deprecation")
> public String getSchemaDefault() {
> return fDeclaration == null ? null :
> fDeclaration.getConstraintValue();
> }
>
> +++
> new/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/xs/AttributePSVImpl.java
> 2017-07-07 21:15:04.749729882 -0700
> [...]
> + @SuppressWarnings("deprecation")
> public String getSchemaDefault() {
> return fDeclaration == null ? null :
> fDeclaration.getConstraintValue();
> }
>
> +++
> new/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/xs/ElementPSVImpl.java
> 2017-07-07 21:15:05.077746257 -0700
> [...]
> + @SuppressWarnings("deprecation")
> public String getSchemaDefault() {
> return fDeclaration == null ? null :
> fDeclaration.getConstraintValue();
> }
>
>
> cheers,
>
> -- daniel
>
> On 08/07/2017 01:53, huizhe wang wrote:
>> Here's the updated webrev:
>> http://cr.openjdk.java.net/~joehw/jdk10/8181154/webrev01/
>> Thanks,
>> Joe
>> On 7/7/2017 10:59 AM, huizhe wang wrote:
>>>
>>>>> #11
>>>>> com/sun/org/apache/xerces/internal/jaxp/datatype/XMLGregorianCalendarImpl.java
>>>>>
>>>>>
>>>>> 1166 final public void setYear(BigInteger year) {
>>>>>
>>>>> nit: for consistency you should reorder the keywords to:
>>>>>
>>>>> public final void
>>>>>
>>>>> same file:
>>>>>
>>>>> - BigInteger.valueOf((long) 1) => BigInteger.ONE
>>>>> - new BigDecimal(TWELVE) => introduce a constant DECIMAL_TWELVE?
>>>>> - new BigDecimal(TWENTY_FOUR) => introduce a constant DECIMAL_TWENTY_FOUR?
>>>>
>>>
>>> Added the two constants.
>>>
>>>>
>>>>
>>>>>
>>>>> #12
>>>>> com/sun/org/apache/xerces/internal/parsers/AbstractSAXParser.java
>>>>>
>>>>> 81 @SuppressWarnings("deprecation")
>>>>> 82 public abstract class AbstractSAXParser
>>>>> 83 extends AbstractXMLDocumentParser
>>>>> 84 implements PSVIProvider, // PSVI
>>>>> 85 Parser, XMLReader // SAX1, SAX2
>>>>>
>>>>> A better solution would be to deprecate the methods that implement
>>>>> deprecated methods - and avoid using deprecated APIs elsewhere...
>>>>>
>>>>> #13
>>>>> com/sun/org/apache/xerces/internal/util/AttributesProxy.java
>>>>>
>>>>> 36 @SuppressWarnings("deprecation")
>>>>> 37 public final class AttributesProxy
>>>>> 38 implements AttributeList, Attributes2 {
>>>>>
>>>>> I wonder whether deprecating the methods implementing a deprecated
>>>>> API would allow to remove @SuppressWarnings("deprecation") - maybe not
>>>>> in this case since this class needs to implement a deprecated interface
>>>>> and a non deprecated one (and therefore the class itself can't be
>>>>> deprecated). Anyway it might be good to add the @Deprecated
>>>>> annotations to deprecated methods.
>>>
>>> We'll take a closer look at this through [1], for both #12 and #13, and #17
>>> as well. AttributesProxy is used quite widely. We'll need to get into the
>>> details to see if we can remove the deprecated AttributeList.
>>>
>>> Since there are import references that are deprecated, the suppress
>>> annotation has to be added at the class.
>>>
>>> [1] https://bugs.openjdk.java.net/browse/JDK-8183972
>>>
>>>>>
>>>>> #14
>>>>> com/sun/org/apache/xml/internal/dtm/ref/IncrementalSAXSource_Xerces.java
>>>>>
>>>>> if _main use deprecated APIs then maybe _main should be @Deprecated
>>>>> as well.
>>>
>>> Done.
>>>>>
>>>>> #15
>>>>> com/sun/org/apache/xml/internal/serializer/OutputPropertiesFactory.java
>>>>>
>>>>> 207 private static Integer m_synch_object = 1;
>>>>>
>>>>> This is not correct! Since this object is only use as a synchronization
>>>>> lock then please change this to:
>>>>>
>>>>> private static Object m_synch_object = new Object();
>>>
>>> Ok, fixed now. But I don't think the sync is necessary, logged
>>> https://bugs.openjdk.java.net/browse/JDK-8184019 to take a look later and
>>> can also do some cleanups.
>>>
>>>>>
>>>>> #16
>>>>> com/sun/org/apache/xpath/internal/axes/HasPositionalPredChecker.java
>>>>>
>>>>> Can this class be changed to stop using deprecated APIs instead?
>>>
>>> It can probably be removed, will do so through
>>> https://bugs.openjdk.java.net/browse/JDK-8184020.
>>>
>>>>>
>>>>>
>>>>> #17
>>>>> javax/xml/parsers/SAXParser.java
>>>>> org/xml/sax/helpers/ParserAdapter.java
>>>>> org/xml/sax/helpers/XMLReaderAdapter.java
>>>>>
>>>>> Can these classes be changed to stop using deprecated APIs instead?
>>>>> Or at least a cleanup issue logged for that effect?
>>>
>>> Most likely we can't since these are public APIs. DocumentHandler for
>>> example, is still usable. We can probably add forRemoval and then remove
>>> in the next release.
>>>
>>>>>
>>>>> That's all!
>>>
>>> Thanks for all of that!
>>>
>>> Best,
>>> Joe
>>>
>>>>>
>>>>> best regards,
>>>>>
>>>>> -- daniel
>>>>>
>>>>> On 05/07/2017 19:48, Joe Wang wrote:
>>>>>> Hi,
>>>>>>
>>>>>> This patch fixes deprecation warnings in the jaxp repo. I'm limiting the
>>>>>> changes to deprecation or the 102 classes. The cup-generated classes,
>>>>>> XPath*.java, could use some cleanup or even rewrite, but that will be
>>>>>> left in future works (JDK-8183580).
>>>>>>
>>>>>> Most of the changes are straight-forward, but I did have trouble with
>>>>>> the replacing clazz.newInstance() with
>>>>>> clazz.getDeclaredConstructor().newInstance() since in some cases I got
>>>>>> RuntimePermission problems. So for most of such cases, I've replaced
>>>>>> them with getConstructor() instead, thanks Alan for the suggestion. For
>>>>>> specific cases such as xsltc/compiler/Parser.java, I'm using
>>>>>> getDeclaredConstructor() because some of the classes didn't have a
>>>>>> public constructor.
>>>>>>
>>>>>> Again, please bear with me for the cup-generated classes that have super
>>>>>> long lines (e.g. XPathParser.java). Please read with Udiffs instead of
>>>>>> Sdiffs.
>>>>>>
>>>>>> Some of the boxing (e.g. Integer.valueOf()) in the BCEL classes may not
>>>>>> be necessary, but that's how they look in BCEL to which an update is
>>>>>> scheduled in JDK 10.
>>>>>>
>>>>>> All tests passed.
>>>>>>
>>>>>> JBS: https://bugs.openjdk.java.net/browse/JDK-8181154
>>>>>> webrevs: http://cr.openjdk.java.net/~joehw/jdk10/8181154/webrev/
>>>>>>
>>>>>> Thanks
>>>>>> Joe
>>>>>>
>>>>>
>>>
>
<http://oracle.com/us/design/oracle-email-sig-198324.gif>
<http://oracle.com/us/design/oracle-email-sig-198324.gif>
<http://oracle.com/us/design/oracle-email-sig-198324.gif>
<http://oracle.com/us/design/oracle-email-sig-198324.gif>Lance Andersen|
Principal Member of Technical Staff | +1.781.442.2037
Oracle Java Engineering
1 Network Drive
Burlington, MA 01803
[email protected] <mailto:[email protected]>