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.device.communication;
  
 
Base logic for com.sitewhere.spi.device.communication.IRegistrationManager implementations.

Author(s):
Derek
 
 public class RegistrationManager extends LifecycleComponent implements IRegistrationManager {

Static logger instance
 
 	private static Logger LOGGER = Logger.getLogger(RegistrationManager.class);

Indicates if new devices can register with the system
 
 	private boolean allowNewDevices = true;

Indicates if devices can be auto-assigned if no site token is passed
 
 	private boolean autoAssignSite = true;

Token used if autoAssignSite is enabled
 
 	private String autoAssignSiteToken = null;
 
 	public RegistrationManager() {
 	}
 
 	/*
 	 * (non-Javadoc)
 	 * 
 	 * @see
 	 * com.sitewhere.spi.device.communication.IRegistrationManager#handleDeviceRegistration
 	 * (com.sitewhere.spi.device.event.request.IDeviceRegistrationRequest)
 	 */
 		.debug("Handling device registration request.");
 		IDevice device =
 		IDeviceSpecification specification =
 
 		// If a site token is passed, verify it is valid.
 		if (request.getSiteToken() != null) {
 			if (SiteWhere.getServer().getDeviceManagement().getSiteByToken(request.getSiteToken()) == null) {
 				.warn("Ignoring device registration request because of invalid site token.");
 				return;
 			}
 		}
 		// Create device if it does not already exist.
 		if (device == null) {
 			if (!isAllowNewDevices()) {
 				.warn("Ignoring device registration request since new devices are not allowed.");
 				return;
 			}
 			if (specification == null) {
 				return;
 			}
 			if ((!isAutoAssignSite()) && (request.getSiteToken() == null)) {
 				return;
 			}
 			if (isAutoAssignSite() && (getAutoAssignSiteToken() == null)) {
 				if (getAutoAssignSiteToken() == null) {
 					throw new SiteWhereException("Unable to register device. No sites are configured.");
 				}
 			}
 			String siteToken =
 					(request.getSiteToken() != null) ? request.getSiteToken() : getAutoAssignSiteToken();
 			.debug("Creating new device as part of registration.");
			DeviceCreateRequest deviceCreate = new DeviceCreateRequest();
			deviceCreate.setHardwareId(request.getHardwareId());
			deviceCreate.setSiteToken(siteToken);
			deviceCreate.setComments("Device created by on-demand registration.");
			deviceCreate.setMetadata(request.getMetadata());
			device = SiteWhere.getServer().getDeviceManagement().createDevice(deviceCreate);
else if (!device.getSpecificationToken().equals(request.getSpecificationToken())) {
			return;
		}
		// Make sure device is assigned.
		if (device.getAssignmentToken() == null) {
			.debug("Handling unassigned device for registration.");
			assnCreate.setDeviceHardwareId(device.getHardwareId());
		}
		boolean isNewRegistration = (device != null);
		sendRegistrationAck(request.getHardwareId(), isNewRegistration);
	}

Send a registration ack message.

Parameters:
hardwareId
newRegistration
Throws:
com.sitewhere.spi.SiteWhereException
	protected void sendRegistrationAck(String hardwareIdboolean newRegistrationthrows SiteWhereException {
	}

Send a message indicating that the registration manager does not allow registration of new devices.

Parameters:
hardwareId
Throws:
com.sitewhere.spi.SiteWhereException
	protected void sendNoNewDevicesAllowed(String hardwareIdthrows SiteWhereException {
		command.setErrorMessage("Registration manager does not allow new devices to be created.");
	}

Send a message indicating invalid specification id or one that does not match existing device.

Parameters:
hardwareId
Throws:
com.sitewhere.spi.SiteWhereException
	protected void sendInvalidSpecification(String hardwareIdthrows SiteWhereException {
		command.setErrorMessage("Specification token passed in registration was invalid.");
	}

Send information indicating a site token must be passed (if not auto-assigned).

Parameters:
hardwareId
Throws:
com.sitewhere.spi.SiteWhereException
	protected void sendSiteTokenRequired(String hardwareIdthrows SiteWhereException {
		command.setErrorMessage("Automatic site assignment disabled. Site token required.");
	}
	/*
	 * (non-Javadoc)
	 * 
	 * @see com.sitewhere.spi.server.lifecycle.ILifecycleComponent#start()
	 */
	public void start() throws SiteWhereException {
			if (getAutoAssignSiteToken() == null) {
else {
				ISite site =
				if (site == null) {
					throw new SiteWhereException(
							"Registration manager auto assignment site token is invalid.");
				}
			}
		}
	}
	/*
	 * (non-Javadoc)
	 * 
	 * @see com.sitewhere.spi.server.lifecycle.ILifecycleComponent#getLogger()
	 */
	public Logger getLogger() {
		return ;
	}

Update token for auto-assigned site to first site in list.

	protected void updateAutoAssignToFirstSite() throws SiteWhereException {
		if (sites.getResults().isEmpty()) {
			.warn("Registration manager configured for auto-assign site, but no sites were found.");
else {
		}
	}
	/*
	 * (non-Javadoc)
	 * 
	 * @see com.sitewhere.spi.server.lifecycle.ILifecycleComponent#stop()
	 */
	public void stop() throws SiteWhereException {
	}
	public boolean isAllowNewDevices() {
	}
	public void setAllowNewDevices(boolean allowNewDevices) {
		this. = allowNewDevices;
	}
	public boolean isAutoAssignSite() {
	}
	public void setAutoAssignSite(boolean autoAssignSite) {
		this. = autoAssignSite;
	}
	}
	public void setAutoAssignSiteToken(String autoAssignSiteToken) {
		this. = autoAssignSiteToken;
	}
New to GrepCode? Check out our FAQ X