Expose device type extension dao plugin via device type deployer

revert-70aa11f8
Saad Sahibjan 5 years ago
parent f1c6ee7068
commit 9d81ee6cb4

@ -34,6 +34,7 @@
*/ */
package org.wso2.carbon.device.mgt.extensions.device.type.template; package org.wso2.carbon.device.mgt.extensions.device.type.template;
import org.apache.commons.lang.StringUtils;
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.w3c.dom.Document; import org.w3c.dom.Document;
@ -48,9 +49,11 @@ import org.wso2.carbon.device.mgt.common.configuration.mgt.PlatformConfiguration
import org.wso2.carbon.device.mgt.common.license.mgt.License; import org.wso2.carbon.device.mgt.common.license.mgt.License;
import org.wso2.carbon.device.mgt.common.license.mgt.LicenseManagementException; import org.wso2.carbon.device.mgt.common.license.mgt.LicenseManagementException;
import org.wso2.carbon.device.mgt.common.license.mgt.LicenseManager; import org.wso2.carbon.device.mgt.common.license.mgt.LicenseManager;
import org.wso2.carbon.device.mgt.extensions.spi.DeviceTypeManagerExtensionService;
import org.wso2.carbon.device.mgt.extensions.device.type.template.config.DataSource; import org.wso2.carbon.device.mgt.extensions.device.type.template.config.DataSource;
import org.wso2.carbon.device.mgt.extensions.device.type.template.config.DeviceDetails; import org.wso2.carbon.device.mgt.extensions.device.type.template.config.DeviceDetails;
import org.wso2.carbon.device.mgt.extensions.device.type.template.config.DeviceTypeConfiguration; import org.wso2.carbon.device.mgt.extensions.device.type.template.config.DeviceTypeConfiguration;
import org.wso2.carbon.device.mgt.extensions.device.type.template.config.DeviceTypeManagerExtensionConfig;
import org.wso2.carbon.device.mgt.extensions.device.type.template.config.Feature; import org.wso2.carbon.device.mgt.extensions.device.type.template.config.Feature;
import org.wso2.carbon.device.mgt.extensions.device.type.template.config.Table; import org.wso2.carbon.device.mgt.extensions.device.type.template.config.Table;
import org.wso2.carbon.device.mgt.extensions.device.type.template.config.TableConfig; import org.wso2.carbon.device.mgt.extensions.device.type.template.config.TableConfig;
@ -213,6 +216,35 @@ public class DeviceTypeManager implements DeviceManager {
} }
} }
} }
setDeviceTypeManagerExtensionServices(deviceTypeConfiguration);
}
private void setDeviceTypeManagerExtensionServices(DeviceTypeConfiguration deviceTypeConfiguration) {
DeviceTypeManagerExtensionConfig deviceTypeExtensionConfig = deviceTypeConfiguration.getDeviceTypeExtensionConfig();
if (deviceTypeExtensionConfig != null) {
String extensionClass = deviceTypeExtensionConfig.getExtensionClass();
if (StringUtils.isNotEmpty(extensionClass)) {
try {
Class<?> clz = Class.forName(extensionClass);
DeviceTypeManagerExtensionService deviceTypeManagerExtensionService = (DeviceTypeManagerExtensionService) clz.newInstance();
if (deviceTypePluginDAOManager != null) {
deviceTypeManagerExtensionService.setDeviceTypePluginDAOManager(deviceTypePluginDAOManager);
}
} catch (ClassNotFoundException e) {
String msg = "Extension class cannot be located";
log.error(msg, e);
throw new DeviceTypeDeployerPayloadException(msg, e);
} catch (IllegalAccessException e) {
String msg = "Cannot access the class or its constructor is not accessible.";
log.error(msg, e);
throw new DeviceTypeDeployerPayloadException(msg, e);
} catch (InstantiationException e) {
String msg = "Extension class instantiation is failed";
log.error(msg, e);
throw new DeviceTypeDeployerPayloadException(msg, e);
}
}
}
} }
@Override @Override

@ -105,6 +105,8 @@ public class DeviceTypeConfiguration {
@XmlElementWrapper(name = "StartupOperationConfig") @XmlElementWrapper(name = "StartupOperationConfig")
@XmlElement(name = "Operation", required = true) @XmlElement(name = "Operation", required = true)
protected List<String> startupOperations; protected List<String> startupOperations;
@XmlElement(name = "DeviceTypeManagerExtensionConfig")
private DeviceTypeManagerExtensionConfig deviceTypeExtensionConfig;
public List<String> getOperations() { public List<String> getOperations() {
return operations; return operations;
@ -402,4 +404,25 @@ public class DeviceTypeConfiguration {
public void setStartupOperations(List<String> startupOperations) { public void setStartupOperations(List<String> startupOperations) {
this.startupOperations = startupOperations; this.startupOperations = startupOperations;
} }
/**
* Gets the value of DeviceTypeManagerExtensionConfig
*
* @return possible object is
* {@link DeviceTypeManagerExtensionConfig}
*/
public DeviceTypeManagerExtensionConfig getDeviceTypeExtensionConfig() {
return deviceTypeExtensionConfig;
}
/**
* Sets the value for DeviceTypeManagerExtensionConfig
*
* @param deviceTypeExtensionConfig possible object is
* {@link DeviceTypeManagerExtensionConfig}
*/
public void setDeviceTypeExtensionConfig(
DeviceTypeManagerExtensionConfig deviceTypeExtensionConfig) {
this.deviceTypeExtensionConfig = deviceTypeExtensionConfig;
}
} }

@ -2,6 +2,7 @@ package org.wso2.carbon.device.mgt.extensions.device.type.template.dao;
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.wso2.carbon.device.mgt.common.IllegalTransactionStateException;
import org.wso2.carbon.device.mgt.extensions.device.type.template.exception.DeviceTypeDeployerPayloadException; import org.wso2.carbon.device.mgt.extensions.device.type.template.exception.DeviceTypeDeployerPayloadException;
import org.wso2.carbon.device.mgt.extensions.device.type.template.exception.DeviceTypeMgtPluginException; import org.wso2.carbon.device.mgt.extensions.device.type.template.exception.DeviceTypeMgtPluginException;
@ -35,6 +36,19 @@ public class DeviceTypeDAOHandler {
} }
} }
public void openConnection() throws DeviceTypeMgtPluginException {
try {
Connection conn = currentConnection.get();
if (conn != null) {
throw new IllegalTransactionStateException("Database connection has already been obtained.");
}
conn = dataSource.getConnection();
currentConnection.set(conn);
} catch (SQLException e) {
throw new DeviceTypeMgtPluginException("Failed to get a database connection.", e);
}
}
public void beginTransaction() throws DeviceTypeMgtPluginException { public void beginTransaction() throws DeviceTypeMgtPluginException {
try { try {
Connection conn = dataSource.getConnection(); Connection conn = dataSource.getConnection();

Loading…
Cancel
Save