OK that hellped.  What I ended up doing was:

* Component extends UriEndpointComponent
* Endpoint extends DefaultEndpoint and is marked @ManagedResource and
@UriEndpoint.  It also has a @UriParam for 'baud' and another one for
'path' -- that last one is a problem (will explain in a second)
* Consumer extends DefaultConsumer and uses a processor to launch events

The endpoint is marked like this:

@UriEndpoint(scheme = "jssc",
        syntax = "jssc:path",
        consumerClass = JsscConsumer.class,
        title = "JSSC Component")


I would like to be able to do this:


        from("jssc:com10?baud=19200")


but THIS still does not work:


@UriPath
@Metadata(required="true")
private String path


so I end up having to do this:

      from("jssc:com10?path=com10&baud=19200")


What is wrong with specifying it as a path parameter whose name
matches the 'syntax' in the @UriEndpoint annotation - shouldn't that
work?


*https://github.com/wz2b/camel-jssc/blob/master/src/main/java/com/autofrog/camel/JsscEndpoint.java
<https://github.com/wz2b/camel-jssc/blob/master/src/main/java/com/autofrog/camel/JsscEndpoint.java>*


--Chris








On Tue, Apr 7, 2015 at 10:59 AM, Claus Ibsen <claus.ib...@gmail.com> wrote:

> A component must have a default no-arg constructor.
>
> So add that, and call super(JsscEndpoint.class) and remove the other
> constructors as they are not really needed.
>
> On Tue, Apr 7, 2015 at 4:55 PM, Christopher Piggott <cpigg...@gmail.com>
> wrote:
> > I will try that, thanks.
> >
> > For a test, I just tried getting back to basics, and getting rid of all
> the
> > Uri configuration entirely - just to see what happens.  I still have
> > META-INF/services/org/apache/camel/component/jssc (a text file) which
> > allows me to do:
> >
> >     from("jssc:com10?baud=19200") ...
> >
> > and it locates the component just fine.  The next thing I did was change
> > the Component to extend UriEndpointComponent rather than
> DefaultComponent.
> > That broke it as follows:
> >
> > 2015-04-07 10:15:41,550 [main] ERROR app.tasks.CamelTask - Failed to
> start
> > camel
> > org.apache.camel.FailedToCreateRouteException: Failed to create route
> > route1: Route(route1)[[From[jssc:com10?baud=19200]] -> [To[xmpp://cl...
> > because of Failed to resolve endpoint: jssc://com10?baud=19200 due to:
> > Cannot auto create component: jssc
> >
> > So something, by doing that, just broke its ability to locate the
> endpoint
> > by name using the entry in META-INF.  The stack trace it gives me is not
> > exceptionally helpful; what it's really telling me is that it can't
> locate
> > my component.  What's especially confusing is that a UriEndpointComponent
> > extends DefaultComponent so it seems like, as far as camel is concerned,
> > they should be the same thing.
> >
> >
> > I checked in what I have so far ...
> >
> >
> https://github.com/wz2b/camel-jssc/tree/master/src/main/java/com/autofrog/camel
> >
> >
> >
> >
> > On Tue, Apr 7, 2015 at 9:36 AM, Claus Ibsen <claus.ib...@gmail.com>
> wrote:
> >
> >> Hi
> >>
> >> Oh if you have this as a component outside Camel, then you need to add
> >> the apt plugin
> >>
> https://github.com/apache/activemq/blob/master/activemq-camel/pom.xml#L63
> >>
> >> And this plugin if you want to include a .properties file in the JAR
> >> with a list of components it contains
> >>
> https://github.com/apache/activemq/blob/master/activemq-camel/pom.xml#L217
> >>
> >> Then you do the same as all the components in Apache Camel.
> >>
> >> On Tue, Apr 7, 2015 at 3:34 PM, Claus Ibsen <claus.ib...@gmail.com>
> wrote:
> >> > Hi
> >> >
> >> > All the 150+ components is an example of this. Just pick a similar /
> >> > simple component and see its source code.
> >> >
> >> > On Tue, Apr 7, 2015 at 3:12 PM, Christopher Piggott <
> cpigg...@gmail.com>
> >> wrote:
> >> >> Hi,
> >> >>
> >> >> According to
> >> >>
> https://cwiki.apache.org/confluence/display/CAMEL/Camel+2.15.0+Release
> >> >>
> >> >>
> >> >>    - Custom components using @UriEndpoint must now include a syntax
> >> >>    attribute to document the uri syntax of the endpoint, when using
> the
> >> apt
> >> >>    compiler plugin to generate documentation.
> >> >>
> >> >>
> >> >> I'm looking for documentation on this and not really finding how to
> use
> >> it
> >> >> or simple examples:
> >> >>
> >> >>
> >> >>    - http://camel.apache.org/endpoint-annotations.html  says what it
> >> is,
> >> >>    but not how to use it
> >> >>    -
> >> >>
> >>
> https://github.com/sigrist/camel-rxtx/blob/master/src/main/java/org/apache/camel/rxtx/RxTxEndpoint.java
> >> >>    is an example soembody wrote that uses @UriParam ... that works
> >> fine, but
> >> >>    when I try to add a @UriPath parameter it silently ends up  null
> >> >>    - Tons of examples in git but most of them don't have a 'syntax='
> so
> >> I
> >> >>    must be looking at old source
> >> >>
> >> >>
> >> >> Trying to piece all this together from scarce examples and
> >> documentation:
> >> >>
> >> >>
> >> >>    - It doesn't seem like I really need to extend
> >> UriComponentConfiguration
> >> >>    at all, do I?  If I declare my component a @ManagedResource it
> seems
> >> to
> >> >>    bind all the @UriParam just fine.  It doesn't bind the @UriPath
> >> parameters,
> >> >>    though, and fails to do so silently, despite the fact that they
> are
> >> marked
> >> >>    @Meadata(required = "true").
> >> >>    - Are there any simple examples out there using
> >> >>    @UriComponentConfiguration ?
> >> >>
> >> >>
> >> >> --Chris
> >> >
> >> >
> >> >
> >> > --
> >> > Claus Ibsen
> >> > -----------------
> >> > Red Hat, Inc.
> >> > Email: cib...@redhat.com
> >> > Twitter: davsclaus
> >> > Blog: http://davsclaus.com
> >> > Author of Camel in Action: http://www.manning.com/ibsen
> >> > hawtio: http://hawt.io/
> >> > fabric8: http://fabric8.io/
> >>
> >>
> >>
> >> --
> >> Claus Ibsen
> >> -----------------
> >> Red Hat, Inc.
> >> Email: cib...@redhat.com
> >> Twitter: davsclaus
> >> Blog: http://davsclaus.com
> >> Author of Camel in Action: http://www.manning.com/ibsen
> >> hawtio: http://hawt.io/
> >> fabric8: http://fabric8.io/
> >>
>
>
>
> --
> Claus Ibsen
> -----------------
> Red Hat, Inc.
> Email: cib...@redhat.com
> Twitter: davsclaus
> Blog: http://davsclaus.com
> Author of Camel in Action: http://www.manning.com/ibsen
> hawtio: http://hawt.io/
> fabric8: http://fabric8.io/
>

Reply via email to