Fixing merge conflicts

revert-70aa11f8
prabathabey 10 years ago
commit a9a0ac5899

@ -31,26 +31,28 @@ import java.util.List;
*/ */
public interface DeviceManager { public interface DeviceManager {
public boolean enrollDevice(Device device) throws DeviceManagementException; public boolean enrollDevice(Device device) throws DeviceManagementException;
public boolean modifyEnrollment(Device device) throws DeviceManagementException; public boolean modifyEnrollment(Device device) throws DeviceManagementException;
public boolean disenrollDevice(DeviceIdentifier deviceId) throws DeviceManagementException; public boolean disenrollDevice(DeviceIdentifier deviceId) throws DeviceManagementException;
public boolean isEnrolled(DeviceIdentifier deviceId) throws DeviceManagementException; public boolean isEnrolled(DeviceIdentifier deviceId) throws DeviceManagementException;
public boolean isActive(DeviceIdentifier deviceId) throws DeviceManagementException; public boolean isActive(DeviceIdentifier deviceId) throws DeviceManagementException;
public boolean setActive(DeviceIdentifier deviceId, boolean status) throws DeviceManagementException; public boolean setActive(DeviceIdentifier deviceId, boolean status)
throws DeviceManagementException;
public List<Device> getAllDevices(String type) throws DeviceManagementException; public List<Device> getAllDevices(String type) throws DeviceManagementException;
public Device getDevice(DeviceIdentifier deviceId) throws DeviceManagementException; public Device getDevice(DeviceIdentifier deviceId) throws DeviceManagementException;
public boolean updateDeviceInfo(Device device) throws DeviceManagementException; public boolean updateDeviceInfo(Device device) throws DeviceManagementException;
public boolean setOwnership(DeviceIdentifier deviceId, String ownershipType) throws DeviceManagementException; public boolean setOwnership(DeviceIdentifier deviceId, String ownershipType)
throws DeviceManagementException;
public OperationManager getOperationManager(String type) throws DeviceManagementException; public OperationManager getOperationManager(String type) throws DeviceManagementException;
} }

@ -38,149 +38,169 @@ import java.util.List;
public class DeviceManagerImpl implements DeviceManager { public class DeviceManagerImpl implements DeviceManager {
private static Log log = LogFactory.getLog(DeviceManagerImpl.class); private static Log log = LogFactory.getLog(DeviceManagerImpl.class);
private DeviceDAO deviceDAO; private DeviceDAO deviceDAO;
private DeviceTypeDAO deviceTypeDAO; private DeviceTypeDAO deviceTypeDAO;
private DeviceManagementConfig config; private DeviceManagementConfig config;
private DeviceManagementRepository pluginRepository; private DeviceManagementRepository pluginRepository;
public DeviceManagerImpl(DeviceManagementConfig config, DeviceManagementRepository pluginRepository) { public DeviceManagerImpl(DeviceManagementConfig config,
this.config = config; DeviceManagementRepository pluginRepository) {
this.pluginRepository = pluginRepository; this.config = config;
this.deviceDAO = DeviceManagementDAOFactory.getDeviceDAO(); this.pluginRepository = pluginRepository;
this.deviceTypeDAO = DeviceManagementDAOFactory.getDeviceTypeDAO(); this.deviceDAO = DeviceManagementDAOFactory.getDeviceDAO();
} this.deviceTypeDAO = DeviceManagementDAOFactory.getDeviceTypeDAO();
}
@Override
public boolean enrollDevice(Device device) throws DeviceManagementException { @Override
DeviceManagerService dms = this.getPluginRepository().getDeviceManagementProvider(device.getType()); public boolean enrollDevice(Device device) throws DeviceManagementException {
boolean status = dms.enrollDevice(device); DeviceManagerService dms =
try { this.getPluginRepository().getDeviceManagementProvider(device.getType());
org.wso2.carbon.device.mgt.core.dto.Device deviceDto = DeviceManagementDAOUtil.convertDevice(device); boolean status = dms.enrollDevice(device);
Integer deviceTypeId = this.getDeviceTypeDAO().getDeviceTypeIdByDeviceTypeName(device.getType()); try {
deviceDto.setStatus(Status.ACTIVE); org.wso2.carbon.device.mgt.core.dto.Device deviceDto =
deviceDto.setDeviceTypeId(deviceTypeId); DeviceManagementDAOUtil.convertDevice(device);
this.getDeviceDAO().addDevice(deviceDto); Integer deviceTypeId =
} catch (DeviceManagementDAOException e) { this.getDeviceTypeDAO().getDeviceTypeIdByDeviceTypeName(device.getType());
throw new DeviceManagementException("Error occurred while enrolling the device '" + device.getId() + "'", deviceDto.setStatus(Status.ACTIVE);
e); deviceDto.setDeviceTypeId(deviceTypeId);
} this.getDeviceDAO().addDevice(deviceDto);
return status; } catch (DeviceManagementDAOException e) {
} throw new DeviceManagementException(
"Error occurred while enrolling the device '" + device.getId() + "'",
@Override e);
public boolean modifyEnrollment(Device device) throws DeviceManagementException { }
DeviceManagerService dms = this.getPluginRepository().getDeviceManagementProvider(device.getType()); return status;
boolean status = dms.modifyEnrollment(device); }
try {
this.getDeviceDAO().updateDevice(DeviceManagementDAOUtil.convertDevice(device)); @Override
} catch (DeviceManagementDAOException e) { public boolean modifyEnrollment(Device device) throws DeviceManagementException {
throw new DeviceManagementException("Error occurred while modifying the device '" + device.getId() + "'", DeviceManagerService dms =
e); this.getPluginRepository().getDeviceManagementProvider(device.getType());
} boolean status = dms.modifyEnrollment(device);
return status; try {
} this.getDeviceDAO().updateDevice(DeviceManagementDAOUtil.convertDevice(device));
} catch (DeviceManagementDAOException e) {
@Override throw new DeviceManagementException(
public boolean disenrollDevice(DeviceIdentifier deviceId) throws DeviceManagementException { "Error occurred while modifying the device '" + device.getId() + "'",
DeviceManagerService dms = this.getPluginRepository().getDeviceManagementProvider(deviceId.getType()); e);
return dms.disenrollDevice(deviceId); }
} return status;
}
@Override
public boolean isEnrolled(DeviceIdentifier deviceId) throws DeviceManagementException { @Override
DeviceManagerService dms = this.getPluginRepository().getDeviceManagementProvider(deviceId.getType()); public boolean disenrollDevice(DeviceIdentifier deviceId) throws DeviceManagementException {
return dms.isEnrolled(deviceId); DeviceManagerService dms =
} this.getPluginRepository().getDeviceManagementProvider(deviceId.getType());
return dms.disenrollDevice(deviceId);
@Override }
public boolean isActive(DeviceIdentifier deviceId) throws DeviceManagementException {
DeviceManagerService dms = this.getPluginRepository().getDeviceManagementProvider(deviceId.getType()); @Override
return dms.isActive(deviceId); public boolean isEnrolled(DeviceIdentifier deviceId) throws DeviceManagementException {
} DeviceManagerService dms =
this.getPluginRepository().getDeviceManagementProvider(deviceId.getType());
@Override return dms.isEnrolled(deviceId);
public boolean setActive(DeviceIdentifier deviceId, boolean status) throws DeviceManagementException { }
DeviceManagerService dms = this.getPluginRepository().getDeviceManagementProvider(deviceId.getType());
return dms.setActive(deviceId, status); @Override
} public boolean isActive(DeviceIdentifier deviceId) throws DeviceManagementException {
DeviceManagerService dms =
@Override this.getPluginRepository().getDeviceManagementProvider(deviceId.getType());
public List<Device> getAllDevices(String type) throws DeviceManagementException { return dms.isActive(deviceId);
DeviceManagerService dms = this.getPluginRepository().getDeviceManagementProvider(type); }
List<Device> devicesList = new ArrayList<Device>();
try { @Override
Integer deviceTypeId = this.getDeviceTypeDAO().getDeviceTypeIdByDeviceTypeName(type); public boolean setActive(DeviceIdentifier deviceId, boolean status)
List<org.wso2.carbon.device.mgt.core.dto.Device> devices = this.getDeviceDAO().getDevices(deviceTypeId); throws DeviceManagementException {
DeviceManagerService dms =
for (org.wso2.carbon.device.mgt.core.dto.Device device : devices) { this.getPluginRepository().getDeviceManagementProvider(deviceId.getType());
DeviceType deviceType = this.deviceTypeDAO.getDeviceType(device.getDeviceTypeId()); return dms.setActive(deviceId, status);
Device convertedDevice = DeviceManagementDAOUtil.convertDevice(device, deviceType); }
DeviceIdentifier deviceIdentifier = DeviceManagementDAOUtil.createDeviceIdentifier(device, deviceType);
Device dmsDevice = dms.getDevice(deviceIdentifier); @Override
if (dmsDevice != null) { public List<Device> getAllDevices(String type) throws DeviceManagementException {
convertedDevice.setProperties(dmsDevice.getProperties()); DeviceManagerService dms = this.getPluginRepository().getDeviceManagementProvider(type);
convertedDevice.setFeatures(dmsDevice.getFeatures()); List<Device> devicesList = new ArrayList<Device>();
} try {
devicesList.add(convertedDevice); Integer deviceTypeId = this.getDeviceTypeDAO().getDeviceTypeIdByDeviceTypeName(type);
} List<org.wso2.carbon.device.mgt.core.dto.Device> devices =
} catch (DeviceManagementDAOException e) { this.getDeviceDAO().getDevices(deviceTypeId);
throw new DeviceManagementException("Error occurred while obtaining the device for type '" + type + "'", e);
} for (org.wso2.carbon.device.mgt.core.dto.Device device : devices) {
return devicesList; DeviceType deviceType = this.deviceTypeDAO.getDeviceType(device.getDeviceTypeId());
} Device convertedDevice = DeviceManagementDAOUtil.convertDevice(device, deviceType);
DeviceIdentifier deviceIdentifier =
@Override DeviceManagementDAOUtil.createDeviceIdentifier(device, deviceType);
public Device getDevice(DeviceIdentifier deviceId) throws DeviceManagementException { Device dmsDevice = dms.getDevice(deviceIdentifier);
DeviceManagerService dms = this.getPluginRepository().getDeviceManagementProvider(deviceId.getType()); if (dmsDevice != null) {
Device convertedDevice = null; convertedDevice.setProperties(dmsDevice.getProperties());
try { convertedDevice.setFeatures(dmsDevice.getFeatures());
Integer deviceTypeId = this.getDeviceTypeDAO().getDeviceTypeIdByDeviceTypeName(deviceId.getType()); }
org.wso2.carbon.device.mgt.core.dto.Device device = devicesList.add(convertedDevice);
this.getDeviceDAO().getDeviceByDeviceIdentifier(deviceTypeId, deviceId.getId()); }
if (device != null) { } catch (DeviceManagementDAOException e) {
convertedDevice = DeviceManagementDAOUtil throw new DeviceManagementException(
.convertDevice(device, this.getDeviceTypeDAO().getDeviceType(deviceTypeId)); "Error occurred while obtaining the device for type '" + type + "'", e);
Device dmsDevice = dms.getDevice(deviceId); }
if (dmsDevice != null) { return devicesList;
convertedDevice.setProperties(dmsDevice.getProperties()); }
convertedDevice.setFeatures(dmsDevice.getFeatures());
} @Override
} public Device getDevice(DeviceIdentifier deviceId) throws DeviceManagementException {
} catch (DeviceManagementDAOException e) { DeviceManagerService dms =
throw new DeviceManagementException( this.getPluginRepository().getDeviceManagementProvider(deviceId.getType());
"Error occurred while obtaining the device for id '" + deviceId.getId() + "'", e); Device convertedDevice = null;
} try {
return convertedDevice; Integer deviceTypeId =
} this.getDeviceTypeDAO().getDeviceTypeIdByDeviceTypeName(deviceId.getType());
org.wso2.carbon.device.mgt.core.dto.Device device =
@Override this.getDeviceDAO().getDeviceByDeviceIdentifier(deviceTypeId, deviceId.getId());
public boolean updateDeviceInfo(Device device) throws DeviceManagementException { if (device != null) {
DeviceManagerService dms = this.getPluginRepository().getDeviceManagementProvider(device.getType()); convertedDevice = DeviceManagementDAOUtil
return dms.updateDeviceInfo(device); .convertDevice(device, this.getDeviceTypeDAO().getDeviceType(deviceTypeId));
} Device dmsDevice = dms.getDevice(deviceId);
if (dmsDevice != null) {
@Override convertedDevice.setProperties(dmsDevice.getProperties());
public boolean setOwnership(DeviceIdentifier deviceId, String ownershipType) convertedDevice.setFeatures(dmsDevice.getFeatures());
throws DeviceManagementException { }
DeviceManagerService dms = this.getPluginRepository().getDeviceManagementProvider(deviceId.getType()); }
return dms.setOwnership(deviceId, ownershipType); } catch (DeviceManagementDAOException e) {
} throw new DeviceManagementException(
"Error occurred while obtaining the device for id '" + deviceId.getId() + "'",
public OperationManager getOperationManager(String type) throws DeviceManagementException { e);
DeviceManagerService dms = this.getPluginRepository().getDeviceManagementProvider(type); }
return dms.getOperationManager(); return convertedDevice;
} }
public DeviceDAO getDeviceDAO() { @Override
return deviceDAO; public boolean updateDeviceInfo(Device device) throws DeviceManagementException {
} DeviceManagerService dms =
this.getPluginRepository().getDeviceManagementProvider(device.getType());
public DeviceTypeDAO getDeviceTypeDAO() { return dms.updateDeviceInfo(device);
return deviceTypeDAO; }
}
@Override
public DeviceManagementRepository getPluginRepository() { public boolean setOwnership(DeviceIdentifier deviceId, String ownershipType)
return pluginRepository; throws DeviceManagementException {
} DeviceManagerService dms =
this.getPluginRepository().getDeviceManagementProvider(deviceId.getType());
return dms.setOwnership(deviceId, ownershipType);
}
public OperationManager getOperationManager(String type) throws DeviceManagementException {
DeviceManagerService dms = this.getPluginRepository().getDeviceManagementProvider(type);
return dms.getOperationManager();
}
public DeviceDAO getDeviceDAO() {
return deviceDAO;
}
public DeviceTypeDAO getDeviceTypeDAO() {
return deviceTypeDAO;
}
public DeviceManagementRepository getPluginRepository() {
return pluginRepository;
}
} }

