Am 21.05.19 um 09:45 schrieb [email protected]: > Author: pmouawad > Date: Tue May 21 07:45:38 2019 > New Revision: 1859613 > > URL: http://svn.apache.org/viewvc?rev=1859613&view=rev > Log: > Fix sonar errors > Use XMLInputFactory.newInstance instead of XMLInputFactory.newFactory as they > have same meaning and code, but latest method does not exist in stax
In the javadocs for XMLInputFactory (https://docs.oracle.com/javase/8/docs/api/javax/xml/stream/XMLInputFactory.html#newFactory--) it states, that newInstance is deprecated. But looking at newInstance in the same docs, the method is not marked as deprecated. Strange. > > Modified: > > jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/render/ObjectMessageRenderer.java > > Modified: > jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/render/ObjectMessageRenderer.java > URL: > http://svn.apache.org/viewvc/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/render/ObjectMessageRenderer.java?rev=1859613&r1=1859612&r2=1859613&view=diff > ============================================================================== > --- > jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/render/ObjectMessageRenderer.java > (original) > +++ > jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/render/ObjectMessageRenderer.java > Tue May 21 07:45:38 2019 > @@ -48,7 +48,7 @@ class ObjectMessageRenderer implements M > if (hasVariable) { > value = getInterpretedContent(filename, encoding, hasVariable, > cache); > } else { > - value = (Serializable) cache.get(filename, _p -> > getContent(filename)); > + value = (Serializable) cache.get(filename, p -> > getContent(filename)); > } > > return value; > @@ -76,27 +76,26 @@ class ObjectMessageRenderer implements M > > /** > * <p>Gets content with variable replaced.</p> > - * <p>If encoding {@link PublisherSampler#DEFAULT_ENCODING isn't > provided}, try to find it.</p> > + * <p>If pEncoding {@link PublisherSampler#DEFAULT_ENCODING isn't > provided}, try to find it.</p> Is this renamed parameter more readable? > * <p>Only raw text is cached, neither interpreted text, neither parsed > object.</p> > */ > - protected Serializable getInterpretedContent(String filename, String > encoding, boolean hasVariable, Cache<Object,Object> cache) { > - Serializable value; > + protected Serializable getInterpretedContent(String filename, final > String pEncoding, boolean hasVariable, Cache<Object,Object> cache) { > + String encoding = pEncoding; > if (PublisherSampler.DEFAULT_ENCODING.equals(encoding)) { > encoding = findEncoding(filename); > } > String stringValue = delegate.getValueFromFile(filename, encoding, > hasVariable, cache); > - value = (Serializable) > JMeterUtils.createXStream().fromXML(stringValue); > - return value; > + return (Serializable) > JMeterUtils.createXStream().fromXML(stringValue); > } > > /** Try to determine encoding based on XML prolog, if none > <code>null</code> is returned. **/ > protected String findEncoding(String filename) { > - XMLInputFactory factory = XMLInputFactory.newFactory(); > + XMLInputFactory factory = XMLInputFactory.newInstance(); Should we push the creation of the factory outside to a field? I remember, that the creation of such an object is quite expensive and I believe it should be thread safe, if we are only calling createXMLStreamReader on it. > try (FileInputStream input = new FileInputStream(filename)) { > XMLStreamReader reader = factory.createXMLStreamReader(input); > return reader.getEncoding(); Do we have to close reader here? Felix > } catch (IOException|XMLStreamException e) { > - throw new RuntimeException(format("Unable to read %s", > filename), e); > + throw new IllegalArgumentException(format("Unable to read %s", > filename), e); > } > } > > >
