Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright (c) SiteWhere, LLC. All rights reserved. http://www.sitewhere.com
   *
   * The software in this package is published under the terms of the CPAL v1.0
   * license, a copy of which has been included with this distribution in the
   * LICENSE.txt file.
   */
  package com.sitewhere.server;
  
 import java.util.List;
 import java.util.Map;
 
 
Implementation of com.sitewhere.spi.server.ISiteWhereServer for community edition.

Author(s):
Derek Adams
 
 public class SiteWhereServer extends LifecycleComponent implements ISiteWhereServer {

Private logger instance
 
 	private static Logger LOGGER = Logger.getLogger(SiteWhereServer.class);

Spring context for server
 
Contains version information
 
 	private IVersion version;

Server startup error
 
Provides hierarchical tracing for debugging
 
 	private ITracer tracer = new NullTracer();

Allows Spring configuration to be resolved
 
Interface to user management implementation
 
Device management cache provider implementation
 
Interface to device management implementation
 
Interface to inbound event processor chain
 
Interface to outbound event processor chain
 
Interface to device provisioning implementation
Interface for the asset module manager
Interface for the search provider manager
List of components registered to participate in SiteWhere server lifecycle
Map of component ids to lifecycle components
Metric regsitry
Health check registry
	public SiteWhereServer() {
	}

Get Spring application context for Atlas server objects.

Returns:
	}
	/*
	 * (non-Javadoc)
	 * 
	 * @see com.sitewhere.spi.server.ISiteWhereServer#getVersion()
	 */
	public IVersion getVersion() {
		return ;
	}
	/*
	 * (non-Javadoc)
	 * 
	 * @see com.sitewhere.spi.server.ISiteWhereServer#getServerStartupError()
	 */
	}
	/*
	 * (non-Javadoc)
	 * 
	 * @see com.sitewhere.spi.server.ISiteWhereServer#getTracer()
	 */
	public ITracer getTracer() {
		return ;
	}
	/*
	 * (non-Javadoc)
	 * 
	 * @see com.sitewhere.spi.server.ISiteWhereServer#getConfigurationResolver()
	 */
	}
	/*
	 * (non-Javadoc)
	 * 
	 * @see com.sitewhere.spi.server.ISiteWhereServer#getUserManagement()
	 */
	}
	/*
	 * (non-Javadoc)
	 * 
	 * @see com.sitewhere.spi.server.ISiteWhereServer#getDeviceManagement()
	 */
	}
	/*
	 * (non-Javadoc)
	 * 
	 * @see com.sitewhere.spi.server.ISiteWhereServer#getDeviceManagementCacheProvider()
	 */
	}
	/*
	 * (non-Javadoc)
	 * 
	 * @see com.sitewhere.spi.server.ISiteWhereServer#getInboundEventProcessorChain()
	 */
	}
	/*
	 * (non-Javadoc)
	 * 
	 * @see com.sitewhere.spi.server.ISiteWhereServer#getOutboundEventProcessorChain()
	 */
	}
	/*
	 * (non-Javadoc)
	 * 
	 * @see com.sitewhere.spi.server.ISiteWhereServer#getDeviceProvisioning()
	 */
	}
	/*
	 * (non-Javadoc)
	 * 
	 * @see com.sitewhere.spi.server.ISiteWhereServer#getAssetModuleManager()
	 */
	}
	/*
	 * (non-Javadoc)
	 * 
	 * @see com.sitewhere.spi.server.ISiteWhereServer#getSearchProviderManager()
	 */
	}
	/*
	 * (non-Javadoc)
	 * 
	 * @see com.sitewhere.spi.server.ISiteWhereServer#getRegisteredLifecycleComponents()
	 */
	}
	/*
	 * (non-Javadoc)
	 * 
	 * @see com.sitewhere.spi.server.ISiteWhereServer#getMetricRegistry()
	 */
	}
	/*
	 * (non-Javadoc)
	 * 
	 * @see com.sitewhere.spi.server.ISiteWhereServer#getHealthCheckRegistry()
	 */
	}

