Device Organization Feature

pull/238/head
Isuri Mendis 1 year ago
parent d7dc2c4791
commit 0d57fdd207

@ -1,5 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright (c) 2018 - 2023, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved.
~
@ -19,12 +18,20 @@
-->
<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/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>device-mgt-extensions</artifactId>
<groupId>io.entgra.device.mgt.core</groupId>
<version>5.0.31-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>io.entgra.device.mgt.core.device.mgt.extensions.device.organization</artifactId>
<packaging>bundle</packaging>
<name>Entgra IoT - Device Organization Module</name>
<description>Entgra IoT - Device Organization Module Implementation</description>
<url>http://entgra.io</url>
<dependencies>
<dependency>
<groupId>io.entgra.device.mgt.core</groupId>
@ -303,13 +310,6 @@
</dependency>
</dependencies>
<modelVersion>4.0.0</modelVersion>
<artifactId>io.entgra.device.mgt.core.device.mgt.extensions.device.organization</artifactId>
<packaging>bundle</packaging>
<name>Entgra IoT - Device Organization Module</name>
<description>Entgra IoT - Device Organization Module Implementation</description>
<url>http://entgra.io</url>
<build>
<plugins>
<plugin>
@ -330,17 +330,44 @@
<Bundle-Name>${project.artifactId}</Bundle-Name>
<Bundle-Version>${io.entgra.device.mgt.core.version}</Bundle-Version>
<Bundle-Description>IoT Device Management Device Organization Bundle</Bundle-Description>
<Export-Package>
io.entgra.device.mgt.core.device.mgt.extensions.device.organization.internal,
io.entgra.device.mgt.core.device.mgt.extensions.device.organization.*
</Export-Package>
<Private-Package>io.entgra.device.mgt.core.device.mgt.extensions.device.organization.internal</Private-Package>
<Import-Package>
org.wso2.carbon.context,
org.apache.commons.lang,
org.wso2.carbon.user.api,
org.osgi.framework.*;version="${imp.package.version.osgi.framework}",
org.osgi.service.*;version="${imp.package.version.osgi.service}",
org.apache.commons.logging,
org.wso2.carbon.user.core.service,
io.entgra.device.mgt.core.device.mgt.common.*
org.apache.commons.lang,
javax.xml,
javax.xml.stream,
javax.xml.bind.*,
javax.sql,
javax.xml.parsers; version=0.0.0,
org.w3c.dom,
javax.naming,
org.wso2.carbon.context,
org.wso2.carbon.base,
org.wso2.carbon.utils.*,
io.entgra.device.mgt.core.device.mgt.common.*,
io.entgra.device.mgt.core.device.mgt.core.*,
org.wso2.carbon.ndatasource.core,
org.wso2.carbon.registry.core,
org.wso2.carbon.registry.core.session,
org.wso2.carbon.registry.core.service,
org.wso2.carbon.registry.api,
io.entgra.device.mgt.core.device.mgt.extensions.license.mgt.registry,
javax.net.ssl,
org.wso2.carbon.core.util,
okhttp3,
org.json.*,
com.google.gson.*,
com.fasterxml.jackson.core.*,
com.fasterxml.jackson.databind.*,
com.fasterxml.jackson.annotation.*,
com.google.common.cache.*,
</Import-Package>
<Export-Package>
org.wso2.carbon.logging
</Export-Package>
</instructions>
</configuration>
</plugin>
@ -373,10 +400,4 @@
</plugins>
</build>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
</project>
</project>

