On Jul 28, 2008, at 1:02 PM, Vincent Massol wrote:
On Jul 28, 2008, at 12:53 PM, Thomas Mortagne wrote:
On Mon, Jul 28, 2008 at 12:17 PM, Markus
Lanthaler
<mark_lanthaler(a)gmx.net> wrote:
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?
Yes i did not look close enough the stack trace. So I don't
understand
why this is not already initialized...
I think I know why: because the code doesn't work :)
The AbstractQueryManager should implement Composable.
I'm looking into it.
Markus,
Could you svn up, rebuild and try again. I think I've fixed it but
since this is not code I know well (it's just been added by Artem) I
haven't tested my change. I'm not even sure the Query Manager is
working at all since the issue isn't closed:
http://jira.xwiki.org/jira/browse/XWIKI-2444
Artem, could you please let us know the status?
Thanks
-Vincent
>>> 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" <ludovic(a)xwiki.org>
>> To: "XWiki Developers" <devs(a)xwiki.org>
>> 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+Specificati…
>>>> .
>>>>
>>>> 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)