Returns a fake account used for operations on the data model done by the system.

		User fake = new User();
		fake.setUsername("system");
		SitewhereAuthentication auth = new SitewhereAuthentication(detailsnull);
		return auth;
	}
	/*
	 * (non-Javadoc)
	 * 
	 * @see com.sitewhere.spi.server.lifecycle.ILifecycleComponent#start()
	 */
	public void start() throws SiteWhereException {
		// Clear the component list.
		// Start all lifecycle components.
			startNestedComponent(componentcomponent.getComponentName() + " startup failed."true);
		}
		// Start device management.
		startNestedComponent(getDeviceManagement(), "Device management startup failed."true);
		// Start device management cache provider if specificed.
					"Device management cache provider startup failed."true);
		}
		// Start user management.
		startNestedComponent(getUserManagement(), "User management startup failed."true);
		// Start asset module manager.
		startNestedComponent(getAssetModuleManager(), "Asset module manager startup failed."true);
		// Start search provider manager.
		startNestedComponent(getSearchProviderManager(), "Search provider manager startup failed."true);
		// Populate data if requested.
		// Enable provisioning.
		if (getOutboundEventProcessorChain() != null) {
					"Outbound processor chain startup failed."true);
		}
		if (getInboundEventProcessorChain() != null) {
			startNestedComponent(getInboundEventProcessorChain(), "Inbound processor chain startup failed.",
					true);
		}
		// Start device provisioning.
		startNestedComponent(getDeviceProvisioning(), "Device provisioning startup failed."true);
		// Force refresh on components-by-id map.
	}
	/*
	 * (non-Javadoc)
	 * 
	 * @see com.sitewhere.spi.server.lifecycle.ILifecycleComponent#getLogger()
	 */
	public Logger getLogger() {
		return ;
	}
	/*
	 * (non-Javadoc)
	 * 
	 * @see com.sitewhere.server.lifecycle.LifecycleComponent#getComponentName()
	 */
		return "SiteWhere Server " + getVersion().getEditionIdentifier() + " "
	}
	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * com.sitewhere.spi.server.ISiteWhereServer#getLifecycleComponentById(java.lang.String
	 * )
	 */
	}

Recursively navigates component structure and creates a map of components by id.

Parameters:
current
map
		map.put(current.getComponentId(), current);
		for (ILifecycleComponent sub : current.getLifecycleComponents()) {
		}
	}
	/*
	 * (non-Javadoc)
	 * 
	 * @see com.sitewhere.spi.server.lifecycle.ILifecycleComponent#stop()
	 */
	public void stop() throws SiteWhereException {
		// Disable provisioning.
		// Stop core management implementations.
		}
		// Start all lifecycle components.
			component.lifecycleStop();
		}
	}
	/*
	 * (non-Javadoc)
	 * 
	 * @see com.sitewhere.spi.server.ISiteWhereServer#initialize()
	 */
	public void initialize() throws SiteWhereException {
		.info("Initializing SiteWhere server components.");
		this. = VersionHelper.getVersion();
		// Initialize Spring.
		// Initialize tracer.
		// Initialize device provisioning.
		// Initialize device management.
		// Initialize processing chain for inbound events.
		// Initialize user management.
		// Initialize asset management.
		// Initialize search provider management.
		// Show banner containing server information.
	}

Displays the server information banner in the log.
	protected void showServerBanner() {
		String os = System.getProperty("os.name") + " (" + System.getProperty("os.version") + ")";
		String java = System.getProperty("java.vendor") + " (" + System.getProperty("java.version") + ")";
		// Print version information.
		List<Stringmessages = new ArrayList<String>();
		messages.add("SiteWhere Server " + .getEdition());
		messages.add("");
		messages.add("Version: " + .getVersionIdentifier() + "." + .getBuildTimestamp());
		messages.add("Operating System: " + os);
		messages.add("Java Runtime: " + java);
		messages.add("");
		messages.add("Copyright (c) 2009-2015 SiteWhere, LLC");
		String message = StringMessageUtils.getBoilerPlate(messages'*', 60);
		.info("\n" + message + "\n");
	}

Allows subclasses to add their own banner messages.

Parameters:
messages
	protected void addBannerMessages(List<Stringmessages) {
	}

