CMDBuild Forum

Problems with soap

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