Page 1 of 1

Capability is_mobile in capability filter is not defined in WURFL

Posted: Sat Dec 23, 2017 1:32 pm
by trickydee
Hi Scientiamobile, is there any change in using the is_mobile capability of wurfl?
We're using wurfl java 1.9.2.0 and wurfl scala 1.9.2.0 with the latest zip.

Code: Select all

GeneralWURFLEngine        cannot initialize: com.scientiamobile.wurfl.core.resource.exc.WURFLResourceException: WURFL unexpected exception
com.scientiamobile.wurfl.core.resource.exc.WURFLResourceException: WURFL unexpected exception
	at com.scientiamobile.wurfl.core.resource.XMLResource.readData(XMLResource.java:213)
	at com.scientiamobile.wurfl.core.resource.XMLResource.getData(XMLResource.java:149)
	at com.scientiamobile.wurfl.core.resource.DefaultWURFLModel.init(DefaultWURFLModel.java:115)
	at com.scientiamobile.wurfl.core.resource.DefaultWURFLModel.<init>(DefaultWURFLModel.java:104)
	at com.scientiamobile.wurfl.core.GeneralWURFLEngine.init(GeneralWURFLEngine.java:415)
	at com.scientiamobile.wurfl.core.GeneralWURFLEngine.initIfNeeded(GeneralWURFLEngine.java:390)
	at com.scientiamobile.wurfl.core.GeneralWURFLEngine.getDeviceForRequest(GeneralWURFLEngine.java:544)
	at com.scientiamobile.wurfl.Wurfl.deviceForRequest(Wurfl.scala:30)
	at com.williamhill.wurfl.service.WurflServiceImpl.$anonfun$deviceForRequest$1(WurflServiceImpl.scala:43)
	at scala.util.Try$.apply(Try.scala:209)
	at com.williamhill.wurfl.service.WurflServiceImpl.deviceForRequest(WurflServiceImpl.scala:43)
	at com.williamhill.wurfl.service.WurflServiceImpl.getDeviceCapabilities(WurflServiceImpl.scala:23)
	at com.williamhill.wurfl.controller.WurflController.$anonfun$new$1(WurflController.scala:21)
	at com.twitter.finatra.http.internal.marshalling.CallbackConverter.$anonfun$createRequestCallback$2(CallbackConverter.scala:52)
	at com.twitter.finatra.http.internal.marshalling.CallbackConverter.$anonfun$createResponseCallback$18(CallbackConverter.scala:123)
	at com.twitter.finagle.Service$$anon$2.apply(Service.scala:28)
	at com.twitter.finagle.Service$$anon$1.apply(Service.scala:16)
	at com.twitter.finagle.Service$$anon$1.apply(Service.scala:16)
	at com.twitter.finatra.http.filters.HttpNackFilter.apply(HttpNackFilter.scala:28)
	at com.twitter.finatra.http.filters.HttpNackFilter.apply(HttpNackFilter.scala:18)
	at com.twitter.finagle.Filter$$anon$1.apply(Filter.scala:80)
	at com.twitter.finagle.Service$$anon$1.apply(Service.scala:16)
	at com.twitter.finatra.http.filters.ExceptionMappingFilter.apply(ExceptionMappingFilter.scala:17)
	at com.twitter.finatra.http.filters.ExceptionMappingFilter.apply(ExceptionMappingFilter.scala:13)
	at com.twitter.finagle.Filter$$anon$1.apply(Filter.scala:80)
	at com.twitter.finagle.Service$$anon$1.apply(Service.scala:16)
	at com.twitter.finatra.http.filters.HttpResponseFilter.apply(HttpResponseFilter.scala:36)
	at com.twitter.finatra.http.filters.HttpResponseFilter.apply(HttpResponseFilter.scala:19)
	at com.twitter.finagle.Filter$$anon$1.apply(Filter.scala:80)
	at com.twitter.finagle.Service$$anon$1.apply(Service.scala:16)
	at com.twitter.finatra.http.filters.AccessLoggingFilter.apply(AccessLoggingFilter.scala:39)
	at com.twitter.finatra.http.filters.AccessLoggingFilter.apply(AccessLoggingFilter.scala:32)
	at com.twitter.finagle.Filter$$anon$1.apply(Filter.scala:80)
	at com.twitter.finagle.Service$$anon$1.apply(Service.scala:16)
	at com.twitter.finatra.http.filters.StatsFilter.apply(StatsFilter.scala:86)
	at com.twitter.finatra.http.filters.StatsFilter.apply(StatsFilter.scala:61)
	at com.twitter.finagle.Filter$$anon$1.apply(Filter.scala:80)
	at com.twitter.finagle.Filter$AndThen.apply(Filter.scala:156)
	at com.twitter.finatra.filters.MergedFilter.apply(MergedFilter.scala:12)
	at com.twitter.finagle.Filter$$anon$1.apply(Filter.scala:80)
	at com.twitter.finagle.Service$$anon$1.apply(Service.scala:16)
	at com.twitter.finatra.http.filters.TraceIdMDCFilter.apply(TraceIdMDCFilter.scala:17)
	at com.twitter.finagle.Filter$$anon$1.apply(Filter.scala:80)
	at com.twitter.finagle.Service$$anon$1.apply(Service.scala:16)
	at com.twitter.finatra.http.filters.LoggingMDCFilter.apply(LoggingMDCFilter.scala:15)
	at com.twitter.finagle.Filter$$anon$1.apply(Filter.scala:80)
	at com.twitter.finagle.Filter$$anon$1.apply(Filter.scala:79)
	at com.twitter.finatra.http.internal.routing.Route.handleMatch(Route.scala:78)
	at com.twitter.finatra.http.internal.routing.Routes.handle(Routes.scala:50)
	at com.twitter.finatra.http.internal.routing.RoutingService.route(RoutingService.scala:35)
	at com.twitter.finatra.http.internal.routing.RoutingService.apply(RoutingService.scala:30)
	at com.twitter.finatra.http.internal.routing.RoutingService.apply(RoutingService.scala:11)
	at com.twitter.finatra.http.routing.HttpWarmup.routeRequest(HttpWarmup.scala:73)
	at com.twitter.finatra.http.routing.HttpWarmup.$anonfun$executeRequest$1(HttpWarmup.scala:55)
	at com.twitter.util.Try$.apply(Try.scala:15)
	at com.twitter.util.ExecutorServiceFuturePool$$anon$4.run(FuturePool.scala:140)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)
