Sorry for how old of a version this is in regards to (4.1.6), but this is the
version which the company I work for uses, and I am tasked with getting it
to work as intended.

After reviewing the logs from one of our clients, I noticed a number of
exceptions being thrown by the  DataSqueezer, like the one below:

org.apache.hivemind.ApplicationRuntimeException: Unable to convert null back
into an object in If component.
[context:/pages/scheduling/VisitationConfirmationPage.html, line 27]
        at org.apache.tapestry.components.IfBean.readValue(IfBean.java:190)
        at 
org.apache.tapestry.components.IfBean.evaluateCondition(IfBean.java:143)
        at org.apache.tapestry.components.IfBean.renderComponent(IfBean.java:66)
        at 
org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:724)
        at
org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:187)
....
Caused by: java.lang.NullPointerException
        at
org.apache.tapestry.util.io.DataSqueezerImpl.unsqueeze(DataSqueezerImpl.java:161)
        at $DataSqueezer_13b18c2666e.unsqueeze($DataSqueezer_13b18c2666e.java)
        at
com.renovo.visitation3.extjs.grid.services.PersistentSqueezerFilter.unsqueeze(PersistentSqueezerFilter.java:55)
        at
$DataSqueezerFilter_13b18c26670.unsqueeze($DataSqueezerFilter_13b18c26670.java)
        at $DataSqueezer_13b18c26672.unsqueeze($DataSqueezer_13b18c26672.java)
        at
org.apache.tapestry.data.NullDataSqueezerFilter.unsqueeze(NullDataSqueezerFilter.java:40)
        at $DataSqueezer_13b18c26672.unsqueeze($DataSqueezer_13b18c26672.java)
        at $DataSqueezer_13b18c264b8.unsqueeze($DataSqueezer_13b18c264b8.java)
        at org.apache.tapestry.components.IfBean.readValue(IfBean.java:182)
        ... 55 more

The line actually throwing the exception is as follows, in case that helps:
    public Object unsqueeze(String string)
    {
        SqueezeAdaptor adaptor = null;

        if (string.equals(NULL_PREFIX)) // Line 166; NPE here
            return null;
        else if (string.length() <= 0)
            return null;
        
        int offset = string.charAt(0) - FIRST_ADAPTOR_OFFSET;

        if (offset >= 0 && offset < _adaptorByPrefix.length)
            adaptor = _adaptorByPrefix[offset];

        // If the adaptor is not otherwise recognized, the it is simply
        // an encoded String (the StringAdaptor may not have added
        // a prefix).

        if (adaptor == null)
            return string;

        // Adaptor should never be null, because we always supply
        // an adaptor for String

        return adaptor.unsqueeze(this, string);
    }

I was able to replicate this exception by using tamper data to remove the
hidden input field associated with the id for the given @If span from my
POST, but have not been able to replicate this exception in any other way.

If it's the case that some users are deliberately doing what I did to
replicate this issue, I don't think there's a whole lot I can do about it,
but I was wondering if anyone else has any idea what might be causing this
exception to be thrown other than the user intentionally sending bad data to
our application.



--
View this message in context: 
http://tapestry.1045711.n5.nabble.com/Intermittent-NPE-from-DataSqueezer-unsqueeze-in-T4-1-6-tp5718545.html
Sent from the Tapestry - User mailing list archive at Nabble.com.

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org

Reply via email to