@ -30,45 +30,46 @@ import javax.xml.bind.Unmarshaller;
import java.io.File; import java.io.File;
/** /**
* Class responsible for the cdm manager configuration initialization * Class responsible for the cdm manager configuration initialization.
*/ */
public class DeviceConfigurationManager { public class DeviceConfigurationManager {
private DeviceManagementConfig currentDeviceConfig; private DeviceManagementConfig currentDeviceConfig;
private static DeviceConfigurationManager deviceConfigManager; private static DeviceConfigurationManager deviceConfigManager;
private static final String deviceMgtConfigXMLPath = CarbonUtils.getCarbonConfigDirPath() + File.separator + private static final String deviceMgtConfigXMLPath =
DeviceManagementConstants.DataSourceProperties.DEVICE_CONFIG_XML_NAME; CarbonUtils.getCarbonConfigDirPath() + File.separator +
DeviceManagementConstants.DataSourceProperties.DEVICE_CONFIG_XML_NAME;
public static DeviceConfigurationManager getInstance() { public static DeviceConfigurationManager getInstance() {
if (deviceConfigManager == null) { if (deviceConfigManager == null) {
synchronized (DeviceConfigurationManager.class) { synchronized (DeviceConfigurationManager.class) {
if (deviceConfigManager == null) { if (deviceConfigManager == null) {
deviceConfigManager = new DeviceConfigurationManager(); deviceConfigManager = new DeviceConfigurationManager();
} }
} }
} }
return deviceConfigManager; return deviceConfigManager;
} }
public synchronized void initConfig() throws DeviceManagementException { public synchronized void initConfig() throws DeviceManagementException {
//catch generic exception.if any exception occurs wrap and throw DeviceManagementException //catch generic exception.if any exception occurs wrap and throw DeviceManagementException
try { try {
File deviceMgtConfig = new File(deviceMgtConfigXMLPath); File deviceMgtConfig = new File(deviceMgtConfigXMLPath);
Document doc = DeviceManagerUtil.convertToDocument(deviceMgtConfig); Document doc = DeviceManagerUtil.convertToDocument(deviceMgtConfig);
/* Un-marshaling Device Management configuration */ /* Un-marshaling Device Management configuration */
JAXBContext cdmContext = JAXBContext.newInstance(DeviceManagementConfig.class); JAXBContext cdmContext = JAXBContext.newInstance(DeviceManagementConfig.class);
Unmarshaller unmarshaller = cdmContext.createUnmarshaller(); Unmarshaller unmarshaller = cdmContext.createUnmarshaller();
this.currentDeviceConfig = (DeviceManagementConfig) unmarshaller.unmarshal(doc); this.currentDeviceConfig = (DeviceManagementConfig) unmarshaller.unmarshal(doc);
} catch (Exception e) { } catch (Exception e) {
throw new DeviceManagementException("Error occurred while initializing RSS config", e); throw new DeviceManagementException("Error occurred while initializing RSS config", e);
} }
} }
public DeviceManagementConfig getDeviceManagementConfig() { public DeviceManagementConfig getDeviceManagementConfig() {
return currentDeviceConfig; return currentDeviceConfig;
} }
} }