Verifies and loads the Spring configuration file.

	protected void initializeSpringContext() throws SiteWhereException {
		if (extConfig != null) {
else {
		}
	}

Initialize debug tracing implementation.

	protected void initializeTracer() throws SiteWhereException {
		try {
			.info("Tracer implementation using: " + .getClass().getName());
			.info("No Tracer implementation configured.");
			this. = new NullTracer();
		}
	}

Initialize device management implementation and associated decorators.

	protected void initializeDeviceManagement() throws SiteWhereException {
		// Load device management cache provider if configured.
		try {
			.info("Device management cache provider using: "
			.info("No device management cache provider configured. Caching disabled.");
		}
		// Verify that a device management implementation exists.
		try {
			IDeviceManagement deviceManagementImpl =
			this. = configureDeviceManagement(deviceManagementImpl);
			.info("Device management implementation using: "
deviceManagementImpl.getClass().getName());
			throw new SiteWhereException("No device management implementation configured.");
		}
	}

Configure device management implementation by injecting configured options or wrapping to add functionality.

Parameters:
wrapped
Returns:
Throws:
com.sitewhere.spi.SiteWhereException
		// Inject cache provider if available.
			if (management instanceof ICachingDeviceManagement) {
				.info("Device management implementation is using configured cache provider.");
else {
				.info("Device management implementation not using cache provider.");
			}
		}
		// If device event processor chain is defined, use it.
		try {
			management = new OutboundProcessingStrategyDecorator(management);
			.info("Event processor chain found with "
.getProcessors().size() + " processors.");
			.info("No outbound event processor chain found in configuration file.");
		}
		return management;
	}

Initializes the com.sitewhere.spi.device.event.processor.IInboundEventProcessorChain that handles events coming into the system from external devices.

		try {
			.info("No inbound event processor chain found in configuration file.");
		}
	}

Verify and initialize device provisioning implementation.

	protected void initializeDeviceProvisioning() throws SiteWhereException {
		try {
			throw new SiteWhereException("No device provisioning implementation configured.");
		}
	}

Verify and initialize user management implementation.

	protected void initializeUserManagement() throws SiteWhereException {
		try {
			throw new SiteWhereException("No user management implementation configured.");
		}
	}

Verify and initialize asset module manager.

	protected void initializeAssetManagement() throws SiteWhereException {
		try {
			throw new SiteWhereException("No asset module manager implementation configured.");
		}
	}

Verify and initialize search provider manager.

		try {
			throw new SiteWhereException("No search provider manager implementation configured.");
		}
	}

Read a line from standard in.

	protected String readLine() throws SiteWhereException {
		try {
			return br.readLine();
catch (IOException e) {
			throw new SiteWhereException(e);
		}
	}

Check whether user model is populated and offer to bootstrap system if not.
	protected void verifyUserModel() {
		try {
			if (users.size() == 0) {
				List<Stringmessages = new ArrayList<String>();
				messages.add("User model is currently empty. A default user and permissions can be "
"created automatically so that the admin interface and web services can authenticate. "
"Create default user and permissions now?");
				String message = StringMessageUtils.getBoilerPlate(messages'*', 60);
				.info("\n" + message + "\n");
				..println("Initialize user model? Yes/No (Default is Yes)");
				String response = readLine();
				if ((response == null) && (init.isInitializeIfNoConsole())) {
					response = "Y";
else if ((response == null) && (!init.isInitializeIfNoConsole())) {
					response = "N";
				}
				if ((response.length() == 0) || (response.toLowerCase().startsWith("y"))) {
				}
			}
			.info("No user model initializer found in Spring bean configuration. Skipping.");
			return;
catch (SiteWhereException e) {
			.warn("Error verifying user model."e);
		}
	}

Check whether device model is populated and offer to bootstrap system if not.
	protected void verifyDeviceModel() {
		try {
			if (sites.getNumResults() == 0) {
				List<Stringmessages = new ArrayList<String>();
				messages.add("There are currently no sites defined in the system. You have the option of loading "
"a default dataset for previewing system functionality. Would you like to load the default "
"dataset?");
				String message = StringMessageUtils.getBoilerPlate(messages'*', 60);
				.info("\n" + message + "\n");
				..println("Load default dataset? Yes/No (Default is Yes)");
				String response = readLine();
				if ((response == null) && (init.isInitializeIfNoConsole())) {
					response = "Y";
else if ((response == null) && (!init.isInitializeIfNoConsole())) {
					response = "N";
				}
				if ((response.length() == 0) || (response.toLowerCase().startsWith("y"))) {
				}
			}
			.info("No device model initializer found in Spring bean configuration. Skipping.");
			return;
catch (SiteWhereException e) {
			.warn("Unable to read from device model."e);
		}
	}
New to GrepCode? Check out our FAQ X