MythTV-Clients / MythTV-Android-Frontend

Implementation of MythTV .25+ Services API for Android
GNU General Public License v3.0
66 stars 16 forks source link

BackendStatusTask fails if Guide status fields comment and next is not present or empty #162

Closed espenaf closed 11 years ago

espenaf commented 11 years ago

Using trunk with mythtv-service-api-0.0.32

A freshly installed MythTV 0.26 box with only a FREEBOX encoder gives me the following Guide status on the status page;

  <Guide status="Successful." next="" end="Wed Sep 4 2013, 10:52 AM" start="Wed Sep 4 2013, 10:52 AM"/>

As there is no guideThru, comment, guideDays fields, and no next value, the following stack trace is thrown for the comment part, similar for next.

09-04 12:01:10.175    3785-4377/org.mythtv E/AbstractMythFragment: BackendStatusTask.doInBackground : error
        org.mythtv.services.api.MythServiceApiRuntimeException: org.springframework.http.converter.HttpMessageNotReadableException: Could not read [class org.mythtv.services.api.status.Status]; nested exception is org.simpleframework.xml.core.ValueRequiredException: Empty value for @org.simpleframework.xml.Text(data=false, empty=, required=true) on field 'comment' private java.lang.String org.mythtv.services.api.status.Guide.comment in class org.mythtv.services.api.status.Guide at line 17; nested exception is org.springframework.http.converter.HttpMessageNotReadableException: Could not read [class org.mythtv.services.api.status.Status]; nested exception is org.simpleframework.xml.core.ValueRequiredException: Empty value for @org.simpleframework.xml.Text(data=false, empty=, required=true) on field 'comment' private java.lang.String org.mythtv.services.api.status.Guide.comment in class org.mythtv.services.api.status.Guide at line 17
        at org.mythtv.services.api.status.impl.StatusTemplate.getStatus(StatusTemplate.java:54)
        at org.mythtv.client.ui.AbstractMythFragment$BackendStatusTask.doInBackground(AbstractMythFragment.java:248)
        at org.mythtv.client.ui.AbstractMythFragment$BackendStatusTask.doInBackground(AbstractMythFragment.java:230)
        at android.os.AsyncTask$2.call(AsyncTask.java:287)
        at java.util.concurrent.FutureTask.run(FutureTask.java:234)
        at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
        at java.lang.Thread.run(Thread.java:841)
        Caused by: org.springframework.http.converter.HttpMessageNotReadableException: Could not read [class org.mythtv.services.api.status.Status]; nested exception is org.simpleframework.xml.core.ValueRequiredException: Empty value for @org.simpleframework.xml.Text(data=false, empty=, required=true) on field 'comment' private java.lang.String org.mythtv.services.api.status.Guide.comment in class org.mythtv.services.api.status.Guide at line 17
        at org.springframework.http.converter.xml.SimpleXmlHttpMessageConverter.readInternal(SimpleXmlHttpMessageConverter.java:115)
        at org.springframework.http.converter.AbstractHttpMessageConverter.read(AbstractHttpMessageConverter.java:147)
        at org.springframework.web.client.HttpMessageConverterExtractor.extractData(HttpMessageConverterExtractor.java:76)
        at org.springframework.web.client.RestTemplate$ResponseEntityResponseExtractor.extractData(RestTemplate.java:655)
        at org.springframework.web.client.RestTemplate$ResponseEntityResponseExtractor.extractData(RestTemplate.java:641)
        at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:484)
        at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:453)
        at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:429)
        at org.mythtv.services.api.status.impl.StatusTemplate.getStatus(StatusTemplate.java:50)
        ... 8 more
        Caused by: org.simpleframework.xml.core.ValueRequiredException: Empty value for @org.simpleframework.xml.Text(data=false, empty=, required=true) on field 'comment' private java.lang.String org.mythtv.services.api.status.Guide.comment in class org.mythtv.services.api.status.Guide at line 17
        at org.simpleframework.xml.core.Composite.readInstance(Composite.java:580)
        at org.simpleframework.xml.core.Composite.readText(Composite.java:467)
        at org.simpleframework.xml.core.Composite.access$200(Composite.java:59)
        at org.simpleframework.xml.core.Composite$Builder.read(Composite.java:1381)
        at org.simpleframework.xml.core.Composite.read(Composite.java:201)
        at org.simpleframework.xml.core.Composite.read(Composite.java:148)
        at org.simpleframework.xml.core.Composite.readVariable(Composite.java:623)
        at org.simpleframework.xml.core.Composite.readInstance(Composite.java:573)
        at org.simpleframework.xml.core.Composite.readUnion(Composite.java:549)
        at org.simpleframework.xml.core.Composite.readElement(Compos

Settings the required = false to the fields does stop the error, but might fail other things i guess.

espenaf commented 11 years ago

Looks good on 0.26.