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 <[email protected]> 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
>
>