Expand my Community achievements bar.

Uncaught SlingException javax.jcr.query.InvalidQueryException: java.text.ParseException: Query

Avatar

Level 3

Hello Everyone,

I am facing below issue in AEM 6.3 Server:

Here, I have written XPATH query to read the store nodes from JCR and do the processing accordingly

private static final String STORE_LOOKUP_QUERY = "/jcr:root/content/data/stores/%s/%s/%s/%s//*[@sling:resourceType='consumer/common/store']";

String query = String.format(STORE_LOOKUP_QUERY, country, state, city, storeName);

logger.info("Query for searching store is:::" + query);

Iterator<Resource> it = request.getResourceResolver().findResources(query, XPATH);

I am getting below error for the nodes which starts with "numeric" and which have "&" character in the node name in JCR. Some of the examples are:

106-street-tire-and-wheel-21072

3-j-s-discount-21500

1st-tire-wheel-14574

best-one-&-service-of-bryan

Here, the problem is.. These nodes have been deleted from AEM now but for these nodes we are getting 500 errors in the Google Search Console instead of 404 errors.

Could anyone please suggest to fix these issue So, that we get 404 error instead of 500 errors for these type of nodes -

03.08.2018 03:09:58.272 *INFO* [103.81.79.35 [1533280198270] GET /bin/consumer/api/v1/stores/storedata.es_va_galax_county-&-automotive-service.html HTTP/1.1] com.consumer.api.v1.stores.StorePopulationServlet Query for searching store is:::/jcr:root/content/data/stores/us/va/galax/county-&-automotive-service//*[@sling:resourceType='consumer/common/store']

03.08.2018 03:09:58.275 *ERROR* [103.81.79.35 [1533280198270] GET /bin/consumer/api/v1/stores/storedata.es_va_galax_county-&-automotive-service.html HTTP/1.1] org.apache.sling.engine.impl.SlingRequestProcessorImpl service: Uncaught SlingException

javax.jcr.query.InvalidQueryException: java.text.ParseException: Query:

