Sam Corbett created BROOKLYN-48:
-----------------------------------

             Summary: REST Effector API errors when effector has Object default 
value 
                 Key: BROOKLYN-48
                 URL: https://issues.apache.org/jira/browse/BROOKLYN-48
             Project: Brooklyn
          Issue Type: Bug
            Reporter: Sam Corbett


Create an effector with a parameter whose default value is an object, e.g.:
{code}
.parameter(Object.class, "testparameter", "testdescription", new Object())
{code}

Requests to list the owning entity's effectors throw exceptions like:
{code}
    Can not create bean serializer for Object.class (through reference chain: 
com.google.common.collect.RegularImmutableList[0]->brooklyn.rest.domain.EffectorSummary["parameters"]->com.google.common.collect.RegularImmutableSet[3]->brooklyn.rest.domain.ParameterSummary["defaultValue"])
Caused by:

org.codehaus.jackson.map.JsonMappingException: Can not create bean serializer 
for Object.class (through reference chain: 
com.google.common.collect.RegularImmutableList[0]->brooklyn.rest.domain.EffectorSummary["parameters"]->com.google.common.collect.RegularImmutableSet[3]->brooklyn.rest.domain.ParameterSummary["defaultValue"])
        at 
org.codehaus.jackson.map.ser.StdSerializerProvider._createAndCacheUntypedSerializer(StdSerializerProvider.java:740)
        at 
org.codehaus.jackson.map.ser.StdSerializerProvider.findValueSerializer(StdSerializerProvider.java:344)
        at 
org.codehaus.jackson.map.ser.impl.PropertySerializerMap.findAndAddSerializer(PropertySerializerMap.java:39)
        at 
org.codehaus.jackson.map.ser.BeanPropertyWriter._findAndAddDynamic(BeanPropertyWriter.java:463)
        at 
org.codehaus.jackson.map.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:441)
        at 
org.codehaus.jackson.map.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:150)
        at 
org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:112)
        at 
org.codehaus.jackson.map.ser.std.CollectionSerializer.serializeContents(CollectionSerializer.java:72)
        at 
org.codehaus.jackson.map.ser.std.CollectionSerializer.serializeContents(CollectionSerializer.java:23)
        at 
org.codehaus.jackson.map.ser.std.AsArraySerializerBase.serialize(AsArraySerializerBase.java:86)
        at 
org.codehaus.jackson.map.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:446)
        at 
org.codehaus.jackson.map.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:150)
        at 
org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:112)
        at 
org.codehaus.jackson.map.ser.std.CollectionSerializer.serializeContents(CollectionSerializer.java:72)
        at 
org.codehaus.jackson.map.ser.std.CollectionSerializer.serializeContents(CollectionSerializer.java:23)
        at 
org.codehaus.jackson.map.ser.std.AsArraySerializerBase.serialize(AsArraySerializerBase.java:86)
        at 
org.codehaus.jackson.map.ser.StdSerializerProvider._serializeValue(StdSerializerProvider.java:659)
        at 
org.codehaus.jackson.map.ser.StdSerializerProvider.serializeValue(StdSerializerProvider.java:271)
        at 
org.codehaus.jackson.map.ObjectWriter.writeValue(ObjectWriter.java:325)
        at 
org.codehaus.jackson.jaxrs.JacksonJsonProvider.writeTo(JacksonJsonProvider.java:557)
        at 
com.sun.jersey.spi.container.ContainerResponse.write(ContainerResponse.java:306)
        at 
com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1451)
        at 
com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1363)
        at 
com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1353)
        at 
com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:414)
        at 
com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:537)
        at 
com.sun.jersey.spi.container.servlet.ServletContainer.doFilter(ServletContainer.java:895)
        at 
com.sun.jersey.spi.container.servlet.ServletContainer.doFilter(ServletContainer.java:843)
        at 
com.sun.jersey.spi.container.servlet.ServletContainer.doFilter(ServletContainer.java:804)
        at 
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1338)
        at 
brooklyn.rest.util.HaMasterCheckFilter.doFilter(HaMasterCheckFilter.java:58)
        at 
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1338)
        at 
org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:484)
        at 
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119)
        at 
org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:524)
        at 
org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
        at 
org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1065)
        at 
org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:413)
        at 
org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:192)
        at 
org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:999)
        at 
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
        at 
org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:250)
        at 
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:111)
        at org.eclipse.jetty.server.Server.handle(Server.java:350)
        at 
org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:454)
        at 
org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:890)
        at 
org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:944)
        at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:630)
        at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:230)
        at 
org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:77)
        at 
org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:620)
        at 
org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:46)
        at 
org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:603)
        at 
org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:538)
        at java.lang.Thread.run(Thread.java:744)
Caused by: java.lang.IllegalArgumentException: Can not create bean serializer 
for Object.class
        at 
org.codehaus.jackson.map.ser.BeanSerializerFactory.constructBeanSerializer(BeanSerializerFactory.java:428)
        at 
org.codehaus.jackson.map.ser.BeanSerializerFactory.findBeanSerializer(BeanSerializerFactory.java:347)
        at 
org.codehaus.jackson.map.ser.BeanSerializerFactory.createSerializer(BeanSerializerFactory.java:291)
        at 
org.codehaus.jackson.map.ser.StdSerializerProvider._createUntypedSerializer(StdSerializerProvider.java:782)
        at 
org.codehaus.jackson.map.ser.StdSerializerProvider._createAndCacheUntypedSerializer(StdSerializerProvider.java:735)
        ... 54 more

{code}



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to