Hi Camel Experts,

I am newbie to Apache Camel and was doing a hands-on tutorial to create a 
custom component. That's when I stumbled on this as to why 
DefaultEndpoint.createEndpointUri() is not an abstract method, even when it has 
to be overwritten.

The implementation of this method in the parent class - DefaultEndpoint- 
returns null:

    /**
     * A factory method to lazily create the endpointUri if none is specified
     */
    protected String createEndpointUri() {
        return null;
    }


 My custom endpoint was extending the DefaultEndpoint and as a first step I 
only over-rode the abstract method. This led me to the following exception on 
context start up. My camel context is embedded in tomcat:

java.lang.IllegalArgumentException: endpointUri is not specified and 
com.kronos.prince.camel.endpoint.MyJDBCEndpoint does not implement 
createEndpointUri() to create a default value
        at 
org.apache.camel.impl.DefaultEndpoint.getEndpointUri(DefaultEndpoint.java:154)
        at 
org.apache.camel.impl.DefaultEndpoint.toString(DefaultEndpoint.java:139)
        at java.lang.String.valueOf(String.java:2854)
        at java.lang.StringBuilder.append(StringBuilder.java:128)
        at 
org.apache.camel.impl.EventDrivenConsumerRoute.toString(EventDrivenConsumerRoute.java:50)
        at 
org.apache.camel.management.mbean.ManagedRoute.<init>(ManagedRoute.java:62)
        at 
org.apache.camel.management.mbean.ManagedSuspendableRoute.<init>(ManagedSuspendableRoute.java:30)
        at 
org.apache.camel.management.DefaultManagementObjectStrategy.getManagedObjectForRoute(DefaultManagementObjectStrategy.java:119)
        at 
org.apache.camel.management.DefaultManagementLifecycleStrategy.onRoutesAdd(DefaultManagementLifecycleStrategy.java:523)
        at org.apache.camel.impl.RouteService.warmUp(RouteService.java:156)
        at 
org.apache.camel.impl.DefaultCamelContext.doWarmUpRoutes(DefaultCamelContext.java:2109)
        at 
org.apache.camel.impl.DefaultCamelContext.safelyStartRouteServices(DefaultCamelContext.java:2039)
        at 
org.apache.camel.impl.DefaultCamelContext.doStartOrResumeRoutes(DefaultCamelContext.java:1827)
        at 
org.apache.camel.impl.DefaultCamelContext.doStartCamel(DefaultCamelContext.java:1699)
        at 
org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:1544)
        at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61)

        at 
org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:1512)
        at 
org.apache.camel.component.servletlistener.CamelServletContextListener.contextInitialized(CamelServletContextListener.java:162)
        at 
org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4791)
        at 
org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5285)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        at 
org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
        at 
org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:618)

        at 
org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1100)
        at 
org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1618)
        at 
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
        at java.util.concurrent.FutureTask.run(FutureTask.java:166)
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
        at java.lang.Thread.run(Thread.java:722)

A search on the net didn't help much to resolve this problem. So, i dived int 
the camel's source code and found out that most of the endpoints like 
JDBCEndpoint, JMSEndpoint override this method. 

Doing the same in my custom endpoint fixed the problem. Am I missing something 
here and there is some other way to over come the above mentioned exception. 

___________________ 
Thks & brgds 
P Manchanda
Mobile: +91-9811210374 

Reply via email to