You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Andrew Block (JIRA)" <ji...@apache.org> on 2014/12/30 22:48:14 UTC

[jira] [Commented] (CAMEL-8185) IllegalArgumentException: argument type mismatch

    [ https://issues.apache.org/jira/browse/CAMEL-8185?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14261538#comment-14261538 ] 

Andrew Block commented on CAMEL-8185:
-------------------------------------

Tested using both Karaf 2.4 and Fuse 6.1.1 (redhat-611412) using the camel-archetype-scr with a similar configuration as described in this issue. Successfully deployed to Karaf but threw identical exception in Fuse. 

Diagnosed issue to be a potential class loading issue with SCR using bind methods from an abstract class. When overriding methods in subclass and calling super, context deployed successfully on both Fuse and Karaf without error.

> IllegalArgumentException: argument type mismatch
> ------------------------------------------------
>
>                 Key: CAMEL-8185
>                 URL: https://issues.apache.org/jira/browse/CAMEL-8185
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-scr
>    Affects Versions: 2.15.0
>            Reporter: Charles Moulliard
>
> When camel-scr (2.15-SNAPSHOT) is deployed and used with Apache Karaf - 2.3.0.redhat-611412
> The following errors are generated when SCR got the CamelComponent or lost the Component
> {code}
> 2014-12-26 11:13:49,453 | ERROR | r-1.0.0-thread-2 | osgi-camel-scr                   | ?                                   ? | 255 - com.redhat.gpe.training.osgi-camel-scr - 1.0.0 | [com.redhat.gpe.training.osgi.camel.BootStrap(52)] The gotCamelComponent method has thrown an exception
> java.lang.IllegalArgumentException: argument type mismatch
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)[:1.7.0_51]
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)[:1.7.0_51]
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.7.0_51]
> 	at java.lang.reflect.Method.invoke(Method.java:606)[:1.7.0_51]
> 	at org.apache.felix.scr.impl.helper.BaseMethod.invokeMethod(BaseMethod.java:231)[82:org.apache.felix.scr:1.8.0.redhat-611412]
> 	at org.apache.felix.scr.impl.helper.BaseMethod.access$500(BaseMethod.java:39)[82:org.apache.felix.scr:1.8.0.redhat-611412]
> {code}
> {code}
> 2014-12-26 11:22:50,355 | ERROR | l Console Thread | osgi-camel-scr                   | ?                                   ? | 255 - com.redhat.gpe.training.osgi-camel-scr - 1.0.0 | [com.redhat.gpe.training.osgi.camel.BootStrap(52)] The lostCamelComponent method has thrown an exception
> java.lang.IllegalArgumentException: argument type mismatch
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)[:1.7.0_51]
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)[:1.7.0_51]
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.7.0_51]
> 	at java.lang.reflect.Method.invoke(Method.java:606)[:1.7.0_51]
> 	at org.apache.felix.scr.impl.helper.BaseMethod.invokeMethod(BaseMethod.java:231)[82:org.apache.felix.scr:1.8.0.redhat-611412]
> 	at org.apache.felix.scr.impl.helper.BaseMethod.access$500(BaseMethod.java:39)[82:org.apache.felix.scr:1.8.0.redhat-611412]
> 	at org.apache.felix.scr.impl.helper.BaseMethod$Resolved.invoke(BaseMethod.java:624)[82:org.apache.felix.scr:1.8.0.redhat-611412]
> 	at org.apache.felix.scr.impl.helper.BaseMethod.invoke(BaseMethod.java:508)[82:org.apache.felix.scr:1.8.0.redhat-611412]
> 	at org.apache.felix.scr.impl.helper.BindMethod.invoke(BindMethod.java:37)[82:org.apache.felix.scr:1.8.0.redhat-611412]
> 	at org.apache.felix.scr.impl.manager.DependencyManager.invokeUnbindMethod(DependencyManager.java:1711)[82:org.apache.felix.scr:1.8.0.redhat-611412]
> {code}
> Here is the code used as example :
> {code}
> import org.apache.camel.CamelContext;
> import org.apache.camel.RoutesBuilder;
> import org.apache.camel.scr.AbstractCamelRunner;
> import org.apache.camel.spi.ComponentResolver;
> import org.apache.felix.scr.annotations.*;
> import org.slf4j.Logger;
> import org.slf4j.LoggerFactory;
> import java.util.ArrayList;
> import java.util.List;
> @Component(label = BootStrap.COMPONENT_LABEL, description = BootStrap.COMPONENT_DESCRIPTION)
> @Properties({
>         @Property(name = "camelContextId", value = "camel-scr-exercise"),
>         @Property(name = "active", value = "true")
> })
> @References({
>         @Reference(name = "camelComponent",referenceInterface = ComponentResolver.class,
>                 cardinality = ReferenceCardinality.MANDATORY_MULTIPLE, policy = ReferencePolicy.DYNAMIC,
>                 policyOption = ReferencePolicyOption.GREEDY, bind = "gotCamelComponent", unbind = "lostCamelComponent")
> })
> public class BootStrap extends AbstractCamelRunner {
>     public static final String COMPONENT_LABEL = "bootstrap.CamelScrExercise";
>     public static final String COMPONENT_DESCRIPTION = "This is the description for camel-scr-exercise.";
>     public static final Logger LOGGER = LoggerFactory.getLogger(BootStrap.class);
>     @Override
>     protected List<RoutesBuilder> getRouteBuilders() {
>         LOGGER.info("Load Camel Routes definition");
>         List<RoutesBuilder> routesBuilders = new ArrayList<>();
>         routesBuilders.add(new GreeterRoute());
>         return routesBuilders;
>     }
> }
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)