jmeter-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Felix Schumacher <felix.schumac...@internetallee.de>
Subject Re: svn commit: r1859613 - /jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/render/ObjectMessageRenderer.java
Date Tue, 21 May 2019 08:44:06 GMT

Am 21.05.19 um 09:45 schrieb pmouawad@apache.org:
> 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);
>          }
>      }
>  
>
>

Mime
View raw message