Maybe I don't have all of the auto discovery setup correctly.

The *META-INF/services/org/apache/camel/component/mina2 file looks like
this:

class=org.apache.camel.component.mina2.Mina2Component

My Mina2Component is very straight-forard and looks like this:

public class Mina2Component extends DefaultComponent {

  private static final transient Logger LOG =
LoggerFactory.getLogger(Mina2Component.class);
  private Mina2Configuration configuration;

  public Mina2Component() {
  }

  public Mina2Component(CamelContext context) {
    super(context);
  }

  @Override
  protected Endpoint createEndpoint(String uri, String remaining,
Map<String, Object> parameters) throws Exception {
    // Using the configuration which set by the component as a default one
    // Since the configuration's properties will be set by the URI
    // we need to copy or create a new MinaConfiguration here
    Mina2Configuration config;
    if (configuration != null) {
      config = configuration.copy();
    }
    else {
      config = new Mina2Configuration();
    }

    URI u = new URI(remaining);
    config.setHost(u.getHost());
    config.setPort(u.getPort());
    config.setProtocol(u.getScheme());
    config.setFilters(resolveAndRemoveReferenceListParameter(parameters,
"filters", IoFilter.class));
    setProperties(config, parameters);

    return createEndpoint(uri, config);
  }

  public Endpoint createEndpoint(Mina2Configuration config) throws
Exception {
    return createEndpoint(null, config);
  }

  private Endpoint createEndpoint(String uri, Mina2Configuration config)
throws Exception {
    ObjectHelper.notNull(getCamelContext(), "camelContext");
    configuration = config;
    Endpoint epoint = null;
    String protocol = config.getProtocol();
    // if mistyped uri then protocol can be null
    if (protocol != null) {
      if (protocol.equals("tcp")
          || config.isDatagramProtocol()
          || protocol.equals("vm")) {
        epoint = new Mina2Endpoint(uri, this);
      }
      else {
        // protocol not resolved so error
        throw new IllegalArgumentException("Unrecognised MINA protocol: " +
protocol + " for uri: " + uri);
      }
    }
    return epoint;
  }

  // Properties

//-------------------------------------------------------------------------
  public Mina2Configuration getConfiguration() {
    return configuration;
  }

  public void setConfiguration(Mina2Configuration configuration) {
    this.configuration = configuration;
  }
}


Now what?

-Chad


*On Sun, Oct 30, 2011 at 3:40 PM, Johan Edstrom <seij...@gmail.com> wrote:

> Do you have all of the auto discovery files there correctly?
>
> http://camel.apache.org/writing-components.html
>
> /je
>
> On Oct 30, 2011, at 1:10 PM, Chad Beaulac wrote:
>
> > I'm working on a mina2 component. Unit tests that use the Java DSL pass.
> > Unit tests that use the TemplateProducer fail with an error like:
> > (From the Mina2ComponentTest.testMistypedProtocol)
> > org.apache.camel.ResolveEndpointFailedException: Failed to resolve
> > endpoint: mina2://tcp//localhost:8080 due to: No component found with
> scheme:
> > mina2
> >
> > Java DSL with something like the route below work fine:
> >     from("mina2:udp://127.0.0.1:10111?sync=false&minaLogger=true
> ").to("mock:result");
> >
> >
> > Maybe I'm suppose to add something to features.xml but I'm not sure what
> > and I'm not sure if that's the issue.
> >
> > Any insight/help is very appreciated.
> >
> > Thanks,
> > Chad
>
>

Reply via email to