Hi Markus,

On Mon, Jul 28, 2008 at 11:23 AM, Markus Lanthaler
<[EMAIL PROTECTED]> wrote:
> 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);

I think it's "prop.value =:identifier" (not ':identifier') otherwise
hibernate will consider you use the value ":identifier" and will not
replace it.

>        } 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)

Looks like the component manager is not initialized when you are
trying to use Query Manager.

You are working in a specific servlet ? In that case you have to
initialize it. You can look at shared-test, webdav work made by Asiri
(in sandbox) or at standard sevlet initialization.

>  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
>



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

Reply via email to