/jcr:root/content/data/stores/us/va/galax/twin-county-tire-&-(*)automotive-service//*[@sling:resourceType='consumer/common/store']; expected: <end>

        at org.apache.jackrabbit.oak.jcr.query.QueryManagerImpl.executeQuery(QueryManagerImpl.java:148)

        at org.apache.jackrabbit.oak.jcr.query.QueryImpl$2.perform(QueryImpl.java:104)

        at org.apache.jackrabbit.oak.jcr.query.QueryImpl$2.perform(QueryImpl.java:100)

        at org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:208)

        at org.apache.jackrabbit.oak.jcr.query.QueryImpl.execute(QueryImpl.java:99)

        at org.apache.sling.jcr.resource.internal.helper.JcrResourceUtil.query(JcrResourceUtil.java:56)

        at org.apache.sling.jcr.resource.internal.helper.jcr.BasicQueryLanguageProvider.findResources(BasicQueryLanguageProvider.java:80)

        at org.apache.sling.resourceresolver.impl.providers.stateful.AuthenticatedResourceProvider.findResources(AuthenticatedResourceProvider.java:260)

        at org.apache.sling.resourceresolver.impl.helper.ResourceResolverControl.findResources(ResourceResolverControl.java:456)

        at org.apache.sling.resourceresolver.impl.ResourceResolverImpl.findResources(ResourceResolverImpl.java:734)

        at com.api.v1.stores.StorePopulationServlet.getStore(StorePopulationServlet.java:181)

        at com.api.v1.stores.StorePopulationServlet.doGet(StorePopulationServlet.java:105)

        at org.apache.sling.api.servlets.SlingSafeMethodsServlet.mayService(SlingSafeMethodsServlet.java:270)

        at org.apache.sling.api.servlets.SlingSafeMethodsServlet.service(SlingSafeMethodsServlet.java:346)

        at org.apache.sling.api.servlets.SlingSafeMethodsServlet.service(SlingSafeMethodsServlet.java:378)

        at org.apache.sling.engine.impl.request.RequestData.service(RequestData.java:552)

        at org.apache.sling.engine.impl.filter.SlingComponentFilterChain.render(SlingComponentFilterChain.java:44)

        at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:77)

        at com.day.cq.wcm.core.impl.WCMDebugFilter.doFilter(WCMDebugFilter.java:156)

        at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:68)

        at com.day.cq.wcm.core.impl.WCMComponentFilter.filterRootInclude(WCMComponentFilter.java:375)

        at com.day.cq.wcm.core.impl.WCMComponentFilter.doFilter(WCMComponentFilter.java:190)

        at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:68)

        at com.day.cq.personalization.impl.TargetComponentFilter.doFilter(TargetComponentFilter.java:96)

        at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:68)

        at org.apache.sling.engine.impl.SlingRequestProcessorImpl.processComponent(SlingRequestProcessorImpl.java:282)

        at org.apache.sling.engine.impl.filter.RequestSlingFilterChain.render(RequestSlingFilterChain.java:49)

        at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:77)

        at com.day.cq.dam.core.impl.servlet.ActivityRecordHandler.doFilter(ActivityRecordHandler.java:154)

        at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:68)

        at com.day.cq.dam.core.impl.assetlinkshare.AdhocAssetShareAuthHandler.doFilter(AdhocAssetShareAuthHandler.java:436)

        at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:68)

        at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:73)

        at com.adobe.cq.social.ugcbase.security.impl.SaferSlingPostServlet.doFilter(SaferSlingPostServlet.java:114)

        at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:68)

        at com.adobe.granite.rest.impl.servlet.ApiResourceFilter.doFilter(ApiResourceFilter.java:70)

        at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:68)

        at com.adobe.granite.requests.logging.impl.RequestLoggerImpl.doFilter(RequestLoggerImpl.java:126)

        at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:68)

        at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:73)

        at org.apache.sling.dynamicinclude.SyntheticResourceFilter.doFilter(SyntheticResourceFilter.java:64)

        at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:68)

        at com.adobe.granite.rest.assets.impl.AssetContentDispositionFilter.doFilter(AssetContentDispositionFilter.java:96)

        at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:68)

        at com.adobe.granite.csrf.impl.CSRFFilter.doFilter(CSRFFilter.java:217)

        at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:68)

        at org.apache.sling.security.impl.ContentDispositionFilter.doFilter(ContentDispositionFilter.java:180)

        at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:68)

        at com.commerce.core.filter.ServletFilter.doFilter(ServletFilter.java:53)

        at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:68)

        at org.apache.sling.i18n.impl.I18NFilter.doFilter(I18NFilter.java:138)

        at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:68)

        at com.day.cq.wcm.core.impl.AuthoringUIModeServiceImpl.doFilter(AuthoringUIModeServiceImpl.java:292)

        at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:68)

        at com.day.cq.wcm.mobile.core.impl.redirect.RedirectFilter.doFilter(RedirectFilter.java:248)

        at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:68)

        at org.apache.sling.dynamicinclude.CacheControlFilter.doFilter(CacheControlFilter.java:62)

        at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:68)

        at org.apache.sling.engine.impl.debug.RequestProgressTrackerLogFilter.doFilter(RequestProgressTrackerLogFilter.java:107)

        at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:68)

        at com.adobe.cq.social.commons.cors.CORSAuthenticationFilter.doFilter(CORSAuthenticationFilter.java:91)

        at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:68)

        at com.day.cq.wcm.foundation.forms.FormsHandlingServletHelper.handleFilter(FormsHandlingServletHelper.java:221)

        at com.day.cq.wcm.foundation.forms.impl.FormsHandlingServlet.doFilter(FormsHandlingServlet.java:138)

        at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:68)

        at com.adobe.granite.optout.impl.OptOutFilter.doFilter(OptOutFilter.java:76)

        at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:68)

        at com.day.cq.wcm.foundation.forms.FormsHandlingServletHelper.handleFilter(FormsHandlingServletHelper.java:221)

        at com.adobe.cq.wcm.core.components.internal.servlets.CoreFormHandlingServlet.doFilter(CoreFormHandlingServlet.java:131)

        at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:68)

        at com.day.cq.wcm.core.impl.WCMRequestFilter.doFilter(WCMRequestFilter.java:90)

        at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:68)

        at com.adobe.cq.mcm.campaign.servlets.CampaignCopyTracker.doFilter(CampaignCopyTracker.java:100)

        at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:68)

        at org.apache.sling.rewriter.impl.RewriterFilter.doFilter(RewriterFilter.java:83)

        at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:68)

        at com.adobe.granite.httpcache.impl.InnerCacheFilter.doFilter(InnerCacheFilter.java:81)

        at com.adobe.granite.httpcache.impl.InnerCacheFilter.doFilter(InnerCacheFilter.java:60)

        at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:68)

        at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:73)

        at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:73)

        at com.adobe.granite.resourceresolverhelper.impl.ResourceResolverHelperImpl.doFilter(ResourceResolverHelperImpl.java:83)

        at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:68)

        at org.apache.sling.engine.impl.SlingRequestProcessorImpl.doProcessRequest(SlingRequestProcessorImpl.java:151)

        at org.apache.sling.engine.impl.SlingMainServlet.service(SlingMainServlet.java:219)

        at org.apache.felix.http.base.internal.handler.ServletHandler.handle(ServletHandler.java:85)

        at org.apache.felix.http.base.internal.dispatch.InvocationChain.doFilter(InvocationChain.java:79)

        at org.apache.sling.i18n.impl.I18NFilter.doFilter(I18NFilter.java:138)

        at org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:135)

        at org.apache.felix.http.base.internal.dispatch.InvocationChain.doFilter(InvocationChain.java:74)

        at com.adobe.granite.license.impl.LicenseCheckFilter.doFilter(LicenseCheckFilter.java:308)

        at org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:135)

        at org.apache.felix.http.base.internal.dispatch.InvocationChain.doFilter(InvocationChain.java:74)

        at org.apache.felix.http.sslfilter.internal.SslFilter.doFilter(SslFilter.java:96)

        at org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:135)

        at org.apache.felix.http.base.internal.dispatch.InvocationChain.doFilter(InvocationChain.java:74)

        at org.apache.sling.security.impl.ReferrerFilter.doFilter(ReferrerFilter.java:295)

        at org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:135)

        at org.apache.felix.http.base.internal.dispatch.InvocationChain.doFilter(InvocationChain.java:74)

        at org.apache.sling.featureflags.impl.FeatureManager.doFilter(FeatureManager.java:116)

        at org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:135)

        at org.apache.felix.http.base.internal.dispatch.InvocationChain.doFilter(InvocationChain.java:74)

        at org.apache.sling.engine.impl.log.RequestLoggerFilter.doFilter(RequestLoggerFilter.java:72)

        at org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:135)

        at org.apache.felix.http.base.internal.dispatch.InvocationChain.doFilter(InvocationChain.java:74)

        at org.apache.felix.http.base.internal.dispatch.Dispatcher.dispatch(Dispatcher.java:128)

        at org.apache.felix.http.base.internal.dispatch.DispatcherServlet.service(DispatcherServlet.java:49)

        at javax.servlet.http.HttpServlet.service(HttpServlet.java:725)

        at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:812)

        at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:587)

        at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:221)

        at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)

        at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)

        at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)

        at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)

        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)

        at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:215)

        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)

        at org.eclipse.jetty.server.Server.handle(Server.java:499)

        at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311)

        at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)

        at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544)

        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)

        at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)

        at java.lang.Thread.run(Thread.java:748)

