Hi Ludovic,

I just created a class OpenIDHelper which has a static method 
findOpenIDUser(). That method is called in the already existent class 
MyFormAuthenticator which I extended a bit. Shouldn't the component manager 
be set up already in that "context"? Do you need any other details?


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

OK Thomas, I fixed that. Thanks!


----- Original Message ----- 
From: "Ludovic Dubost" <[EMAIL PROTECTED]>
To: "XWiki Developers" <[email protected]>
Sent: Monday, July 28, 2008 11:53 AM
Subject: [gsoc] Re: [xwiki-devs] Problems creating a query using the 
QueryManager


>
> Hi Markus,
>
> Line 73 of AbstractQueryManager
>
>    query = (Query) componentManager.lookup(Query.ROLE, language);
>
> Your componentManager is null.. This probably means that you have  not
> activated the component manager from plexus properly.
> Probably Vincent can help, but he will probably need to know how you
> have build your code.
>
> Ludovic
>
> Markus Lanthaler 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);
>>         } 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
>>
>>
>
>
> -- 
> Ludovic Dubost
> Blog: http://blog.ludovic.org/
> XWiki: http://www.xwiki.com
> Skype: ldubost GTalk: ldubost
>
> _______________________________________________
> devs mailing list
> [email protected]
> http://lists.xwiki.org/mailman/listinfo/devs 

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

Reply via email to