VMware Cloud Community
BryanL
Contributor
Contributor
Jump to solution

Error when querying the vCO REST API

I'm attempting to query vCO for a list of workflow names but am running into problems.  I'm making a GET request with the following URL using a simple REST client:

https://vco.domain.local:8281/api/workflows?keys=name&maxResult=5

Request headers:

Accept: application/json;v=5.1.1

Content-Type: application/json;v=5.1.1

Authorization: Basic 8s7f6s8f698s6f87s68f7=

Connection: keep-alive

Origin: chrome-extension: //rest-console-id

User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.69 Safari/537.36

I receive the following response followed by a stack dump:

<html><head><title>JBossWeb/2.0.1.GA - Error report</title><style><!--H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}A.name {color : black;}HR {color : #525D76;}--></style> </head><body><h1>HTTP Status 500 - </h1><HR size="1" noshade="noshade"><p><b>type</b> Exception report</p><p><b>message</b> <u></u></p><p><b>description</b> <u>The server encountered an internal error () that prevented it from fulfilling this request.</u></p><p><b>exception</b> <pre>org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.NullPointerException

HOWEVER, the following request will return 5 workflow IDs as expected, only change being the keys query parameter.  Any ideas on what I'm doing wrong?

https://vco.domain.local:8281/api/workflows?keys=id&maxResult=5

Tags (4)
0 Kudos
1 Solution

Accepted Solutions
igaydajiev
VMware Employee
VMware Employee
Jump to solution

Just checked the source and it appears that when using "keys" to filter the returned properties it is required always to include  "id"

Setting both should work ?keys=name&keys=id

https://vco.domain.local:8281/api/workflows?keys=name&keys=id&maxResult=5?

I will open a bug and will fix it for the next update release.

View solution in original post

0 Kudos
5 Replies
iiliev
VMware Employee
VMware Employee
Jump to solution

Request seems OK. Could you send the stack trace dump (either in this thread or in private message to me)?

Also, could you check what happens if you make the same request with 'Accept' header value set to

  • Accept: application/xml (to get response in XML format)
  • Accept: application/json (without v=5.1.1)
0 Kudos
igaydajiev
VMware Employee
VMware Employee
Jump to solution

Just checked the source and it appears that when using "keys" to filter the returned properties it is required always to include  "id"

Setting both should work ?keys=name&keys=id

https://vco.domain.local:8281/api/workflows?keys=name&keys=id&maxResult=5?

I will open a bug and will fix it for the next update release.

0 Kudos
BryanL
Contributor
Contributor
Jump to solution

Full response body is below.  Same result with the accept header set to application/json and application/xml.  Also, forgot to mention that I'm use the appliance 5.1.1.0 build 1070383 in case it matters.

<html><head><title>JBossWeb/2.0.1.GA - Error report</title><style><!--H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}A.name {color : black;}HR {color : #525D76;}--></style> </head><body><h1>HTTP Status 500 - </h1><HR size="1" noshade="noshade"><p><b>type</b> Exception report</p><p><b>message</b> <u></u></p><p><b>description</b> <u>The server encountered an internal error () that prevented it from fulfilling this request.</u></p><p><b>exception</b> <pre>org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.NullPointerException

  org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:894)

  org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)

  javax.servlet.http.HttpServlet.service(HttpServlet.java:690)

  javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

  org.springframework.web.filter.ShallowEtagHeaderFilter.doFilterInternal(ShallowEtagHeaderFilter.java:58)

  org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)

  org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:311)

  org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:116)

  org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)

  org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)

  org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)

  org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)

  org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113)

  org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)

  org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)

  org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)

  org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:201)

  org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)

  org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)

  org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)

  org.springframework.security.web.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:144)

  org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)

  org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:173)

  org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)

  org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)

  org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)

  org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)

  org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77)

  org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)

</pre></p><p><b>root cause</b> <pre>java.lang.NullPointerException

  com.vmware.o11n.web.inventory.CatalogServiceController.findSimpleListQuery(CatalogServiceController.java:532)

  com.vmware.o11n.web.workflow.WorkflowController.getAllWorkflows(WorkflowController.java:122)

  sun.reflect.GeneratedMethodAccessor620.invoke(Unknown Source)

  sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

  java.lang.reflect.Method.invoke(Unknown Source)

  org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:213)

  org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:126)

  org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:96)

  org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:617)

  org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:578)

  org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)

  org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)

  org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)

  org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)

  org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)

  javax.servlet.http.HttpServlet.service(HttpServlet.java:690)

  javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

  org.springframework.web.filter.ShallowEtagHeaderFilter.doFilterInternal(ShallowEtagHeaderFilter.java:58)

  org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)

  org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:311)

  org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:116)

  org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)

  org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)

  org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)

  org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)

  org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113)

  org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)

  org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)

  org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)

  org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:201)

  org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)

  org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)

  org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)

  org.springframework.security.web.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:144)

  org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)

  org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:173)

  org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)

  org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)

  org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)

  org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)

  org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77)

  org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)

</pre></p><p><b>note</b> <u>The full stack trace of the root cause is available in the JBossWeb/2.0.1.GA logs.</u></p><HR size="1" noshade="noshade"><h3>JBossWeb/2.0.1.GA</h3></body></html>

0 Kudos
iiliev
VMware Employee
VMware Employee
Jump to solution

Thanks for the stack trace; I was able to reproduce it in my environment too.

It's clearly a bug that need to be fixed. If you need it fixed urgently, please open a support request and we'll release a patch. Meantime, you can use the workaround suggested by Ivo (always include 'id' key in your queries).

0 Kudos
BryanL
Contributor
Contributor
Jump to solution

Thanks to both of you!  I've confirmed that Ivo's workaround does work for me and is fine for now, no need for an immediate fix.

0 Kudos