Hi,

I'm currently implementing the last things to finish OpenID authentication 
support but I have some problems with the query manager. I'm trying to get 
the document (should be only one) which an attached OpenIdIdentifier object 
whose "identifier" string property's value has some specific value. I didn't 
found any documentation apart http://markmail.org/message/jt6m2huqr4r6hvk6 
and 
http://dev.xwiki.org/xwiki/bin/view/Design/XWiki+Query+Language+Specification.

I tried to achieve this by the following code:

    public static String findOpenIDUser(String openid_identifier, 
XWikiContext context) throws XWikiException
    {
        XWiki xwiki = context.getWiki();

        QueryManager qm = xwiki.getStore().getQueryManager();
        Query search_user;

        if (qm.hasLanguage(Query.HQL)) {
            search_user =
                qm.createQuery(", BaseObject as obj, StringProperty as prop 
where doc.fullName = obj.name and obj.className = 'XWiki.OpenIdIdentifier' 
and obj.id=prop.id.id and prop.id.name='identifier' and prop.value = 
':identifier'", Query.HQL);
        } else if (qm.hasLanguage(Query.XPATH)) {
            search_user = 
qm.createQuery("/*/*[obj/XWiki/OpenIdIdentifier/@xp:identifier = 
':identifier'] ", Query.XPATH);
        } else
            throw new RuntimeException();

        search_user.bindValue("identifier", openid_identifier);

        List<XWikiDocument> found_users = search_user.setLimit(1).execute();
        if (found_users.size() > 0) {
            if (log.isDebugEnabled()) {
                log.debug("OpenID " + openid_identifier + " already 
registered.");
            }
            return found_users.get(0).getFullName();
        }

        return null;
    }


but all I get is a NullPointerException when qm.createQuery(..., Query.HQL) 
is called. What's wrong with my code?

java.lang.NullPointerException
 at 
com.xpn.xwiki.store.query.AbstractQueryManager.createQuery(AbstractQueryManager.java:73)
 at 
com.xpn.xwiki.user.impl.openid.OpenIDHelper.findOpenIDUser(OpenIDHelper.java:109)
 at 
com.xpn.xwiki.user.impl.xwiki.MyFormAuthenticator.processLogin(MyFormAuthenticator.java:201)
 at 
com.xpn.xwiki.user.impl.xwiki.MyFormAuthenticator.processLogin(MyFormAuthenticator.java:178)
 at 
com.xpn.xwiki.user.impl.xwiki.XWikiAuthServiceImpl.checkAuth(XWikiAuthServiceImpl.java:205)
 at com.xpn.xwiki.XWiki.checkAuth(XWiki.java:3518)
 at 
com.xpn.xwiki.user.impl.xwiki.XWikiRightServiceImpl.checkAccess(XWikiRightServiceImpl.java:139)
 at com.xpn.xwiki.XWiki.checkAccess(XWiki.java:3526)
 at com.xpn.xwiki.XWiki.prepareDocuments(XWiki.java:4432)
 at com.xpn.xwiki.web.XWikiAction.execute(XWikiAction.java:190)
 at com.xpn.xwiki.web.XWikiAction.execute(XWikiAction.java:115)
 at 
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
 at 
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
 at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
 at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
 at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
 at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
 at 
com.xpn.xwiki.web.SavedRequestRestorerFilter.doFilter(SavedRequestRestorerFilter.java:287)
 at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
 at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
 at 
com.xpn.xwiki.web.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:112)
 at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
 at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
 at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
 at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
 at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
 at 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
 at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
 at 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
 at 
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
 at 
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
 at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
 at java.lang.Thread.run(Thread.java:619)

_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to