// 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();
}
}