// Path: src/main/java/org/audit4j/microservice/core/ConfigurationManager.java
// public class ConfigurationManager {
// 
// 	private ConfigProvider<ServerConfiguration> configProvider;
// 
// 	private String configPath = "conf/server.config.yml";
// 
// 	public ConfigurationManager(String configPath) {
// 	    this.configPath = configPath;
// 		configProvider = new YAMLConfigProvider<>(ServerConfiguration.class);
// 	}
// 
// 	public ServerConfiguration loadConfiguration() throws ConfigurationException {
// 		ServerConfiguration config = null;
// 			config = configProvider
// 					.readConfig(configPath);
// 		return config;
// 	}
// 
// 	static InputStream getClasspathResourceAsStream(String resourceName) {
// 		return ClassLoaderUtils.getClassLoader(Configurations.class)
// 				.getResourceAsStream(resourceName);
// 	}
// }
// 
// Path: src/main/java/org/audit4j/microservice/core/Context.java
// public interface Context {
// 
// 	void start() throws InitializationException;
// 	
// 	void stop();
// 	
// 	void enable();
// 	
// 	void disable();
// 	
// 	void terminate();
// }
// 
// Path: src/main/java/org/audit4j/microservice/core/HTTPServer.java
// public interface HTTPServer extends Initializable{
// 
//     void setPort(int port);
//     
//     public static HTTPServer create(int port) {
//         return new VertxServer(port);
//       }
// }
// 
// Path: src/main/java/org/audit4j/microservice/core/Transport.java
// public abstract class Transport implements Initializable {
// 
// 	/** The reciever. */
// 	EventReceiver reciever = new EventReceiverImpl();
// 	
// 	/** The properties. */
// 	private Map<String, String> properties;
// 
// 	/**
// 	 * Receive.
// 	 *
// 	 * @param event the event
// 	 */
// 	public void receive(AuditEvent event) {
// 		reciever.receive(event);
// 	}
// 
// 	/**
// 	 * Gets the property.
// 	 *
// 	 * @param key the key
// 	 * @return the property
// 	 */
// 	public String getProperty(String key) {
//         return properties.get(key);
//     }
// 	
// 	/**
// 	 * Sets the properties.
// 	 *
// 	 * @param properties the properties
// 	 */
// 	public void setProperties(final Map<String, String> properties) {
// 		this.properties = properties;
// 	}
// 
//     public EventReceiver getReciever() {
//         return reciever;
//     }
// }


import java.io.IOException;
import org.audit4j.core.AuditManager;
import org.audit4j.core.exception.ConfigurationException;
import org.audit4j.core.exception.InitializationException;
import org.audit4j.microservice.core.ConfigurationManager;
import org.audit4j.microservice.core.Context;
import org.audit4j.microservice.core.HTTPServer;
import org.audit4j.microservice.core.Transport;
package org.audit4j.microservice;



class ServerContext implements Context {

    private String serverConfigFilePath = "../conf/server.config.yml";

    private String audit4jConfigFilePath = "../conf/audit4j.conf.yml";

    private ServerConfiguration config;

// Path: src/main/java/org/audit4j/microservice/core/ConfigurationManager.java
// public class ConfigurationManager {
// 
// 	private ConfigProvider<ServerConfiguration> configProvider;
// 
// 	private String configPath = "conf/server.config.yml";
// 
// 	public ConfigurationManager(String configPath) {
// 	    this.configPath = configPath;
// 		configProvider = new YAMLConfigProvider<>(ServerConfiguration.class);
// 	}
// 
// 	public ServerConfiguration loadConfiguration() throws ConfigurationException {
// 		ServerConfiguration config = null;
// 			config = configProvider
// 					.readConfig(configPath);
// 		return config;
// 	}
// 
// 	static InputStream getClasspathResourceAsStream(String resourceName) {
// 		return ClassLoaderUtils.getClassLoader(Configurations.class)
// 				.getResourceAsStream(resourceName);
// 	}
// }
// 
// Path: src/main/java/org/audit4j/microservice/core/Context.java
// public interface Context {
// 
// 	void start() throws InitializationException;
// 	
// 	void stop();
// 	
// 	void enable();
// 	
// 	void disable();
// 	
// 	void terminate();
// }
// 
// Path: src/main/java/org/audit4j/microservice/core/HTTPServer.java
// public interface HTTPServer extends Initializable{
// 
//     void setPort(int port);
//     
//     public static HTTPServer create(int port) {
//         return new VertxServer(port);
//       }
// }
// 
// Path: src/main/java/org/audit4j/microservice/core/Transport.java
// public abstract class Transport implements Initializable {
// 
// 	/** The reciever. */
// 	EventReceiver reciever = new EventReceiverImpl();
// 	
// 	/** The properties. */
// 	private Map<String, String> properties;
// 
// 	/**
// 	 * Receive.
// 	 *
// 	 * @param event the event
// 	 */
// 	public void receive(AuditEvent event) {
// 		reciever.receive(event);
// 	}
// 
// 	/**
// 	 * Gets the property.
// 	 *
// 	 * @param key the key
// 	 * @return the property
// 	 */
// 	public String getProperty(String key) {
//         return properties.get(key);
//     }
// 	
// 	/**
// 	 * Sets the properties.
// 	 *
// 	 * @param properties the properties
// 	 */
// 	public void setProperties(final Map<String, String> properties) {
// 		this.properties = properties;
// 	}
// 
//     public EventReceiver getReciever() {
//         return reciever;
//     }
// }


// Path: src/main/java/org/audit4j/microservice/ServerContext.java
import java.io.IOException;
import org.audit4j.core.AuditManager;
import org.audit4j.core.exception.ConfigurationException;
import org.audit4j.core.exception.InitializationException;
import org.audit4j.microservice.core.ConfigurationManager;
import org.audit4j.microservice.core.Context;
import org.audit4j.microservice.core.HTTPServer;
import org.audit4j.microservice.core.Transport;

package org.audit4j.microservice;



class ServerContext implements Context {

    private String serverConfigFilePath = "../conf/server.config.yml";

    private String audit4jConfigFilePath = "../conf/audit4j.conf.yml";

    private ServerConfiguration config;

    HTTPServer httpServer = HTTPServer.create(8080);