@ -17,12 +17,10 @@
*/
package io.entgra.device.mgt.core.device.mgt.extensions.device.organization.dao;
import io.entgra.device.mgt.core.device.mgt.common.Device;
import io.entgra.device.mgt.core.device.mgt.extensions.device.organization.dto.DeviceNode;
import io.entgra.device.mgt.core.device.mgt.extensions.device.organization.dto.DeviceOrganization;
import io.entgra.device.mgt.core.device.mgt.extensions.device.organization.exception.DeviceOrganizationMgtDAOException;
import java.sql.Date;
import java.util.List;
/**
@ -32,6 +30,7 @@ public interface DeviceOrganizationDAO {
/**
* retrieve child devices per particular device ID
*
* @param node
* @param maxDepth
* @param includeDevice
@ -41,7 +40,6 @@ public interface DeviceOrganizationDAO {
List<DeviceNode> getChildrenOf(DeviceNode node, int maxDepth, boolean includeDevice) throws DeviceOrganizationMgtDAOException;
/**
*
* @param node
* @param maxDepth
* @param includeDevice
@ -52,6 +50,7 @@ public interface DeviceOrganizationDAO {
/**
* add a new reocrd to device organization table
*
* @param deviceOrganization
* @return
* @throws DeviceOrganizationMgtDAOException
@ -60,18 +59,15 @@ public interface DeviceOrganizationDAO {
/**
* update a record in device organization table
* @param deviceID
* @param parentDeviceID
* @param timestamp
* @param organizationId
*
* @param deviceOrganization
* @return
* @throws DeviceOrganizationMgtDAOException
*/
boolean updateDeviceOrganization(int deviceID, int parentDeviceID, Date timestamp, int organizationId)
boolean updateDeviceOrganization(DeviceOrganization deviceOrganization)
throws DeviceOrganizationMgtDAOException;
/**
*
* @param organizationId
* @return
* @throws DeviceOrganizationMgtDAOException
@ -80,6 +76,7 @@ public interface DeviceOrganizationDAO {
/**
* delete a record from device organization table
*
* @param organizationId
* @throws DeviceOrganizationMgtDAOException
*/
@ -88,6 +85,7 @@ public interface DeviceOrganizationDAO {
/**
* delete a record associated with a particular device ID from device organization table
* delete a record if the param ID is either device_ID OR parent_device_ID in the device organization table
*
* @param deviceId
* @return
* @throws DeviceOrganizationMgtDAOException

@ -28,7 +28,9 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import java.sql.Connection;
import java.sql.Date;
import java.sql.Timestamp;
import java.util.Calendar;
import java.util.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
@ -161,16 +163,26 @@ public class DeviceOrganizationDAOImpl implements DeviceOrganizationDAO {
}
@Override
public boolean addDeviceOrganization(DeviceOrganization deviceOrganization) throws DeviceOrganizationMgtDAOException {
public boolean addDeviceOrganization(DeviceOrganization deviceOrganization)
throws DeviceOrganizationMgtDAOException {
if (deviceOrganization == null) {
return false;
}
if (deviceOrganization.getDeviceId() == 0 || deviceOrganization.getParentDeviceId() == 0) {
return false;
}
try {
String sql = "INSERT INTO DM_DEVICE_ORGANIZATION (DEVICE_ID, PARENT_DEVICE_ID, LAST_UPDATED_TIMESTAMP)" +
" VALUES (?, ?, ?)";
Connection conn = ConnectionManagerUtil.getDBConnection();
Calendar calendar = Calendar.getInstance();
Timestamp timestamp = new Timestamp(calendar.getTime().getTime());
try (PreparedStatement stmt = conn.prepareStatement(sql)) {
stmt.setInt(1, deviceOrganization.getDeviceId());
stmt.setInt(2, deviceOrganization.getParentDeviceId());
stmt.setDate(3, deviceOrganization.getUpdateTime());
stmt.setTimestamp(3, timestamp);
return stmt.executeUpdate() > 0;
}
@ -188,29 +200,39 @@ public class DeviceOrganizationDAOImpl implements DeviceOrganizationDAO {
}
@Override
public boolean updateDeviceOrganization(int deviceID, int parentDeviceID, Date timestamp, int organizationId)
public boolean updateDeviceOrganization(DeviceOrganization deviceOrganization)
throws DeviceOrganizationMgtDAOException {
DeviceOrganization organization = getDeviceOrganizationByID(deviceOrganization.getOrganizationId());
if (deviceOrganization == null) {
return false;
}
if (deviceOrganization.getDeviceId() == 0 || deviceOrganization.getParentDeviceId() == 0) {
return false;
}
try {
String sql = "UPDATE DM_DEVICE_ORGANIZATION SET DEVICE_ID = ? , PARENT_DEVICE_ID = ? , " +
"LAST_UPDATED_TIMESTAMP = ? WHERE ID = ? ";
Connection conn = ConnectionManagerUtil.getDBConnection();
Calendar calendar = Calendar.getInstance();
Timestamp timestamp = new Timestamp(calendar.getTime().getTime());
try (PreparedStatement stmt = conn.prepareStatement(sql)) {
stmt.setInt(1, deviceID);
stmt.setInt(2, parentDeviceID);
stmt.setDate(3, timestamp);
stmt.setInt(4, organizationId);
stmt.setInt(1, deviceOrganization.getDeviceId());
stmt.setInt(2, deviceOrganization.getParentDeviceId());
stmt.setTimestamp(3, timestamp);
stmt.setInt(4, deviceOrganization.getOrganizationId());
return stmt.executeUpdate() > 0;
}
} catch (DBConnectionException e) {
String msg = "Error occurred while obtaining DB connection to update device organization for " +
organizationId;
deviceOrganization.getOrganizationId();
log.error(msg);
throw new DeviceOrganizationMgtDAOException(msg, e);
} catch (SQLException e) {
String msg = "Error occurred while processing SQL to update device organization for " +
organizationId;
deviceOrganization.getOrganizationId();
log.error(msg);
throw new DeviceOrganizationMgtDAOException(msg, e);
}

@ -19,7 +19,7 @@
package io.entgra.device.mgt.core.device.mgt.extensions.device.organization.dto;
import java.sql.Date;
import java.util.Date;
/**
* This class is used in DeviceOrganizationService
@ -62,5 +62,4 @@ public abstract class DeviceOrganization {
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
}

@ -90,7 +90,13 @@ public class DeviceOrganizationServiceImpl implements DeviceOrganizationService
public boolean addDeviceOrganization(DeviceOrganization deviceOrganization)
throws DeviceOrganizationMgtPluginException {
String msg = "";
if (deviceOrganization == null) {
return false;
}
if (deviceOrganization.getDeviceId() == 0 || deviceOrganization.getParentDeviceId() == 0) {
return false;
}
try {
ConnectionManagerUtil.beginDBTransaction();
boolean result = deviceOrganizationDao.addDeviceOrganization(deviceOrganization);
@ -123,44 +129,45 @@ public class DeviceOrganizationServiceImpl implements DeviceOrganizationService
}
@Override
public boolean updateDeviceOrganization(int deviceID, int parentDeviceID, Date timestamp,
int organizationId) throws DeviceOrganizationMgtPluginException {
public boolean updateDeviceOrganization(DeviceOrganization organization)
throws DeviceOrganizationMgtPluginException {
String msg = "";
DeviceOrganization deviceOrganization = getDeviceOrganizationByID(organizationId);
DeviceOrganization deviceOrganization = getDeviceOrganizationByID(organization.getOrganizationId());
if (deviceOrganization == null) {
String errorMsg = "Cannot find device organization for organization ID" + organizationId;
String errorMsg = "Cannot find device organization for organization ID " + organization.getOrganizationId();
log.error(errorMsg);
// throw new DeviceOrganizationMgtPluginException();
return false;
}
try {
ConnectionManagerUtil.beginDBTransaction();
boolean result = deviceOrganizationDao.updateDeviceOrganization(deviceID, parentDeviceID, timestamp,
organizationId);
boolean result = deviceOrganizationDao.updateDeviceOrganization(organization);
if (result) {
msg = "Device organization updated successfully,for " + organizationId;
msg = "Device organization updated successfully,for " + organization.getOrganizationId();
if (log.isDebugEnabled()) {
log.debug(msg);
}
} else {
ConnectionManagerUtil.rollbackDBTransaction();
msg = "Device organization failed to update,for " + organizationId;
msg = "Device organization failed to update,for " + organization.getOrganizationId();
throw new DeviceOrganizationMgtPluginException(msg);
}
ConnectionManagerUtil.commitDBTransaction();
return true;
} catch (DBConnectionException e) {
msg = "Error occurred while obtaining the database connection to update device organization for " + organizationId;
msg = "Error occurred while obtaining the database connection to update device organization for " +
organization.getOrganizationId();
log.error(msg);
throw new DeviceOrganizationMgtPluginException(msg, e);
} catch (DeviceOrganizationMgtDAOException e) {
ConnectionManagerUtil.rollbackDBTransaction();
msg = "Error occurred in the database level while updating device organization for " + organizationId;
msg = "Error occurred in the database level while updating device organization for " +
organization.getOrganizationId();
log.error(msg);
throw new DeviceOrganizationMgtPluginException(msg, e);
} finally {
ConnectionManagerUtil.closeDBConnection();
}
}

@ -31,27 +31,27 @@ import org.osgi.service.component.ComponentContext;
import org.wso2.carbon.ndatasource.core.DataSourceService;
import org.wso2.carbon.registry.core.service.RegistryService;
/**
* @scr.component name="io.entgra.device.mgt.core.subtype.mgt.internal.DeviceOrganizationMgtServiceComponent" immediate="true"
* @scr.reference name="org.wso2.carbon.device.manager"
* interface="io.entgra.device.mgt.core.device.mgt.core.service.DeviceManagementProviderService"
* cardinality="1..1"
* policy="dynamic"
* bind="setDeviceManagementService"
* unbind="unsetDeviceManagementService"
* @scr.reference name="org.wso2.carbon.ndatasource"
* interface="org.wso2.carbon.ndatasource.core.DataSourceService"
* cardinality="1..1"
* policy="dynamic"
* bind="setDataSourceService"
* unbind="unsetDataSourceService"
* @scr.reference name="registry.service"
* interface="org.wso2.carbon.registry.core.service.RegistryService"
* cardinality="0..1"
* policy="dynamic"
* bind="setRegistryService"
* unbind="unsetRegistryService"
*/
///**
// * @scr.component name="io.entgra.device.mgt.core.device.mgt.extensions.device.organization.internal.DeviceOrganizationMgtServiceComponent" immediate="true"
// * @scr.reference name="org.wso2.carbon.device.manager"
// * interface="io.entgra.device.mgt.core.device.mgt.core.service.DeviceManagementProviderService"
// * cardinality="1..1"
// * policy="dynamic"
// * bind="setDeviceManagementService"
// * unbind="unsetDeviceManagementService"
// * @scr.reference name="org.wso2.carbon.ndatasource"
// * interface="org.wso2.carbon.ndatasource.core.DataSourceService"
// * cardinality="1..1"
// * policy="dynamic"
// * bind="setDataSourceService"
// * unbind="unsetDataSourceService"
// * @scr.reference name="registry.service"
// * interface="org.wso2.carbon.registry.core.service.RegistryService"
// * cardinality="0..1"
// * policy="dynamic"
// * bind="setRegistryService"
// * unbind="unsetRegistryService"
// */
public class DeviceOrganizationMgtServiceComponent {
private static final Log log = LogFactory.getLog(DeviceOrganizationMgtServiceComponent.class);

@ -41,7 +41,7 @@ public interface DeviceOrganizationService {
boolean doesDeviceIdExist(int deviceId)
throws DeviceOrganizationMgtPluginException;
boolean updateDeviceOrganization(int deviceID, int parentDeviceID, Date timestamp, int organizationId)
boolean updateDeviceOrganization(DeviceOrganization organization)
throws DeviceOrganizationMgtPluginException;
boolean deleteDeviceOrganizationByID(int organizationId)

@ -24,9 +24,8 @@ public class DAONegativeTest extends BaseDeviceOrganizationTest {
log.info("DAO test initialized");
}
@Test(description = "This method tests the add device organization method under negative circumstances with null data",
expectedExceptions = {NullPointerException.class}
)
@Test(description = "This method tests the add device organization method under negative circumstances with null " +
"data")
public void testAddDeviceOrganization() throws DeviceOrganizationMgtDAOException {
DeviceOrganization deviceOrganization = new DeviceOrganization() {
};

@ -1,6 +1,5 @@
package io.entgra.device.mgt.core.device.mgt.extensions.device.organization;
import io.entgra.device.mgt.core.device.mgt.common.Device;
import io.entgra.device.mgt.core.device.mgt.extensions.device.organization.dao.DeviceOrganizationDAO;
import io.entgra.device.mgt.core.device.mgt.extensions.device.organization.dao.DeviceOrganizationDAOFactory;
import io.entgra.device.mgt.core.device.mgt.extensions.device.organization.dao.util.ConnectionManagerUtil;
@ -15,7 +14,7 @@ import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import java.sql.Date;
import java.util.Date;
import java.util.List;
public class DAOTest extends BaseDeviceOrganizationTest {
@ -57,7 +56,6 @@ public class DAOTest extends BaseDeviceOrganizationTest {
}
@Test
public void testAddDeviceOrganization() throws DBConnectionException, DeviceOrganizationMgtDAOException {
@ -96,7 +94,12 @@ public class DAOTest extends BaseDeviceOrganizationTest {
@Test(dependsOnMethods = "testAddDeviceOrganization")
public void testUpdateDeviceOrganization() throws DBConnectionException, DeviceOrganizationMgtDAOException {
ConnectionManagerUtil.beginDBTransaction();
boolean result = deviceOrganizationDAO.updateDeviceOrganization(4, 2, new Date(System.currentTimeMillis()), 1);
DeviceOrganization deviceOrganization = new DeviceOrganization() {
};
deviceOrganization.setDeviceId(4);
deviceOrganization.setParentDeviceId(1);
deviceOrganization.setOrganizationId(1);
boolean result = deviceOrganizationDAO.updateDeviceOrganization(deviceOrganization);
ConnectionManagerUtil.commitDBTransaction();
ConnectionManagerUtil.closeDBConnection();
@ -109,9 +112,9 @@ public class DAOTest extends BaseDeviceOrganizationTest {
DeviceOrganization deviceOrganization = deviceOrganizationDAO.getDeviceOrganizationByID(1);
ConnectionManagerUtil.commitDBTransaction();
ConnectionManagerUtil.closeDBConnection();
if(deviceOrganization != null){
log.info("Device Organization device ID : " + deviceOrganization.getDeviceId()+
" ,Device Organization Parent Device ID : " + deviceOrganization.getParentDeviceId());
if (deviceOrganization != null) {
log.info("Device Organization device ID : " + deviceOrganization.getDeviceId() +
" ,Device Organization Parent Device ID : " + deviceOrganization.getParentDeviceId());
}
}

@ -24,8 +24,7 @@ public class ServiceNegativeTest extends BaseDeviceOrganizationTest {
log.info("Service test initialized");
}
@Test(description = "This method tests Add Device Organization method under negative circumstances with null data",
expectedExceptions = {NullPointerException.class})
@Test(description = "This method tests Add Device Organization method under negative circumstances with null data")
public void testAddDeviceOrganization() throws DeviceOrganizationMgtPluginException {
@ -34,13 +33,15 @@ public class ServiceNegativeTest extends BaseDeviceOrganizationTest {
boolean result = deviceOrganizationService.addDeviceOrganization(deviceOrganization);
}
@Test(description = "This method tests Update Device Organization method under negative circumstances with " +
"invalid data",
expectedExceptions = {NullPointerException.class})
public void testUpdateDeviceOrganization() throws DeviceOrganizationMgtPluginException {
boolean result = deviceOrganizationService.updateDeviceOrganization(2, 3,
new Date(System.currentTimeMillis()), 5);
}
// @Test(description = "This method tests Update Device Organization method under negative circumstances with " +
// "invalid data")
//
// public void testUpdateDeviceOrganization() throws DeviceOrganizationMgtPluginException {
// DeviceOrganization deviceOrganization = new DeviceOrganization() {
// };
// deviceOrganization.setOrganizationId(2);
// deviceOrganization.setDeviceId(7);
// deviceOrganization.setParentDeviceId(6);
// boolean result = deviceOrganizationService.updateDeviceOrganization(deviceOrganization);
// }
}

@ -12,7 +12,7 @@ import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import java.sql.Date;
import java.util.Date;
import java.util.List;
public class ServiceTest extends BaseDeviceOrganizationTest {
@ -77,7 +77,12 @@ public class ServiceTest extends BaseDeviceOrganizationTest {
@Test(dependsOnMethods = "testAddDeviceOrganization")
public void testUpdateDeviceOrganization() throws DeviceOrganizationMgtPluginException {
boolean result = deviceOrganizationService.updateDeviceOrganization(4, 2, new Date(System.currentTimeMillis()), 1);
DeviceOrganization deviceOrganization = new DeviceOrganization() {
};
deviceOrganization.setDeviceId(4);
deviceOrganization.setParentDeviceId(3);
deviceOrganization.setOrganizationId(1);
boolean result = deviceOrganizationService.updateDeviceOrganization(deviceOrganization);
Assert.assertNotNull(result, "Cannot be null");
}

@ -0,0 +1,106 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Copyright (c) 2018 - 2023, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved.
~
~ Entgra (Pvt) Ltd. 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.
-->
<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>io.entgra.device.mgt.core</groupId>
<artifactId>device-mgt-extensions-feature</artifactId>
<version>5.0.31-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>io.entgra.device.mgt.core.device.mgt.extensions.device.organization.feature</artifactId>
<packaging>pom</packaging>
<name>WSO2 Carbon - Device Organization Feature</name>
<url>http://wso2.org</url>
<description>WSO2 Carbon - Device Organization Feature</description>
<dependencies>
<dependency>
<groupId>io.entgra.device.mgt.core</groupId>
<artifactId>io.entgra.device.mgt.core.device.mgt.extensions.device.organization</artifactId>
<version>${io.entgra.device.mgt.core.version}</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<id>copy-resources</id>
<phase>generate-resources</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>src/main/resources</outputDirectory>
<resources>
<resource>
<directory>resources</directory>
<includes>
<include>build.properties</include>
<include>p2.inf</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.wso2.maven</groupId>
<artifactId>carbon-p2-plugin</artifactId>
<version>${carbon.p2.plugin.version}</version>
<executions>
<execution>
<id>p2-feature-generation</id>
<phase>package</phase>
<goals>
<goal>p2-feature-gen</goal>
</goals>
<configuration>
<id>io.entgra.device.mgt.core.device.mgt.extensions.device.organization</id>
<propertiesFile>../../../features/etc/feature.properties</propertiesFile>
<adviceFile>
<properties>
<propertyDef>org.wso2.carbon.p2.category.type:server</propertyDef>
<propertyDef>org.eclipse.equinox.p2.type.group:false</propertyDef>
</properties>
</adviceFile>
<bundles>
<bundleDef>
io.entgra.device.mgt.core:io.entgra.device.mgt.core.device.mgt.extensions.device.organization:${io.entgra.device.mgt.core.version}
</bundleDef>
</bundles>
<importFeatures>
<importFeatureDef>org.wso2.carbon.core.server:${carbon.kernel.version}</importFeatureDef>
<importFeatureDef>io.entgra.device.mgt.core.device.mgt.server:${io.entgra.device.mgt.core.version}</importFeatureDef>
</importFeatures>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>

@ -0,0 +1,19 @@
#
# Copyright (c) 2018 - 2023, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved.
#
# Entgra (Pvt) Ltd. 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.
#
custom = true

@ -41,6 +41,7 @@
<module>io.entgra.device.mgt.core.device.mgt.extensions.defaultrole.manager.feature</module>
<module>io.entgra.device.mgt.core.device.mgt.extensions.logger.feature</module>
<module>io.entgra.device.mgt.core.device.mgt.extensions.stateengine.feature</module>
<module>io.entgra.device.mgt.core.device.mgt.extensions.device.organization.feature</module>
</modules>
</project>

Loading…
Cancel
Save