Caused by: com.scientiamobile.wurfl.core.exc.CapabilityNotDefinedException: Capability: Capability is_mobile in capability filter is not defined in WURFL - Capability: Capability is_mobile in capability filter is not defined in WURFL is not defined in WURFL
	at com.scientiamobile.wurfl.core.resource.XMLResource$WURFLSAXHandler.endDeviceElement(XMLResource.java:525)
	at com.scientiamobile.wurfl.core.resource.XMLResource$WURFLSAXHandler.endElement(XMLResource.java:438)
	at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:609)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1782)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2967)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:602)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:505)
	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:841)
	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:770)
	at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
	at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213)
	at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:643)
	at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse(SAXParserImpl.java:327)
	at javax.xml.parsers.SAXParser.parse(SAXParser.java:195)
	at com.scientiamobile.wurfl.core.resource.XMLResource.readData(XMLResource.java:211)
	... 60 common frames omitted

Re: Capability is_mobile in capability filter is not defined in WURFL

Posted: Sun Dec 24, 2017 9:12 pm
by aaronp
Hi,

There hasn't been any change in the use of the is_mobile virtual capability. I was able to test your latest WURFL.xml file using API v1.9.2.0 (note: v1.9.2.1 is available in your FIle Manager) and am getting back the expected for is_mobile.

Are you able to verify that your WURFLEngine is pointing to the proper WURFL.xml file as well as provide some code sample of how you are running your detection? Feel free to send this information through the ticket we have created for this case.

Also, for future reference, you may send any inquiries you may have to support@scientiamobile.com

Thanks,

Aaron

e: support@scientiamobile.com
ScientiaMobile Customer Support Team

Re: Capability is_mobile in capability filter is not defined in WURFL

Posted: Mon Dec 25, 2017 4:32 pm
by aaronp
Hi Joel,

As noted in the ticket thread, the capabilities filter should only be used on static capabilities (capabilities that have hard-coded values within the WURFL.xml file). `is_mobile` is a virtual capability, so removing it from your filter should resolve the error you are seeing.

Aaron

Re: Capability is_mobile in capability filter is not defined in WURFL

Posted: Mon Mar 04, 2024 8:52 pm
by xidihi
As noted in the ticket thread, the capabilities filter should only be used on static capabilities (capabilities that have hard-coded values in the WURFL.xml file). is_mobile is a virtual capability, so removing it from your filter should resolve the error you are seeing.