@ -22,7 +22,7 @@ import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlRootElement;
/** /**
* Class for holding management repository data * Class for holding management repository data.
*/ */
@XmlRootElement(name = "ManagementRepository") @XmlRootElement(name = "ManagementRepository")
public class DeviceManagementRepository { public class DeviceManagementRepository {

@ -32,42 +32,42 @@ import java.io.File;
public class LicenseConfigurationManager { public class LicenseConfigurationManager {
private LicenseManagementConfig licenseMgtConfig; private LicenseManagementConfig licenseMgtConfig;
private static LicenseConfigurationManager licenseConfigManager; private static LicenseConfigurationManager licenseConfigManager;
private static final String licenseMgtConfigXMLPath = CarbonUtils.getCarbonConfigDirPath() + File.separator + private static final String licenseMgtConfigXMLPath =
DeviceManagementConstants.Common.DEFAULT_LICENSE_CONFIG_XML_NAME; CarbonUtils.getCarbonConfigDirPath() + File.separator +
DeviceManagementConstants.Common.DEFAULT_LICENSE_CONFIG_XML_NAME;
public static LicenseConfigurationManager getInstance() { public static LicenseConfigurationManager getInstance() {
if (licenseConfigManager == null) { if (licenseConfigManager == null) {
synchronized (LicenseConfigurationManager.class) { synchronized (LicenseConfigurationManager.class) {
if (licenseConfigManager == null) { if (licenseConfigManager == null) {
licenseConfigManager = new LicenseConfigurationManager(); licenseConfigManager = new LicenseConfigurationManager();
} }
} }
} }
return licenseConfigManager; return licenseConfigManager;
} }
public synchronized void initConfig() throws LicenseManagementException { public synchronized void initConfig() throws LicenseManagementException {
//catch generic exception.if any exception occurs wrap and throw LicenseManagementException //catch generic exception.if any exception occurs wrap and throw LicenseManagementException
try { try {
File licenseMgtConfig = new File(licenseMgtConfigXMLPath); File licenseMgtConfig = new File(licenseMgtConfigXMLPath);
Document doc = DeviceManagerUtil.convertToDocument(licenseMgtConfig); Document doc = DeviceManagerUtil.convertToDocument(licenseMgtConfig);
/* Un-marshaling License Management configuration */ /* Un-marshaling License Management configuration */
JAXBContext cdmContext = JAXBContext.newInstance(LicenseManagementConfig.class); JAXBContext cdmContext = JAXBContext.newInstance(LicenseManagementConfig.class);
Unmarshaller unmarshaller = cdmContext.createUnmarshaller(); Unmarshaller unmarshaller = cdmContext.createUnmarshaller();
this.licenseMgtConfig = (LicenseManagementConfig) unmarshaller.unmarshal(doc); this.licenseMgtConfig = (LicenseManagementConfig) unmarshaller.unmarshal(doc);
} catch (Exception e) { } catch (Exception e) {
throw new LicenseManagementException("Error occurred while initializing RSS config", e); throw new LicenseManagementException("Error occurred while initializing RSS config", e);
} }
} }
public LicenseManagementConfig getLicenseMgtConfig() {
return licenseMgtConfig;
}
public LicenseManagementConfig getLicenseMgtConfig() {
return licenseMgtConfig;
}
} }

@ -21,7 +21,8 @@ import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlRootElement;
/** /**
* Class for holding data source configuration in malformed-cdm-config-no-mgt-repo.xml at parsing with JAXB * Class for holding data source configuration in malformed-cdm-config-no-mgt-repo.xml at parsing
* with JAXB.
*/ */
@XmlRootElement(name = "DataSourceConfiguration") @XmlRootElement(name = "DataSourceConfiguration")
public class DataSourceConfig { public class DataSourceConfig {

@ -22,7 +22,7 @@ import javax.xml.bind.annotation.*;
import java.util.List; import java.util.List;
/** /**
* Class for hold JndiLookupDefinition of rss-manager.xml at parsing with JAXB * Class for hold JndiLookupDefinition of rss-manager.xml at parsing with JAXB.
*/ */
@XmlRootElement(name = "JndiLookupDefinition") @XmlRootElement(name = "JndiLookupDefinition")
public class JNDILookupDefinition { public class JNDILookupDefinition {

@ -20,12 +20,8 @@
package org.wso2.carbon.device.mgt.core.config.license; package org.wso2.carbon.device.mgt.core.config.license;
import org.wso2.carbon.device.mgt.core.util.DateAdapter;
import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import java.util.Date;
@XmlRootElement(name = "License") @XmlRootElement(name = "License")
public class License { public class License {
@ -34,8 +30,9 @@ public class License {
private String name; private String name;
private String version; private String version;
private String language; private String language;
private Date validFrom;
private Date validTo; private String validFrom;
private String validTo;
private String license; private String license;
@XmlElement(name = "provider") @XmlElement(name = "provider")
@ -74,31 +71,30 @@ public class License {
this.language = language; this.language = language;
} }
@XmlJavaTypeAdapter(DateAdapter.class) @XmlElement(name = "license")
public Date getValidFrom() { public String getLicense() {
return license;
}
public void setLicense(String license) {
this.license = license;
}
@XmlElement(name = "validFrom")
public String getValidFrom() {
return validFrom; return validFrom;
} }
public void setValidFrom(Date validFrom) { public void setValidFrom(String validFrom) {
this.validFrom = validFrom; this.validFrom = validFrom;
} }
@XmlJavaTypeAdapter(DateAdapter.class) @XmlElement(name = "validTo")
public Date getValidTo() { public String getValidTo() {
return validTo; return validTo;
} }
public void setValidTo(Date validTo) { public void setValidTo(String validTo) {
this.validTo = validTo; this.validTo = validTo;
} }
@XmlElement(name = "license")
public String getLicense() {
return license;
}
public void setLicense(String license) {
this.license = license;
}
} }

@ -24,7 +24,7 @@ import org.wso2.carbon.device.mgt.core.dto.Status;
import java.util.List; import java.util.List;
/** /**
* This class represents the key operations associated with persisting device related information * This class represents the key operations associated with persisting device related information.
*/ */
public interface DeviceDAO { public interface DeviceDAO {
@ -44,7 +44,8 @@ public interface DeviceDAO {
* @return the Device object which matches given data * @return the Device object which matches given data
* @throws DeviceManagementDAOException * @throws DeviceManagementDAOException
*/ */
Device getDeviceByDeviceIdentifier(Integer type, String identifier) throws DeviceManagementDAOException; Device getDeviceByDeviceIdentifier(Integer type, String identifier)
throws DeviceManagementDAOException;
List<Device> getDevices() throws DeviceManagementDAOException; List<Device> getDevices() throws DeviceManagementDAOException;

@ -19,7 +19,7 @@
package org.wso2.carbon.device.mgt.core.dao; package org.wso2.carbon.device.mgt.core.dao;
/** /**
* Custom exception class for data access related exceptions * Custom exception class for data access related exceptions.
*/ */
public class DeviceManagementDAOException extends Exception { public class DeviceManagementDAOException extends Exception {

@ -25,64 +25,69 @@ import org.wso2.carbon.device.mgt.core.config.datasource.JNDILookupDefinition;
import org.wso2.carbon.device.mgt.core.dao.impl.DeviceDAOImpl; import org.wso2.carbon.device.mgt.core.dao.impl.DeviceDAOImpl;
import org.wso2.carbon.device.mgt.core.dao.impl.DeviceTypeDAOImpl; import org.wso2.carbon.device.mgt.core.dao.impl.DeviceTypeDAOImpl;
import org.wso2.carbon.device.mgt.core.dao.util.DeviceManagementDAOUtil; import org.wso2.carbon.device.mgt.core.dao.util.DeviceManagementDAOUtil;
import javax.sql.DataSource; import javax.sql.DataSource;
import java.util.Hashtable; import java.util.Hashtable;
import java.util.List; import java.util.List;
public class DeviceManagementDAOFactory { public class DeviceManagementDAOFactory {
private static DataSource dataSource; private static DataSource dataSource;
private static final Log log = LogFactory.getLog(DeviceManagementDAOFactory.class); private static final Log log = LogFactory.getLog(DeviceManagementDAOFactory.class);
public static DeviceDAO getDeviceDAO() { public static DeviceDAO getDeviceDAO() {
return new DeviceDAOImpl(dataSource); return new DeviceDAOImpl(dataSource);
} }
public static DeviceTypeDAO getDeviceTypeDAO() { public static DeviceTypeDAO getDeviceTypeDAO() {
return new DeviceTypeDAOImpl(dataSource); return new DeviceTypeDAOImpl(dataSource);
} }
public static void init(DataSourceConfig config) { public static void init(DataSourceConfig config) {
dataSource = resolveDataSource(config); dataSource = resolveDataSource(config);
} }
public static void init(DataSource dtSource) { public static void init(DataSource dtSource) {
dataSource = dtSource; dataSource = dtSource;
} }
/** /**
* Resolve data source from the data source definition * Resolve data source from the data source definition
* *
* @param config data source configuration * @param config data source configuration
* @return data source resolved from the data source definition * @return data source resolved from the data source definition
*/ */
private static DataSource resolveDataSource(DataSourceConfig config) { private static DataSource resolveDataSource(DataSourceConfig config) {
DataSource dataSource = null; DataSource dataSource = null;
if (config == null) { if (config == null) {
throw new RuntimeException("Device Management Repository data source configuration " + "is null and " + throw new RuntimeException(
"thus, is not initialized"); "Device Management Repository data source configuration " + "is null and " +
} "thus, is not initialized");
JNDILookupDefinition jndiConfig = config.getJndiLookupDefinition(); }
if (jndiConfig != null) { JNDILookupDefinition jndiConfig = config.getJndiLookupDefinition();
if (log.isDebugEnabled()) { if (jndiConfig != null) {
log.debug("Initializing Device Management Repository data source using the JNDI " + if (log.isDebugEnabled()) {
"Lookup Definition"); log.debug("Initializing Device Management Repository data source using the JNDI " +
} "Lookup Definition");
List<JNDILookupDefinition.JNDIProperty> jndiPropertyList = jndiConfig.getJndiProperties(); }
if (jndiPropertyList != null) { List<JNDILookupDefinition.JNDIProperty> jndiPropertyList =
Hashtable<Object, Object> jndiProperties = new Hashtable<Object, Object>(); jndiConfig.getJndiProperties();
for (JNDILookupDefinition.JNDIProperty prop : jndiPropertyList) { if (jndiPropertyList != null) {
jndiProperties.put(prop.getName(), prop.getValue()); Hashtable<Object, Object> jndiProperties = new Hashtable<Object, Object>();
} for (JNDILookupDefinition.JNDIProperty prop : jndiPropertyList) {
dataSource = DeviceManagementDAOUtil.lookupDataSource(jndiConfig.getJndiName(), jndiProperties); jndiProperties.put(prop.getName(), prop.getValue());
} else { }
dataSource = DeviceManagementDAOUtil.lookupDataSource(jndiConfig.getJndiName(), null); dataSource = DeviceManagementDAOUtil
} .lookupDataSource(jndiConfig.getJndiName(), jndiProperties);
} } else {
return dataSource; dataSource =
} DeviceManagementDAOUtil.lookupDataSource(jndiConfig.getJndiName(), null);
}
}
return dataSource;
}
public static DataSource getDataSource() { public static DataSource getDataSource() {
return dataSource; return dataSource;
} }
} }

@ -22,20 +22,21 @@ import org.wso2.carbon.device.mgt.core.dto.DeviceType;
import java.util.List; import java.util.List;
/** /**
* This class represents the key operations associated with persisting device type related information * This class represents the key operations associated with persisting device type related
* information.
*/ */
public interface DeviceTypeDAO { public interface DeviceTypeDAO {
void addDeviceType(DeviceType deviceType) throws DeviceManagementDAOException; void addDeviceType(DeviceType deviceType) throws DeviceManagementDAOException;
void updateDeviceType(DeviceType deviceType) throws DeviceManagementDAOException; void updateDeviceType(DeviceType deviceType) throws DeviceManagementDAOException;
List<DeviceType> getDeviceTypes() throws DeviceManagementDAOException; List<DeviceType> getDeviceTypes() throws DeviceManagementDAOException;
DeviceType getDeviceType(Integer id) throws DeviceManagementDAOException; DeviceType getDeviceType(Integer id) throws DeviceManagementDAOException;
Integer getDeviceTypeIdByDeviceTypeName(String type) throws DeviceManagementDAOException; Integer getDeviceTypeIdByDeviceTypeName(String type) throws DeviceManagementDAOException;
void removeDeviceType(DeviceType deviceType) throws DeviceManagementDAOException; void removeDeviceType(DeviceType deviceType) throws DeviceManagementDAOException;
} }

@ -44,15 +44,16 @@ public class DeviceDAOImpl implements DeviceDAO {
this.dataSource = dataSource; this.dataSource = dataSource;
} }
@Override public void addDevice(Device device) throws DeviceManagementDAOException { @Override
public void addDevice(Device device) throws DeviceManagementDAOException {
Connection conn = null; Connection conn = null;
PreparedStatement stmt = null; PreparedStatement stmt = null;
try { try {
conn = this.getConnection(); conn = this.getConnection();
String createDBQuery = String createDBQuery =
"INSERT INTO DM_DEVICE(DESCRIPTION, NAME, DATE_OF_ENROLLMENT, DATE_OF_LAST_UPDATE, OWNERSHIP," + "INSERT INTO DM_DEVICE(DESCRIPTION, NAME, DATE_OF_ENROLLMENT, DATE_OF_LAST_UPDATE, " +
"STATUS, DEVICE_TYPE_ID, DEVICE_IDENTIFICATION, OWNER, TENANT_ID) VALUES " + "OWNERSHIP, STATUS, DEVICE_TYPE_ID, DEVICE_IDENTIFICATION, OWNER, TENANT_ID) " +
"(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
stmt = conn.prepareStatement(createDBQuery); stmt = conn.prepareStatement(createDBQuery);
stmt.setString(1, device.getDescription()); stmt.setString(1, device.getDescription());
@ -75,23 +76,29 @@ public class DeviceDAOImpl implements DeviceDAO {
} }
} }
@Override public void updateDevice(Device device) throws DeviceManagementDAOException { @Override
public void updateDevice(Device device) throws DeviceManagementDAOException {
} }
@Override public void updateDeviceStatus(Long deviceId, Status status) throws DeviceManagementDAOException { @Override
public void updateDeviceStatus(Long deviceId, Status status)
throws DeviceManagementDAOException {
} }
@Override public void deleteDevice(Long deviceId) throws DeviceManagementDAOException { @Override
public void deleteDevice(Long deviceId) throws DeviceManagementDAOException {
} }
@Override public Device getDeviceByDeviceId(Long deviceId) throws DeviceManagementDAOException { @Override
public Device getDeviceByDeviceId(Long deviceId) throws DeviceManagementDAOException {
return null; return null;
} }
@Override public Device getDeviceByDeviceIdentifier(Integer type, String identifier) @Override
public Device getDeviceByDeviceIdentifier(Integer type, String identifier)
throws DeviceManagementDAOException { throws DeviceManagementDAOException {
Connection conn = null; Connection conn = null;
PreparedStatement stmt = null; PreparedStatement stmt = null;
@ -102,7 +109,8 @@ public class DeviceDAOImpl implements DeviceDAO {
String selectDBQueryForType = "SELECT ID, DESCRIPTION, NAME, DATE_OF_ENROLLMENT, " + String selectDBQueryForType = "SELECT ID, DESCRIPTION, NAME, DATE_OF_ENROLLMENT, " +
"DATE_OF_LAST_UPDATE, OWNERSHIP, STATUS, DEVICE_TYPE_ID, " + "DATE_OF_LAST_UPDATE, OWNERSHIP, STATUS, DEVICE_TYPE_ID, " +
"DEVICE_IDENTIFICATION, OWNER, TENANT_ID FROM DM_DEVICE " + "DEVICE_IDENTIFICATION, OWNER, TENANT_ID FROM DM_DEVICE " +
"WHERE DM_DEVICE.DEVICE_TYPE_ID=? AND DM_DEVICE.DEVICE_IDENTIFICATION=?"; "WHERE DM_DEVICE.DEVICE_TYPE_ID=? AND " +
"DM_DEVICE.DEVICE_IDENTIFICATION=?";
stmt = conn.prepareStatement(selectDBQueryForType); stmt = conn.prepareStatement(selectDBQueryForType);
stmt.setInt(1, type); stmt.setInt(1, type);
stmt.setString(2, identifier); stmt.setString(2, identifier);
@ -132,11 +140,13 @@ public class DeviceDAOImpl implements DeviceDAO {
return device; return device;
} }
@Override public List<Device> getDevices() throws DeviceManagementDAOException { @Override
public List<Device> getDevices() throws DeviceManagementDAOException {
return null; return null;
} }
@Override public List<Device> getDevices(Integer type) throws DeviceManagementDAOException { @Override
public List<Device> getDevices(Integer type) throws DeviceManagementDAOException {
Connection conn = null; Connection conn = null;
PreparedStatement stmt = null; PreparedStatement stmt = null;
ResultSet resultSet = null; ResultSet resultSet = null;
@ -181,8 +191,9 @@ public class DeviceDAOImpl implements DeviceDAO {
try { try {
return dataSource.getConnection(); return dataSource.getConnection();
} catch (SQLException e) { } catch (SQLException e) {
throw new DeviceManagementDAOException("Error occurred while obtaining a connection from the device " + throw new DeviceManagementDAOException(
"management metadata repository datasource", e); "Error occurred while obtaining a connection from the device " +
"management metadata repository datasource", e);
} }
} }

@ -40,121 +40,124 @@ import java.util.Hashtable;
public final class DeviceManagementDAOUtil { public final class DeviceManagementDAOUtil {
private static final Log log = LogFactory.getLog(DeviceManagementDAOUtil.class); private static final Log log = LogFactory.getLog(DeviceManagementDAOUtil.class);
public static void cleanupResources(Connection conn, PreparedStatement stmt, ResultSet rs) { public static void cleanupResources(Connection conn, PreparedStatement stmt, ResultSet rs) {
if (rs != null) { if (rs != null) {
try { try {
rs.close(); rs.close();
} catch (SQLException e) { } catch (SQLException e) {
log.warn("Error occurred while closing result set", e); log.warn("Error occurred while closing result set", e);
} }
} }
if (stmt != null) { if (stmt != null) {
try { try {
stmt.close(); stmt.close();
} catch (SQLException e) { } catch (SQLException e) {
log.warn("Error occurred while closing prepared statement", e); log.warn("Error occurred while closing prepared statement", e);
} }
} }
if (conn != null) { if (conn != null) {
try { try {
conn.close(); conn.close();
} catch (SQLException e) { } catch (SQLException e) {
log.warn("Error occurred while closing database connection", e); log.warn("Error occurred while closing database connection", e);
} }
} }
} }
/** /**
* Get id of the current tenant. * Get id of the current tenant.
* *
* @return tenant id * @return tenant id
* @throws DeviceManagementDAOException if an error is observed when getting tenant id * @throws DeviceManagementDAOException if an error is observed when getting tenant id
*/ */
public static int getTenantId() throws DeviceManagementDAOException { public static int getTenantId() throws DeviceManagementDAOException {
CarbonContext context = CarbonContext.getThreadLocalCarbonContext(); CarbonContext context = CarbonContext.getThreadLocalCarbonContext();
int tenantId = context.getTenantId(); int tenantId = context.getTenantId();
if (tenantId != MultitenantConstants.INVALID_TENANT_ID) { if (tenantId != MultitenantConstants.INVALID_TENANT_ID) {
return tenantId; return tenantId;
} }
String tenantDomain = context.getTenantDomain(); String tenantDomain = context.getTenantDomain();
if (tenantDomain == null) { if (tenantDomain == null) {
String msg = "Tenant domain is not properly set and thus, is null"; String msg = "Tenant domain is not properly set and thus, is null";
throw new DeviceManagementDAOException(msg); throw new DeviceManagementDAOException(msg);
} }
TenantManager tenantManager = DeviceManagementDataHolder.getInstance().getTenantManager(); TenantManager tenantManager = DeviceManagementDataHolder.getInstance().getTenantManager();
try { try {
tenantId = tenantManager.getTenantId(tenantDomain); tenantId = tenantManager.getTenantId(tenantDomain);
} catch (UserStoreException e) { } catch (UserStoreException e) {
String msg = "Error occurred while retrieving id from the domain of tenant " + tenantDomain; String msg =
throw new DeviceManagementDAOException(msg); "Error occurred while retrieving id from the domain of tenant " + tenantDomain;
} throw new DeviceManagementDAOException(msg);
return tenantId; }
} return tenantId;
}
public static DataSource lookupDataSource(String dataSourceName, final Hashtable<Object, Object> jndiProperties) { public static DataSource lookupDataSource(String dataSourceName,
try { final Hashtable<Object, Object> jndiProperties) {
if (jndiProperties == null || jndiProperties.isEmpty()) { try {
return (DataSource) InitialContext.doLookup(dataSourceName); if (jndiProperties == null || jndiProperties.isEmpty()) {
} return (DataSource) InitialContext.doLookup(dataSourceName);
final InitialContext context = new InitialContext(jndiProperties); }
return (DataSource) context.lookup(dataSourceName); final InitialContext context = new InitialContext(jndiProperties);
} catch (Exception e) { return (DataSource) context.lookup(dataSourceName);
throw new RuntimeException("Error in looking up data source: " + e.getMessage(), e); } catch (Exception e) {
} throw new RuntimeException("Error in looking up data source: " + e.getMessage(), e);
} }
}
/** /**
* @param device - The DTO device object. * @param device - The DTO device object.
* @param deviceType - The DeviceType object associated with the device * @param deviceType - The DeviceType object associated with the device
* @return A Business Object. * @return A Business Object.
*/ */
public static org.wso2.carbon.device.mgt.common.Device convertDevice(Device device, DeviceType deviceType){ public static org.wso2.carbon.device.mgt.common.Device convertDevice(Device device,
org.wso2.carbon.device.mgt.common.Device deviceBO = DeviceType deviceType) {
new org.wso2.carbon.device.mgt.common.Device(); org.wso2.carbon.device.mgt.common.Device deviceBO =
deviceBO.setDateOfEnrolment(device.getDateOfEnrollment()); new org.wso2.carbon.device.mgt.common.Device();
deviceBO.setDateOfLastUpdate(device.getDateOfLastUpdate()); deviceBO.setDateOfEnrolment(device.getDateOfEnrollment());
deviceBO.setDescription(device.getDescription()); deviceBO.setDateOfLastUpdate(device.getDateOfLastUpdate());
deviceBO.setDeviceIdentifier(device.getDeviceIdentificationId()); deviceBO.setDescription(device.getDescription());
deviceBO.setDeviceTypeId(device.getDeviceTypeId()); deviceBO.setDeviceIdentifier(device.getDeviceIdentificationId());
deviceBO.setType(deviceType.getName()); deviceBO.setDeviceTypeId(device.getDeviceTypeId());
deviceBO.setName(device.getName()); deviceBO.setType(deviceType.getName());
deviceBO.setId(device.getId()); deviceBO.setName(device.getName());
deviceBO.setOwner(device.getOwnerId()); deviceBO.setId(device.getId());
deviceBO.setOwnership(device.getOwnerShip()); deviceBO.setOwner(device.getOwnerId());
if (device.getStatus() == Status.ACTIVE) { deviceBO.setOwnership(device.getOwnerShip());
deviceBO.setStatus(true); if (device.getStatus() == Status.ACTIVE) {
} else if (device.getStatus() == Status.INACTIVE) { deviceBO.setStatus(true);
deviceBO.setStatus(false); } else if (device.getStatus() == Status.INACTIVE) {
} deviceBO.setStatus(false);
return deviceBO; }
} return deviceBO;
}
public static Device convertDevice(org.wso2.carbon.device.mgt.common.Device public static Device convertDevice(org.wso2.carbon.device.mgt.common.Device
device) throws DeviceManagementDAOException { device) throws DeviceManagementDAOException {
Device deviceBO = new Device(); Device deviceBO = new Device();
deviceBO.setDescription(device.getDescription()); deviceBO.setDescription(device.getDescription());
deviceBO.setName(device.getName()); deviceBO.setName(device.getName());
deviceBO.setDateOfEnrollment(device.getDateOfEnrolment()); deviceBO.setDateOfEnrollment(device.getDateOfEnrolment());
deviceBO.setDateOfLastUpdate(device.getDateOfLastUpdate()); deviceBO.setDateOfLastUpdate(device.getDateOfLastUpdate());
if (!device.isStatus()){ if (!device.isStatus()) {
deviceBO.setStatus(Status.INACTIVE); deviceBO.setStatus(Status.INACTIVE);
}else{ } else {
deviceBO.setStatus(Status.ACTIVE); deviceBO.setStatus(Status.ACTIVE);
} }
deviceBO.setOwnerId(device.getOwner()); deviceBO.setOwnerId(device.getOwner());
deviceBO.setOwnerShip(device.getOwnership()); deviceBO.setOwnerShip(device.getOwnership());
deviceBO.setTenantId(DeviceManagementDAOUtil.getTenantId()); deviceBO.setTenantId(DeviceManagementDAOUtil.getTenantId());
deviceBO.setDeviceIdentificationId(device.getDeviceIdentifier()); deviceBO.setDeviceIdentificationId(device.getDeviceIdentifier());
return deviceBO; return deviceBO;
} }
public static DeviceIdentifier createDeviceIdentifier(Device device, DeviceType deviceType) { public static DeviceIdentifier createDeviceIdentifier(Device device, DeviceType deviceType) {
DeviceIdentifier deviceIdentifier = new DeviceIdentifier(); DeviceIdentifier deviceIdentifier = new DeviceIdentifier();
deviceIdentifier.setType(deviceType.getName()); deviceIdentifier.setType(deviceType.getName());
deviceIdentifier.setId(device.getDeviceIdentificationId()); deviceIdentifier.setId(device.getDeviceIdentificationId());
return deviceIdentifier; return deviceIdentifier;
} }
} }

@ -52,112 +52,123 @@ import org.wso2.carbon.user.core.service.RealmService;
*/ */
public class DeviceManagementServiceComponent { public class DeviceManagementServiceComponent {
private static Log log = LogFactory.getLog(DeviceManagementServiceComponent.class); private static Log log = LogFactory.getLog(DeviceManagementServiceComponent.class);
private DeviceManagementRepository pluginRepository = new DeviceManagementRepository(); private DeviceManagementRepository pluginRepository = new DeviceManagementRepository();
protected void activate(ComponentContext componentContext) { protected void activate(ComponentContext componentContext) {
try { try {
if (log.isDebugEnabled()) { if (log.isDebugEnabled()) {
log.debug("Initializing device management core bundle"); log.debug("Initializing device management core bundle");
} }
/* Initializing Device Management Configuration */ /* Initializing Device Management Configuration */
DeviceConfigurationManager.getInstance().initConfig(); DeviceConfigurationManager.getInstance().initConfig();
DeviceManagementConfig config = DeviceConfigurationManager.getInstance().getDeviceManagementConfig(); DeviceManagementConfig config =
DeviceConfigurationManager.getInstance().getDeviceManagementConfig();
DataSourceConfig dsConfig = config.getDeviceMgtRepository().getDataSourceConfig(); DataSourceConfig dsConfig = config.getDeviceMgtRepository().getDataSourceConfig();
DeviceManagementDAOFactory.init(dsConfig); DeviceManagementDAOFactory.init(dsConfig);
DeviceManager deviceManager = new DeviceManagerImpl(config, this.getPluginRepository()); DeviceManager deviceManager = new DeviceManagerImpl(config, this.getPluginRepository());
DeviceManagementDataHolder.getInstance().setDeviceManager(deviceManager); DeviceManagementDataHolder.getInstance().setDeviceManager(deviceManager);
/* If -Dsetup option enabled then create device management database schema */ /* If -Dsetup option enabled then create device management database schema */
String setupOption = System.getProperty(DeviceManagementConstants.Common.PROPERTY_SETUP); String setupOption =
if (setupOption != null) { System.getProperty(DeviceManagementConstants.Common.PROPERTY_SETUP);
if (log.isDebugEnabled()) { if (setupOption != null) {
log.debug("-Dsetup is enabled. Device management repository schema initialization is about " + if (log.isDebugEnabled()) {
"to begin"); log.debug(
} "-Dsetup is enabled. Device management repository schema initialization " +
this.setupDeviceManagementSchema(dsConfig); "is about to begin");
} }
this.setupDeviceManagementSchema(dsConfig);
if (log.isDebugEnabled()) { }
log.debug("Registering OSGi service DeviceManagementService");
} if (log.isDebugEnabled()) {
BundleContext bundleContext = componentContext.getBundleContext(); log.debug("Registering OSGi service DeviceManagementService");
bundleContext.registerService(DeviceManagementService.class.getName(), }
new DeviceManagementService(), null); BundleContext bundleContext = componentContext.getBundleContext();
if (log.isDebugEnabled()) { bundleContext.registerService(DeviceManagementService.class.getName(),
log.debug("Device management core bundle has been successfully initialized"); new DeviceManagementService(), null);
} if (log.isDebugEnabled()) {
} catch (Throwable e) { log.debug("Device management core bundle has been successfully initialized");
String msg = "Error occurred while initializing device management core bundle"; }
log.error(msg, e); } catch (Throwable e) {
} String msg = "Error occurred while initializing device management core bundle";
} log.error(msg, e);
}
private void setupDeviceManagementSchema(DataSourceConfig config) throws DeviceManagementException { }
DeviceManagementSchemaInitializer initializer = new DeviceManagementSchemaInitializer(config);
log.info("Initializing device management repository database schema"); private void setupDeviceManagementSchema(DataSourceConfig config)
throws DeviceManagementException {
try { DeviceManagementSchemaInitializer initializer =
initializer.createRegistryDatabase(); new DeviceManagementSchemaInitializer(config);
} catch (Exception e) { log.info("Initializing device management repository database schema");
throw new DeviceManagementException("Error occurred while initializing Device Management " +
"database schema", e); try {
} initializer.createRegistryDatabase();
if (log.isDebugEnabled()) { } catch (Exception e) {
log.debug("Device management metadata repository schema has been successfully initialized"); throw new DeviceManagementException(
} "Error occurred while initializing Device Management " +
} "database schema", e);
}
/** if (log.isDebugEnabled()) {
* Sets Device Manager service. log.debug(
* @param deviceManagerService An instance of DeviceManagerService "Device management metadata repository schema has been successfully initialized");
*/ }
protected void setDeviceManagerService(DeviceManagerService deviceManagerService) { }
if (log.isDebugEnabled()) {
log.debug("Setting Device Management Service Provider : '" + /**
deviceManagerService.getProviderType() + "'"); * Sets Device Manager service.
} *
this.getPluginRepository().addDeviceManagementProvider(deviceManagerService); * @param deviceManagerService An instance of DeviceManagerService
} */
protected void setDeviceManagerService(DeviceManagerService deviceManagerService) {
/** if (log.isDebugEnabled()) {
* Unsets Device Management service. log.debug("Setting Device Management Service Provider : '" +
* @param deviceManagerService An Instance of DeviceManagerService deviceManagerService.getProviderType() + "'");
*/ }
protected void unsetDeviceManagerService(DeviceManagerService deviceManagerService) { this.getPluginRepository().addDeviceManagementProvider(deviceManagerService);
if (log.isDebugEnabled()) { }
log.debug("Unsetting Device Management Service Provider : '" +
deviceManagerService.getProviderType() + "'"); /**
} * Unsets Device Management service.
this.getPluginRepository().removeDeviceManagementProvider(deviceManagerService); *
} * @param deviceManagerService An Instance of DeviceManagerService
*/
/** protected void unsetDeviceManagerService(DeviceManagerService deviceManagerService) {
* Sets Realm Service. if (log.isDebugEnabled()) {
* @param realmService An instance of RealmService log.debug("Unsetting Device Management Service Provider : '" +
*/ deviceManagerService.getProviderType() + "'");
protected void setRealmService(RealmService realmService) { }
if (log.isDebugEnabled()) { this.getPluginRepository().removeDeviceManagementProvider(deviceManagerService);
log.debug("Setting Realm Service"); }
}
DeviceManagementDataHolder.getInstance().setRealmService(realmService); /**
} * Sets Realm Service.
*
/** * @param realmService An instance of RealmService
* Unsets Realm Service. */
* @param realmService An instance of RealmService protected void setRealmService(RealmService realmService) {
*/ if (log.isDebugEnabled()) {
protected void unsetRealmService(RealmService realmService) { log.debug("Setting Realm Service");
if (log.isDebugEnabled()) { }
log.debug("Unsetting Realm Service"); DeviceManagementDataHolder.getInstance().setRealmService(realmService);
} }
DeviceManagementDataHolder.getInstance().setRealmService(null);
} /**
* Unsets Realm Service.
private DeviceManagementRepository getPluginRepository() { *
return pluginRepository; * @param realmService An instance of RealmService
} */
protected void unsetRealmService(RealmService realmService) {
if (log.isDebugEnabled()) {
log.debug("Unsetting Realm Service");
}
DeviceManagementDataHolder.getInstance().setRealmService(null);
}
private DeviceManagementRepository getPluginRepository() {
return pluginRepository;
}
} }

@ -28,66 +28,69 @@ import java.util.List;
public class DeviceManagementService implements DeviceManager { public class DeviceManagementService implements DeviceManager {
@Override @Override
public boolean enrollDevice(Device device) throws DeviceManagementException { public boolean enrollDevice(Device device) throws DeviceManagementException {
return DeviceManagementDataHolder.getInstance().getDeviceManager().enrollDevice(device); return DeviceManagementDataHolder.getInstance().getDeviceManager().enrollDevice(device);
} }
@Override @Override
public boolean modifyEnrollment(Device device) throws DeviceManagementException { public boolean modifyEnrollment(Device device) throws DeviceManagementException {
return DeviceManagementDataHolder.getInstance().getDeviceManager().modifyEnrollment(device); return DeviceManagementDataHolder.getInstance().getDeviceManager().modifyEnrollment(device);
} }
@Override @Override
public boolean disenrollDevice(DeviceIdentifier deviceId) throws DeviceManagementException { public boolean disenrollDevice(DeviceIdentifier deviceId) throws DeviceManagementException {
return DeviceManagementDataHolder.getInstance().getDeviceManager() return DeviceManagementDataHolder.getInstance().getDeviceManager()
.disenrollDevice(deviceId); .disenrollDevice(deviceId);
} }
@Override @Override
public boolean isEnrolled(DeviceIdentifier deviceId) throws DeviceManagementException { public boolean isEnrolled(DeviceIdentifier deviceId) throws DeviceManagementException {
return DeviceManagementDataHolder.getInstance().getDeviceManager().isEnrolled(deviceId); return DeviceManagementDataHolder.getInstance().getDeviceManager().isEnrolled(deviceId);
} }
@Override @Override
public boolean isActive(DeviceIdentifier deviceId) throws DeviceManagementException { public boolean isActive(DeviceIdentifier deviceId) throws DeviceManagementException {
return DeviceManagementDataHolder.getInstance().getDeviceManager().isActive(deviceId); return DeviceManagementDataHolder.getInstance().getDeviceManager().isActive(deviceId);
} }
@Override @Override
public boolean setActive(DeviceIdentifier deviceId, boolean status) throws DeviceManagementException { public boolean setActive(DeviceIdentifier deviceId, boolean status)
return DeviceManagementDataHolder.getInstance().getDeviceManager().setActive(deviceId, status); throws DeviceManagementException {
} return DeviceManagementDataHolder.getInstance().getDeviceManager()
.setActive(deviceId, status);
@Override }
public List<Device> getAllDevices(String type) throws DeviceManagementException {
return DeviceManagementDataHolder.getInstance().getDeviceManager().getAllDevices(type); @Override
} public List<Device> getAllDevices(String type) throws DeviceManagementException {
return DeviceManagementDataHolder.getInstance().getDeviceManager().getAllDevices(type);
@Override }
public org.wso2.carbon.device.mgt.common.Device getDevice(DeviceIdentifier deviceId)
throws DeviceManagementException { @Override
public org.wso2.carbon.device.mgt.common.Device getDevice(DeviceIdentifier deviceId)
Device device = DeviceManagementDataHolder.getInstance().getDeviceManager().getDevice(deviceId); throws DeviceManagementException {
return device;
} Device device =
DeviceManagementDataHolder.getInstance().getDeviceManager().getDevice(deviceId);
@Override return device;
public boolean updateDeviceInfo(Device device) throws DeviceManagementException { }
return DeviceManagementDataHolder.getInstance().getDeviceManager().updateDeviceInfo(device);
} @Override
public boolean updateDeviceInfo(Device device) throws DeviceManagementException {
@Override return DeviceManagementDataHolder.getInstance().getDeviceManager().updateDeviceInfo(device);
public boolean setOwnership(DeviceIdentifier deviceId, String ownershipType) }
throws DeviceManagementException {
return DeviceManagementDataHolder.getInstance().getDeviceManager() @Override
.setOwnership(deviceId, ownershipType); public boolean setOwnership(DeviceIdentifier deviceId, String ownershipType)
} throws DeviceManagementException {
return DeviceManagementDataHolder.getInstance().getDeviceManager()
@Override .setOwnership(deviceId, ownershipType);
public OperationManager getOperationManager(String type) throws DeviceManagementException { }
return DeviceManagementDataHolder.getInstance().getDeviceManager().
getOperationManager(type); @Override
} public OperationManager getOperationManager(String type) throws DeviceManagementException {
return DeviceManagementDataHolder.getInstance().getDeviceManager().
getOperationManager(type);
}
} }

@ -27,8 +27,10 @@ import org.wso2.carbon.device.mgt.core.internal.LicenseManagementDataHolder;
public class LicenseManagementService implements LicenseManager { public class LicenseManagementService implements LicenseManager {
@Override @Override
public License getLicense(String deviceType, String languageCode) throws LicenseManagementException { public License getLicense(String deviceType, String languageCode)
return LicenseManagementDataHolder.getInstance().getLicenseManager().getLicense(deviceType, languageCode); throws LicenseManagementException {
} return LicenseManagementDataHolder.getInstance().getLicenseManager()
.getLicense(deviceType, languageCode);
}
} }

@ -1,40 +0,0 @@
/*
*
* Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* WSO2 Inc. licenses this file to you 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 org.wso2.carbon.device.mgt.core.util;
import javax.xml.bind.annotation.adapters.XmlAdapter;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateAdapter extends XmlAdapter<String, Date> {
private SimpleDateFormat dateFormat = new SimpleDateFormat("dd-mm-yyyy");
@Override
public Date unmarshal(String strDate) throws ParseException {
return dateFormat.parse(strDate);
}
@Override
public String marshal(Date date) throws ParseException {
return dateFormat.format(date);
}
}

@ -29,20 +29,21 @@ import java.io.File;
public final class DeviceManagementSchemaInitializer extends DatabaseCreator { public final class DeviceManagementSchemaInitializer extends DatabaseCreator {
private static final Log log = LogFactory.getLog(DeviceManagementSchemaInitializer.class); private static final Log log = LogFactory.getLog(DeviceManagementSchemaInitializer.class);
private static final String setupSQLScriptBaseLocation = private static final String setupSQLScriptBaseLocation =
CarbonUtils.getCarbonHome() + File.separator + "dbscripts" + File.separator + "cdm" + File.separator; CarbonUtils.getCarbonHome() + File.separator + "dbscripts" + File.separator + "cdm" +
File.separator;
public DeviceManagementSchemaInitializer(DataSourceConfig config) {
super(DeviceManagerUtil.resolveDataSource(config)); public DeviceManagementSchemaInitializer(DataSourceConfig config) {
} super(DeviceManagerUtil.resolveDataSource(config));
}
protected String getDbScriptLocation(String databaseType) {
String scriptName = databaseType + ".sql"; protected String getDbScriptLocation(String databaseType) {
if (log.isDebugEnabled()) { String scriptName = databaseType + ".sql";
log.debug("Loading database script from :" + scriptName); if (log.isDebugEnabled()) {
} log.debug("Loading database script from :" + scriptName);
return setupSQLScriptBaseLocation.replaceFirst("DBTYPE", databaseType) + scriptName; }
} return setupSQLScriptBaseLocation.replaceFirst("DBTYPE", databaseType) + scriptName;
}
} }

@ -50,8 +50,9 @@ public final class DeviceManagerUtil {
DocumentBuilder docBuilder = factory.newDocumentBuilder(); DocumentBuilder docBuilder = factory.newDocumentBuilder();
return docBuilder.parse(file); return docBuilder.parse(file);
} catch (Exception e) { } catch (Exception e) {
throw new DeviceManagementException("Error occurred while parsing file, while converting " + throw new DeviceManagementException(
"to a org.w3c.dom.Document : " + e.getMessage(), e); "Error occurred while parsing file, while converting " +
"to a org.w3c.dom.Document : " + e.getMessage(), e);
} }
} }
@ -65,23 +66,28 @@ public final class DeviceManagerUtil {
DataSource dataSource = null; DataSource dataSource = null;
if (config == null) { if (config == null) {
throw new RuntimeException( throw new RuntimeException(
"Device Management Repository data source configuration " + "is null and thus, is not initialized"); "Device Management Repository data source configuration " +
"is null and thus, is not initialized");
} }
JNDILookupDefinition jndiConfig = config.getJndiLookupDefinition(); JNDILookupDefinition jndiConfig = config.getJndiLookupDefinition();
if (jndiConfig != null) { if (jndiConfig != null) {
if (log.isDebugEnabled()) { if (log.isDebugEnabled()) {
log.debug( log.debug(
"Initializing Device Management Repository data source using the JNDI " + "Lookup Definition"); "Initializing Device Management Repository data source using the JNDI " +
"Lookup Definition");
} }
List<JNDILookupDefinition.JNDIProperty> jndiPropertyList = jndiConfig.getJndiProperties(); List<JNDILookupDefinition.JNDIProperty> jndiPropertyList =
jndiConfig.getJndiProperties();
if (jndiPropertyList != null) { if (jndiPropertyList != null) {
Hashtable<Object, Object> jndiProperties = new Hashtable<Object, Object>(); Hashtable<Object, Object> jndiProperties = new Hashtable<Object, Object>();
for (JNDILookupDefinition.JNDIProperty prop : jndiPropertyList) { for (JNDILookupDefinition.JNDIProperty prop : jndiPropertyList) {
jndiProperties.put(prop.getName(), prop.getValue()); jndiProperties.put(prop.getName(), prop.getValue());
} }
dataSource = DeviceManagementDAOUtil.lookupDataSource(jndiConfig.getJndiName(), jndiProperties); dataSource = DeviceManagementDAOUtil
.lookupDataSource(jndiConfig.getJndiName(), jndiProperties);
} else { } else {
dataSource = DeviceManagementDAOUtil.lookupDataSource(jndiConfig.getJndiName(), null); dataSource =
DeviceManagementDAOUtil.lookupDataSource(jndiConfig.getJndiName(), null);
} }
} }
return dataSource; return dataSource;

@ -28,7 +28,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>org.wso2.carbon.devicemgt</groupId> <groupId>org.wso2.carbon.devicemgt</groupId>
<artifactId>org.wso2.carbon.policy.evaluator</artifactId> <artifactId>org.wso2.carbon.complex.policy.decision.point</artifactId>
<version>0.9.1-SNAPSHOT</version> <version>0.9.1-SNAPSHOT</version>
<packaging>bundle</packaging> <packaging>bundle</packaging>
<name>WSO2 Carbon - Policy Decision Point</name> <name>WSO2 Carbon - Policy Decision Point</name>
@ -51,10 +51,10 @@
<Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName> <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
<Bundle-Name>${project.artifactId}</Bundle-Name> <Bundle-Name>${project.artifactId}</Bundle-Name>
<Bundle-Version>${carbon.device.mgt.version}</Bundle-Version> <Bundle-Version>${carbon.device.mgt.version}</Bundle-Version>
<Bundle-Description>Policy Management Common Bundle</Bundle-Description> <Bundle-Description>Complex Policy Decision Point Bundle</Bundle-Description>
<Private-Package>org.wso2.carbon.policy.evaluator</Private-Package> <Private-Package>org.wso2.carbon.complex.policy.decision.point.internal</Private-Package>
<Export-Package> <Export-Package>
org.wso2.carbon.policy.evaluator.* org.wso2.carbon.complex.policy.decision.point.*
</Export-Package> </Export-Package>
</instructions> </instructions>
</configuration> </configuration>

@ -0,0 +1,68 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<groupId>org.wso2.carbon.devicemgt</groupId>
<artifactId>policy-mgt</artifactId>
<version>0.9.1-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>org.wso2.carbon.devicemgt</groupId>
<artifactId>org.wso2.carbon.policy.information.point</artifactId>
<version>0.9.1-SNAPSHOT</version>
<packaging>bundle</packaging>
<name>WSO2 Carbon - Policy Information Point</name>
<description>WSO2 Carbon - Policy Information Point</description>
<url>http://wso2.org</url>
<build>
<plugins>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-scr-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>1.4.0</version>
<extensions>true</extensions>
<configuration>
<instructions>
<Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
<Bundle-Name>${project.artifactId}</Bundle-Name>
<Bundle-Version>${carbon.device.mgt.version}</Bundle-Version>
<Bundle-Description>Policy Information Point Bundle</Bundle-Description>
<Private-Package>org.wso2.carbon.policy.information.point.internal</Private-Package>
<Bundle-Activator>org.wso2.carbon.policy.information.point.internal.PolicyInformationPointBundleActivator</Bundle-Activator>
<Export-Package>
org.wso2.carbon.policy.information.point.*
</Export-Package>
</instructions>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.eclipse.osgi</groupId>
<artifactId>org.eclipse.osgi</artifactId>
</dependency>
<dependency>
<groupId>org.eclipse.equinox</groupId>
<artifactId>org.eclipse.equinox.common</artifactId>
</dependency>
<dependency>
<groupId>org.wso2.carbon</groupId>
<artifactId>org.wso2.carbon.logging</artifactId>
</dependency>
<dependency>
<groupId>org.wso2.carbon.devicemgt</groupId>
<artifactId>org.wso2.carbon.policy.mgt.common</artifactId>
</dependency>
</dependencies>
</project>

@ -0,0 +1,43 @@
/*
* Copyright (c) 2015 WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* WSO2 Inc. licenses this file to you 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 org.wso2.carbon.policy.information.point;
import org.wso2.carbon.policy.mgt.common.Feature;
import org.wso2.carbon.policy.mgt.common.PIPDeviceData;
import org.wso2.carbon.policy.mgt.common.Policy;
import org.wso2.carbon.policy.mgt.common.PolicyInformationService;
import java.util.List;
public class PolicyInformationServiceImpl implements PolicyInformationService{
@Override
public void getDeviceData(PIPDeviceData pipDeviceData) {
}
@Override
public List<Policy> getRelatedPolicies(PIPDeviceData pipDeviceData) {
return null;
}
@Override
public List<Feature> getRelatedFeatures(String deviceType) {
return null;
}
}

@ -0,0 +1,66 @@
/*
* Copyright (c) 2015 WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* WSO2 Inc. licenses this file to you 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 org.wso2.carbon.policy.information.point.internal;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceRegistration;
import org.wso2.carbon.policy.information.point.PolicyInformationServiceImpl;
import org.wso2.carbon.policy.mgt.common.PolicyInformationService;
public class PolicyInformationPointBundleActivator implements BundleActivator {
private ServiceRegistration pipServiceRegRef;
private static final Log log = LogFactory.getLog(PolicyInformationPointBundleActivator.class);
@Override
public void start(BundleContext bundleContext) throws Exception {
try {
if (log.isDebugEnabled()) {
log.debug("Activating Policy information Point bundle.");
}
pipServiceRegRef = bundleContext.registerService(PolicyInformationService.class.getName(),
new PolicyInformationServiceImpl(), null);
if (log.isDebugEnabled()) {
log.debug("Policy information Point bundle is activated.");
}
} catch (Exception ex) {
log.error("Error occurred while activating the Policy Information Point bundle.", ex);
}
}
@Override
public void stop(BundleContext bundleContext) throws Exception {
try {
if (log.isDebugEnabled()) {
log.debug("Policy information Point bundle is deactivated.");
}
pipServiceRegRef.unregister();
} catch (Exception ex) {
log.error("Error occurred while de-activating the Policy Information Point bundle.", ex);
}
}
}

@ -0,0 +1,39 @@
/*
* Copyright (c) 2015 WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* WSO2 Inc. licenses this file to you 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 org.wso2.carbon.policy.mgt.common;
import java.sql.Timestamp;
import java.util.List;
import java.util.Map;
public class PIPDeviceData {
String deviceId;
String deviceType;
String ownershipType;
List<String> userIds;
List<String> roles;
String altitude;
String longitude;
Timestamp timestamp;
/*This will be used to record attributes to which would come from other PDPs*/
Map<String, Object> attributes;
}

@ -18,16 +18,82 @@
package org.wso2.carbon.policy.mgt.common; package org.wso2.carbon.policy.mgt.common;
import java.sql.Date;
import java.util.List; import java.util.List;
import java.util.Map;
/**
* This class will be the used to create policy object with relevant information for evaluating.
*/
public class Policy { public class Policy {
private int id; private int id; // Identifier of the policy.
private String policyName; private int priorityId; // Priority of the policies. This will be used only for simple evaluation.
private List<Feature> featuresList; private String policyName; // Name of the policy.
private boolean generic; private List<Feature> featuresList; // Features included in the policies.
private List<String> roleList; private boolean generic; // If true, this should be applied to all related device.
private List<String> DeviceList; private List<String> roleList; // Roles which this policy should be applied.
private String deviceType; private String ownershipType; // Ownership type (COPE, BYOD, CPE)
private List<String> DeviceList; // Individual devices this policy should be applied
private String deviceType; // Device type to apply the policy.
/*Dynamic policy attributes*/
/*These are related to time based policies*/
private int startTime; // Start time to apply the policy.
private int endTime; // After this time policy will not be applied
private Date startDate; // Start date to apply the policy
private Date endDate; // After this date policy will not be applied.
/*These are related to location based policies*/
private String altitude; // Altitude
private String longitude; // Longitude
/*This will be used to record attributes which will be used by customer extended PDPs and PIPs*/
private Map<String, Object> attributes;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getPriorityId() {
return priorityId;
}
public void setPriorityId(int priorityId) {
this.priorityId = priorityId;
}
public String getPolicyName() {
return policyName;
}
public void setPolicyName(String policyName) {
this.policyName = policyName;
}
public List<Feature> getFeaturesList() {
return featuresList;
}
public void setFeaturesList(List<Feature> featuresList) {
this.featuresList = featuresList;
}
public boolean isGeneric() {
return generic;
}
public void setGeneric(boolean generic) {
this.generic = generic;
}
public List<String> getRoleList() { public List<String> getRoleList() {
return roleList; return roleList;
@ -37,6 +103,14 @@ public class Policy {
this.roleList = roleList; this.roleList = roleList;
} }
public String getOwnershipType() {
return ownershipType;
}
public void setOwnershipType(String ownershipType) {
this.ownershipType = ownershipType;
}
public List<String> getDeviceList() { public List<String> getDeviceList() {
return DeviceList; return DeviceList;
} }
@ -53,35 +127,59 @@ public class Policy {
this.deviceType = deviceType; this.deviceType = deviceType;
} }
public boolean isGeneric() { public int getStartTime() {
return generic; return startTime;
} }
public void setGeneric(boolean generic) { public void setStartTime(int startTime) {
this.generic = generic; this.startTime = startTime;
} }
public int getId() { public int getEndTime() {
return id; return endTime;
} }
public void setId(int id) { public void setEndTime(int endTime) {
this.id = id; this.endTime = endTime;
} }
public String getPolicyName() { public Date getStartDate() {
return policyName; return startDate;
} }
public void setPolicyName(String policyName) { public void setStartDate(Date startDate) {
this.policyName = policyName; this.startDate = startDate;
} }
public List<Feature> getFeaturesList() { public Date getEndDate() {
return featuresList; return endDate;
} }
public void setFeaturesList(List<Feature> featuresList) { public void setEndDate(Date endDate) {
this.featuresList = featuresList; this.endDate = endDate;
}
public String getAltitude() {
return altitude;
}
public void setAltitude(String altitude) {
this.altitude = altitude;
}
public String getLongitude() {
return longitude;
}
public void setLongitude(String longitude) {
this.longitude = longitude;
}
public Map<String, Object> getAttributes() {
return attributes;
}
public void setAttributes(Map<String, Object> attributes) {
this.attributes = attributes;
} }
} }

@ -22,7 +22,7 @@ package org.wso2.carbon.policy.mgt.common;
* This interface defines the policy management which should be implemented by the plugins * This interface defines the policy management which should be implemented by the plugins
*/ */
public interface PolicyManagerService { public interface PolicyAdministratorService {
/** /**
* This method adds a policy to the platform * This method adds a policy to the platform
@ -100,11 +100,32 @@ public interface PolicyManagerService {
Policy getPolicyOfRole(String roleName) throws FeatureManagementException, PolicyManagementException; Policy getPolicyOfRole(String roleName) throws FeatureManagementException, PolicyManagementException;
/**
* This method checks weather a policy is available for a device.
* @param deviceId
* @param deviceType
* @return
* @throws PolicyManagementException
*/
boolean isPolicyAvailableForDevice(String deviceId, String deviceType) throws PolicyManagementException; boolean isPolicyAvailableForDevice(String deviceId, String deviceType) throws PolicyManagementException;
/**
* This method checks weather a policy is used by a particular device.
* @param deviceId
* @param deviceType
* @return
* @throws PolicyManagementException
*/
boolean isPolicyUsed(String deviceId, String deviceType) throws PolicyManagementException; boolean isPolicyUsed(String deviceId, String deviceType) throws PolicyManagementException;
/**
*
* @param deviceId
* @param deviceType
* @param policy
* @throws PolicyManagementException
*/
void setPolicyUsed(String deviceId, String deviceType, Policy policy) throws PolicyManagementException; void setPolicyUsed(String deviceId, String deviceType, Policy policy) throws PolicyManagementException;
} }

@ -0,0 +1,44 @@
/*
* Copyright (c) 2015 WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* WSO2 Inc. licenses this file to you 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 org.wso2.carbon.policy.mgt.common;
import java.util.List;
/**
* This is the interface which will be used to create plug-able policy decision points.
*/
public interface PolicyEvaluationService {
/**
* This method returns the effective policy from the list.
* @param pipDeviceData device information.
* @return returns the effective policy.
*/
Policy getEffectivePolicy(PIPDeviceData pipDeviceData);
/**
* This class will return the effective feature set from the list.
* @param pipDeviceData device information.
* @return returns the effective feature set.
*/
List<Feature> getEffectiveFeatures(PIPDeviceData pipDeviceData);
}

@ -0,0 +1,50 @@
/*
* Copyright (c) 2015 WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* WSO2 Inc. licenses this file to you 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 org.wso2.carbon.policy.mgt.common;
import java.util.List;
/**
* This will be used retrieve data database. This interface has to be implemented by PIP. PIP will be plug-able.
*/
public interface PolicyInformationService {
/**
* This method will return the data related Device, Some of the device data will provided in the initial pipDeviceData object such as
* device id, device time and location, Other data such as roles, owned users and ownership type will be filled by this method.
* @param pipDeviceData device data.
*/
void getDeviceData(PIPDeviceData pipDeviceData);
/**
* This method will retrieve the policies related given device Data.
* @param pipDeviceData
* @return
*/
List<Policy> getRelatedPolicies(PIPDeviceData pipDeviceData);
/**
* This is will retrieve the features related to device type. This feature list will be used for dynamically
* merging the policies.
* @param deviceType
* @return
*/
List<Feature> getRelatedFeatures(String deviceType);
}

@ -20,10 +20,10 @@ package org.wso2.carbon.policy.mgt.common.impl;
import org.wso2.carbon.policy.mgt.common.FeatureManagementException; import org.wso2.carbon.policy.mgt.common.FeatureManagementException;
import org.wso2.carbon.policy.mgt.common.Policy; import org.wso2.carbon.policy.mgt.common.Policy;
import org.wso2.carbon.policy.mgt.common.PolicyAdministratorService;
import org.wso2.carbon.policy.mgt.common.PolicyManagementException; import org.wso2.carbon.policy.mgt.common.PolicyManagementException;
import org.wso2.carbon.policy.mgt.common.PolicyManagerService;
public class PolicyManagement implements PolicyManagerService { public class PolicyManagement implements PolicyAdministratorService {
@Override @Override
public int addPolicy(Policy policy) { public int addPolicy(Policy policy) {
return 0; return 0;

@ -21,6 +21,7 @@ package org.wso2.carbon.policy.mgt.core.internal;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.LogFactory;
import org.osgi.service.component.ComponentContext; import org.osgi.service.component.ComponentContext;
import org.wso2.carbon.policy.mgt.common.PolicyInformationService;
import org.wso2.carbon.policy.mgt.core.config.PolicyConfigurationManager; import org.wso2.carbon.policy.mgt.core.config.PolicyConfigurationManager;
import org.wso2.carbon.policy.mgt.core.config.PolicyManagementConfig; import org.wso2.carbon.policy.mgt.core.config.PolicyManagementConfig;
import org.wso2.carbon.policy.mgt.core.config.datasource.DataSourceConfig; import org.wso2.carbon.policy.mgt.core.config.datasource.DataSourceConfig;
@ -28,13 +29,19 @@ import org.wso2.carbon.policy.mgt.core.dao.PolicyManagementDAOFactory;
import org.wso2.carbon.user.core.service.RealmService; import org.wso2.carbon.user.core.service.RealmService;
/** /**
* @scr.component name="org.wso2.carbon.policy.manager" immediate="true" * @scr.component name="org.wso2.carbon.devicemgt.policy.manager" immediate="true"
* @scr.reference name="user.realmservice.default" * @scr.reference name="user.realmservice.default"
* interface="org.wso2.carbon.user.core.service.RealmService" * interface="org.wso2.carbon.user.core.service.RealmService"
* cardinality="1..1" * cardinality="1..1"
* policy="dynamic" * policy="dynamic"
* bind="setRealmService" * bind="setRealmService"
* unbind="unsetRealmService" * unbind="unsetRealmService"
* @scr.reference name="org.wso2.carbon.devicemgt.policy.information.point.default"
* interface="org.wso2.carbon.policy.mgt.common.PolicyInformationService"
* cardinality="1..1"
* policy="dynamic"
* bind="setPIPService"
* unbind="unsetPIPService"
*/ */
public class PolicyManagementServiceComponent { public class PolicyManagementServiceComponent {
@ -81,4 +88,17 @@ public class PolicyManagementServiceComponent {
PolicyManagementDataHolder.getInstance().setRealmService(null); PolicyManagementDataHolder.getInstance().setRealmService(null);
} }
protected void setPIPService(PolicyInformationService policyInformationService) {
if (log.isDebugEnabled()) {
log.debug("Setting Policy Information Service");
}
}
protected void unsetPIPService(PolicyInformationService policyInformationService) {
if (log.isDebugEnabled()) {
log.debug("Unsetting Policy Information Service");
}
}
} }

@ -0,0 +1,64 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<groupId>org.wso2.carbon.devicemgt</groupId>
<artifactId>policy-mgt</artifactId>
<version>0.9.1-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>org.wso2.carbon.devicemgt</groupId>
<artifactId>org.wso2.carbon.simple.policy.decision.point</artifactId>
<version>0.9.1-SNAPSHOT</version>
<packaging>bundle</packaging>
<name>WSO2 Carbon - Simple Policy Decision Point</name>
<description>WSO2 Carbon - Simple Policy Decision Point</description>
<url>http://wso2.org</url>
<build>
<plugins>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-scr-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>1.4.0</version>
<extensions>true</extensions>
<configuration>
<instructions>
<Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
<Bundle-Name>${project.artifactId}</Bundle-Name>
<Bundle-Version>${carbon.device.mgt.version}</Bundle-Version>
<Bundle-Description>Simple Policy Decision Point Bundle</Bundle-Description>
<Private-Package>org.wso2.carbon.simple.policy.decision.point.internal</Private-Package>
<Export-Package>
org.wso2.carbon.simple.policy.decision.point.*
</Export-Package>
</instructions>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.eclipse.osgi</groupId>
<artifactId>org.eclipse.osgi</artifactId>
</dependency>
<dependency>
<groupId>org.eclipse.equinox</groupId>
<artifactId>org.eclipse.equinox.common</artifactId>
</dependency>
<dependency>
<groupId>org.wso2.carbon</groupId>
<artifactId>org.wso2.carbon.logging</artifactId>
</dependency>
<dependency>
<groupId>org.wso2.carbon.devicemgt</groupId>
<artifactId>org.wso2.carbon.policy.mgt.common</artifactId>
</dependency>
</dependencies>
</project>

@ -0,0 +1,38 @@
/*
* Copyright (c) 2015 WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* WSO2 Inc. licenses this file to you 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 org.wso2.carbon.simple.policy.decision.point;
import org.wso2.carbon.policy.mgt.common.Feature;
import org.wso2.carbon.policy.mgt.common.PIPDeviceData;
import org.wso2.carbon.policy.mgt.common.Policy;
import org.wso2.carbon.policy.mgt.common.PolicyEvaluationService;
import java.util.List;
public class PolicyEvaluationServiceImpl implements PolicyEvaluationService {
@Override
public Policy getEffectivePolicy(PIPDeviceData pipDeviceData) {
return null;
}
@Override
public List<Feature> getEffectiveFeatures(PIPDeviceData pipDeviceData) {
return null;
}
}

@ -38,7 +38,9 @@
<modules> <modules>
<module>org.wso2.carbon.policy.mgt.core</module> <module>org.wso2.carbon.policy.mgt.core</module>
<module>org.wso2.carbon.policy.mgt.common</module> <module>org.wso2.carbon.policy.mgt.common</module>
<module>org.wso2.carbon.policy.evalutor</module> <module>org.wso2.carbon.policy.information.point</module>
<module>org.wso2.carbon.simple.policy.decision.point</module>
<module>org.wso2.carbon.complex.policy.decision.point</module>
</modules> </modules>

@ -18,7 +18,8 @@
~ under the License. ~ under the License.
--> -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent> <parent>
<groupId>org.wso2.carbon.devicemgt</groupId> <groupId>org.wso2.carbon.devicemgt</groupId>
@ -47,7 +48,11 @@
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.wso2.carbon.devicemgt</groupId> <groupId>org.wso2.carbon.devicemgt</groupId>
<artifactId>org.wso2.carbon.policy.evaluator</artifactId> <artifactId>org.wso2.carbon.complex.policy.decision.point</artifactId>
</dependency>
<dependency>
<groupId>org.wso2.carbon.devicemgt</groupId>
<artifactId>org.wso2.carbon.policy.information.point</artifactId>
</dependency> </dependency>
</dependencies> </dependencies>
@ -99,11 +104,17 @@
</properties> </properties>
</adviceFile> </adviceFile>
<bundles> <bundles>
<bundleDef>org.wso2.carbon.devicemgt:org.wso2.carbon.policy.mgt.core:${carbon.device.mgt.version} <bundleDef>
org.wso2.carbon.devicemgt:org.wso2.carbon.policy.mgt.core:${carbon.device.mgt.version}
</bundleDef>
<bundleDef>
org.wso2.carbon.devicemgt:org.wso2.carbon.policy.mgt.common:${carbon.device.mgt.version}
</bundleDef> </bundleDef>
<bundleDef>org.wso2.carbon.devicemgt:org.wso2.carbon.policy.mgt.common:${carbon.device.mgt.version} <bundleDef>
org.wso2.carbon.devicemgt:org.wso2.carbon.complex.policy.decision.point:${carbon.device.mgt.version}
</bundleDef> </bundleDef>
<bundleDef>org.wso2.carbon.devicemgt:org.wso2.carbon.policy.evaluator:${carbon.device.mgt.version} <bundleDef>
org.wso2.carbon.devicemgt:org.wso2.carbon.policy.information.point:${carbon.device.mgt.version}
</bundleDef> </bundleDef>
</bundles> </bundles>
<importFeatures> <importFeatures>

@ -67,7 +67,12 @@
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.wso2.carbon.devicemgt</groupId> <groupId>org.wso2.carbon.devicemgt</groupId>
<artifactId>org.wso2.carbon.policy.evaluator</artifactId> <artifactId>org.wso2.carbon.complex.policy.decision.point</artifactId>
<version>${carbon.device.mgt.version}</version>
</dependency>
<dependency>
<groupId>org.wso2.carbon.devicemgt</groupId>
<artifactId>org.wso2.carbon.policy.information.point</artifactId>
<version>${carbon.device.mgt.version}</version> <version>${carbon.device.mgt.version}</version>
</dependency> </dependency>
<!-- Device Management dependencies --> <!-- Device Management dependencies -->

Loading…
Cancel
Save