VMware {code} Community
pankajchhabra
Enthusiast
Enthusiast

How to resolve the autowire candidate for vSphere SDK HTML sample globalviewhtml?

Hello,

I imported the globalviewhtml and get the error when I deploy them to Virgo. How to resolve this error?

[2015-10-17T21:18:07.179+05:30] [ERROR] start-signalling-2            org.springframework.web.servlet.DispatcherServlet                 Context initialization failed org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'servicesController' defined in ServletContext resource [/WEB-INF/spring/bundle-context.xml]: Unsatisfied dependency expressed through constructor argument with index 2 of type [com.vmware.vise.usersession.UserSessionService]: : No matching bean of type [com.vmware.vise.usersession.UserSessionService] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Qualifier(value=userSessionService)}; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [com.vmware.vise.usersession.UserSessionService] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Qualifier(value=userSessionService)}

  at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:730)

  at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:196)

  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1035)

  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:939)

  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:485)

  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)

  at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)

  at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)

  at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)

  at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)

  at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:607)

  at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:925)

  at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:472)

  at org.eclipse.gemini.blueprint.context.support.AbstractDelegatedExecutionApplicationContext.access$301(AbstractDelegatedExecutionApplicationContext.java:60)

  at org.eclipse.gemini.blueprint.context.support.AbstractDelegatedExecutionApplicationContext$1.run(AbstractDelegatedExecutionApplicationContext.java:168)

  at org.eclipse.gemini.blueprint.util.internal.PrivilegedUtils.executeWithCustomTCCL(PrivilegedUtils.java:85)

  at org.eclipse.gemini.blueprint.context.support.AbstractDelegatedExecutionApplicationContext.normalRefresh(AbstractDelegatedExecutionApplicationContext.java:164)

  at org.eclipse.gemini.blueprint.context.support.AbstractDelegatedExecutionApplicationContext$NoDependenciesWaitRefreshExecutor.refresh(AbstractDelegatedExecutionApplicationContext.java:78)

  at org.eclipse.gemini.blueprint.context.support.AbstractDelegatedExecutionApplicationContext.refresh(AbstractDelegatedExecutionApplicationContext.java:157)

  at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:631)

  at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:588)

  at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:645)

  at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:508)

  at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:449)

  at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:133)

  at javax.servlet.GenericServlet.init(GenericServlet.java:244)

  at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1284)

  at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1197)

  at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1087)

  at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5210)

  at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5493)

  at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)

  at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)

  at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)

  at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:632)

  at org.eclipse.gemini.web.tomcat.internal.TomcatServletContainer.startWebApplication(TomcatServletContainer.java:125)

  at org.eclipse.gemini.web.internal.StandardWebApplication.start(StandardWebApplication.java:109)

  at org.eclipse.virgo.web.core.internal.WebBundleLifecycleListener.onStarted(WebBundleLifecycleListener.java:122)

  at org.eclipse.virgo.kernel.install.artifact.internal.StandardArtifactStateMonitor.onStarted(StandardArtifactStateMonitor.java:271)

  at org.eclipse.virgo.kernel.install.artifact.internal.AbstractInstallArtifact.asyncStartSucceeded(AbstractInstallArtifact.java:319)

  at org.eclipse.virgo.kernel.install.artifact.internal.AbstractInstallArtifact.access$0(AbstractInstallArtifact.java:316)

  at org.eclipse.virgo.kernel.install.artifact.internal.AbstractInstallArtifact$StateMonitorSignal.signalSuccessfulCompletion(AbstractInstallArtifact.java:252)

  at org.eclipse.virgo.nano.core.internal.BundleStartTracker$1.run(BundleStartTracker.java:140)

  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)

  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)

  at java.lang.Thread.run(Thread.java:745)

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [com.vmware.vise.usersession.UserSessionService] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Qualifier(value=userSessionService)}

  at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:947)

  at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:816)

  at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:730)

  at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:795)

  at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:723)

  ... 45 common frames omitted