Caused by: java.text.ParseException: Query:

/jcr:root/content/data/stores/us/va/galax/twin-county-tire-&-(*)automotive-service//*[@sling:resourceType='consumer/common/store']; expected: <end>

        at org.apache.jackrabbit.oak.query.xpath.XPathToSQL2Converter.getSyntaxError(XPathToSQL2Converter.java:1078)

        at org.apache.jackrabbit.oak.query.xpath.XPathToSQL2Converter.convertToStatement(XPathToSQL2Converter.java:342)

        at org.apache.jackrabbit.oak.query.xpath.XPathToSQL2Converter.convert(XPathToSQL2Converter.java:87)

        at org.apache.jackrabbit.oak.query.QueryEngineImpl.parseQuery(QueryEngineImpl.java:179)

        at org.apache.jackrabbit.oak.query.QueryEngineImpl.executeQuery(QueryEngineImpl.java:253)

        at org.apache.jackrabbit.oak.jcr.query.QueryManagerImpl.executeQuery(QueryManagerImpl.java:136)

        ... 124 common frames omitted

7 Replies

Avatar

Community Advisor

Hi,

Is this query working for the node which are not deleted and starts with number or contains & ?

Not sure what you are trying with above query but for JCR XPATH you can check Chapter 10. Querying and Searching using JCR

