Hi, I've been trying to integrate cmdbuild with our discovery tool using soap but I can not make it work. I have tried different client such as python suds or soapUI, with all the same result: "from clause must be for classes only" when I try to collect information such a List of Cards with getCardList method.
I am using version 2.1.2 of cmdbuild
Example of code
------------------------------------------
#!/usr/bin/python
from suds.client import Client
from suds.wsse import *
from suds_passworddigest.token import UsernameDigestToken
url = 'http://localhost:8080/cmdbuild-2.1.2/services/soap/Webservices?wsdl'
client = Client(url)
security = Security()
token = UsernameToken('api', 'password')
security.tokens.append(token)
client.set_options(wsse=security)
result = client.service.getCardList('Asset')
------------------------------------------------
Excerpt from cmdbuild.log
--------------------------------------------------------------
WARN 2013-06-16 23:03:03 [org.apache.cxf.phase.PhaseInterceptorChain] Application {http://soap.services.cmdbuild.org}WebservicesImplService#{http://soap.services.cmdbuild.org}getCard has thrown exception, unwinding now
org.apache.cxf.interceptor.Fault: from clause must be for classes only
at org.apache.cxf.service.invoker.AbstractInvoker.createFault(AbstractInvoker.java:155)
at org.apache.cxf.jaxws.AbstractJAXWSMethodInvoker.createFault(AbstractJAXWSMethodInvoker.java:86)
at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:121)
at org.apache.cxf.jaxws.JAXWSMethodInvoker.invoke(JAXWSMethodInvoker.java:61)
at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:75)
at org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:58)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.java:37)
at org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:106)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255)
at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:113)
at org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestination.java:102)
at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:464)
at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:188)
at org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:148)
at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:179)
at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:103)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:159)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.cmdbuild.filters.AuthFilter.doFilter(AuthFilter.java:133)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.cmdbuild.filters.PatchManagerFilter.doFilter(PatchManagerFilter.java:33)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.cmdbuild.filters.ConfCheckFilter.doFilter(ConfCheckFilter.java:31)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.cmdbuild.filters.TranslationFilter.doFilter(TranslationFilter.java:39)
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:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
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:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:722)
Caused by: java.lang.IllegalArgumentException: from clause must be for classes only
at org.apache.commons.lang.Validate.isTrue(Validate.java:136)
at org.cmdbuild.dao.query.clause.from.ClassFromClause.<init>(ClassFromClause.java:17)
at org.cmdbuild.dao.query.QuerySpecsBuilder.createFromClause(QuerySpecsBuilder.java:285)
at org.cmdbuild.dao.query.QuerySpecsBuilder.build(QuerySpecsBuilder.java:259)
at org.cmdbuild.dao.query.QuerySpecsBuilder.run(QuerySpecsBuilder.java:318)
at org.cmdbuild.auth.DBUserFetcher.fetchUserCard(DBUserFetcher.java:160)
at org.cmdbuild.auth.DBUserFetcher.fetchUser(DBUserFetcher.java:52)
at org.cmdbuild.services.soap.security.SoapUserFetcher.fetchUser(SoapUserFetcher.java:150)
at org.cmdbuild.auth.DefaultAuthenticationService.fetchUser(DefaultAuthenticationService.java:269)
at org.cmdbuild.auth.DefaultAuthenticationService.fetchAuthenticatedUser(DefaultAuthenticationService.java:258)
at org.cmdbuild.auth.DefaultAuthenticationService.authenticate(DefaultAuthenticationService.java:200)
at org.cmdbuild.logic.auth.DefaultAuthenticationLogic.login(DefaultAuthenticationLogic.java:134)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:309)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:196)
at com.sun.proxy.$Proxy11.login(Unknown Source)
at org.cmdbuild.services.soap.AbstractWebservice.operationUser(AbstractWebservice.java:93)
at org.cmdbuild.services.soap.AbstractWebservice.dataAccessLogicHelper(AbstractWebservice.java:137)
at org.cmdbuild.services.soap.WebservicesImpl.getCard(WebservicesImpl.java:34)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:173)
at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:89)
... 42 more
-----------------------------
Thanks in advance
Raúl Melo Fernández
Dear Raul,
given the error "from clause must be for classes only" it seems that you are trying to querying something that is not a CMDBuild's class. What is "Asset" (class name, not class description) in your data model?
We've tested with the on-line demo where "Asset" is a superclass and it's working.
Can you provide us a little more detail, specially about your data model?
Best regards.
-- Davide Pavan
Previously Raul wrote:
Hi, I've been trying to integrate cmdbuild with our discovery tool using soap but I can not make it work. I have tried different client such as python suds or soapUI, with all the same result: "from clause must be for classes only" when I try to collect information such a List of Cards with getCardList method.
I am using version 2.1.2 of cmdbuild
Example of code
------------------------------------------
#!/usr/bin/python
from suds.client import Client
from suds.wsse import *
from suds_passworddigest.token import UsernameDigestToken
url = 'http://localhost:8080/cmdbuild-2.1.2/services/soap/Webservices?wsdl'
client = Client(url)
security = Security()
token = UsernameToken('api', 'password')
security.tokens.append(token)
client.set_options(wsse=security)
result = client.service.getCardList('Asset')
------------------------------------------------
Excerpt from cmdbuild.log
--------------------------------------------------------------
WARN 2013-06-16 23:03:03 [org.apache.cxf.phase.PhaseInterceptorChain] Application {http://soap.services.cmdbuild.org}WebservicesImplService#{http://soap.services.cmdbuild.org}getCard has thrown exception, unwinding now
org.apache.cxf.interceptor.Fault: from clause must be for classes only
at org.apache.cxf.service.invoker.AbstractInvoker.createFault(AbstractInvoker.java:155)
at org.apache.cxf.jaxws.AbstractJAXWSMethodInvoker.createFault(AbstractJAXWSMethodInvoker.java:86)
at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:121)
at org.apache.cxf.jaxws.JAXWSMethodInvoker.invoke(JAXWSMethodInvoker.java:61)
at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:75)
at org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:58)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.java:37)
at org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:106)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255)
at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:113)
at org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestination.java:102)
at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:464)
at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:188)
at org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:148)
at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:179)
at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:103)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:159)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.cmdbuild.filters.AuthFilter.doFilter(AuthFilter.java:133)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.cmdbuild.filters.PatchManagerFilter.doFilter(PatchManagerFilter.java:33)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.cmdbuild.filters.ConfCheckFilter.doFilter(ConfCheckFilter.java:31)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.cmdbuild.filters.TranslationFilter.doFilter(TranslationFilter.java:39)
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:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
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:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:722)
Caused by: java.lang.IllegalArgumentException: from clause must be for classes only
at org.apache.commons.lang.Validate.isTrue(Validate.java:136)
at org.cmdbuild.dao.query.clause.from.ClassFromClause.<init>(ClassFromClause.java:17)
at org.cmdbuild.dao.query.QuerySpecsBuilder.createFromClause(QuerySpecsBuilder.java:285)
at org.cmdbuild.dao.query.QuerySpecsBuilder.build(QuerySpecsBuilder.java:259)
at org.cmdbuild.dao.query.QuerySpecsBuilder.run(QuerySpecsBuilder.java:318)
at org.cmdbuild.auth.DBUserFetcher.fetchUserCard(DBUserFetcher.java:160)
at org.cmdbuild.auth.DBUserFetcher.fetchUser(DBUserFetcher.java:52)
at org.cmdbuild.services.soap.security.SoapUserFetcher.fetchUser(SoapUserFetcher.java:150)
at org.cmdbuild.auth.DefaultAuthenticationService.fetchUser(DefaultAuthenticationService.java:269)
at org.cmdbuild.auth.DefaultAuthenticationService.fetchAuthenticatedUser(DefaultAuthenticationService.java:258)
at org.cmdbuild.auth.DefaultAuthenticationService.authenticate(DefaultAuthenticationService.java:200)
at org.cmdbuild.logic.auth.DefaultAuthenticationLogic.login(DefaultAuthenticationLogic.java:134)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:309)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:196)
at com.sun.proxy.$Proxy11.login(Unknown Source)
at org.cmdbuild.services.soap.AbstractWebservice.operationUser(AbstractWebservice.java:93)
at org.cmdbuild.services.soap.AbstractWebservice.dataAccessLogicHelper(AbstractWebservice.java:137)
at org.cmdbuild.services.soap.WebservicesImpl.getCard(WebservicesImpl.java:34)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:173)
at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:89)
... 42 more
-----------------------------
Thanks in advance
Raúl Melo Fernández
Thanks for the prompt response. Asset is a class name, I send you more information soon.
Regards
Raúl Melo Fernández
Previously Tecnoteca wrote:
Dear Raul,
given the error "from clause must be for classes only" it seems that you are trying to querying something that is not a CMDBuild's class. What is "Asset" (class name, not class description) in your data model?
We've tested with the on-line demo where "Asset" is a superclass and it's working.
Can you provide us a little more detail, specially about your data model?
Best regards.
-- Davide Pavan
Previously Raul wrote:
Hi, I've been trying to integrate cmdbuild with our discovery tool using soap but I can not make it work. I have tried different client such as python suds or soapUI, with all the same result: "from clause must be for classes only" when I try to collect information such a List of Cards with getCardList method.
I am using version 2.1.2 of cmdbuild
Example of code
------------------------------------------
#!/usr/bin/python
from suds.client import Client
from suds.wsse import *
from suds_passworddigest.token import UsernameDigestToken
url = 'http://localhost:8080/cmdbuild-2.1.2/services/soap/Webservices?wsdl'
client = Client(url)
security = Security()
token = UsernameToken('api', 'password')
security.tokens.append(token)
client.set_options(wsse=security)
result = client.service.getCardList('Asset')
------------------------------------------------
Excerpt from cmdbuild.log
--------------------------------------------------------------
WARN 2013-06-16 23:03:03 [org.apache.cxf.phase.PhaseInterceptorChain] Application {http://soap.services.cmdbuild.org}WebservicesImplService#{http://soap.services.cmdbuild.org}getCard has thrown exception, unwinding now
org.apache.cxf.interceptor.Fault: from clause must be for classes only
at org.apache.cxf.service.invoker.AbstractInvoker.createFault(AbstractInvoker.java:155)
at org.apache.cxf.jaxws.AbstractJAXWSMethodInvoker.createFault(AbstractJAXWSMethodInvoker.java:86)
at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:121)
at org.apache.cxf.jaxws.JAXWSMethodInvoker.invoke(JAXWSMethodInvoker.java:61)
at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:75)
at org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:58)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.java:37)
at org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:106)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255)
at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:113)
at org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestination.java:102)
at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:464)
at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:188)
at org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:148)
at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:179)
at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:103)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:159)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.cmdbuild.filters.AuthFilter.doFilter(AuthFilter.java:133)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.cmdbuild.filters.PatchManagerFilter.doFilter(PatchManagerFilter.java:33)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.cmdbuild.filters.ConfCheckFilter.doFilter(ConfCheckFilter.java:31)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.cmdbuild.filters.TranslationFilter.doFilter(TranslationFilter.java:39)
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:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
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:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:722)
Caused by: java.lang.IllegalArgumentException: from clause must be for classes only
at org.apache.commons.lang.Validate.isTrue(Validate.java:136)
at org.cmdbuild.dao.query.clause.from.ClassFromClause.<init>(ClassFromClause.java:17)
at org.cmdbuild.dao.query.QuerySpecsBuilder.createFromClause(QuerySpecsBuilder.java:285)
at org.cmdbuild.dao.query.QuerySpecsBuilder.build(QuerySpecsBuilder.java:259)
at org.cmdbuild.dao.query.QuerySpecsBuilder.run(QuerySpecsBuilder.java:318)
at org.cmdbuild.auth.DBUserFetcher.fetchUserCard(DBUserFetcher.java:160)
at org.cmdbuild.auth.DBUserFetcher.fetchUser(DBUserFetcher.java:52)
at org.cmdbuild.services.soap.security.SoapUserFetcher.fetchUser(SoapUserFetcher.java:150)
at org.cmdbuild.auth.DefaultAuthenticationService.fetchUser(DefaultAuthenticationService.java:269)
at org.cmdbuild.auth.DefaultAuthenticationService.fetchAuthenticatedUser(DefaultAuthenticationService.java:258)
at org.cmdbuild.auth.DefaultAuthenticationService.authenticate(DefaultAuthenticationService.java:200)
at org.cmdbuild.logic.auth.DefaultAuthenticationLogic.login(DefaultAuthenticationLogic.java:134)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:309)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:196)
at com.sun.proxy.$Proxy11.login(Unknown Source)
at org.cmdbuild.services.soap.AbstractWebservice.operationUser(AbstractWebservice.java:93)
at org.cmdbuild.services.soap.AbstractWebservice.dataAccessLogicHelper(AbstractWebservice.java:137)
at org.cmdbuild.services.soap.WebservicesImpl.getCard(WebservicesImpl.java:34)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:173)
at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:89)
... 42 more
-----------------------------
Thanks in advance
Raúl Melo Fernández
Hi, finally We find the error, We had two guest groups (uppercase and lowercase), this through an SQL statement error at authentication phase.
Thank for all
Raul Melo
Previously Raul wrote:
Thanks for the prompt response. Asset is a class name, I send you more information soon.
Regards
Raúl Melo Fernández
Previously Tecnoteca wrote:
Dear Raul,
given the error "from clause must be for classes only" it seems that you are trying to querying something that is not a CMDBuild's class. What is "Asset" (class name, not class description) in your data model?
We've tested with the on-line demo where "Asset" is a superclass and it's working.
Can you provide us a little more detail, specially about your data model?
Best regards.
-- Davide Pavan
Previously Raul wrote:
Hi, I've been trying to integrate cmdbuild with our discovery tool using soap but I can not make it work. I have tried different client such as python suds or soapUI, with all the same result: "from clause must be for classes only" when I try to collect information such a List of Cards with getCardList method.
I am using version 2.1.2 of cmdbuild
Example of code
------------------------------------------
#!/usr/bin/python
from suds.client import Client
from suds.wsse import *
from suds_passworddigest.token import UsernameDigestToken
url = 'http://localhost:8080/cmdbuild-2.1.2/services/soap/Webservices?wsdl'
client = Client(url)
security = Security()
token = UsernameToken('api', 'password')
security.tokens.append(token)
client.set_options(wsse=security)
result = client.service.getCardList('Asset')
------------------------------------------------
Excerpt from cmdbuild.log
--------------------------------------------------------------
WARN 2013-06-16 23:03:03 [org.apache.cxf.phase.PhaseInterceptorChain] Application {http://soap.services.cmdbuild.org}WebservicesImplService#{http://soap.services.cmdbuild.org}getCard has thrown exception, unwinding now
org.apache.cxf.interceptor.Fault: from clause must be for classes only
at org.apache.cxf.service.invoker.AbstractInvoker.createFault(AbstractInvoker.java:155)
at org.apache.cxf.jaxws.AbstractJAXWSMethodInvoker.createFault(AbstractJAXWSMethodInvoker.java:86)
at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:121)
at org.apache.cxf.jaxws.JAXWSMethodInvoker.invoke(JAXWSMethodInvoker.java:61)
at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:75)
at org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:58)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.java:37)
at org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:106)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255)
at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:113)
at org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestination.java:102)
at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:464)
at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:188)
at org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:148)
at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:179)
at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:103)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:159)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.cmdbuild.filters.AuthFilter.doFilter(AuthFilter.java:133)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.cmdbuild.filters.PatchManagerFilter.doFilter(PatchManagerFilter.java:33)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.cmdbuild.filters.ConfCheckFilter.doFilter(ConfCheckFilter.java:31)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.cmdbuild.filters.TranslationFilter.doFilter(TranslationFilter.java:39)
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:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
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:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:722)
Caused by: java.lang.IllegalArgumentException: from clause must be for classes only
at org.apache.commons.lang.Validate.isTrue(Validate.java:136)
at org.cmdbuild.dao.query.clause.from.ClassFromClause.<init>(ClassFromClause.java:17)
at org.cmdbuild.dao.query.QuerySpecsBuilder.createFromClause(QuerySpecsBuilder.java:285)
at org.cmdbuild.dao.query.QuerySpecsBuilder.build(QuerySpecsBuilder.java:259)
at org.cmdbuild.dao.query.QuerySpecsBuilder.run(QuerySpecsBuilder.java:318)
at org.cmdbuild.auth.DBUserFetcher.fetchUserCard(DBUserFetcher.java:160)
at org.cmdbuild.auth.DBUserFetcher.fetchUser(DBUserFetcher.java:52)
at org.cmdbuild.services.soap.security.SoapUserFetcher.fetchUser(SoapUserFetcher.java:150)
at org.cmdbuild.auth.DefaultAuthenticationService.fetchUser(DefaultAuthenticationService.java:269)
at org.cmdbuild.auth.DefaultAuthenticationService.fetchAuthenticatedUser(DefaultAuthenticationService.java:258)
at org.cmdbuild.auth.DefaultAuthenticationService.authenticate(DefaultAuthenticationService.java:200)
at org.cmdbuild.logic.auth.DefaultAuthenticationLogic.login(DefaultAuthenticationLogic.java:134)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:309)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:196)
at com.sun.proxy.$Proxy11.login(Unknown Source)
at org.cmdbuild.services.soap.AbstractWebservice.operationUser(AbstractWebservice.java:93)
at org.cmdbuild.services.soap.AbstractWebservice.dataAccessLogicHelper(AbstractWebservice.java:137)
at org.cmdbuild.services.soap.WebservicesImpl.getCard(WebservicesImpl.java:34)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:173)
at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:89)
... 42 more
-----------------------------
Thanks in advance
Raúl Melo Fernández