[2015-10-17T21:18:07.182+05:30] [ERROR] start-signalling-2            o.a.c.c.C.[Catalina].[localhost].[/vsphere-client/globalview]     StandardWrapper.Throwable org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'servicesController' defined in ServletContext resource [/WEB-INF/spring/bundle-context.xml]: Unsatisfied dependency expressed through constructor argument with index 2 of type [com.vmware.vise.usersession.UserSessionService]: : No matching bean of type [com.vmware.vise.usersession.UserSessionService] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Qualifier(value=userSessionService)}; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [com.vmware.vise.usersession.UserSessionService] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Qualifier(value=userSessionService)}

  at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:730)

  at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:196)

  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1035)

  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:939)

  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:485)

  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)

  at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)

  at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)

  at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)

  at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)

  at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:607)

  at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:925)

  at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:472)

  at org.eclipse.gemini.blueprint.context.support.AbstractDelegatedExecutionApplicationContext.access$301(AbstractDelegatedExecutionApplicationContext.java:60)

  at org.eclipse.gemini.blueprint.context.support.AbstractDelegatedExecutionApplicationContext$1.run(AbstractDelegatedExecutionApplicationContext.java:168)

  at org.eclipse.gemini.blueprint.util.internal.PrivilegedUtils.executeWithCustomTCCL(PrivilegedUtils.java:85)

  at org.eclipse.gemini.blueprint.context.support.AbstractDelegatedExecutionApplicationContext.normalRefresh(AbstractDelegatedExecutionApplicationContext.java:164)

  at org.eclipse.gemini.blueprint.context.support.AbstractDelegatedExecutionApplicationContext$NoDependenciesWaitRefreshExecutor.refresh(AbstractDelegatedExecutionApplicationContext.java:78)

  at org.eclipse.gemini.blueprint.context.support.AbstractDelegatedExecutionApplicationContext.refresh(AbstractDelegatedExecutionApplicationContext.java:157)

  at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:631)

  at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:588)

  at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:645)

  at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:508)

  at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:449)

  at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:133)

  at javax.servlet.GenericServlet.init(GenericServlet.java:244)

  at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1284)

  at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1197)

  at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1087)

  at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5210)

  at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5493)

  at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)

  at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)

  at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)

  at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:632)

  at org.eclipse.gemini.web.tomcat.internal.TomcatServletContainer.startWebApplication(TomcatServletContainer.java:125)

  at org.eclipse.gemini.web.internal.StandardWebApplication.start(StandardWebApplication.java:109)

  at org.eclipse.virgo.web.core.internal.WebBundleLifecycleListener.onStarted(WebBundleLifecycleListener.java:122)

  at org.eclipse.virgo.kernel.install.artifact.internal.StandardArtifactStateMonitor.onStarted(StandardArtifactStateMonitor.java:271)

  at org.eclipse.virgo.kernel.install.artifact.internal.AbstractInstallArtifact.asyncStartSucceeded(AbstractInstallArtifact.java:319)

  at org.eclipse.virgo.kernel.install.artifact.internal.AbstractInstallArtifact.access$0(AbstractInstallArtifact.java:316)

  at org.eclipse.virgo.kernel.install.artifact.internal.AbstractInstallArtifact$StateMonitorSignal.signalSuccessfulCompletion(AbstractInstallArtifact.java:252)

  at org.eclipse.virgo.nano.core.internal.BundleStartTracker$1.run(BundleStartTracker.java:140)

  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)

  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)

  at java.lang.Thread.run(Thread.java:745)

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [com.vmware.vise.usersession.UserSessionService] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Qualifier(value=userSessionService)}

  at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:947)

  at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:816)

  at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:730)

  at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:795)

  at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:723)

  ... 45 common frames omitted

