// Copyright 2014-2015 Boundary, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package com.boundary.sdk.event;
import org.apache.camel.spring.Main;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * Wrapper class for creating camel applications
 * Derived classes need only provide the name of the application and a URI
 * to the Spring camel configuration. Allows the quick creation of applications
 * from just a spring configuration file.
 * 
 * <pre>
 *  public class SyslogEventAdapter extends CamelApplication {
 *  
 *      public static void main(String [] args) throws Exception {
 *          MyCamelApp app = new MyCamelApp(
 *          	"META-INF/spring/syslog-event-adapter.xml",
 *              "My Camel App");
 *          app.boot();
 *      }
 * }
 * </pre>
 *
 */
public class CamelApplication
{
	private static Logger LOG = LoggerFactory.getLogger(CamelApplication.class);

    protected Main main;

	private String uri;
	private String name;
    
	/**
	 * Construct a camel application with a name identifying the application and
	 * a Spring camel configuration file
	 * 
	 * @param uri Points to Spring camel configuration file
	 * @param name Name of the application, outputs on start up
	 */
    CamelApplication(String uri,String name) {
    	this.uri = uri;
    	this.name = name;
    }
    /**
     * Starts a camel application context
     * 
     * @throws Exception Upon any error
     */
    protected void boot() throws Exception
    {
        // create a Main instance
        main = new Main();
        
        // enable hangup support so you can press ctrl + c to terminate the JVM
        main.enableHangupSupport();
        
        // Get spring definition of the routes to start
        LOG.info("Loading application context from: " + uri);
        
        // Set the application context that configures the camel routes
        main.setApplicationContextUri(uri);
         
        // run until you terminate the JVM
        LOG.info("Starting {}",this.name);
        main.run(); 
    }
}

// Copyright 2014-2015 Boundary, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package com.boundary.sdk.event;
import org.apache.camel.spring.Main;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * Wrapper class for creating camel applications
 * Derived classes need only provide the name of the application and a URI
 * to the Spring camel configuration. Allows the quick creation of applications
 * from just a spring configuration file.
 * 
 * <pre>
 *  public class SyslogEventAdapter extends CamelApplication {
 *  
 *      public static void main(String [] args) throws Exception {
 *          MyCamelApp app = new MyCamelApp(
 *          	"META-INF/spring/syslog-event-adapter.xml",
 *              "My Camel App");
 *          app.boot();
 *      }
 * }
 * </pre>
 *
 */
public class CamelApplication
{
	private static Logger LOG = LoggerFactory.getLogger(CamelApplication.class);

    protected Main main;

	private String uri;
	private String name;
    
	/**
	 * Construct a camel application with a name identifying the application and
	 * a Spring camel configuration file
	 * 
	 * @param uri Points to Spring camel configuration file
	 * @param name Name of the application, outputs on start up
	 */
    public CamelApplication(String uri,String name) {
    	this.uri = uri;
    	this.name = name;
    }
    /**
     * Starts a camel application context
     * 
     * @throws Exception Upon any error
     */
    protected void boot() throws Exception
    {
        // create a Main instance
        main = new Main();
        
        // enable hangup support so you can press ctrl + c to terminate the JVM
        main.enableHangupSupport();
        
        // Get spring definition of the routes to start
        LOG.info("Loading application context from: " + uri);
        
        // Set the application context that configures the camel routes
        main.setApplicationContextUri(uri);
         
        // run until you terminate the JVM
        LOG.info("Starting {}",this.name);
        main.run(); 
    }
}

Change access to default constructor