Uploaded image for project: 'Camel'
  1. Camel
  2. CAMEL-8185

camel-scr - IllegalArgumentException: argument type mismatch

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 2.15.0
    • 2.15.0
    • camel-scr
    • None
    • Unknown

    Description

      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

      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]
      
      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]
      

      Here is the code used as example :

      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;
          }
      }
      
      

      Attachments

        Activity

          People

            njiang Willem Jiang
            cmoulliard Moulliard Charles
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: