diff --git a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/deployer/config/DeviceAuthorizationConfig.java b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/deployer/config/DeviceAuthorizationConfig.java new file mode 100644 index 00000000000..833719ba2a6 --- /dev/null +++ b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/deployer/config/DeviceAuthorizationConfig.java @@ -0,0 +1,68 @@ +/* + * Copyright (c) 2016, 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.extensions.device.type.deployer.config; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlType; + +/** + *

Java class for Device type authorization requirement. + *

+ *

The following schema fragment specifies the expected content contained within this class. + *

+ *

+ * <complexType name="DeviceAuthorizationConfig">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <sequence>
+ *         <element name="authorizationRequired" type="{http://www.w3.org/2001/XMLSchema}boolean"/>
+ *       </sequence>
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "DeviceAuthorizationConfig", propOrder = { + "authorizationRequired" +}) +public class DeviceAuthorizationConfig { + + @XmlElement(name = "authorizationRequired") + protected boolean authorizationRequired; + + /** + * Gets the value of the sharedWithAllTenants property. + */ + public boolean isAuthorizationRequired() { + return authorizationRequired; + } + + /** + * Sets the value of the sharedWithAllTenants property. + */ + public void setAuthorizationRequired(boolean authorizationRequired) { + this.authorizationRequired = authorizationRequired; + } + +} + diff --git a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/deployer/config/DeviceTypeConfiguration.java b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/deployer/config/DeviceTypeConfiguration.java index c972d8de2ef..867e0a377d6 100644 --- a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/deployer/config/DeviceTypeConfiguration.java +++ b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/deployer/config/DeviceTypeConfiguration.java @@ -27,9 +27,9 @@ import javax.xml.bind.annotation.XmlRootElement; /** *

Java class for DeviceTypeConfiguration complex type. - * + *

*

The following schema fragment specifies the expected content contained within this class. - * + *

*

  * <complexType name="DeviceTypeConfiguration">
  *   <complexContent>
@@ -41,14 +41,13 @@ import javax.xml.bind.annotation.XmlRootElement;
  *         <element name="PushNotificationProvider" type="{}PushNotificationProvider"/>
  *         <element name="License" type="{}License"/>
  *         <element name="DataSource" type="{}DataSource"/>
+ *         <element name="DeviceAuthorizationConfig" type="{}DeviceAuthorizationConfig"/>
  *       </sequence>
  *       <attribute name="name" type="{http://www.w3.org/2001/XMLSchema}string" />
  *     </restriction>
  *   </complexContent>
  * </complexType>
  * 
- * - * */ @XmlAccessorType(XmlAccessType.FIELD) @XmlRootElement(name = "DeviceTypeConfiguration") @@ -68,6 +67,8 @@ public class DeviceTypeConfiguration { protected DataSource dataSource; @XmlElement(name = "TaskConfiguration", required = true) private TaskConfiguration taskConfiguration; + @XmlElement(name = "DeviceAuthorizationConfig", required = true) + protected DeviceAuthorizationConfig deviceAuthorizationConfig; @XmlAttribute(name = "name") protected String name; @@ -97,11 +98,9 @@ public class DeviceTypeConfiguration { /** * Gets the value of the deviceDetails property. - * - * @return - * possible object is - * {@link DeviceDetails } - * + * + * @return possible object is + * {@link DeviceDetails } */ public DeviceDetails getDeviceDetails() { return deviceDetails; @@ -109,11 +108,9 @@ public class DeviceTypeConfiguration { /** * Sets the value of the deviceDetails property. - * - * @param value - * allowed object is - * {@link DeviceDetails } - * + * + * @param value allowed object is + * {@link DeviceDetails } */ public void setDeviceDetails(DeviceDetails value) { this.deviceDetails = value; @@ -121,11 +118,9 @@ public class DeviceTypeConfiguration { /** * Gets the value of the features property. - * - * @return - * possible object is - * {@link Features } - * + * + * @return possible object is + * {@link Features } */ public Features getFeatures() { return features; @@ -133,11 +128,9 @@ public class DeviceTypeConfiguration { /** * Sets the value of the features property. - * - * @param value - * allowed object is - * {@link Features } - * + * + * @param value allowed object is + * {@link Features } */ public void setFeatures(Features value) { this.features = value; @@ -145,11 +138,9 @@ public class DeviceTypeConfiguration { /** * Gets the value of the provisioningConfig property. - * - * @return - * possible object is - * {@link ProvisioningConfig } - * + * + * @return possible object is + * {@link ProvisioningConfig } */ public ProvisioningConfig getProvisioningConfig() { return provisioningConfig; @@ -157,11 +148,9 @@ public class DeviceTypeConfiguration { /** * Sets the value of the provisioningConfig property. - * - * @param value - * allowed object is - * {@link ProvisioningConfig } - * + * + * @param value allowed object is + * {@link ProvisioningConfig } */ public void setProvisioningConfig(ProvisioningConfig value) { this.provisioningConfig = value; @@ -169,11 +158,9 @@ public class DeviceTypeConfiguration { /** * Gets the value of the pushNotificationProvider property. - * - * @return - * possible object is - * {@link PushNotificationProvider } - * + * + * @return possible object is + * {@link PushNotificationProvider } */ public PushNotificationProvider getPushNotificationProvider() { return pushNotificationProvider; @@ -181,11 +168,9 @@ public class DeviceTypeConfiguration { /** * Sets the value of the pushNotificationProvider property. - * - * @param value - * allowed object is - * {@link PushNotificationProvider } - * + * + * @param value allowed object is + * {@link PushNotificationProvider } */ public void setPushNotificationProvider(PushNotificationProvider value) { this.pushNotificationProvider = value; @@ -193,11 +178,9 @@ public class DeviceTypeConfiguration { /** * Gets the value of the license property. - * - * @return - * possible object is - * {@link License } - * + * + * @return possible object is + * {@link License } */ public License getLicense() { return license; @@ -205,11 +188,9 @@ public class DeviceTypeConfiguration { /** * Sets the value of the license property. - * - * @param value - * allowed object is - * {@link License } - * + * + * @param value allowed object is + * {@link License } */ public void setLicense(License value) { this.license = value; @@ -217,11 +198,9 @@ public class DeviceTypeConfiguration { /** * Gets the value of the dataSource property. - * - * @return - * possible object is - * {@link DataSource } - * + * + * @return possible object is + * {@link DataSource } */ public DataSource getDataSource() { return dataSource; @@ -229,11 +208,9 @@ public class DeviceTypeConfiguration { /** * Sets the value of the dataSource property. - * - * @param value - * allowed object is - * {@link DataSource } - * + * + * @param value allowed object is + * {@link DataSource } */ public void setDataSource(DataSource value) { this.dataSource = value; @@ -241,11 +218,9 @@ public class DeviceTypeConfiguration { /** * Gets the value of the name property. - * - * @return - * possible object is - * {@link String } - * + * + * @return possible object is + * {@link String } */ public String getName() { return name; @@ -253,14 +228,32 @@ public class DeviceTypeConfiguration { /** * Sets the value of the name property. - * - * @param value - * allowed object is - * {@link String } - * + * + * @param value allowed object is + * {@link String } */ public void setName(String value) { this.name = value; } + /** + * Gets the value of the authorizationRequired property. + * + * @return possible object is + * {@link DeviceAuthorizationConfig } + */ + public DeviceAuthorizationConfig getDeviceAuthorizationConfig() { + return deviceAuthorizationConfig; + } + + /** + * Sets the value of the provisioningConfig property. + * + * @param value allowed object is + * {@link DeviceAuthorizationConfig } + */ + public void setDeviceAuthorizationConfig(DeviceAuthorizationConfig value) { + this.deviceAuthorizationConfig = value; + } + } diff --git a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/deployer/template/DeviceTypeManager.java b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/deployer/template/DeviceTypeManager.java index e0f2d45f10f..8a9bcd7ed59 100644 --- a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/deployer/template/DeviceTypeManager.java +++ b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/deployer/template/DeviceTypeManager.java @@ -30,11 +30,8 @@ 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.LicenseManagementException; import org.wso2.carbon.device.mgt.common.license.mgt.LicenseManager; -import org.wso2.carbon.device.mgt.extensions.device.type.deployer.config.DeviceDetails; -import org.wso2.carbon.device.mgt.extensions.device.type.deployer.config.DeviceTypeConfiguration; -import org.wso2.carbon.device.mgt.extensions.device.type.deployer.config.Table; +import org.wso2.carbon.device.mgt.extensions.device.type.deployer.config.*; import org.wso2.carbon.device.mgt.extensions.device.type.deployer.util.DeviceTypePluginConstants; -import org.wso2.carbon.device.mgt.extensions.device.type.deployer.config.Feature; import org.wso2.carbon.device.mgt.extensions.device.type.deployer.exception.DeviceTypeDeployerFileException; import org.wso2.carbon.device.mgt.extensions.device.type.deployer.exception.DeviceTypeMgtPluginException; import org.wso2.carbon.device.mgt.extensions.device.type.deployer.template.dao.DeviceDAODefinition; @@ -65,18 +62,26 @@ public class DeviceTypeManager implements DeviceManager { private DeviceTypePluginDAOManager deviceTypePluginDAOManager; private LicenseManager licenseManager; private boolean propertiesExist; + private boolean requiredDeviceTypeAuthorization; private FeatureManager featureManager; + public DeviceTypeManager(DeviceTypeConfigIdentifier deviceTypeConfigIdentifier, - DeviceTypeConfiguration deviceTypeConfiguration) { + DeviceTypeConfiguration deviceTypeConfiguration) { deviceType = deviceTypeConfigIdentifier.getDeviceType(); - if (deviceTypeConfiguration.getFeatures() != null && deviceTypeConfiguration.getFeatures().getFeature() != null ) { + if (deviceTypeConfiguration.getFeatures() != null && deviceTypeConfiguration.getFeatures(). + getFeature() != null) { List features = deviceTypeConfiguration.getFeatures().getFeature(); if (features != null) { featureManager = new ConfigurationBasedFeatureManager(features); } } - + if (deviceTypeConfiguration.getDeviceAuthorizationConfig() != null) { + requiredDeviceTypeAuthorization = deviceTypeConfiguration.getDeviceAuthorizationConfig(). + isAuthorizationRequired(); + } else { + requiredDeviceTypeAuthorization = true; + } //add license to registry. this.licenseManager = new RegistryBasedLicenseManager(); try { @@ -120,11 +125,11 @@ public class DeviceTypeManager implements DeviceManager { if (setupOption != null) { if (log.isDebugEnabled()) { log.debug("-Dsetup is enabled. Device management repository schema initialization is about " + - "to begin"); + "to begin"); } try { DeviceTypeUtils.setupDeviceManagementSchema(datasourceName, deviceType, - deviceDAODefinition.getDeviceTableName()); + deviceDAODefinition.getDeviceTableName()); } catch (DeviceTypeMgtPluginException e) { log.error("Exception occurred while initializing device management database schema", e); } @@ -346,7 +351,7 @@ public class DeviceTypeManager implements DeviceManager { @Override public boolean requireDeviceAuthorization() { - return true; + return requiredDeviceTypeAuthorization; } @Override @@ -370,7 +375,7 @@ public class DeviceTypeManager implements DeviceManager { deviceTypePluginDAOManager.getDeviceTypeDAOHandler().rollbackTransaction(); } catch (DeviceTypeMgtPluginException e1) { log.warn("Error occurred while roll back the update device info transaction : '" + - device.toString() + "'", e1); + device.toString() + "'", e1); } throw new DeviceManagementException( "Error occurred while updating the " + deviceType + " device: '" + diff --git a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/deployer/template/dao/DeviceTypePluginDAO.java b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/deployer/template/dao/DeviceTypePluginDAO.java index 79d60be5da5..ee4f6071b72 100644 --- a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/deployer/template/dao/DeviceTypePluginDAO.java +++ b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/deployer/template/dao/DeviceTypePluginDAO.java @@ -69,7 +69,7 @@ public class DeviceTypePluginDAO { device = new Device(); if (log.isDebugEnabled()) { log.debug(deviceId + " data has been fetched from " + deviceDAODefinition.getDeviceTableName() + - " database."); + " database."); } List properties = new ArrayList<>(); for (String columnName : deviceDAODefinition.getColumnNames()) { @@ -112,7 +112,7 @@ public class DeviceTypePluginDAO { status = true; if (log.isDebugEnabled()) { log.debug("device " + device.getDeviceIdentifier() + " data has been" + - " added to the " + deviceDAODefinition.getDeviceTableName() + " database."); + " added to the " + deviceDAODefinition.getDeviceTableName() + " database."); } } } catch (SQLException e) { @@ -170,7 +170,7 @@ public class DeviceTypePluginDAO { status = true; if (log.isDebugEnabled()) { log.debug("device " + deviceId + " data has deleted from the " + - deviceDAODefinition.getDeviceTableName() + " table."); + deviceDAODefinition.getDeviceTableName() + " table."); } } } catch (SQLException e) { @@ -241,7 +241,7 @@ public class DeviceTypePluginDAO { private String getPropertString(List properties, String propertyName) { for (Device.Property property : properties) { - if (property.getName().equals(propertyName)) { + if (property.getName() != null && property.getName().equals(propertyName)) { return property.getValue(); } } @@ -257,7 +257,7 @@ public class DeviceTypePluginDAO { + getPreparedInputString(deviceDAODefinition.getColumnNames().size() + 1) + ")"; updateDBQueryForUpdateDevice = "UPDATE " + deviceDAODefinition.getDeviceTableName() + " SET " - + getDeviceTableColumnNamesForUpdateQuery()+ " WHERE " + deviceDAODefinition.getPrimaryKey() + + getDeviceTableColumnNamesForUpdateQuery() + " WHERE " + deviceDAODefinition.getPrimaryKey() + " = ?"; deleteDBQueryToRemoveDevicd = "DELETE FROM " + deviceDAODefinition.getDeviceTableName() diff --git a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/src/test/resources/sample.xml b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/src/test/resources/sample.xml index c3e88c32dbb..6e21c52ef2c 100644 --- a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/src/test/resources/sample.xml +++ b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/src/test/resources/sample.xml @@ -63,6 +63,10 @@ false + + true + + true