You can try other queries like SQL2 or QueryBuilder API.

Thanks

Arun



Arun Patidar

Avatar

Level 3

No. XPATH query is not working for the nodes which are there in AEM (i.e not deleted) and contains first character as a number and has "&" in the node name.

It seems, numeric/& are not allowed in the node name while parsing through XPATH query?

The query which I have mentioned above is used to get the nodes from the specified directory where [@sling:resourceType='consumer/common/store' ]";

Avatar

Community Advisor

Hi,

XPATH works with numeric and &

You may need to check your query.

Screen Shot 2018-08-03 at 3.36.39 PM.png

Screen Shot 2018-08-03 at 3.42.12 PM.png

Thanks

Arun



Arun Patidar

Avatar

Level 10

Agree with Arun - use AEM QUeryBuilder or JCR SQL2. Check QueryBuilder docs - Query Builder API

Avatar

Level 3

Thankyou Arun. The query you mentioned above is working for me as well but my query is little bit different.

Structure in CRX-DE

/content/data/consumer/stores/us/va/herndon/12-tires-plus-total-car-care-8183/jcr:content/main

this "main" node name has one property that is "sling:resourceType" whose value is "consumer/common/store"

So, I have written XPATH query to find all the nodes inside /content/data/consumer/stores/ who has property "sling:resourceType" and it's value as "consumer/common/store"

MY QUERY:

"/jcr:root/content/data/stores/%s/%s/%s/%s//*[@sling:resourceType='consumer/common/store' ]"

OR

/jcr:root/content/data/consumer/stores/us/va/herndon/12-tires-plus-total-car-care-8183//*[@sling:resourceType='consumer/common/store']

Other Queries That I have tried:

/jcr:root/content/data/consumer/stores/us/va/herndon//element(*,bridgestone/consumer/common/store)  -- NOT WORKING

/jcr:root/content/data/consumer/stores/us/va/herndon//element(*,cq:Page) -- WORKING but it's not giving me the expected results that I am looking for.

Avatar

Community Advisor

Hi,

Can you try

/jcr:root/content/data/consumer/stores//element(*, cq:Page)

[

(@sling:resourceType = 'consumer/common/store')

]



Arun Patidar

Avatar

Level 3

Hello,

This query didn't work for me however I have found one method to encode the special character/digit.

org.apache.jackrabbit.util.ISO9075.encode(nodeName);

Reference URL:

https://helpx.adobe.com/experience-manager/kb/InvalidQueryExceptionOnXPathQueryWithNumericNodeName.h...

Thankyou for your inputs on this.