[2015-10-17T21:18:07.185+05:30] [ERROR] start-signalling-2            o.a.c.c.C.[Catalina].[localhost].[/vsphere-client/globalview]     Servlet /vsphere-client/globalview threw load() exception org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [com.vmware.vise.usersession.UserSessionService] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Qualifier(value=userSessionService)}

  at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:947)

  at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:816)

  at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:730)

  at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:795)

  at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:723)

  at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:196)

  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1035)

  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:939)

  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:485)

  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)

  at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)

  at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)

  at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)

  at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)

  at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:607)

  at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:925)

  at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:472)

  at org.eclipse.gemini.blueprint.context.support.AbstractDelegatedExecutionApplicationContext.access$301(AbstractDelegatedExecutionApplicationContext.java:60)

  at org.eclipse.gemini.blueprint.context.support.AbstractDelegatedExecutionApplicationContext$1.run(AbstractDelegatedExecutionApplicationContext.java:168)

  at org.eclipse.gemini.blueprint.util.internal.PrivilegedUtils.executeWithCustomTCCL(PrivilegedUtils.java:85)

  at org.eclipse.gemini.blueprint.context.support.AbstractDelegatedExecutionApplicationContext.normalRefresh(AbstractDelegatedExecutionApplicationContext.java:164)

  at org.eclipse.gemini.blueprint.context.support.AbstractDelegatedExecutionApplicationContext$NoDependenciesWaitRefreshExecutor.refresh(AbstractDelegatedExecutionApplicationContext.java:78)

  at org.eclipse.gemini.blueprint.context.support.AbstractDelegatedExecutionApplicationContext.refresh(AbstractDelegatedExecutionApplicationContext.java:157)

  at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:631)

  at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:588)

  at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:645)

  at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:508)

  at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:449)

  at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:133)

  at javax.servlet.GenericServlet.init(GenericServlet.java:244)

  at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1284)

  at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1197)

  at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1087)

  at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5210)

  at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5493)

  at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)

  at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)

  at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)

  at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:632)

  at org.eclipse.gemini.web.tomcat.internal.TomcatServletContainer.startWebApplication(TomcatServletContainer.java:125)

  at org.eclipse.gemini.web.internal.StandardWebApplication.start(StandardWebApplication.java:109)

  at org.eclipse.virgo.web.core.internal.WebBundleLifecycleListener.onStarted(WebBundleLifecycleListener.java:122)

  at org.eclipse.virgo.kernel.install.artifact.internal.StandardArtifactStateMonitor.onStarted(StandardArtifactStateMonitor.java:271)

  at org.eclipse.virgo.kernel.install.artifact.internal.AbstractInstallArtifact.asyncStartSucceeded(AbstractInstallArtifact.java:319)

  at org.eclipse.virgo.kernel.install.artifact.internal.AbstractInstallArtifact.access$0(AbstractInstallArtifact.java:316)

  at org.eclipse.virgo.kernel.install.artifact.internal.AbstractInstallArtifact$StateMonitorSignal.signalSuccessfulCompletion(AbstractInstallArtifact.java:252)

  at org.eclipse.virgo.nano.core.internal.BundleStartTracker$1.run(BundleStartTracker.java:140)

  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)

  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)

  at java.lang.Thread.run(Thread.java:745)

[2015-10-17T21:18:07.186+05:30] [INFO ] iLogServiceListener@4a377f4e  org.osgi.service.log.LogService                                   Bundle com.vmware.samples.globalviewhtml_1.0.0, Service 756, ServiceEvent REGISTERED

[2015-10-17T21:18:07.187+05:30] [INFO ] start-signalling-2            org.eclipse.virgo.medic.eventlog.default                         WE0001I Started web bundle 'com.vmware.samples.globalviewhtml' version '1.0.0' with context path '/vsphere-client/globalview'.

[2015-10-17T21:18:07.188+05:30] [INFO ] start-signalling-2            org.eclipse.virgo.medic.eventlog.default                         DE0005I Started bundle 'com.vmware.samples.globalviewhtml' version '1.0.0'.

[2015-10-17T21:18:07.188+05:30] [INFO ] start-signalling-2            o.e.v.k.i.artifact.internal.bundle.BundleThreadContextManager     Thread context class loader 'KernelBundleClassLoader: [bundle=com.vmware.samples.globalviewhtml_1.0.0]' popped and set to 'KernelBundleClassLoader: [bundle=org.eclipse.equinox.util_1.0.300.v20111010-1614]'

Tags (1)
Reply
0 Kudos
3 Replies
MrIndia
VMware Employee
VMware Employee

Pankaj, Can you please mention SDK version as well ?

Reply
0 Kudos
pankajchhabra
Enthusiast
Enthusiast

Hello,

Thanks MrIndia for response. Here is my configuration -

1. SDK - vSphere Web SDK 6.0 Update 1

2. Sample is HTML Bridge Sample

3. JDK 1.7.0_79 64 bit

4. Eclipse Juno SR2 64 Bit

5. Flex 4.6

6. Adobe Flash Builder 4.7 64 bit

Thanks,

Pankaj

Reply
0 Kudos
_vladi_
VMware Employee
VMware Employee

Hi Pankaj,

  The cause of the issue is unresolved UserSessionService dependency. This service is not really used in this sample, so as a workaround you can remove the reference to it from globalview-service project.

  This will be fixed in a new SDK release. Sorry for the inconvenience.

Cheers,

Vladi

Reply
0 Kudos