forked from community/device-mgt-core
parent
0009bdd460
commit
338d0973e9
@ -0,0 +1,413 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
~ Copyright (C) 2018 - 2023 Entgra (Pvt) Ltd, Inc - All Rights Reserved.
|
||||
~
|
||||
~ Unauthorised copying/redistribution of this file, via any medium is strictly prohibited.
|
||||
~
|
||||
~ Licensed under the Entgra Commercial License, Version 1.0 (the "License");
|
||||
~ you may not use this file except in compliance with the License.
|
||||
~ You may obtain a copy of the License at
|
||||
~
|
||||
~ https://entgra.io/licenses/entgra-commercial/1.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/xsd/maven-4.0.0.xsd">
|
||||
<parent>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<artifactId>subtype-mgt</artifactId>
|
||||
<version>5.0.20-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<artifactId>io.entgra.device.mgt.subtype.mgt</artifactId>
|
||||
<name>Entgra IoT - Subtype Mgt Impl</name>
|
||||
<packaging>bundle</packaging>
|
||||
<description>Entgra IoT - Subtype Management Component Implementation</description>
|
||||
<url>http://entgra.io</url>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.felix</groupId>
|
||||
<artifactId>maven-scr-plugin</artifactId>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.felix</groupId>
|
||||
<artifactId>maven-bundle-plugin</artifactId>
|
||||
<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>Subtype Management Bundle</Bundle-Description>
|
||||
<Private-Package>io.entgra.device.mgt.subtype.mgt.internal</Private-Package>
|
||||
<Import-Package>
|
||||
org.osgi.framework.*;version="${imp.package.version.osgi.framework}",
|
||||
org.osgi.service.*;version="${imp.package.version.osgi.service}",
|
||||
org.apache.commons.logging,
|
||||
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.*,
|
||||
org.wso2.carbon.device.mgt.common.*,
|
||||
org.wso2.carbon.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,
|
||||
org.wso2.carbon.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.*
|
||||
</Import-Package>
|
||||
<Export-Package>
|
||||
!io.entgra.device.mgt.subtype.mgt.internal,
|
||||
io.entgra.device.mgt.subtype.mgt.*
|
||||
</Export-Package>
|
||||
</instructions>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.jacoco</groupId>
|
||||
<artifactId>jacoco-maven-plugin</artifactId>
|
||||
<configuration>
|
||||
<destFile>${basedir}/target/coverage-reports/jacoco-unit.exec</destFile>
|
||||
</configuration>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>jacoco-initialize</id>
|
||||
<goals>
|
||||
<goal>prepare-agent</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
<execution>
|
||||
<id>jacoco-site</id>
|
||||
<phase>test</phase>
|
||||
<goals>
|
||||
<goal>report</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<dataFile>${basedir}/target/coverage-reports/jacoco-unit.exec</dataFile>
|
||||
<outputDirectory>${basedir}/target/coverage-reports/site</outputDirectory>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-surefire-plugin</artifactId>
|
||||
<configuration>
|
||||
<systemPropertyVariables>
|
||||
<log4j.configuration>file:src/test/resources/carbon-home/repository/conf/log4j.properties
|
||||
</log4j.configuration>
|
||||
</systemPropertyVariables>
|
||||
<suiteXmlFiles>
|
||||
<file>src/test/resources/testng.xml</file>
|
||||
</suiteXmlFiles>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<artifactId>org.wso2.carbon.device.mgt.common</artifactId>
|
||||
<scope>provided</scope>
|
||||
<exclusions>
|
||||
<exclusion>
|
||||
<groupId>org.wso2.carbon.identity.inbound.auth.oauth2</groupId>
|
||||
<artifactId>org.wso2.carbon.identity.oauth.stub</artifactId>
|
||||
</exclusion>
|
||||
<exclusion>
|
||||
<groupId>org.apache.axis2.wso2</groupId>
|
||||
<artifactId>axis2-client</artifactId>
|
||||
</exclusion>
|
||||
<exclusion>
|
||||
<groupId>org.apache.geronimo.specs.wso2</groupId>
|
||||
<artifactId>geronimo-stax-api_1.0_spec</artifactId>
|
||||
</exclusion>
|
||||
<exclusion>
|
||||
<groupId>org.apache.ws.commons.axiom.wso2</groupId>
|
||||
<artifactId>axiom</artifactId>
|
||||
</exclusion>
|
||||
<exclusion>
|
||||
<groupId>org.codehaus.woodstox</groupId>
|
||||
<artifactId>woodstox-core-asl</artifactId>
|
||||
</exclusion>
|
||||
<exclusion>
|
||||
<groupId>org.codehaus.woodstox</groupId>
|
||||
<artifactId>wstx-asl</artifactId>
|
||||
</exclusion>
|
||||
<exclusion>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<artifactId>org.wso2.carbon.device.mgt.analytics.data.publisher</artifactId>
|
||||
</exclusion>
|
||||
<exclusion>
|
||||
<groupId>org.wso2.carbon.analytics</groupId>
|
||||
<artifactId>org.wso2.carbon.analytics.api</artifactId>
|
||||
</exclusion>
|
||||
</exclusions>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<artifactId>org.wso2.carbon.device.mgt.extensions</artifactId>
|
||||
<scope>provided</scope>
|
||||
<exclusions>
|
||||
<exclusion>
|
||||
<groupId>org.codehaus.woodstox</groupId>
|
||||
<artifactId>stax2-api</artifactId>
|
||||
</exclusion>
|
||||
<exclusion>
|
||||
<groupId>org.codehaus.woodstox</groupId>
|
||||
<artifactId>woodstox-core-asl</artifactId>
|
||||
</exclusion>
|
||||
<exclusion>
|
||||
<groupId>org.wso2.carbon</groupId>
|
||||
<artifactId>org.wso2.carbon.securevault</artifactId>
|
||||
</exclusion>
|
||||
<exclusion>
|
||||
<groupId>org.apache.ws.commons.axiom.wso2</groupId>
|
||||
<artifactId>axiom</artifactId>
|
||||
</exclusion>
|
||||
</exclusions>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.wso2.carbon</groupId>
|
||||
<artifactId>org.wso2.carbon.ndatasource.core</artifactId>
|
||||
<scope>provided</scope>
|
||||
<exclusions>
|
||||
<exclusion>
|
||||
<groupId>org.wso2.securevault</groupId>
|
||||
<artifactId>org.wso2.securevault</artifactId>
|
||||
</exclusion>
|
||||
</exclusions>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.wso2.carbon</groupId>
|
||||
<artifactId>org.wso2.carbon.base</artifactId>
|
||||
<scope>provided</scope>
|
||||
<exclusions>
|
||||
<exclusion>
|
||||
<groupId>org.wso2.securevault</groupId>
|
||||
<artifactId>org.wso2.securevault</artifactId>
|
||||
</exclusion>
|
||||
<exclusion>
|
||||
<groupId>org.apache.ws.commons.axiom.wso2</groupId>
|
||||
<artifactId>axiom</artifactId>
|
||||
</exclusion>
|
||||
<exclusion>
|
||||
<groupId>org.mockito</groupId>
|
||||
<artifactId>mockito-core</artifactId>
|
||||
</exclusion>
|
||||
</exclusions>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.eclipse.osgi</groupId>
|
||||
<artifactId>org.eclipse.osgi</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.eclipse.osgi</groupId>
|
||||
<artifactId>org.eclipse.osgi.services</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.wso2.carbon</groupId>
|
||||
<artifactId>org.wso2.carbon.core</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.wso2.carbon</groupId>
|
||||
<artifactId>org.wso2.carbon.logging</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.wso2.carbon</groupId>
|
||||
<artifactId>org.wso2.carbon.utils</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<artifactId>org.wso2.carbon.device.mgt.core</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.wso2.carbon</groupId>
|
||||
<artifactId>org.wso2.carbon.registry.api</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.wso2.carbon</groupId>
|
||||
<artifactId>org.wso2.carbon.registry.core</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.tomcat.wso2</groupId>
|
||||
<artifactId>jdbc-pool</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.google.code.gson</groupId>
|
||||
<artifactId>gson</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.github.openfeign</groupId>
|
||||
<artifactId>feign-core</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.github.openfeign</groupId>
|
||||
<artifactId>feign-jackson</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.github.openfeign</groupId>
|
||||
<artifactId>feign-jaxrs</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.github.openfeign</groupId>
|
||||
<artifactId>feign-gson</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.github.openfeign</groupId>
|
||||
<artifactId>feign-okhttp</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.github.openfeign</groupId>
|
||||
<artifactId>feign-slf4j</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<artifactId>org.wso2.carbon.identity.jwt.client.extension</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>commons-validator</groupId>
|
||||
<artifactId>commons-validator</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.cxf</groupId>
|
||||
<artifactId>cxf-rt-frontend-jaxws</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.cxf</groupId>
|
||||
<artifactId>cxf-rt-frontend-jaxrs</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.cxf</groupId>
|
||||
<artifactId>cxf-rt-transports-http</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>commons-lang.wso2</groupId>
|
||||
<artifactId>commons-lang</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.google.guava</groupId>
|
||||
<artifactId>guava</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.json</groupId>
|
||||
<artifactId>json</artifactId>
|
||||
<version>${json.version}</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-databind</artifactId>
|
||||
<version>${fasterxml.jackson.version}</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.powermock</groupId>
|
||||
<artifactId>powermock-module-testng</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.powermock</groupId>
|
||||
<artifactId>powermock-api-mockito</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.testng</groupId>
|
||||
<artifactId>testng</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.h2database.wso2</groupId>
|
||||
<artifactId>h2-database-engine</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.httpcomponents.wso2</groupId>
|
||||
<artifactId>httpcore</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.wso2.apache.httpcomponents</groupId>
|
||||
<artifactId>httpclient</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.wso2.securevault</groupId>
|
||||
<artifactId>org.wso2.securevault</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>xerces.wso2</groupId>
|
||||
<artifactId>xercesImpl</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.axis2.wso2</groupId>
|
||||
<artifactId>axis2</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.wso2.carbon</groupId>
|
||||
<artifactId>org.wso2.carbon.queuing</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>javax.xml.bind</groupId>
|
||||
<artifactId>jaxb-api</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
@ -0,0 +1,79 @@
|
||||
/*
|
||||
* Copyright (C) 2018 - 2023 Entgra (Pvt) Ltd, Inc - All Rights Reserved.
|
||||
*
|
||||
* Unauthorised copying/redistribution of this file, via any medium is strictly prohibited.
|
||||
*
|
||||
* Licensed under the Entgra Commercial License, Version 1.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://entgra.io/licenses/entgra-commercial/1.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 io.entgra.device.mgt.subtype.mgt.cache;
|
||||
|
||||
import com.google.common.cache.CacheLoader;
|
||||
import io.entgra.device.mgt.subtype.mgt.dao.DeviceSubTypeDAO;
|
||||
import io.entgra.device.mgt.subtype.mgt.dao.DeviceSubTypeDAOFactory;
|
||||
import io.entgra.device.mgt.subtype.mgt.dao.util.ConnectionManagerUtil;
|
||||
import io.entgra.device.mgt.subtype.mgt.dto.DeviceSubType;
|
||||
import io.entgra.device.mgt.subtype.mgt.dto.DeviceSubTypeCacheKey;
|
||||
import io.entgra.device.mgt.subtype.mgt.exception.DBConnectionException;
|
||||
import io.entgra.device.mgt.subtype.mgt.exception.SubTypeMgtDAOException;
|
||||
import io.entgra.device.mgt.subtype.mgt.exception.SubTypeMgtPluginException;
|
||||
import io.entgra.device.mgt.subtype.mgt.util.DeviceSubTypeMgtUtil;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
|
||||
|
||||
public class GetDeviceSubTypeCacheLoader extends CacheLoader<String, DeviceSubType> {
|
||||
|
||||
private static final Log log = LogFactory.getLog(GetDeviceSubTypeCacheLoader.class);
|
||||
|
||||
private final DeviceSubTypeDAO deviceSubTypeDAO;
|
||||
|
||||
public GetDeviceSubTypeCacheLoader() {
|
||||
this.deviceSubTypeDAO = DeviceSubTypeDAOFactory.getDeviceSubTypeDAO();
|
||||
}
|
||||
|
||||
@Override
|
||||
public DeviceSubType load(String key) throws SubTypeMgtPluginException {
|
||||
DeviceSubTypeCacheKey deviceSubTypeCacheKey = DeviceSubTypeMgtUtil.getDeviceSubTypeCacheKey(key);
|
||||
int tenantId = deviceSubTypeCacheKey.getTenantId();
|
||||
int subTypeId = deviceSubTypeCacheKey.getSubTypeId();
|
||||
DeviceSubType.DeviceType deviceType = deviceSubTypeCacheKey.getDeviceType();
|
||||
|
||||
if (log.isTraceEnabled()) {
|
||||
log.trace("Loading Device subtype for " + deviceType + " subtype & subtype Id : " + subTypeId);
|
||||
}
|
||||
try {
|
||||
ConnectionManagerUtil.openDBConnection();
|
||||
return deviceSubTypeDAO.getDeviceSubType(subTypeId, tenantId, deviceType);
|
||||
} catch (DBConnectionException e) {
|
||||
String msg = "Error occurred while obtaining the database connection to retrieve device subtype for " +
|
||||
deviceType + " subtype & subtype Id: " + subTypeId;
|
||||
log.error(msg);
|
||||
throw new SubTypeMgtPluginException(msg, e);
|
||||
} catch (InvalidCacheLoadException e) {
|
||||
String msg = "CacheLoader returned null for device subtype: " + deviceType + " subtype & subtype Id: " +
|
||||
subTypeId;
|
||||
log.error(msg, e);
|
||||
return null;
|
||||
} catch (SubTypeMgtDAOException e) {
|
||||
String msg = "Error occurred in the database level while retrieving device subtype for " + deviceType
|
||||
+ " subtype & subtype Id: " + subTypeId;
|
||||
log.error(msg);
|
||||
throw new SubTypeMgtPluginException(msg, e);
|
||||
} finally {
|
||||
ConnectionManagerUtil.closeDBConnection();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,45 @@
|
||||
/*
|
||||
* Copyright (C) 2018 - 2023 Entgra (Pvt) Ltd, Inc - All Rights Reserved.
|
||||
*
|
||||
* Unauthorised copying/redistribution of this file, via any medium is strictly prohibited.
|
||||
*
|
||||
* Licensed under the Entgra Commercial License, Version 1.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://entgra.io/licenses/entgra-commercial/1.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 io.entgra.device.mgt.subtype.mgt.dao;
|
||||
|
||||
import io.entgra.device.mgt.subtype.mgt.dto.DeviceSubType;
|
||||
import io.entgra.device.mgt.subtype.mgt.exception.SubTypeMgtDAOException;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface DeviceSubTypeDAO {
|
||||
boolean addDeviceSubType(DeviceSubType deviceSubType) throws SubTypeMgtDAOException;
|
||||
|
||||
boolean updateDeviceSubType(int subTypeId, int tenantId, DeviceSubType.DeviceType deviceType, String subTypeName,
|
||||
String typeDefinition) throws SubTypeMgtDAOException;
|
||||
|
||||
DeviceSubType getDeviceSubType(int subTypeId, int tenantId, DeviceSubType.DeviceType deviceType)
|
||||
throws SubTypeMgtDAOException;
|
||||
|
||||
List<DeviceSubType> getAllDeviceSubTypes(int tenantId, DeviceSubType.DeviceType deviceType)
|
||||
throws SubTypeMgtDAOException;
|
||||
|
||||
int getDeviceSubTypeCount(DeviceSubType.DeviceType deviceType) throws SubTypeMgtDAOException;
|
||||
|
||||
int getMaxSubTypeId(DeviceSubType.DeviceType deviceType) throws SubTypeMgtDAOException;
|
||||
|
||||
DeviceSubType getDeviceSubTypeByProvider(String subTypeName, int tenantId, DeviceSubType.DeviceType deviceType)
|
||||
throws SubTypeMgtDAOException;
|
||||
}
|
@ -0,0 +1,54 @@
|
||||
/*
|
||||
* Copyright (C) 2018 - 2023 Entgra (Pvt) Ltd, Inc - All Rights Reserved.
|
||||
*
|
||||
* Unauthorised copying/redistribution of this file, via any medium is strictly prohibited.
|
||||
*
|
||||
* Licensed under the Entgra Commercial License, Version 1.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://entgra.io/licenses/entgra-commercial/1.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 io.entgra.device.mgt.subtype.mgt.dao;
|
||||
|
||||
import io.entgra.device.mgt.subtype.mgt.dao.impl.DeviceSubTypeDAOImpl;
|
||||
import io.entgra.device.mgt.subtype.mgt.dao.impl.DeviceSubTypeMySQLDAOImpl;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.wso2.carbon.device.mgt.common.DeviceManagementConstants;
|
||||
import io.entgra.device.mgt.subtype.mgt.dao.util.ConnectionManagerUtil;
|
||||
import org.wso2.carbon.device.mgt.core.config.datasource.DataSourceConfig;
|
||||
|
||||
public class DeviceSubTypeDAOFactory {
|
||||
private static final Log log = LogFactory.getLog(DeviceSubTypeDAOFactory.class);
|
||||
private static String databaseEngine;
|
||||
|
||||
public static void init(DataSourceConfig dataSourceConfiguration) {
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("Initializing Device SubType Mgt Data Source");
|
||||
}
|
||||
ConnectionManagerUtil.resolveDataSource(dataSourceConfiguration);
|
||||
databaseEngine = ConnectionManagerUtil.getDatabaseType();
|
||||
}
|
||||
|
||||
public static DeviceSubTypeDAO getDeviceSubTypeDAO() {
|
||||
if (databaseEngine != null) {
|
||||
//noinspection SwitchStatementWithTooFewBranches
|
||||
switch (databaseEngine) {
|
||||
case DeviceManagementConstants.DataBaseTypes.DB_TYPE_MYSQL:
|
||||
return new DeviceSubTypeMySQLDAOImpl();
|
||||
default:
|
||||
return new DeviceSubTypeDAOImpl();
|
||||
}
|
||||
}
|
||||
throw new IllegalStateException("Database engine has not initialized properly.");
|
||||
}
|
||||
}
|
@ -0,0 +1,254 @@
|
||||
/*
|
||||
* Copyright (C) 2018 - 2023 Entgra (Pvt) Ltd, Inc - All Rights Reserved.
|
||||
*
|
||||
* Unauthorised copying/redistribution of this file, via any medium is strictly prohibited.
|
||||
*
|
||||
* Licensed under the Entgra Commercial License, Version 1.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://entgra.io/licenses/entgra-commercial/1.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 io.entgra.device.mgt.subtype.mgt.dao.impl;
|
||||
|
||||
import io.entgra.device.mgt.subtype.mgt.dao.DeviceSubTypeDAO;
|
||||
import io.entgra.device.mgt.subtype.mgt.dao.util.ConnectionManagerUtil;
|
||||
import io.entgra.device.mgt.subtype.mgt.dto.DeviceSubType;
|
||||
import io.entgra.device.mgt.subtype.mgt.dao.util.DAOUtil;
|
||||
import io.entgra.device.mgt.subtype.mgt.exception.DBConnectionException;
|
||||
import io.entgra.device.mgt.subtype.mgt.exception.SubTypeMgtDAOException;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
public class DeviceSubTypeDAOImpl implements DeviceSubTypeDAO {
|
||||
private static final Log log = LogFactory.getLog(DeviceSubTypeDAOImpl.class);
|
||||
|
||||
@Override
|
||||
public boolean addDeviceSubType(DeviceSubType deviceSubType)
|
||||
throws SubTypeMgtDAOException {
|
||||
try {
|
||||
String sql = "INSERT INTO DM_DEVICE_SUB_TYPE (SUB_TYPE_ID, TENANT_ID, DEVICE_TYPE, SUB_TYPE_NAME, " +
|
||||
"TYPE_DEFINITION) VALUES (?, ?, ?, ?, ?)";
|
||||
|
||||
Connection conn = ConnectionManagerUtil.getDBConnection();
|
||||
try (PreparedStatement stmt = conn.prepareStatement(sql)) {
|
||||
stmt.setInt(1, deviceSubType.getSubTypeId());
|
||||
stmt.setInt(2, deviceSubType.getTenantId());
|
||||
stmt.setString(3, deviceSubType.getDeviceType().toString());
|
||||
stmt.setString(4, deviceSubType.getSubTypeName());
|
||||
stmt.setString(5, deviceSubType.getTypeDefinition());
|
||||
return stmt.executeUpdate() > 0;
|
||||
}
|
||||
|
||||
} catch (DBConnectionException e) {
|
||||
String msg = "Error occurred while obtaining DB connection to insert device sub type for " +
|
||||
deviceSubType.getDeviceType() + " subtype & subtype Id: " + deviceSubType.getSubTypeId();
|
||||
log.error(msg);
|
||||
throw new SubTypeMgtDAOException(msg, e);
|
||||
} catch (SQLException e) {
|
||||
String msg = "Error occurred while processing SQL to insert device sub type for " +
|
||||
deviceSubType.getDeviceType() + " subtype & subtype Id: " + deviceSubType.getSubTypeId();
|
||||
log.error(msg);
|
||||
throw new SubTypeMgtDAOException(msg, e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean updateDeviceSubType(int subTypeId, int tenantId, DeviceSubType.DeviceType deviceType,
|
||||
String subTypeName, String typeDefinition)
|
||||
throws SubTypeMgtDAOException {
|
||||
try {
|
||||
String sql = "UPDATE DM_DEVICE_SUB_TYPE SET TYPE_DEFINITION = ? , SUB_TYPE_NAME = ? WHERE SUB_TYPE_ID = ? "
|
||||
+ "AND TENANT_ID = ? AND DEVICE_TYPE = ?";
|
||||
|
||||
Connection conn = ConnectionManagerUtil.getDBConnection();
|
||||
try (PreparedStatement stmt = conn.prepareStatement(sql)) {
|
||||
stmt.setString(1, typeDefinition);
|
||||
stmt.setString(2, subTypeName);
|
||||
stmt.setInt(3, subTypeId);
|
||||
stmt.setInt(4, tenantId);
|
||||
stmt.setString(5, deviceType.toString());
|
||||
return stmt.executeUpdate() > 0;
|
||||
}
|
||||
|
||||
} catch (DBConnectionException e) {
|
||||
String msg = "Error occurred while obtaining DB connection to update device sub type for " +
|
||||
deviceType + " subtype & subtype Id: " + subTypeId;
|
||||
log.error(msg);
|
||||
throw new SubTypeMgtDAOException(msg, e);
|
||||
} catch (SQLException e) {
|
||||
String msg = "Error occurred while processing SQL to update device sub type for " +
|
||||
deviceType + " subtype & subtype Id: " + subTypeId;
|
||||
log.error(msg);
|
||||
throw new SubTypeMgtDAOException(msg, e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public DeviceSubType getDeviceSubType(int subTypeId, int tenantId, DeviceSubType.DeviceType deviceType)
|
||||
throws SubTypeMgtDAOException {
|
||||
try {
|
||||
String sql = "SELECT * FROM DM_DEVICE_SUB_TYPE WHERE SUB_TYPE_ID = ? AND TENANT_ID = ? AND DEVICE_TYPE = ?";
|
||||
|
||||
Connection conn = ConnectionManagerUtil.getDBConnection();
|
||||
try (PreparedStatement stmt = conn.prepareStatement(sql)) {
|
||||
stmt.setInt(1, subTypeId);
|
||||
stmt.setInt(2, tenantId);
|
||||
stmt.setString(3, deviceType.toString());
|
||||
try (ResultSet rs = stmt.executeQuery()) {
|
||||
if (rs.next()) {
|
||||
return DAOUtil.loadDeviceSubType(rs);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
} catch (DBConnectionException e) {
|
||||
String msg = "Error occurred while obtaining DB connection to retrieve device subtype for " + deviceType
|
||||
+ " subtype & subtype Id: " + subTypeId;
|
||||
log.error(msg);
|
||||
throw new SubTypeMgtDAOException(msg, e);
|
||||
} catch (SQLException e) {
|
||||
String msg = "Error occurred while processing SQL to retrieve device subtype for " + deviceType + " " +
|
||||
"subtype & subtype Id: " + subTypeId;
|
||||
log.error(msg);
|
||||
throw new SubTypeMgtDAOException(msg, e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<DeviceSubType> getAllDeviceSubTypes(int tenantId, DeviceSubType.DeviceType deviceType)
|
||||
throws SubTypeMgtDAOException {
|
||||
try {
|
||||
String sql = "SELECT * FROM DM_DEVICE_SUB_TYPE WHERE TENANT_ID = ? AND DEVICE_TYPE = ? ORDER BY " +
|
||||
"SUB_TYPE_ID";
|
||||
|
||||
Connection conn = ConnectionManagerUtil.getDBConnection();
|
||||
try (PreparedStatement stmt = conn.prepareStatement(sql)) {
|
||||
stmt.setInt(1, tenantId);
|
||||
stmt.setString(2, deviceType.toString());
|
||||
try (ResultSet rs = stmt.executeQuery()) {
|
||||
return DAOUtil.loadDeviceSubTypes(rs);
|
||||
}
|
||||
}
|
||||
|
||||
} catch (DBConnectionException e) {
|
||||
String msg = "Error occurred while obtaining DB connection to retrieve all device sub types for " +
|
||||
deviceType + " subtypes";
|
||||
log.error(msg);
|
||||
throw new SubTypeMgtDAOException(msg, e);
|
||||
} catch (SQLException e) {
|
||||
String msg = "Error occurred while processing SQL to retrieve all device sub types for " + deviceType + " "
|
||||
+ "subtypes";
|
||||
log.error(msg);
|
||||
throw new SubTypeMgtDAOException(msg, e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getDeviceSubTypeCount(DeviceSubType.DeviceType deviceType) throws SubTypeMgtDAOException {
|
||||
try {
|
||||
String sql = "SELECT COUNT(*) as DEVICE_COUNT FROM DM_DEVICE_SUB_TYPE WHERE DEVICE_TYPE = ? ";
|
||||
|
||||
Connection conn = ConnectionManagerUtil.getDBConnection();
|
||||
try (PreparedStatement stmt = conn.prepareStatement(sql)) {
|
||||
stmt.setString(1, deviceType.toString());
|
||||
try (ResultSet rs = stmt.executeQuery()) {
|
||||
if (rs.next()) {
|
||||
return rs.getInt("DEVICE_COUNT");
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
} catch (DBConnectionException e) {
|
||||
String msg = "Error occurred while obtaining DB connection to retrieve device sub types count for " +
|
||||
deviceType + " subtypes";
|
||||
log.error(msg);
|
||||
throw new SubTypeMgtDAOException(msg, e);
|
||||
} catch (SQLException e) {
|
||||
String msg = "Error occurred while processing SQL to retrieve device sub types count for " + deviceType +
|
||||
" subtypes";
|
||||
log.error(msg);
|
||||
throw new SubTypeMgtDAOException(msg, e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxSubTypeId(DeviceSubType.DeviceType deviceType) throws SubTypeMgtDAOException {
|
||||
try {
|
||||
String sql = "SELECT COALESCE(MAX(SUB_TYPE_ID),0) as MAX_ID FROM DM_DEVICE_SUB_TYPE WHERE DEVICE_TYPE = ? ";
|
||||
|
||||
Connection conn = ConnectionManagerUtil.getDBConnection();
|
||||
try (PreparedStatement stmt = conn.prepareStatement(sql)) {
|
||||
stmt.setString(1, deviceType.toString());
|
||||
try (ResultSet rs = stmt.executeQuery()) {
|
||||
if (rs.next()) {
|
||||
return rs.getInt("MAX_ID");
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
} catch (DBConnectionException e) {
|
||||
String msg = "Error occurred while obtaining DB connection to retrieve max device subtype id for " +
|
||||
deviceType + " subtype";
|
||||
log.error(msg);
|
||||
throw new SubTypeMgtDAOException(msg, e);
|
||||
} catch (SQLException e) {
|
||||
String msg = "Error occurred while processing SQL to retrieve max device subtype id for " + deviceType
|
||||
+ " subtype";
|
||||
log.error(msg);
|
||||
throw new SubTypeMgtDAOException(msg, e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public DeviceSubType getDeviceSubTypeByProvider(String subTypeName, int tenantId,
|
||||
DeviceSubType.DeviceType deviceType)
|
||||
throws SubTypeMgtDAOException {
|
||||
try {
|
||||
String sql = "SELECT * FROM DM_DEVICE_SUB_TYPE WHERE SUB_TYPE_NAME = ? AND TENANT_ID = ? AND DEVICE_TYPE " +
|
||||
"= ? ";
|
||||
|
||||
Connection conn = ConnectionManagerUtil.getDBConnection();
|
||||
try (PreparedStatement stmt = conn.prepareStatement(sql)) {
|
||||
stmt.setString(1, subTypeName);
|
||||
stmt.setInt(2, tenantId);
|
||||
stmt.setString(3, deviceType.toString());
|
||||
try (ResultSet rs = stmt.executeQuery()) {
|
||||
if (rs.next()) {
|
||||
return DAOUtil.loadDeviceSubType(rs);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
} catch (DBConnectionException e) {
|
||||
String msg = "Error occurred while obtaining DB connection to retrieve device subtype for " + deviceType
|
||||
+ " subtype & subtype name: " + subTypeName;
|
||||
log.error(msg);
|
||||
throw new SubTypeMgtDAOException(msg, e);
|
||||
} catch (SQLException e) {
|
||||
String msg = "Error occurred while processing SQL to retrieve device subtype for " + deviceType + " " +
|
||||
"subtype & subtype name: " + subTypeName;
|
||||
log.error(msg);
|
||||
throw new SubTypeMgtDAOException(msg, e);
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,26 @@
|
||||
/*
|
||||
* Copyright (C) 2018 - 2023 Entgra (Pvt) Ltd, Inc - All Rights Reserved.
|
||||
*
|
||||
* Unauthorised copying/redistribution of this file, via any medium is strictly prohibited.
|
||||
*
|
||||
* Licensed under the Entgra Commercial License, Version 1.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://entgra.io/licenses/entgra-commercial/1.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 io.entgra.device.mgt.subtype.mgt.dao.impl;
|
||||
|
||||
/**
|
||||
* Implementation for MySQL
|
||||
*/
|
||||
public class DeviceSubTypeMySQLDAOImpl extends DeviceSubTypeDAOImpl {
|
||||
}
|
@ -0,0 +1,220 @@
|
||||
/*
|
||||
* Copyright (C) 2018 - 2023 Entgra (Pvt) Ltd, Inc - All Rights Reserved.
|
||||
*
|
||||
* Unauthorised copying/redistribution of this file, via any medium is strictly prohibited.
|
||||
*
|
||||
* Licensed under the Entgra Commercial License, Version 1.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://entgra.io/licenses/entgra-commercial/1.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 io.entgra.device.mgt.subtype.mgt.dao.util;
|
||||
|
||||
import io.entgra.device.mgt.subtype.mgt.exception.DBConnectionException;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.wso2.carbon.device.mgt.common.exceptions.IllegalTransactionStateException;
|
||||
import org.wso2.carbon.device.mgt.core.config.datasource.DataSourceConfig;
|
||||
import org.wso2.carbon.device.mgt.core.config.datasource.JNDILookupDefinition;
|
||||
|
||||
import javax.naming.InitialContext;
|
||||
import javax.sql.DataSource;
|
||||
import java.sql.Connection;
|
||||
import java.sql.SQLException;
|
||||
import java.util.Hashtable;
|
||||
import java.util.List;
|
||||
|
||||
public class ConnectionManagerUtil {
|
||||
|
||||
private static final Log log = LogFactory.getLog(ConnectionManagerUtil.class);
|
||||
private static final ThreadLocal<Connection> currentConnection = new ThreadLocal<>();
|
||||
private static DataSource dataSource;
|
||||
|
||||
public static void openDBConnection() throws DBConnectionException {
|
||||
Connection conn = currentConnection.get();
|
||||
if (conn != null) {
|
||||
throw new IllegalTransactionStateException("Database connection has already been obtained.");
|
||||
}
|
||||
try {
|
||||
conn = dataSource.getConnection();
|
||||
} catch (SQLException e) {
|
||||
throw new DBConnectionException("Failed to get a database connection.", e);
|
||||
}
|
||||
currentConnection.set(conn);
|
||||
}
|
||||
|
||||
public static Connection getDBConnection() throws DBConnectionException {
|
||||
Connection conn = currentConnection.get();
|
||||
if (conn == null) {
|
||||
try {
|
||||
conn = dataSource.getConnection();
|
||||
currentConnection.set(conn);
|
||||
} catch (SQLException e) {
|
||||
throw new DBConnectionException("Failed to get database connection.", e);
|
||||
}
|
||||
}
|
||||
return conn;
|
||||
}
|
||||
|
||||
public static void beginDBTransaction() throws DBConnectionException {
|
||||
Connection conn = currentConnection.get();
|
||||
if (conn == null) {
|
||||
conn = getDBConnection();
|
||||
} else if (inTransaction(conn)) {
|
||||
throw new IllegalTransactionStateException("Transaction has already been started.");
|
||||
}
|
||||
|
||||
try {
|
||||
conn.setAutoCommit(false);
|
||||
} catch (SQLException e) {
|
||||
throw new DBConnectionException("Error occurred while starting a database transaction.", e);
|
||||
}
|
||||
}
|
||||
|
||||
public static void endDBTransaction() throws DBConnectionException {
|
||||
Connection conn = currentConnection.get();
|
||||
if (conn == null) {
|
||||
throw new IllegalTransactionStateException("Database connection is not active.");
|
||||
}
|
||||
|
||||
if (!inTransaction(conn)) {
|
||||
throw new IllegalTransactionStateException("Transaction has not been started.");
|
||||
}
|
||||
|
||||
try {
|
||||
conn.setAutoCommit(true);
|
||||
} catch (SQLException e) {
|
||||
throw new DBConnectionException("Error occurred while ending database transaction.", e);
|
||||
}
|
||||
}
|
||||
|
||||
public static void commitDBTransaction() {
|
||||
Connection conn = currentConnection.get();
|
||||
if (conn == null) {
|
||||
throw new IllegalTransactionStateException("Database connection is not active.");
|
||||
}
|
||||
|
||||
if (!inTransaction(conn)) {
|
||||
throw new IllegalTransactionStateException("Transaction has not been started.");
|
||||
}
|
||||
|
||||
try {
|
||||
conn.commit();
|
||||
} catch (SQLException e) {
|
||||
log.error("Error occurred while committing the transaction", e);
|
||||
}
|
||||
}
|
||||
|
||||
public static void rollbackDBTransaction() {
|
||||
Connection conn = currentConnection.get();
|
||||
if (conn == null) {
|
||||
throw new IllegalTransactionStateException("Database connection is not active.");
|
||||
}
|
||||
|
||||
if (!inTransaction(conn)) {
|
||||
throw new IllegalTransactionStateException("Transaction has not been started.");
|
||||
}
|
||||
|
||||
try {
|
||||
conn.rollback();
|
||||
} catch (SQLException e) {
|
||||
log.warn("Error occurred while roll-backing the transaction", e);
|
||||
}
|
||||
}
|
||||
|
||||
public static void closeDBConnection() {
|
||||
Connection conn = currentConnection.get();
|
||||
if (conn == null) {
|
||||
throw new IllegalTransactionStateException("Database connection is not active.");
|
||||
}
|
||||
try {
|
||||
conn.close();
|
||||
} catch (SQLException e) {
|
||||
log.error("Error occurred while closing the connection", e);
|
||||
}
|
||||
currentConnection.remove();
|
||||
}
|
||||
|
||||
private static boolean inTransaction(Connection conn) {
|
||||
boolean inTransaction = true;
|
||||
try {
|
||||
if (conn.getAutoCommit()) {
|
||||
inTransaction = false;
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
throw new IllegalTransactionStateException("Failed to get transaction state.");
|
||||
}
|
||||
return inTransaction;
|
||||
}
|
||||
|
||||
public static boolean isTransactionStarted() throws DBConnectionException {
|
||||
Connection connection = getDBConnection();
|
||||
return inTransaction(connection);
|
||||
}
|
||||
|
||||
/**
|
||||
* Resolve data source from the data source definition.
|
||||
*
|
||||
* @param config Data source configuration
|
||||
* @return data source resolved from the data source definition
|
||||
*/
|
||||
public static DataSource resolveDataSource(DataSourceConfig config) {
|
||||
if (config == null) {
|
||||
throw new RuntimeException("Device Management Repository data source configuration " +
|
||||
"is null and thus, is not initialized");
|
||||
}
|
||||
JNDILookupDefinition jndiConfig = config.getJndiLookupDefinition();
|
||||
if (jndiConfig != null) {
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("Initializing Device Management Repository data source using the JNDI " +
|
||||
"Lookup Definition");
|
||||
}
|
||||
List<JNDILookupDefinition.JNDIProperty> jndiPropertyList =
|
||||
jndiConfig.getJndiProperties();
|
||||
if (jndiPropertyList != null) {
|
||||
Hashtable<Object, Object> jndiProperties = new Hashtable<>();
|
||||
for (JNDILookupDefinition.JNDIProperty prop : jndiPropertyList) {
|
||||
jndiProperties.put(prop.getName(), prop.getValue());
|
||||
}
|
||||
dataSource = ConnectionManagerUtil.lookupDataSource(jndiConfig.getJndiName(), jndiProperties);
|
||||
} else {
|
||||
dataSource = ConnectionManagerUtil.lookupDataSource(jndiConfig.getJndiName(), null);
|
||||
}
|
||||
}
|
||||
return dataSource;
|
||||
}
|
||||
|
||||
public static DataSource lookupDataSource(String dataSourceName,
|
||||
final Hashtable<Object, Object> jndiProperties) {
|
||||
|
||||
try {
|
||||
if (jndiProperties == null || jndiProperties.isEmpty()) {
|
||||
return (DataSource) InitialContext.doLookup(dataSourceName);
|
||||
}
|
||||
final InitialContext context = new InitialContext(jndiProperties);
|
||||
return (DataSource) context.lookup(dataSourceName);
|
||||
} catch (Exception e) {
|
||||
String msg = "Error in looking up data source: " + e.getMessage();
|
||||
log.error(msg, e);
|
||||
throw new RuntimeException(msg + e.getMessage(), e);
|
||||
}
|
||||
}
|
||||
|
||||
public static String getDatabaseType() {
|
||||
try {
|
||||
return dataSource.getConnection().getMetaData().getDatabaseProductName();
|
||||
} catch (SQLException e) {
|
||||
log.error("Error occurred while retrieving config.datasource connection", e);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
@ -0,0 +1,60 @@
|
||||
/*
|
||||
* Copyright (C) 2018 - 2023 Entgra (Pvt) Ltd, Inc - All Rights Reserved.
|
||||
*
|
||||
* Unauthorised copying/redistribution of this file, via any medium is strictly prohibited.
|
||||
*
|
||||
* Licensed under the Entgra Commercial License, Version 1.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://entgra.io/licenses/entgra-commercial/1.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 io.entgra.device.mgt.subtype.mgt.dao.util;
|
||||
|
||||
import io.entgra.device.mgt.subtype.mgt.dto.DeviceSubType;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class DAOUtil {
|
||||
|
||||
private static final Log log = LogFactory.getLog(DAOUtil.class);
|
||||
|
||||
public static DeviceSubType loadDeviceSubType(ResultSet rs) throws SQLException {
|
||||
DeviceSubType deviceSubType = new DeviceSubType() {
|
||||
@Override
|
||||
public <T> DeviceSubType setDeviceSubType(T objType, String typeDef) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String parseSubTypeToJson(Object objType) { return null; }
|
||||
};
|
||||
deviceSubType.setTenantId(rs.getInt("TENANT_ID"));
|
||||
deviceSubType.setSubTypeId(rs.getInt("SUB_TYPE_ID"));
|
||||
deviceSubType.setSubTypeName(rs.getString("SUB_TYPE_NAME"));
|
||||
deviceSubType.setDeviceType(DeviceSubType.DeviceType.valueOf(rs.getString("DEVICE_TYPE")));
|
||||
deviceSubType.setTypeDefinition(rs.getString("TYPE_DEFINITION"));
|
||||
return deviceSubType;
|
||||
}
|
||||
|
||||
public static List<DeviceSubType> loadDeviceSubTypes(ResultSet rs) throws SQLException {
|
||||
List<DeviceSubType> deviceSubTypes = new ArrayList<>();
|
||||
while (rs.next()) {
|
||||
deviceSubTypes.add(loadDeviceSubType(rs));
|
||||
}
|
||||
return deviceSubTypes;
|
||||
}
|
||||
}
|
@ -0,0 +1,81 @@
|
||||
/*
|
||||
* Copyright (C) 2018 - 2023 Entgra (Pvt) Ltd, Inc - All Rights Reserved.
|
||||
*
|
||||
* Unauthorised copying/redistribution of this file, via any medium is strictly prohibited.
|
||||
*
|
||||
* Licensed under the Entgra Commercial License, Version 1.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://entgra.io/licenses/entgra-commercial/1.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 io.entgra.device.mgt.subtype.mgt.dto;
|
||||
|
||||
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
|
||||
|
||||
public abstract class DeviceSubType {
|
||||
|
||||
private int subTypeId;
|
||||
private int tenantId;
|
||||
private DeviceType deviceType;
|
||||
private String subTypeName;
|
||||
private String typeDefinition;
|
||||
|
||||
public int getSubTypeId() {
|
||||
return subTypeId;
|
||||
}
|
||||
|
||||
public void setSubTypeId(int subTypeId) {
|
||||
this.subTypeId = subTypeId;
|
||||
}
|
||||
|
||||
public int getTenantId() {
|
||||
return tenantId;
|
||||
}
|
||||
|
||||
public void setTenantId(int tenantId) {
|
||||
this.tenantId = tenantId;
|
||||
}
|
||||
|
||||
public DeviceType getDeviceType() {
|
||||
return deviceType;
|
||||
}
|
||||
|
||||
public void setDeviceType(DeviceType deviceType) {
|
||||
this.deviceType = deviceType;
|
||||
}
|
||||
|
||||
public String getSubTypeName() {
|
||||
return subTypeName;
|
||||
}
|
||||
|
||||
public void setSubTypeName(String subTypeName) {
|
||||
this.subTypeName = subTypeName;
|
||||
}
|
||||
|
||||
public String getTypeDefinition() {
|
||||
return typeDefinition;
|
||||
}
|
||||
|
||||
public void setTypeDefinition(String typeDefinition) {
|
||||
this.typeDefinition = typeDefinition;
|
||||
}
|
||||
|
||||
public abstract <T> DeviceSubType setDeviceSubType(T objType, String typeDef);
|
||||
|
||||
public abstract String parseSubTypeToJson(Object objType) throws JsonProcessingException;
|
||||
|
||||
public enum DeviceType {
|
||||
COM, METER, SIM
|
||||
}
|
||||
}
|
@ -0,0 +1,50 @@
|
||||
/*
|
||||
* Copyright (C) 2018 - 2023 Entgra (Pvt) Ltd, Inc - All Rights Reserved.
|
||||
*
|
||||
* Unauthorised copying/redistribution of this file, via any medium is strictly prohibited.
|
||||
*
|
||||
* Licensed under the Entgra Commercial License, Version 1.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://entgra.io/licenses/entgra-commercial/1.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 io.entgra.device.mgt.subtype.mgt.dto;
|
||||
|
||||
public class DeviceSubTypeCacheKey {
|
||||
int tenantId;
|
||||
int subTypeId;
|
||||
DeviceSubType.DeviceType deviceType;
|
||||
|
||||
public int getTenantId() {
|
||||
return tenantId;
|
||||
}
|
||||
|
||||
public void setTenantId(int tenantId) {
|
||||
this.tenantId = tenantId;
|
||||
}
|
||||
|
||||
public int getSubTypeId() {
|
||||
return subTypeId;
|
||||
}
|
||||
|
||||
public void setSubTypeId(int subTypeId) {
|
||||
this.subTypeId = subTypeId;
|
||||
}
|
||||
|
||||
public DeviceSubType.DeviceType getDeviceType() {
|
||||
return deviceType;
|
||||
}
|
||||
|
||||
public void setDeviceType(DeviceSubType.DeviceType deviceType) {
|
||||
this.deviceType = deviceType;
|
||||
}
|
||||
}
|
@ -0,0 +1,36 @@
|
||||
/*
|
||||
* Copyright (C) 2018 - 2023 Entgra (Pvt) Ltd, Inc - All Rights Reserved.
|
||||
*
|
||||
* Unauthorised copying/redistribution of this file, via any medium is strictly prohibited.
|
||||
*
|
||||
* Licensed under the Entgra Commercial License, Version 1.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://entgra.io/licenses/entgra-commercial/1.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 io.entgra.device.mgt.subtype.mgt.exception;
|
||||
|
||||
/**
|
||||
* Represents the exception thrown during validating the request.
|
||||
*/
|
||||
public class BadRequestException extends SubTypeMgtPluginException {
|
||||
|
||||
private static final long serialVersionUID = 4082332498085984791L;
|
||||
|
||||
public BadRequestException(String message, Throwable ex) {
|
||||
super(message, ex);
|
||||
}
|
||||
|
||||
public BadRequestException(String message) {
|
||||
super(message);
|
||||
}
|
||||
}
|
@ -0,0 +1,36 @@
|
||||
/*
|
||||
* Copyright (C) 2018 - 2023 Entgra (Pvt) Ltd, Inc - All Rights Reserved.
|
||||
*
|
||||
* Unauthorised copying/redistribution of this file, via any medium is strictly prohibited.
|
||||
*
|
||||
* Licensed under the Entgra Commercial License, Version 1.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://entgra.io/licenses/entgra-commercial/1.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 io.entgra.device.mgt.subtype.mgt.exception;
|
||||
|
||||
/**
|
||||
* Exception thrown due to Database Connection issues.
|
||||
*/
|
||||
public class DBConnectionException extends Exception {
|
||||
|
||||
private static final long serialVersionUID = 8568807205814328601L;
|
||||
|
||||
public DBConnectionException(String message, Throwable cause) {
|
||||
super(message, cause);
|
||||
}
|
||||
|
||||
public DBConnectionException(String msg) {
|
||||
super(msg);
|
||||
}
|
||||
}
|
@ -0,0 +1,57 @@
|
||||
/*
|
||||
* Copyright (C) 2018 - 2023 Entgra (Pvt) Ltd, Inc - All Rights Reserved.
|
||||
*
|
||||
* Unauthorised copying/redistribution of this file, via any medium is strictly prohibited.
|
||||
*
|
||||
* Licensed under the Entgra Commercial License, Version 1.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://entgra.io/licenses/entgra-commercial/1.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 io.entgra.device.mgt.subtype.mgt.exception;
|
||||
|
||||
public class SubTypeMgtDAOException extends Exception {
|
||||
|
||||
private static final long serialVersionUID = 3031989080569168761L;
|
||||
private String errorMessage;
|
||||
|
||||
public SubTypeMgtDAOException() {
|
||||
super();
|
||||
}
|
||||
|
||||
public SubTypeMgtDAOException(Throwable cause) {
|
||||
super(cause);
|
||||
}
|
||||
|
||||
public SubTypeMgtDAOException(String msg, Exception nestedEx) {
|
||||
super(msg, nestedEx);
|
||||
setErrorMessage(msg);
|
||||
}
|
||||
|
||||
public SubTypeMgtDAOException(String message, Throwable cause) {
|
||||
super(message, cause);
|
||||
setErrorMessage(message);
|
||||
}
|
||||
|
||||
public SubTypeMgtDAOException(String msg) {
|
||||
super(msg);
|
||||
setErrorMessage(msg);
|
||||
}
|
||||
|
||||
public String getErrorMessage() {
|
||||
return errorMessage;
|
||||
}
|
||||
|
||||
public void setErrorMessage(String errorMessage) {
|
||||
this.errorMessage = errorMessage;
|
||||
}
|
||||
}
|
@ -0,0 +1,58 @@
|
||||
/*
|
||||
* Copyright (C) 2018 - 2023 Entgra (Pvt) Ltd, Inc - All Rights Reserved.
|
||||
*
|
||||
* Unauthorised copying/redistribution of this file, via any medium is strictly prohibited.
|
||||
*
|
||||
* Licensed under the Entgra Commercial License, Version 1.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://entgra.io/licenses/entgra-commercial/1.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 io.entgra.device.mgt.subtype.mgt.exception;
|
||||
|
||||
public class SubTypeMgtPluginException extends Exception {
|
||||
|
||||
private static final long serialVersionUID = -8034442883708462443L;
|
||||
private String errorMessage;
|
||||
|
||||
public SubTypeMgtPluginException() {
|
||||
super();
|
||||
}
|
||||
|
||||
public SubTypeMgtPluginException(Throwable cause) {
|
||||
super(cause);
|
||||
}
|
||||
|
||||
public SubTypeMgtPluginException(String msg, Exception nestedEx) {
|
||||
super(msg, nestedEx);
|
||||
setErrorMessage(msg);
|
||||
}
|
||||
|
||||
public SubTypeMgtPluginException(String message, Throwable cause) {
|
||||
super(message, cause);
|
||||
setErrorMessage(message);
|
||||
}
|
||||
|
||||
public SubTypeMgtPluginException(String msg) {
|
||||
super(msg);
|
||||
setErrorMessage(msg);
|
||||
}
|
||||
|
||||
public String getErrorMessage() {
|
||||
return errorMessage;
|
||||
}
|
||||
|
||||
public void setErrorMessage(String errorMessage) {
|
||||
this.errorMessage = errorMessage;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,233 @@
|
||||
/*
|
||||
* Copyright (C) 2018 - 2023 Entgra (Pvt) Ltd, Inc - All Rights Reserved.
|
||||
*
|
||||
* Unauthorised copying/redistribution of this file, via any medium is strictly prohibited.
|
||||
*
|
||||
* Licensed under the Entgra Commercial License, Version 1.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://entgra.io/licenses/entgra-commercial/1.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 io.entgra.device.mgt.subtype.mgt.impl;
|
||||
|
||||
import com.google.common.cache.CacheBuilder;
|
||||
import com.google.common.cache.CacheLoader;
|
||||
import com.google.common.cache.LoadingCache;
|
||||
import io.entgra.device.mgt.subtype.mgt.cache.GetDeviceSubTypeCacheLoader;
|
||||
import io.entgra.device.mgt.subtype.mgt.dto.DeviceSubType;
|
||||
import io.entgra.device.mgt.subtype.mgt.dao.DeviceSubTypeDAO;
|
||||
import io.entgra.device.mgt.subtype.mgt.dao.DeviceSubTypeDAOFactory;
|
||||
import io.entgra.device.mgt.subtype.mgt.exception.SubTypeMgtDAOException;
|
||||
import io.entgra.device.mgt.subtype.mgt.dao.util.ConnectionManagerUtil;
|
||||
import io.entgra.device.mgt.subtype.mgt.spi.DeviceSubTypeService;
|
||||
import io.entgra.device.mgt.subtype.mgt.util.DeviceSubTypeMgtUtil;
|
||||
import io.entgra.device.mgt.subtype.mgt.exception.BadRequestException;
|
||||
import io.entgra.device.mgt.subtype.mgt.exception.DBConnectionException;
|
||||
import io.entgra.device.mgt.subtype.mgt.exception.SubTypeMgtPluginException;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.wso2.carbon.context.CarbonContext;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.concurrent.ExecutionException;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
public class DeviceSubTypeServiceImpl implements DeviceSubTypeService {
|
||||
private static final Log log = LogFactory.getLog(DeviceSubTypeServiceImpl.class);
|
||||
private static final LoadingCache<String, DeviceSubType> deviceSubTypeCache = CacheBuilder.newBuilder()
|
||||
.expireAfterWrite(15, TimeUnit.MINUTES).build(new GetDeviceSubTypeCacheLoader());
|
||||
private final DeviceSubTypeDAO deviceSubTypeDAO;
|
||||
|
||||
public DeviceSubTypeServiceImpl() {
|
||||
this.deviceSubTypeDAO = DeviceSubTypeDAOFactory.getDeviceSubTypeDAO();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean addDeviceSubType(DeviceSubType deviceSubType)
|
||||
throws SubTypeMgtPluginException {
|
||||
String msg = "";
|
||||
int tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId();
|
||||
deviceSubType.setTenantId(tenantId);
|
||||
|
||||
try {
|
||||
ConnectionManagerUtil.beginDBTransaction();
|
||||
|
||||
//TODO This is done as a temporary... we need to implement addDeviceSubType method either with uuid
|
||||
// or auto incrementing subtype id. In order to that we have to fix hardcoded subtype id in code level..
|
||||
// ex: transport code level
|
||||
|
||||
int maxSubTypeId = deviceSubTypeDAO.getMaxSubTypeId(deviceSubType.getDeviceType());
|
||||
deviceSubType.setSubTypeId(maxSubTypeId + 1);
|
||||
boolean result = deviceSubTypeDAO.addDeviceSubType(deviceSubType);
|
||||
if (result) {
|
||||
msg = "Device subtype added successfully,for " + deviceSubType.getDeviceType() + " subtype & subtype " +
|
||||
"Id: "
|
||||
+ deviceSubType.getSubTypeId();
|
||||
} else {
|
||||
msg = "Device subtype failed to add,for " + deviceSubType.getDeviceType() + " subtype & subtype Id: " +
|
||||
deviceSubType.getSubTypeId();
|
||||
throw new SubTypeMgtPluginException(msg);
|
||||
}
|
||||
ConnectionManagerUtil.commitDBTransaction();
|
||||
String key = DeviceSubTypeMgtUtil.setDeviceSubTypeCacheKey(tenantId, deviceSubType.getSubTypeId(),
|
||||
deviceSubType.getDeviceType());
|
||||
deviceSubTypeCache.put(key, deviceSubType);
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug(msg);
|
||||
}
|
||||
return true;
|
||||
} catch (DBConnectionException e) {
|
||||
msg = "Error occurred while obtaining the database connection to add device subtype for " +
|
||||
deviceSubType.getDeviceType() + " subtype & subtype Id: " + deviceSubType.getSubTypeId();
|
||||
log.error(msg);
|
||||
throw new SubTypeMgtPluginException(msg, e);
|
||||
} catch (SubTypeMgtDAOException e) {
|
||||
msg = "Error occurred in the database level while adding device subtype for " +
|
||||
deviceSubType.getDeviceType() + " subtype & subtype Id: " + deviceSubType.getSubTypeId();
|
||||
log.error(msg);
|
||||
throw new SubTypeMgtPluginException(msg, e);
|
||||
} finally {
|
||||
ConnectionManagerUtil.closeDBConnection();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean updateDeviceSubType(int subTypeId, int tenantId, DeviceSubType.DeviceType deviceType,
|
||||
String subTypeName,
|
||||
String typeDefinition) throws SubTypeMgtPluginException {
|
||||
String msg = "";
|
||||
DeviceSubType deviceSubTypeOld = getDeviceSubType(subTypeId, tenantId, deviceType);
|
||||
|
||||
if (deviceSubTypeOld == null) {
|
||||
String errorMsg = "Cannot find device subtype for " + deviceType + " subtype & subtype Id: " + subTypeId;
|
||||
log.error(errorMsg);
|
||||
throw new BadRequestException(errorMsg);
|
||||
}
|
||||
try {
|
||||
ConnectionManagerUtil.beginDBTransaction();
|
||||
boolean result = deviceSubTypeDAO.updateDeviceSubType(subTypeId, tenantId, deviceType, subTypeName,
|
||||
typeDefinition);
|
||||
if (result) {
|
||||
msg = "Device subtype updated successfully,for " + deviceType + " subtype & subtype Id: " + subTypeId;
|
||||
} else {
|
||||
msg = "Device subtype failed to update,for " + deviceType + " subtype & subtype Id: " + subTypeId;
|
||||
throw new SubTypeMgtPluginException(msg);
|
||||
}
|
||||
ConnectionManagerUtil.commitDBTransaction();
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug(msg);
|
||||
}
|
||||
return true;
|
||||
} catch (DBConnectionException e) {
|
||||
msg = "Error occurred while obtaining the database connection to update device subtype for " + deviceType
|
||||
+ " subtype & subtype Id: " + subTypeId;
|
||||
log.error(msg);
|
||||
throw new SubTypeMgtPluginException(msg, e);
|
||||
} catch (SubTypeMgtDAOException e) {
|
||||
msg = "Error occurred in the database level while updating device subtype for " + deviceType +
|
||||
" subtype & subtype Id: " + subTypeId;
|
||||
log.error(msg);
|
||||
throw new SubTypeMgtPluginException(msg, e);
|
||||
} finally {
|
||||
ConnectionManagerUtil.closeDBConnection();
|
||||
String key = DeviceSubTypeMgtUtil.setDeviceSubTypeCacheKey(tenantId, subTypeId, deviceType);
|
||||
deviceSubTypeCache.refresh(key);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public DeviceSubType getDeviceSubType(int subTypeId, int tenantId, DeviceSubType.DeviceType deviceType)
|
||||
throws SubTypeMgtPluginException {
|
||||
try {
|
||||
String key = DeviceSubTypeMgtUtil.setDeviceSubTypeCacheKey(tenantId, subTypeId, deviceType);
|
||||
return deviceSubTypeCache.get(key);
|
||||
} catch (CacheLoader.InvalidCacheLoadException e) {
|
||||
String msg = "Not having any sim subtype for subtype id: " + subTypeId;
|
||||
log.error(msg, e);
|
||||
return null;
|
||||
} catch (ExecutionException e) {
|
||||
String msg = "Error occurred while obtaining device subtype for subtype id: " + subTypeId;
|
||||
log.error(msg, e);
|
||||
throw new SubTypeMgtPluginException(msg, e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<DeviceSubType> getAllDeviceSubTypes(int tenantId, DeviceSubType.DeviceType deviceType)
|
||||
throws SubTypeMgtPluginException {
|
||||
try {
|
||||
ConnectionManagerUtil.openDBConnection();
|
||||
return deviceSubTypeDAO.getAllDeviceSubTypes(tenantId, deviceType);
|
||||
} catch (DBConnectionException e) {
|
||||
String msg = "Error occurred while obtaining the database connection to retrieve all device subtype for " +
|
||||
deviceType + " subtypes";
|
||||
log.error(msg);
|
||||
throw new SubTypeMgtPluginException(msg, e);
|
||||
} catch (SubTypeMgtDAOException e) {
|
||||
String msg = "Error occurred in the database level while retrieving all device subtype for " + deviceType
|
||||
+ " subtypes";
|
||||
log.error(msg);
|
||||
throw new SubTypeMgtPluginException(msg, e);
|
||||
} finally {
|
||||
ConnectionManagerUtil.closeDBConnection();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getDeviceSubTypeCount(DeviceSubType.DeviceType deviceType) throws SubTypeMgtPluginException {
|
||||
try {
|
||||
ConnectionManagerUtil.openDBConnection();
|
||||
int result = deviceSubTypeDAO.getDeviceSubTypeCount(deviceType);
|
||||
if (result <= 0) {
|
||||
String msg = "There are no any subtypes for device type: " + deviceType;
|
||||
log.info(msg);
|
||||
}
|
||||
return result;
|
||||
} catch (DBConnectionException e) {
|
||||
String msg = "Error occurred while obtaining the database connection to retrieve device subtypes count " +
|
||||
"for " + deviceType + " subtypes";
|
||||
log.error(msg);
|
||||
throw new SubTypeMgtPluginException(msg, e);
|
||||
} catch (SubTypeMgtDAOException e) {
|
||||
String msg = "Error occurred in the database level while retrieving device subtypes count for " + deviceType
|
||||
+ " subtypes";
|
||||
log.error(msg);
|
||||
throw new SubTypeMgtPluginException(msg, e);
|
||||
} finally {
|
||||
ConnectionManagerUtil.closeDBConnection();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public DeviceSubType getDeviceSubTypeByProvider(String subTypeName, int tenantId,
|
||||
DeviceSubType.DeviceType deviceType)
|
||||
throws SubTypeMgtPluginException {
|
||||
try {
|
||||
ConnectionManagerUtil.openDBConnection();
|
||||
return deviceSubTypeDAO.getDeviceSubTypeByProvider(subTypeName, tenantId, deviceType);
|
||||
} catch (DBConnectionException e) {
|
||||
String msg = "Error occurred while obtaining the database connection to retrieve device subtype for " +
|
||||
deviceType + " subtype & subtype name: " + subTypeName;
|
||||
log.error(msg);
|
||||
throw new SubTypeMgtPluginException(msg, e);
|
||||
} catch (SubTypeMgtDAOException e) {
|
||||
String msg = "Error occurred in the database level while retrieving device subtype for " + deviceType
|
||||
+ " subtype & subtype name: " + subTypeName;
|
||||
log.error(msg);
|
||||
throw new SubTypeMgtPluginException(msg, e);
|
||||
} finally {
|
||||
ConnectionManagerUtil.closeDBConnection();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,64 @@
|
||||
/*
|
||||
* Copyright (C) 2018 - 2023 Entgra (Pvt) Ltd, Inc - All Rights Reserved.
|
||||
*
|
||||
* Unauthorised copying/redistribution of this file, via any medium is strictly prohibited.
|
||||
*
|
||||
* Licensed under the Entgra Commercial License, Version 1.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://entgra.io/licenses/entgra-commercial/1.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 io.entgra.device.mgt.subtype.mgt.internal;
|
||||
|
||||
import io.entgra.device.mgt.subtype.mgt.spi.DeviceSubTypeService;
|
||||
import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService;
|
||||
import org.wso2.carbon.registry.core.service.RegistryService;
|
||||
|
||||
public class DeviceSubTypeMgtDataHolder {
|
||||
|
||||
public static final DeviceSubTypeMgtDataHolder thisInstance = new DeviceSubTypeMgtDataHolder();
|
||||
|
||||
private RegistryService registryService;
|
||||
private DeviceManagementProviderService deviceManagementProviderService;
|
||||
private DeviceSubTypeService deviceSubTypeService;
|
||||
|
||||
private DeviceSubTypeMgtDataHolder() {
|
||||
}
|
||||
|
||||
public static DeviceSubTypeMgtDataHolder getInstance() {
|
||||
return thisInstance;
|
||||
}
|
||||
|
||||
public RegistryService getRegistryService() {
|
||||
return registryService;
|
||||
}
|
||||
|
||||
public void setRegistryService(RegistryService registryService) {
|
||||
this.registryService = registryService;
|
||||
}
|
||||
|
||||
public DeviceManagementProviderService getDeviceManagementProviderService() {
|
||||
return deviceManagementProviderService;
|
||||
}
|
||||
|
||||
public void setDeviceManagementProviderService(DeviceManagementProviderService deviceManagementProviderService) {
|
||||
this.deviceManagementProviderService = deviceManagementProviderService;
|
||||
}
|
||||
|
||||
public DeviceSubTypeService getDeviceSubTypeService() {
|
||||
return deviceSubTypeService;
|
||||
}
|
||||
|
||||
public void setDeviceSubTypeService(DeviceSubTypeService deviceSubTypeService) {
|
||||
this.deviceSubTypeService = deviceSubTypeService;
|
||||
}
|
||||
}
|
@ -0,0 +1,138 @@
|
||||
/*
|
||||
* Copyright (C) 2018 - 2023 Entgra (Pvt) Ltd, Inc - All Rights Reserved.
|
||||
*
|
||||
* Unauthorised copying/redistribution of this file, via any medium is strictly prohibited.
|
||||
*
|
||||
* Licensed under the Entgra Commercial License, Version 1.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://entgra.io/licenses/entgra-commercial/1.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 io.entgra.device.mgt.subtype.mgt.internal;
|
||||
|
||||
import io.entgra.device.mgt.subtype.mgt.dao.DeviceSubTypeDAOFactory;
|
||||
import io.entgra.device.mgt.subtype.mgt.impl.DeviceSubTypeServiceImpl;
|
||||
import io.entgra.device.mgt.subtype.mgt.spi.DeviceSubTypeService;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.osgi.framework.BundleContext;
|
||||
import org.osgi.service.component.ComponentContext;
|
||||
import org.wso2.carbon.device.mgt.core.config.DeviceConfigurationManager;
|
||||
import org.wso2.carbon.device.mgt.core.config.DeviceManagementConfig;
|
||||
import org.wso2.carbon.device.mgt.core.config.datasource.DataSourceConfig;
|
||||
import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService;
|
||||
import org.wso2.carbon.ndatasource.core.DataSourceService;
|
||||
import org.wso2.carbon.registry.core.service.RegistryService;
|
||||
|
||||
/**
|
||||
* @scr.component name="io.entgra.device.mgt.subtype.mgt.internal.DeviceSubTypeMgtServiceComponent" immediate="true"
|
||||
* @scr.reference name="org.wso2.carbon.device.manager"
|
||||
* interface="org.wso2.carbon.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 DeviceSubTypeMgtServiceComponent {
|
||||
|
||||
private static final Log log = LogFactory.getLog(DeviceSubTypeMgtServiceComponent.class);
|
||||
|
||||
protected void activate(ComponentContext componentContext) {
|
||||
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("Activating Device SubType Management Service Component");
|
||||
}
|
||||
try {
|
||||
BundleContext bundleContext = componentContext.getBundleContext();
|
||||
|
||||
DeviceManagementConfig config = DeviceConfigurationManager.getInstance().getDeviceManagementConfig();
|
||||
DataSourceConfig dsConfig = config.getDeviceManagementConfigRepository().getDataSourceConfig();
|
||||
DeviceSubTypeDAOFactory.init(dsConfig);
|
||||
|
||||
DeviceSubTypeService deviceSubTypeService = new DeviceSubTypeServiceImpl();
|
||||
DeviceSubTypeMgtDataHolder.getInstance().setDeviceSubTypeService(deviceSubTypeService);
|
||||
bundleContext.registerService(DeviceSubTypeService.class, deviceSubTypeService, null);
|
||||
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("Device SubType Management Service Component has been successfully activated");
|
||||
}
|
||||
} catch (Throwable e) {
|
||||
log.error("Error occurred while activating Device SubType Management Service Component", e);
|
||||
}
|
||||
}
|
||||
|
||||
protected void deactivate(ComponentContext componentContext) {
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("De-activating Device SubType Management Service Component");
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
protected void setDeviceManagementService(DeviceManagementProviderService deviceManagementProviderService) {
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("Setting Device Management Service to Device SubType Mgt SC");
|
||||
}
|
||||
DeviceSubTypeMgtDataHolder.getInstance().setDeviceManagementProviderService(deviceManagementProviderService);
|
||||
}
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
protected void unsetDeviceManagementService(DeviceManagementProviderService deviceManagementService) {
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("Removing Device Management Service from Device SubType Mgt SC");
|
||||
}
|
||||
DeviceSubTypeMgtDataHolder.getInstance().setDeviceManagementProviderService(null);
|
||||
}
|
||||
|
||||
protected void setDataSourceService(DataSourceService dataSourceService) {
|
||||
/* This is to avoid mobile device management component getting initialized before the underlying datasources
|
||||
are registered */
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("Data source service set to Device SubType Mgt component");
|
||||
}
|
||||
}
|
||||
|
||||
protected void unsetDataSourceService(DataSourceService dataSourceService) {
|
||||
//do nothing
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("Removing Data Source service from Device SubType Mgt component");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
protected void setRegistryService(RegistryService registryService) {
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("RegistryService set to Device SubType Mgt component");
|
||||
}
|
||||
DeviceSubTypeMgtDataHolder.getInstance().setRegistryService(registryService);
|
||||
}
|
||||
|
||||
protected void unsetRegistryService(RegistryService registryService) {
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("Removing RegistryService from Device SubType Mgt component");
|
||||
}
|
||||
DeviceSubTypeMgtDataHolder.getInstance().setRegistryService(null);
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,44 @@
|
||||
/*
|
||||
* Copyright (C) 2018 - 2023 Entgra (Pvt) Ltd, Inc - All Rights Reserved.
|
||||
*
|
||||
* Unauthorised copying/redistribution of this file, via any medium is strictly prohibited.
|
||||
*
|
||||
* Licensed under the Entgra Commercial License, Version 1.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://entgra.io/licenses/entgra-commercial/1.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 io.entgra.device.mgt.subtype.mgt.spi;
|
||||
|
||||
import io.entgra.device.mgt.subtype.mgt.dto.DeviceSubType;
|
||||
import io.entgra.device.mgt.subtype.mgt.exception.SubTypeMgtPluginException;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface DeviceSubTypeService {
|
||||
|
||||
boolean addDeviceSubType(DeviceSubType deviceSubType) throws SubTypeMgtPluginException;
|
||||
|
||||
boolean updateDeviceSubType(int subTypeId, int tenantId, DeviceSubType.DeviceType deviceType, String subTypeName,
|
||||
String typeDefinition) throws SubTypeMgtPluginException;
|
||||
|
||||
DeviceSubType getDeviceSubType(int subTypeId, int tenantId, DeviceSubType.DeviceType deviceType)
|
||||
throws SubTypeMgtPluginException;
|
||||
|
||||
List<DeviceSubType> getAllDeviceSubTypes(int tenantId, DeviceSubType.DeviceType deviceType)
|
||||
throws SubTypeMgtPluginException;
|
||||
|
||||
int getDeviceSubTypeCount(DeviceSubType.DeviceType deviceType) throws SubTypeMgtPluginException;
|
||||
|
||||
DeviceSubType getDeviceSubTypeByProvider(String subTypeName, int tenantId, DeviceSubType.DeviceType deviceType)
|
||||
throws SubTypeMgtPluginException;
|
||||
}
|
@ -0,0 +1,42 @@
|
||||
/*
|
||||
* Copyright (C) 2018 - 2023 Entgra (Pvt) Ltd, Inc - All Rights Reserved.
|
||||
*
|
||||
* Unauthorised copying/redistribution of this file, via any medium is strictly prohibited.
|
||||
*
|
||||
* Licensed under the Entgra Commercial License, Version 1.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://entgra.io/licenses/entgra-commercial/1.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 io.entgra.device.mgt.subtype.mgt.util;
|
||||
|
||||
import io.entgra.device.mgt.subtype.mgt.dto.DeviceSubType;
|
||||
import io.entgra.device.mgt.subtype.mgt.dto.DeviceSubTypeCacheKey;
|
||||
|
||||
public class DeviceSubTypeMgtUtil {
|
||||
public static String setDeviceSubTypeCacheKey(int tenantId, int subTypeId, DeviceSubType.DeviceType deviceType) {
|
||||
return tenantId + "|" + subTypeId + "|" + deviceType.toString();
|
||||
}
|
||||
|
||||
public static DeviceSubTypeCacheKey getDeviceSubTypeCacheKey(String key) {
|
||||
String[] keys = key.split("\\|");
|
||||
int tenantId = Integer.parseInt(keys[0]);
|
||||
int subTypeId = Integer.parseInt(keys[1]);
|
||||
DeviceSubType.DeviceType deviceType = DeviceSubType.DeviceType.valueOf(keys[2]);
|
||||
|
||||
DeviceSubTypeCacheKey deviceSubTypesCacheKey = new DeviceSubTypeCacheKey();
|
||||
deviceSubTypesCacheKey.setTenantId(tenantId);
|
||||
deviceSubTypesCacheKey.setSubTypeId(subTypeId);
|
||||
deviceSubTypesCacheKey.setDeviceType(deviceType);
|
||||
return deviceSubTypesCacheKey;
|
||||
}
|
||||
}
|
@ -0,0 +1,163 @@
|
||||
/*
|
||||
* Copyright (C) 2018 - 2023 Entgra (Pvt) Ltd, Inc - All Rights Reserved.
|
||||
*
|
||||
* Unauthorised copying/redistribution of this file, via any medium is strictly prohibited.
|
||||
*
|
||||
* Licensed under the Entgra Commercial License, Version 1.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://entgra.io/licenses/entgra-commercial/1.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 io.entgra.device.mgt.subtype.mgt;
|
||||
|
||||
import io.entgra.device.mgt.subtype.mgt.dao.DeviceSubTypeDAO;
|
||||
import io.entgra.device.mgt.subtype.mgt.dao.DeviceSubTypeDAOFactory;
|
||||
import io.entgra.device.mgt.subtype.mgt.dao.util.ConnectionManagerUtil;
|
||||
import io.entgra.device.mgt.subtype.mgt.dto.DeviceSubType;
|
||||
import io.entgra.device.mgt.subtype.mgt.exception.DBConnectionException;
|
||||
import io.entgra.device.mgt.subtype.mgt.exception.SubTypeMgtDAOException;
|
||||
import io.entgra.device.mgt.subtype.mgt.mock.BaseDeviceSubTypePluginTest;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.testng.annotations.BeforeClass;
|
||||
import org.testng.annotations.Test;
|
||||
import org.wso2.carbon.context.PrivilegedCarbonContext;
|
||||
|
||||
public class DAONegativeTest extends BaseDeviceSubTypePluginTest {
|
||||
private static final Log log = LogFactory.getLog(DAONegativeTest.class);
|
||||
|
||||
private DeviceSubTypeDAO deviceSubTypeDAO;
|
||||
|
||||
@BeforeClass
|
||||
public void init() {
|
||||
deviceSubTypeDAO = DeviceSubTypeDAOFactory.getDeviceSubTypeDAO();
|
||||
log.info("DAO Negative test initialized");
|
||||
}
|
||||
|
||||
@Test(description = "This method tests the add device subtype method under negative circumstances with null data",
|
||||
expectedExceptions = {NullPointerException.class}
|
||||
)
|
||||
public void testAddDeviceSubType() throws SubTypeMgtDAOException {
|
||||
DeviceSubType deviceSubType = new DeviceSubType() {
|
||||
@Override
|
||||
public <T> DeviceSubType setDeviceSubType(T objType, String typeDef) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String parseSubTypeToJson(Object objType) {
|
||||
return null;
|
||||
}
|
||||
};
|
||||
try {
|
||||
ConnectionManagerUtil.beginDBTransaction();
|
||||
deviceSubTypeDAO.addDeviceSubType(deviceSubType);
|
||||
ConnectionManagerUtil.commitDBTransaction();
|
||||
} catch (SubTypeMgtDAOException e) {
|
||||
ConnectionManagerUtil.rollbackDBTransaction();
|
||||
String msg = "Error occurred while processing SQL to insert device subtype";
|
||||
log.error(msg);
|
||||
throw new SubTypeMgtDAOException(msg, e);
|
||||
} catch (DBConnectionException e) {
|
||||
String msg = "Error occurred while obtaining DB connection to insert device subtype";
|
||||
log.error(msg);
|
||||
throw new SubTypeMgtDAOException(msg, e);
|
||||
} finally {
|
||||
ConnectionManagerUtil.closeDBConnection();
|
||||
}
|
||||
}
|
||||
|
||||
@Test(description = "This method tests the add device subtype method under negative circumstances while missing " +
|
||||
"required fields",
|
||||
expectedExceptions = {SubTypeMgtDAOException.class},
|
||||
expectedExceptionsMessageRegExp = "Error occurred while processing SQL to insert device subtype"
|
||||
)
|
||||
public void testAddDeviceSubTypes() throws SubTypeMgtDAOException {
|
||||
int subTypeId = 1;
|
||||
String subTypeName = "TestSubType";
|
||||
DeviceSubType deviceSubType = new DeviceSubType() {
|
||||
@Override
|
||||
public <T> DeviceSubType setDeviceSubType(T objType, String typeDef) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String parseSubTypeToJson(Object objType) {
|
||||
return null;
|
||||
}
|
||||
};
|
||||
deviceSubType.setSubTypeId(subTypeId);
|
||||
deviceSubType.setSubTypeName(subTypeName);
|
||||
deviceSubType.setDeviceType(DeviceSubType.DeviceType.COM);
|
||||
try {
|
||||
ConnectionManagerUtil.beginDBTransaction();
|
||||
deviceSubTypeDAO.addDeviceSubType(deviceSubType);
|
||||
ConnectionManagerUtil.commitDBTransaction();
|
||||
} catch (SubTypeMgtDAOException e) {
|
||||
ConnectionManagerUtil.rollbackDBTransaction();
|
||||
String msg = "Error occurred while processing SQL to insert device subtype";
|
||||
log.error(msg);
|
||||
throw new SubTypeMgtDAOException(msg, e);
|
||||
} catch (DBConnectionException e) {
|
||||
String msg = "Error occurred while obtaining DB connection to insert device subtype";
|
||||
log.error(msg);
|
||||
throw new SubTypeMgtDAOException(msg, e);
|
||||
} finally {
|
||||
ConnectionManagerUtil.closeDBConnection();
|
||||
}
|
||||
}
|
||||
|
||||
@Test(description = "This method tests the add device subtype method under negative circumstances while passing " +
|
||||
"same subtype id & device type",
|
||||
expectedExceptions = {SubTypeMgtDAOException.class},
|
||||
expectedExceptionsMessageRegExp = "Error occurred while processing SQL to insert device subtype"
|
||||
)
|
||||
public void testAddDeviceSubtypes() throws SubTypeMgtDAOException {
|
||||
int subTypeId = 1;
|
||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
|
||||
String subTypeName = "TestSubType";
|
||||
String typeDefinition = TestUtils.createNewDeviceSubType(subTypeId);
|
||||
DeviceSubType deviceSubType = new DeviceSubType() {
|
||||
@Override
|
||||
public <T> DeviceSubType setDeviceSubType(T objType, String typeDef) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String parseSubTypeToJson(Object objType) {
|
||||
return null;
|
||||
}
|
||||
};
|
||||
deviceSubType.setSubTypeName(subTypeName);
|
||||
deviceSubType.setDeviceType(DeviceSubType.DeviceType.COM);
|
||||
deviceSubType.setTenantId(tenantId);
|
||||
deviceSubType.setTypeDefinition(typeDefinition);
|
||||
try {
|
||||
ConnectionManagerUtil.beginDBTransaction();
|
||||
deviceSubTypeDAO.addDeviceSubType(deviceSubType);
|
||||
deviceSubTypeDAO.addDeviceSubType(deviceSubType);
|
||||
ConnectionManagerUtil.commitDBTransaction();
|
||||
} catch (SubTypeMgtDAOException e) {
|
||||
ConnectionManagerUtil.rollbackDBTransaction();
|
||||
String msg = "Error occurred while processing SQL to insert device subtype";
|
||||
log.error(msg);
|
||||
throw new SubTypeMgtDAOException(msg, e);
|
||||
} catch (DBConnectionException e) {
|
||||
String msg = "Error occurred while obtaining DB connection to insert device subtype";
|
||||
log.error(msg);
|
||||
throw new SubTypeMgtDAOException(msg, e);
|
||||
} finally {
|
||||
ConnectionManagerUtil.closeDBConnection();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,132 @@
|
||||
/*
|
||||
* Copyright (C) 2018 - 2023 Entgra (Pvt) Ltd, Inc - All Rights Reserved.
|
||||
*
|
||||
* Unauthorised copying/redistribution of this file, via any medium is strictly prohibited.
|
||||
*
|
||||
* Licensed under the Entgra Commercial License, Version 1.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://entgra.io/licenses/entgra-commercial/1.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 io.entgra.device.mgt.subtype.mgt;
|
||||
|
||||
import io.entgra.device.mgt.subtype.mgt.dao.DeviceSubTypeDAO;
|
||||
import io.entgra.device.mgt.subtype.mgt.dao.DeviceSubTypeDAOFactory;
|
||||
import io.entgra.device.mgt.subtype.mgt.dao.util.ConnectionManagerUtil;
|
||||
import io.entgra.device.mgt.subtype.mgt.dto.DeviceSubType;
|
||||
import io.entgra.device.mgt.subtype.mgt.exception.DBConnectionException;
|
||||
import io.entgra.device.mgt.subtype.mgt.exception.SubTypeMgtDAOException;
|
||||
import io.entgra.device.mgt.subtype.mgt.mock.BaseDeviceSubTypePluginTest;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.testng.Assert;
|
||||
import org.testng.annotations.BeforeClass;
|
||||
import org.testng.annotations.Test;
|
||||
import org.wso2.carbon.context.PrivilegedCarbonContext;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class DAOTest extends BaseDeviceSubTypePluginTest {
|
||||
private static final Log log = LogFactory.getLog(DAOTest.class);
|
||||
|
||||
private DeviceSubTypeDAO deviceSubTypeDAO;
|
||||
|
||||
@BeforeClass
|
||||
public void init() {
|
||||
deviceSubTypeDAO = DeviceSubTypeDAOFactory.getDeviceSubTypeDAO();
|
||||
log.info("DAO test initialized");
|
||||
}
|
||||
|
||||
@Test(dependsOnMethods = "testAddDeviceSubType")
|
||||
public void testGetDeviceSubType() throws DBConnectionException, SubTypeMgtDAOException {
|
||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
|
||||
ConnectionManagerUtil.openDBConnection();
|
||||
DeviceSubType subTypeActual = deviceSubTypeDAO.getDeviceSubType(1, tenantId,
|
||||
DeviceSubType.DeviceType.COM);
|
||||
ConnectionManagerUtil.closeDBConnection();
|
||||
Assert.assertNotNull(subTypeActual, "Should not be null");
|
||||
}
|
||||
|
||||
@Test(dependsOnMethods = "testAddDeviceSubType")
|
||||
public void testGetAllDeviceSubTypes() throws DBConnectionException, SubTypeMgtDAOException {
|
||||
DeviceSubType.DeviceType deviceType = DeviceSubType.DeviceType.COM;
|
||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
|
||||
ConnectionManagerUtil.openDBConnection();
|
||||
List<DeviceSubType> subTypesActual = deviceSubTypeDAO.getAllDeviceSubTypes(tenantId, deviceType);
|
||||
ConnectionManagerUtil.closeDBConnection();
|
||||
log.info(deviceType + " sub types count should be " + subTypesActual.size());
|
||||
Assert.assertNotNull(subTypesActual, "Should not be null");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAddDeviceSubType() throws DBConnectionException, SubTypeMgtDAOException {
|
||||
int subTypeId = 1;
|
||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
|
||||
String subTypeName = "TestSubType";
|
||||
DeviceSubType.DeviceType deviceType = DeviceSubType.DeviceType.COM;
|
||||
String typeDefinition = TestUtils.createNewDeviceSubType(subTypeId);
|
||||
|
||||
DeviceSubType deviceSubType = new DeviceSubType() {
|
||||
@Override
|
||||
public <T> DeviceSubType setDeviceSubType(T objType, String typeDef) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String parseSubTypeToJson(Object objType) {
|
||||
return null;
|
||||
}
|
||||
};
|
||||
deviceSubType.setSubTypeId(subTypeId);
|
||||
deviceSubType.setSubTypeName(subTypeName);
|
||||
deviceSubType.setDeviceType(deviceType);
|
||||
deviceSubType.setTenantId(tenantId);
|
||||
deviceSubType.setTypeDefinition(typeDefinition);
|
||||
|
||||
ConnectionManagerUtil.beginDBTransaction();
|
||||
deviceSubTypeDAO.addDeviceSubType(deviceSubType);
|
||||
ConnectionManagerUtil.commitDBTransaction();
|
||||
DeviceSubType subTypeActual = deviceSubTypeDAO.getDeviceSubType(subTypeId, tenantId, deviceType);
|
||||
ConnectionManagerUtil.closeDBConnection();
|
||||
Assert.assertNotNull(subTypeActual, "Cannot be null");
|
||||
TestUtils.verifyDeviceSubTypeDAO(subTypeActual);
|
||||
}
|
||||
|
||||
@Test(dependsOnMethods = "testAddDeviceSubType")
|
||||
public void testUpdateDeviceSubType() throws DBConnectionException, SubTypeMgtDAOException {
|
||||
int subTypeId = 1;
|
||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
|
||||
DeviceSubType.DeviceType deviceType = DeviceSubType.DeviceType.COM;
|
||||
String subTypeName = "TestSubType";
|
||||
String subTypeExpected = TestUtils.createUpdateDeviceSubType(subTypeId);
|
||||
|
||||
ConnectionManagerUtil.beginDBTransaction();
|
||||
deviceSubTypeDAO.updateDeviceSubType(subTypeId, tenantId, deviceType, subTypeName, subTypeExpected);
|
||||
ConnectionManagerUtil.commitDBTransaction();
|
||||
DeviceSubType subTypeActual = deviceSubTypeDAO.getDeviceSubType(subTypeId, tenantId, deviceType);
|
||||
ConnectionManagerUtil.closeDBConnection();
|
||||
|
||||
Assert.assertNotNull(subTypeActual, "Cannot be null");
|
||||
TestUtils.verifyUpdatedDeviceSubTypeDAO(subTypeActual);
|
||||
}
|
||||
|
||||
@Test(dependsOnMethods = "testAddDeviceSubType")
|
||||
public void testGetDeviceTypeCount() throws DBConnectionException, SubTypeMgtDAOException {
|
||||
DeviceSubType.DeviceType deviceType = DeviceSubType.DeviceType.COM;
|
||||
ConnectionManagerUtil.openDBConnection();
|
||||
int subTypeCount = deviceSubTypeDAO.getDeviceSubTypeCount(deviceType);
|
||||
ConnectionManagerUtil.closeDBConnection();
|
||||
log.info(deviceType + " Device subtypes count: " + subTypeCount);
|
||||
Assert.assertEquals(subTypeCount, 1);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,79 @@
|
||||
/*
|
||||
* Copyright (C) 2018 - 2023 Entgra (Pvt) Ltd, Inc - All Rights Reserved.
|
||||
*
|
||||
* Unauthorised copying/redistribution of this file, via any medium is strictly prohibited.
|
||||
*
|
||||
* Licensed under the Entgra Commercial License, Version 1.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://entgra.io/licenses/entgra-commercial/1.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 io.entgra.device.mgt.subtype.mgt;
|
||||
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
import javax.xml.bind.annotation.XmlRootElement;
|
||||
|
||||
@XmlRootElement(name = "DataSourceConfig")
|
||||
public class DataSourceConfig {
|
||||
|
||||
private String url;
|
||||
private String driverClassName;
|
||||
private String user;
|
||||
private String password;
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "DataSourceConfig[" +
|
||||
" Url ='" + url + '\'' +
|
||||
", DriverClassName ='" + driverClassName + '\'' +
|
||||
", UserName ='" + user + '\'' +
|
||||
", Password ='" + password + '\'' +
|
||||
"]";
|
||||
}
|
||||
|
||||
@XmlElement(name = "Url", nillable = false)
|
||||
public String getUrl() {
|
||||
return url;
|
||||
}
|
||||
|
||||
public void setUrl(String url) {
|
||||
this.url = url;
|
||||
}
|
||||
|
||||
@XmlElement(name = "DriverClassName", nillable = false)
|
||||
public String getDriverClassName() {
|
||||
return driverClassName;
|
||||
}
|
||||
|
||||
public void setDriverClassName(String driverClassName) {
|
||||
this.driverClassName = driverClassName;
|
||||
}
|
||||
|
||||
@XmlElement(name = "User", nillable = false)
|
||||
public String getUser() {
|
||||
return user;
|
||||
}
|
||||
|
||||
public void setUser(String user) {
|
||||
this.user = user;
|
||||
}
|
||||
|
||||
@XmlElement(name = "Password", nillable = false)
|
||||
public String getPassword() {
|
||||
return password;
|
||||
}
|
||||
|
||||
public void setPassword(String password) {
|
||||
this.password = password;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,101 @@
|
||||
/*
|
||||
* Copyright (C) 2018 - 2023 Entgra (Pvt) Ltd, Inc - All Rights Reserved.
|
||||
*
|
||||
* Unauthorised copying/redistribution of this file, via any medium is strictly prohibited.
|
||||
*
|
||||
* Licensed under the Entgra Commercial License, Version 1.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://entgra.io/licenses/entgra-commercial/1.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 io.entgra.device.mgt.subtype.mgt;
|
||||
|
||||
import io.entgra.device.mgt.subtype.mgt.dto.DeviceSubType;
|
||||
import io.entgra.device.mgt.subtype.mgt.exception.SubTypeMgtPluginException;
|
||||
import io.entgra.device.mgt.subtype.mgt.impl.DeviceSubTypeServiceImpl;
|
||||
import io.entgra.device.mgt.subtype.mgt.mock.BaseDeviceSubTypePluginTest;
|
||||
import io.entgra.device.mgt.subtype.mgt.spi.DeviceSubTypeService;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.testng.annotations.BeforeClass;
|
||||
import org.testng.annotations.Test;
|
||||
import org.wso2.carbon.context.PrivilegedCarbonContext;
|
||||
|
||||
public class ServiceNegativeTest extends BaseDeviceSubTypePluginTest {
|
||||
|
||||
private static final Log log = LogFactory.getLog(ServiceNegativeTest.class);
|
||||
private DeviceSubTypeService deviceSubTypeService;
|
||||
|
||||
@BeforeClass
|
||||
public void init() {
|
||||
deviceSubTypeService = new DeviceSubTypeServiceImpl();
|
||||
log.info("Service test initialized");
|
||||
}
|
||||
|
||||
@Test(description = "This method tests Add Device Subtype method under negative circumstances with null data",
|
||||
expectedExceptions = {NullPointerException.class})
|
||||
public void testAddDeviceSubType() throws SubTypeMgtPluginException {
|
||||
DeviceSubType deviceSubType = new DeviceSubType() {
|
||||
@Override
|
||||
public <T> DeviceSubType setDeviceSubType(T objType, String typeDef) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String parseSubTypeToJson(Object objType) {
|
||||
return null;
|
||||
}
|
||||
};
|
||||
deviceSubTypeService.addDeviceSubType(deviceSubType);
|
||||
}
|
||||
|
||||
@Test(description = "This method tests Add Device Subtype method under negative circumstances while missing " +
|
||||
"required fields",
|
||||
expectedExceptions = {SubTypeMgtPluginException.class},
|
||||
expectedExceptionsMessageRegExp = "Error occurred in the database level while adding device subtype for " +
|
||||
"SIM subtype & subtype Id: 1")
|
||||
public void testAddDeviceSubTypes() throws SubTypeMgtPluginException {
|
||||
String subTypeName = "TestSubType";
|
||||
DeviceSubType.DeviceType deviceType = DeviceSubType.DeviceType.SIM;
|
||||
|
||||
DeviceSubType deviceSubType = new DeviceSubType() {
|
||||
@Override
|
||||
public <T> DeviceSubType setDeviceSubType(T objType, String typeDef) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String parseSubTypeToJson(Object objType) {
|
||||
return null;
|
||||
}
|
||||
};
|
||||
deviceSubType.setSubTypeName(subTypeName);
|
||||
deviceSubType.setDeviceType(deviceType);
|
||||
deviceSubTypeService.addDeviceSubType(deviceSubType);
|
||||
}
|
||||
|
||||
@Test(description = "This method tests Update Device Subtype method under negative circumstances with invalid " +
|
||||
"subtype Id",
|
||||
expectedExceptions = {SubTypeMgtPluginException.class},
|
||||
expectedExceptionsMessageRegExp = "Cannot find device subtype for SIM subtype & subtype Id: 15")
|
||||
public void testUpdateDeviceSubTypes() throws SubTypeMgtPluginException {
|
||||
int subTypeId = 15;
|
||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
|
||||
DeviceSubType.DeviceType deviceType = DeviceSubType.DeviceType.SIM;
|
||||
String subTypeName = "TestSubType";
|
||||
String subTypeExpected = TestUtils.createUpdateDeviceSubType(subTypeId);
|
||||
|
||||
deviceSubTypeService.updateDeviceSubType(subTypeId, tenantId, deviceType, subTypeName, subTypeExpected);
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,117 @@
|
||||
/*
|
||||
* Copyright (C) 2018 - 2023 Entgra (Pvt) Ltd, Inc - All Rights Reserved.
|
||||
*
|
||||
* Unauthorised copying/redistribution of this file, via any medium is strictly prohibited.
|
||||
*
|
||||
* Licensed under the Entgra Commercial License, Version 1.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://entgra.io/licenses/entgra-commercial/1.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 io.entgra.device.mgt.subtype.mgt;
|
||||
|
||||
import io.entgra.device.mgt.subtype.mgt.dto.DeviceSubType;
|
||||
import io.entgra.device.mgt.subtype.mgt.exception.SubTypeMgtPluginException;
|
||||
import io.entgra.device.mgt.subtype.mgt.impl.DeviceSubTypeServiceImpl;
|
||||
import io.entgra.device.mgt.subtype.mgt.mock.BaseDeviceSubTypePluginTest;
|
||||
import io.entgra.device.mgt.subtype.mgt.spi.DeviceSubTypeService;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.testng.Assert;
|
||||
import org.testng.annotations.BeforeClass;
|
||||
import org.testng.annotations.Test;
|
||||
import org.wso2.carbon.context.PrivilegedCarbonContext;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
public class ServiceTest extends BaseDeviceSubTypePluginTest {
|
||||
|
||||
private static final Log log = LogFactory.getLog(ServiceTest.class);
|
||||
private DeviceSubTypeService deviceSubTypeService;
|
||||
|
||||
@BeforeClass
|
||||
public void init() {
|
||||
deviceSubTypeService = new DeviceSubTypeServiceImpl();
|
||||
log.info("Service test initialized");
|
||||
}
|
||||
|
||||
@Test(dependsOnMethods = "testAddDeviceSubType")
|
||||
public void testGetDeviceType() throws SubTypeMgtPluginException {
|
||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
|
||||
DeviceSubType subTypeActual = deviceSubTypeService.getDeviceSubType(1, tenantId,
|
||||
DeviceSubType.DeviceType.METER);
|
||||
TestUtils.verifyDeviceSubType(subTypeActual);
|
||||
}
|
||||
|
||||
@Test(dependsOnMethods = "testAddDeviceSubType")
|
||||
public void testGetAllDeviceTypes() throws SubTypeMgtPluginException {
|
||||
DeviceSubType.DeviceType deviceType = DeviceSubType.DeviceType.METER;
|
||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
|
||||
List<DeviceSubType> subTypesActual = deviceSubTypeService.getAllDeviceSubTypes(tenantId, deviceType);
|
||||
log.info(deviceType + " sub types count should be " + subTypesActual.size());
|
||||
Assert.assertNotNull(subTypesActual, "Should not be null");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAddDeviceSubType() throws SubTypeMgtPluginException {
|
||||
int subTypeId = 1;
|
||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
|
||||
String subTypeName = "TestSubType";
|
||||
DeviceSubType.DeviceType deviceType = DeviceSubType.DeviceType.METER;
|
||||
String typeDefinition = TestUtils.createNewDeviceSubType(subTypeId);
|
||||
|
||||
DeviceSubType deviceSubType = new DeviceSubType() {
|
||||
@Override
|
||||
public <T> DeviceSubType setDeviceSubType(T objType, String typeDef) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String parseSubTypeToJson(Object objType) {
|
||||
return null;
|
||||
}
|
||||
};
|
||||
deviceSubType.setSubTypeName(subTypeName);
|
||||
deviceSubType.setDeviceType(deviceType);
|
||||
deviceSubType.setTenantId(tenantId);
|
||||
deviceSubType.setTypeDefinition(typeDefinition);
|
||||
deviceSubTypeService.addDeviceSubType(deviceSubType);
|
||||
|
||||
DeviceSubType subTypeActual = deviceSubTypeService.getDeviceSubType(subTypeId, tenantId, deviceType);
|
||||
Assert.assertNotNull(subTypeActual, "Cannot be null");
|
||||
TestUtils.verifyDeviceSubType(subTypeActual);
|
||||
}
|
||||
|
||||
@Test(dependsOnMethods = "testAddDeviceSubType")
|
||||
public void testUpdateDeviceSubType() throws SubTypeMgtPluginException {
|
||||
int subTypeId = 1;
|
||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
|
||||
DeviceSubType.DeviceType deviceType = DeviceSubType.DeviceType.METER;
|
||||
String subTypeName = "TestSubType";
|
||||
String subTypeExpected = TestUtils.createUpdateDeviceSubType(subTypeId);
|
||||
|
||||
deviceSubTypeService.updateDeviceSubType(subTypeId, tenantId, deviceType, subTypeName, subTypeExpected);
|
||||
|
||||
DeviceSubType subTypeActual = deviceSubTypeService.getDeviceSubType(subTypeId, tenantId, deviceType);
|
||||
|
||||
Assert.assertNotNull(subTypeActual, "Cannot be null");
|
||||
TestUtils.verifyUpdatedDeviceSubType(subTypeActual);
|
||||
}
|
||||
|
||||
@Test(dependsOnMethods = "testAddDeviceSubType")
|
||||
public void testGetDeviceTypeCount() throws SubTypeMgtPluginException {
|
||||
DeviceSubType.DeviceType deviceType = DeviceSubType.DeviceType.METER;
|
||||
int subTypeCount = deviceSubTypeService.getDeviceSubTypeCount(deviceType);
|
||||
log.info(deviceType + " Device subtypes count: " + subTypeCount);
|
||||
}
|
||||
}
|
@ -0,0 +1,100 @@
|
||||
/*
|
||||
* Copyright (C) 2018 - 2023 Entgra (Pvt) Ltd, Inc - All Rights Reserved.
|
||||
*
|
||||
* Unauthorised copying/redistribution of this file, via any medium is strictly prohibited.
|
||||
*
|
||||
* Licensed under the Entgra Commercial License, Version 1.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://entgra.io/licenses/entgra-commercial/1.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 io.entgra.device.mgt.subtype.mgt;
|
||||
|
||||
import io.entgra.device.mgt.subtype.mgt.dao.util.ConnectionManagerUtil;
|
||||
import io.entgra.device.mgt.subtype.mgt.dto.DeviceSubType;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.testng.Assert;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.sql.Statement;
|
||||
|
||||
public class TestUtils {
|
||||
private static final Log log = LogFactory.getLog(TestUtils.class);
|
||||
|
||||
public static String createNewDeviceSubType(int subtypeId) {
|
||||
return "{\"make\": \"TestSubType\", \"model\": \"ATx-Mega SIM800\", " +
|
||||
"\"subTypeId\": " + subtypeId + ", \"hasSMSSupport\": true, \"hasICMPSupport\": true, " +
|
||||
"\"socketServerPort\": 8071}";
|
||||
}
|
||||
|
||||
public static String createUpdateDeviceSubType(int subtypeId) {
|
||||
return "{\"make\": \"TestSubType\", \"model\": \"ATx-Mega SIM900\", " +
|
||||
"\"subTypeId\": " + subtypeId + ", \"hasSMSSupport\": false, \"hasICMPSupport\": true, " +
|
||||
"\"socketServerPort\": 8071}";
|
||||
}
|
||||
|
||||
public static void verifyDeviceSubType(DeviceSubType deviceSubType) {
|
||||
String typeDefExpected = TestUtils.createNewDeviceSubType(1);
|
||||
Assert.assertEquals(deviceSubType.getSubTypeId(), 1);
|
||||
Assert.assertEquals(deviceSubType.getDeviceType(), DeviceSubType.DeviceType.valueOf("METER"));
|
||||
Assert.assertEquals(deviceSubType.getSubTypeName(), "TestSubType");
|
||||
Assert.assertEquals(deviceSubType.getTypeDefinition(), typeDefExpected);
|
||||
}
|
||||
|
||||
public static void verifyDeviceSubTypeDAO(DeviceSubType deviceSubType) {
|
||||
String typeDefExpected = TestUtils.createNewDeviceSubType(1);
|
||||
Assert.assertEquals(deviceSubType.getSubTypeId(), 1);
|
||||
Assert.assertEquals(deviceSubType.getDeviceType(), DeviceSubType.DeviceType.valueOf("COM"));
|
||||
Assert.assertEquals(deviceSubType.getSubTypeName(), "TestSubType");
|
||||
Assert.assertEquals(deviceSubType.getTypeDefinition(), typeDefExpected);
|
||||
}
|
||||
|
||||
public static void verifyUpdatedDeviceSubType(DeviceSubType deviceSubType) {
|
||||
String typeDefExpected = TestUtils.createUpdateDeviceSubType(1);
|
||||
Assert.assertEquals(deviceSubType.getSubTypeId(), 1);
|
||||
Assert.assertEquals(deviceSubType.getDeviceType(), DeviceSubType.DeviceType.valueOf("METER"));
|
||||
Assert.assertEquals(deviceSubType.getSubTypeName(), "TestSubType");
|
||||
Assert.assertEquals(deviceSubType.getTypeDefinition(), typeDefExpected);
|
||||
}
|
||||
|
||||
public static void verifyUpdatedDeviceSubTypeDAO(DeviceSubType deviceSubType) {
|
||||
String typeDefExpected = TestUtils.createUpdateDeviceSubType(1);
|
||||
Assert.assertEquals(deviceSubType.getSubTypeId(), 1);
|
||||
Assert.assertEquals(deviceSubType.getDeviceType(), DeviceSubType.DeviceType.valueOf("COM"));
|
||||
Assert.assertEquals(deviceSubType.getSubTypeName(), "TestSubType");
|
||||
Assert.assertEquals(deviceSubType.getTypeDefinition(), typeDefExpected);
|
||||
}
|
||||
|
||||
public static void cleanupResources(Connection conn, Statement stmt, ResultSet rs) {
|
||||
if (rs != null) {
|
||||
try {
|
||||
rs.close();
|
||||
} catch (SQLException e) {
|
||||
log.warn("Error occurred while closing result set", e);
|
||||
}
|
||||
}
|
||||
if (stmt != null) {
|
||||
try {
|
||||
stmt.close();
|
||||
} catch (SQLException e) {
|
||||
log.warn("Error occurred while closing prepared statement", e);
|
||||
}
|
||||
}
|
||||
if (conn != null) {
|
||||
ConnectionManagerUtil.closeDBConnection();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,158 @@
|
||||
/*
|
||||
* Copyright (C) 2018 - 2023 Entgra (Pvt) Ltd, Inc - All Rights Reserved.
|
||||
*
|
||||
* Unauthorised copying/redistribution of this file, via any medium is strictly prohibited.
|
||||
*
|
||||
* Licensed under the Entgra Commercial License, Version 1.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://entgra.io/licenses/entgra-commercial/1.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 io.entgra.device.mgt.subtype.mgt.mock;
|
||||
|
||||
import io.entgra.device.mgt.subtype.mgt.TestUtils;
|
||||
import io.entgra.device.mgt.subtype.mgt.dao.DeviceSubTypeDAOFactory;
|
||||
import io.entgra.device.mgt.subtype.mgt.DataSourceConfig;
|
||||
import io.entgra.device.mgt.subtype.mgt.dao.util.ConnectionManagerUtil;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.apache.tomcat.jdbc.pool.PoolProperties;
|
||||
import org.testng.annotations.BeforeClass;
|
||||
import org.testng.annotations.BeforeSuite;
|
||||
import org.testng.annotations.Optional;
|
||||
import org.testng.annotations.Parameters;
|
||||
import org.w3c.dom.Document;
|
||||
import org.wso2.carbon.base.MultitenantConstants;
|
||||
import org.wso2.carbon.context.PrivilegedCarbonContext;
|
||||
import org.wso2.carbon.device.mgt.common.DeviceManagementConstants;
|
||||
import org.wso2.carbon.device.mgt.common.exceptions.DeviceManagementException;
|
||||
import org.wso2.carbon.device.mgt.core.util.DeviceManagerUtil;
|
||||
|
||||
import javax.sql.DataSource;
|
||||
import javax.xml.bind.JAXBContext;
|
||||
import javax.xml.bind.JAXBException;
|
||||
import javax.xml.bind.Unmarshaller;
|
||||
import java.io.File;
|
||||
import java.lang.reflect.Field;
|
||||
import java.sql.Connection;
|
||||
import java.sql.Statement;
|
||||
|
||||
public abstract class BaseDeviceSubTypePluginTest {
|
||||
|
||||
private static final Log log = LogFactory.getLog(BaseDeviceSubTypePluginTest.class);
|
||||
|
||||
private static final String datasourceLocation = "src/test/resources/carbon-home/repository/conf/" +
|
||||
"datasources/data-source-config.xml";
|
||||
|
||||
private static boolean mock;
|
||||
|
||||
@BeforeSuite
|
||||
@Parameters({"isMock"})
|
||||
public void setup(@Optional("false") boolean isMock) throws Exception {
|
||||
log.info("Setting up test suite");
|
||||
this.initDataSource();
|
||||
this.initSQLScript();
|
||||
this.initializeCarbonContext();
|
||||
this.initServices();
|
||||
mock = isMock;
|
||||
log.info("Setting up test suite done!");
|
||||
}
|
||||
|
||||
protected void initDataSource() throws Exception {
|
||||
DataSource dataSource = this.getDataSource(this.readDataSourceConfig());
|
||||
Class<?> clazz1 = ConnectionManagerUtil.class;
|
||||
Field f1 = clazz1.getDeclaredField("dataSource");
|
||||
f1.setAccessible(true);
|
||||
f1.set(clazz1, dataSource);
|
||||
|
||||
Class<?> clazz2 = DeviceSubTypeDAOFactory.class;
|
||||
Field f2 = clazz2.getDeclaredField("databaseEngine");
|
||||
f2.setAccessible(true);
|
||||
f2.set(clazz2, DeviceManagementConstants.DataBaseTypes.DB_TYPE_H2);
|
||||
}
|
||||
|
||||
private void initServices() {
|
||||
|
||||
}
|
||||
|
||||
@BeforeClass
|
||||
public abstract void init() throws Exception;
|
||||
|
||||
protected DataSource getDataSource(DataSourceConfig config) {
|
||||
if (!isMock()) {
|
||||
PoolProperties properties = new PoolProperties();
|
||||
properties.setUrl(config.getUrl());
|
||||
properties.setDriverClassName(config.getDriverClassName());
|
||||
properties.setUsername(config.getUser());
|
||||
properties.setPassword(config.getPassword());
|
||||
return new org.apache.tomcat.jdbc.pool.DataSource(properties);
|
||||
} else {
|
||||
return new MockDataSource(config.getUrl());
|
||||
}
|
||||
}
|
||||
|
||||
private void initializeCarbonContext() {
|
||||
if (System.getProperty("carbon.home") == null) {
|
||||
File file = new File("src/test/resources/carbon-home");
|
||||
if (file.exists()) {
|
||||
System.setProperty("carbon.home", file.getAbsolutePath());
|
||||
}
|
||||
file = new File("../resources/carbon-home");
|
||||
if (file.exists()) {
|
||||
System.setProperty("carbon.home", file.getAbsolutePath());
|
||||
}
|
||||
file = new File("../../resources/carbon-home");
|
||||
if (file.exists()) {
|
||||
System.setProperty("carbon.home", file.getAbsolutePath());
|
||||
}
|
||||
file = new File("../../../resources/carbon-home");
|
||||
if (file.exists()) {
|
||||
System.setProperty("carbon.home", file.getAbsolutePath());
|
||||
}
|
||||
}
|
||||
|
||||
PrivilegedCarbonContext.getThreadLocalCarbonContext().setTenantDomain(MultitenantConstants
|
||||
.SUPER_TENANT_DOMAIN_NAME);
|
||||
PrivilegedCarbonContext.getThreadLocalCarbonContext().setTenantId(MultitenantConstants.SUPER_TENANT_ID);
|
||||
}
|
||||
|
||||
protected DataSourceConfig readDataSourceConfig() throws DeviceManagementException {
|
||||
try {
|
||||
File file = new File(BaseDeviceSubTypePluginTest.datasourceLocation);
|
||||
Document doc = DeviceManagerUtil.convertToDocument(file);
|
||||
JAXBContext testDBContext = JAXBContext.newInstance(DataSourceConfig.class);
|
||||
Unmarshaller unmarshaller = testDBContext.createUnmarshaller();
|
||||
return (DataSourceConfig) unmarshaller.unmarshal(doc);
|
||||
} catch (JAXBException e) {
|
||||
throw new DeviceManagementException("Error occurred while reading data source configuration", e);
|
||||
}
|
||||
}
|
||||
|
||||
private void initSQLScript() throws Exception {
|
||||
Connection conn = null;
|
||||
Statement stmt = null;
|
||||
try {
|
||||
ConnectionManagerUtil.beginDBTransaction();
|
||||
conn = ConnectionManagerUtil.getDBConnection();
|
||||
stmt = conn.createStatement();
|
||||
stmt.executeUpdate("RUNSCRIPT FROM './src/test/resources/carbon-home/dbscripts/dm-db-h2.sql'");
|
||||
stmt.executeUpdate("RUNSCRIPT FROM './src/test/resources/carbon-home/dbscripts/h2.sql'");
|
||||
} finally {
|
||||
TestUtils.cleanupResources(conn, stmt, null);
|
||||
}
|
||||
}
|
||||
|
||||
protected boolean isMock() {
|
||||
return mock;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,344 @@
|
||||
/*
|
||||
* Copyright (C) 2018 - 2023 Entgra (Pvt) Ltd, Inc - All Rights Reserved.
|
||||
*
|
||||
* Unauthorised copying/redistribution of this file, via any medium is strictly prohibited.
|
||||
*
|
||||
* Licensed under the Entgra Commercial License, Version 1.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://entgra.io/licenses/entgra-commercial/1.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 io.entgra.device.mgt.subtype.mgt.mock;
|
||||
|
||||
import java.sql.CallableStatement;
|
||||
import java.sql.SQLWarning;
|
||||
import java.sql.Savepoint;
|
||||
import java.sql.Connection;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.Statement;
|
||||
import java.sql.Clob;
|
||||
import java.sql.Blob;
|
||||
import java.sql.NClob;
|
||||
import java.sql.SQLXML;
|
||||
import java.sql.Struct;
|
||||
import java.sql.Array;
|
||||
import java.sql.SQLClientInfoException;
|
||||
import java.sql.DatabaseMetaData;
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Properties;
|
||||
import java.util.concurrent.Executor;
|
||||
|
||||
/**
|
||||
* This is mock class which provides mock database connection.
|
||||
*/
|
||||
public class MockConnection implements Connection {
|
||||
|
||||
private final String url;
|
||||
private final List<MockStatement> statements = new ArrayList<>();
|
||||
private int statementCounter = 0;
|
||||
|
||||
public MockConnection(String url) {
|
||||
this.url = url;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Statement createStatement() throws SQLException {
|
||||
return getStatement();
|
||||
}
|
||||
|
||||
private MockStatement getStatement() {
|
||||
if (!statements.isEmpty()) {
|
||||
MockStatement statement = this.statements.get(this.statementCounter);
|
||||
statementCounter++;
|
||||
return statement;
|
||||
}
|
||||
return new MockStatement();
|
||||
}
|
||||
|
||||
@Override
|
||||
public PreparedStatement prepareStatement(String sql) throws SQLException {
|
||||
return getStatement();
|
||||
}
|
||||
|
||||
@Override
|
||||
public CallableStatement prepareCall(String sql) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String nativeSQL(String sql) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean getAutoCommit() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setAutoCommit(boolean autoCommit) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void commit() throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void rollback() throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void close() throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isClosed() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DatabaseMetaData getMetaData() throws SQLException {
|
||||
return new MockDatabaseMetaData(this.url);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isReadOnly() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setReadOnly(boolean readOnly) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getCatalog() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCatalog(String catalog) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTransactionIsolation() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setTransactionIsolation(int level) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public SQLWarning getWarnings() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void clearWarnings() throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Statement createStatement(int resultSetType, int resultSetConcurrency) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency)
|
||||
throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CallableStatement prepareCall(String sql, int resultSetType, int resultSetConcurrency)
|
||||
throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Class<?>> getTypeMap() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setTypeMap(Map<String, Class<?>> map) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getHoldability() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setHoldability(int holdability) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Savepoint setSavepoint() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Savepoint setSavepoint(String name) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void rollback(Savepoint savepoint) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void releaseSavepoint(Savepoint savepoint) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Statement createStatement(int resultSetType, int resultSetConcurrency, int resultSetHoldability)
|
||||
throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency,
|
||||
int resultSetHoldability) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CallableStatement prepareCall(String sql, int resultSetType, int resultSetConcurrency,
|
||||
int resultSetHoldability) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PreparedStatement prepareStatement(String sql, int autoGeneratedKeys) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PreparedStatement prepareStatement(String sql, int[] columnIndexes) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PreparedStatement prepareStatement(String sql, String[] columnNames) throws SQLException {
|
||||
return new MockStatement();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Clob createClob() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Blob createBlob() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public NClob createNClob() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SQLXML createSQLXML() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isValid(int timeout) throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setClientInfo(String name, String value) throws SQLClientInfoException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getClientInfo(String name) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Properties getClientInfo() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setClientInfo(Properties properties) throws SQLClientInfoException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Array createArrayOf(String typeName, Object[] elements) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Struct createStruct(String typeName, Object[] attributes) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getSchema() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSchema(String schema) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void abort(Executor executor) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setNetworkTimeout(Executor executor, int milliseconds) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getNetworkTimeout() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T unwrap(Class<T> iface) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isWrapperFor(Class<?> iface) throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
public void addMockStatement(MockStatement mockStatement) {
|
||||
this.statements.add(mockStatement);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,124 @@
|
||||
/*
|
||||
* Copyright (C) 2018 - 2023 Entgra (Pvt) Ltd, Inc - All Rights Reserved.
|
||||
*
|
||||
* Unauthorised copying/redistribution of this file, via any medium is strictly prohibited.
|
||||
*
|
||||
* Licensed under the Entgra Commercial License, Version 1.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://entgra.io/licenses/entgra-commercial/1.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 io.entgra.device.mgt.subtype.mgt.mock;
|
||||
|
||||
import javax.sql.DataSource;
|
||||
import java.io.PrintWriter;
|
||||
import java.sql.Connection;
|
||||
import java.sql.SQLException;
|
||||
import java.sql.SQLFeatureNotSupportedException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
/**
|
||||
* This is the mock data source implementation that will be used in the test cases.
|
||||
*/
|
||||
public class MockDataSource implements DataSource {
|
||||
private final List<Connection> connections = new ArrayList<>();
|
||||
private final String url;
|
||||
private boolean throwException = false;
|
||||
private int connectionCounter = 0;
|
||||
|
||||
public MockDataSource(String url) {
|
||||
this.url = url;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Connection getConnection() throws SQLException {
|
||||
if (throwException) {
|
||||
throw new SQLException("Cannot created test connection.");
|
||||
} else {
|
||||
if (!connections.isEmpty()) {
|
||||
if (this.connectionCounter < this.connections.size()) {
|
||||
Connection connection = this.connections.get(this.connectionCounter);
|
||||
this.connectionCounter++;
|
||||
return connection;
|
||||
} else {
|
||||
return new MockConnection(url);
|
||||
}
|
||||
}
|
||||
return new MockConnection(url);
|
||||
}
|
||||
}
|
||||
|
||||
public void setConnection(Connection connection) {
|
||||
this.connections.add(connection);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Connection getConnection(String username, String password) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T unwrap(Class<T> iface) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isWrapperFor(Class<?> iface) throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PrintWriter getLogWriter() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setLogWriter(PrintWriter out) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getLoginTimeout() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setLoginTimeout(int seconds) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Logger getParentLogger() throws SQLFeatureNotSupportedException {
|
||||
return null;
|
||||
}
|
||||
|
||||
public void setThrowException(boolean throwException) {
|
||||
this.throwException = throwException;
|
||||
}
|
||||
|
||||
public void reset() {
|
||||
this.throwException = false;
|
||||
this.connections.clear();
|
||||
this.connectionCounter = 0;
|
||||
}
|
||||
|
||||
public String getUrl() {
|
||||
return this.url;
|
||||
}
|
||||
|
||||
public MockConnection getConnection(int id) {
|
||||
return (MockConnection) this.connections.get(id);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,942 @@
|
||||
/*
|
||||
* Copyright (C) 2018 - 2023 Entgra (Pvt) Ltd, Inc - All Rights Reserved.
|
||||
*
|
||||
* Unauthorised copying/redistribution of this file, via any medium is strictly prohibited.
|
||||
*
|
||||
* Licensed under the Entgra Commercial License, Version 1.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://entgra.io/licenses/entgra-commercial/1.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 io.entgra.device.mgt.subtype.mgt.mock;
|
||||
|
||||
import org.wso2.carbon.device.mgt.common.DeviceManagementConstants;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.RowIdLifetime;
|
||||
import java.sql.DatabaseMetaData;
|
||||
import java.sql.SQLException;
|
||||
|
||||
public class MockDatabaseMetaData implements DatabaseMetaData {
|
||||
private final String url;
|
||||
|
||||
public MockDatabaseMetaData(String url) {
|
||||
this.url = url;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean allProceduresAreCallable() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean allTablesAreSelectable() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getURL() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUserName() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isReadOnly() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean nullsAreSortedHigh() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean nullsAreSortedLow() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean nullsAreSortedAtStart() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean nullsAreSortedAtEnd() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDatabaseProductName() throws SQLException {
|
||||
if (this.url.contains("mysql")) {
|
||||
return DeviceManagementConstants.DataBaseTypes.DB_TYPE_MYSQL;
|
||||
} else if (this.url.contains("h2")) {
|
||||
return DeviceManagementConstants.DataBaseTypes.DB_TYPE_H2;
|
||||
} else if (this.url.contains("oracle")) {
|
||||
return DeviceManagementConstants.DataBaseTypes.DB_TYPE_ORACLE;
|
||||
} else if (this.url.contains("postgresql")) {
|
||||
return DeviceManagementConstants.DataBaseTypes.DB_TYPE_POSTGRESQL;
|
||||
} else if (this.url.contains("sqlserver")) {
|
||||
return DeviceManagementConstants.DataBaseTypes.DB_TYPE_MSSQL;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDatabaseProductVersion() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDriverName() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDriverVersion() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getDriverMajorVersion() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getDriverMinorVersion() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean usesLocalFiles() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean usesLocalFilePerTable() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsMixedCaseIdentifiers() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean storesUpperCaseIdentifiers() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean storesLowerCaseIdentifiers() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean storesMixedCaseIdentifiers() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsMixedCaseQuotedIdentifiers() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean storesUpperCaseQuotedIdentifiers() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean storesLowerCaseQuotedIdentifiers() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean storesMixedCaseQuotedIdentifiers() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getIdentifierQuoteString() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getSQLKeywords() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getNumericFunctions() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getStringFunctions() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getSystemFunctions() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTimeDateFunctions() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getSearchStringEscape() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getExtraNameCharacters() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsAlterTableWithAddColumn() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsAlterTableWithDropColumn() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsColumnAliasing() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean nullPlusNonNullIsNull() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsConvert() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsConvert(int fromType, int toType) throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsTableCorrelationNames() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsDifferentTableCorrelationNames() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsExpressionsInOrderBy() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsOrderByUnrelated() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsGroupBy() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsGroupByUnrelated() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsGroupByBeyondSelect() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsLikeEscapeClause() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsMultipleResultSets() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsMultipleTransactions() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsNonNullableColumns() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsMinimumSQLGrammar() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsCoreSQLGrammar() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsExtendedSQLGrammar() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsANSI92EntryLevelSQL() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsANSI92IntermediateSQL() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsANSI92FullSQL() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsIntegrityEnhancementFacility() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsOuterJoins() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsFullOuterJoins() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsLimitedOuterJoins() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getSchemaTerm() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getProcedureTerm() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getCatalogTerm() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isCatalogAtStart() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getCatalogSeparator() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsSchemasInDataManipulation() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsSchemasInProcedureCalls() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsSchemasInTableDefinitions() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsSchemasInIndexDefinitions() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsSchemasInPrivilegeDefinitions() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsCatalogsInDataManipulation() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsCatalogsInProcedureCalls() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsCatalogsInTableDefinitions() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsCatalogsInIndexDefinitions() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsCatalogsInPrivilegeDefinitions() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsPositionedDelete() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsPositionedUpdate() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsSelectForUpdate() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsStoredProcedures() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsSubqueriesInComparisons() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsSubqueriesInExists() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsSubqueriesInIns() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsSubqueriesInQuantifieds() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsCorrelatedSubqueries() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsUnion() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsUnionAll() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsOpenCursorsAcrossCommit() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsOpenCursorsAcrossRollback() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsOpenStatementsAcrossCommit() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsOpenStatementsAcrossRollback() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxBinaryLiteralLength() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxCharLiteralLength() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxColumnNameLength() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxColumnsInGroupBy() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxColumnsInIndex() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxColumnsInOrderBy() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxColumnsInSelect() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxColumnsInTable() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxConnections() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxCursorNameLength() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxIndexLength() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxSchemaNameLength() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxProcedureNameLength() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxCatalogNameLength() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxRowSize() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean doesMaxRowSizeIncludeBlobs() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxStatementLength() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxStatements() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxTableNameLength() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxTablesInSelect() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxUserNameLength() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getDefaultTransactionIsolation() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsTransactions() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsTransactionIsolationLevel(int level) throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsDataDefinitionAndDataManipulationTransactions() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsDataManipulationTransactionsOnly() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean dataDefinitionCausesTransactionCommit() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean dataDefinitionIgnoredInTransactions() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultSet getProcedures(String catalog, String schemaPattern, String procedureNamePattern)
|
||||
throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultSet getProcedureColumns(String catalog, String schemaPattern, String procedureNamePattern,
|
||||
String columnNamePattern) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultSet getTables(String catalog, String schemaPattern, String tableNamePattern, String[] types)
|
||||
throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultSet getSchemas() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultSet getCatalogs() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultSet getTableTypes() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultSet getColumns(String catalog, String schemaPattern, String tableNamePattern,
|
||||
String columnNamePattern) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultSet getColumnPrivileges(String catalog, String schema, String table, String columnNamePattern)
|
||||
throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultSet getTablePrivileges(String catalog, String schemaPattern, String tableNamePattern)
|
||||
throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultSet getBestRowIdentifier(String catalog, String schema, String table, int scope, boolean nullable)
|
||||
throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultSet getVersionColumns(String catalog, String schema, String table) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultSet getPrimaryKeys(String catalog, String schema, String table) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultSet getImportedKeys(String catalog, String schema, String table) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultSet getExportedKeys(String catalog, String schema, String table) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultSet getCrossReference(String parentCatalog, String parentSchema, String parentTable,
|
||||
String foreignCatalog, String foreignSchema, String foreignTable)
|
||||
throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultSet getTypeInfo() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultSet getIndexInfo(String catalog, String schema, String table, boolean unique, boolean approximate)
|
||||
throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsResultSetType(int type) throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsResultSetConcurrency(int type, int concurrency) throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean ownUpdatesAreVisible(int type) throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean ownDeletesAreVisible(int type) throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean ownInsertsAreVisible(int type) throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean othersUpdatesAreVisible(int type) throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean othersDeletesAreVisible(int type) throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean othersInsertsAreVisible(int type) throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean updatesAreDetected(int type) throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean deletesAreDetected(int type) throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean insertsAreDetected(int type) throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsBatchUpdates() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultSet getUDTs(String catalog, String schemaPattern, String typeNamePattern, int[] types)
|
||||
throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Connection getConnection() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsSavepoints() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsNamedParameters() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsMultipleOpenResults() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsGetGeneratedKeys() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultSet getSuperTypes(String catalog, String schemaPattern, String typeNamePattern) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultSet getSuperTables(String catalog, String schemaPattern, String tableNamePattern) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultSet getAttributes(String catalog, String schemaPattern, String typeNamePattern,
|
||||
String attributeNamePattern) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsResultSetHoldability(int holdability) throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getResultSetHoldability() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getDatabaseMajorVersion() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getDatabaseMinorVersion() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getJDBCMajorVersion() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getJDBCMinorVersion() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getSQLStateType() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean locatorsUpdateCopy() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsStatementPooling() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RowIdLifetime getRowIdLifetime() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultSet getSchemas(String catalog, String schemaPattern) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsStoredFunctionsUsingCallSyntax() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean autoCommitFailureClosesAllResultSets() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultSet getClientInfoProperties() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultSet getFunctions(String catalog, String schemaPattern, String functionNamePattern) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultSet getFunctionColumns(String catalog, String schemaPattern, String functionNamePattern,
|
||||
String columnNamePattern) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultSet getPseudoColumns(String catalog, String schemaPattern, String tableNamePattern,
|
||||
String columnNamePattern) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean generatedKeyAlwaysReturned() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T unwrap(Class<T> iface) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isWrapperFor(Class<?> iface) throws SQLException {
|
||||
return false;
|
||||
}
|
||||
}
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,562 @@
|
||||
/*
|
||||
* Copyright (C) 2018 - 2023 Entgra (Pvt) Ltd, Inc - All Rights Reserved.
|
||||
*
|
||||
* Unauthorised copying/redistribution of this file, via any medium is strictly prohibited.
|
||||
*
|
||||
* Licensed under the Entgra Commercial License, Version 1.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://entgra.io/licenses/entgra-commercial/1.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 io.entgra.device.mgt.subtype.mgt.mock;
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.io.Reader;
|
||||
import java.math.BigDecimal;
|
||||
import java.net.URL;
|
||||
import java.sql.Connection;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLWarning;
|
||||
import java.sql.Date;
|
||||
import java.sql.Time;
|
||||
import java.sql.Timestamp;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ParameterMetaData;
|
||||
import java.sql.Clob;
|
||||
import java.sql.Blob;
|
||||
import java.sql.NClob;
|
||||
import java.sql.SQLXML;
|
||||
import java.sql.Ref;
|
||||
import java.sql.Array;
|
||||
import java.sql.ResultSetMetaData;
|
||||
import java.sql.RowId;
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* This is the mock statement for the test cases.
|
||||
*/
|
||||
public class MockStatement implements PreparedStatement {
|
||||
private final List<MockResultSet> resultSets = new ArrayList<>();
|
||||
private int resultSetCounter;
|
||||
|
||||
@Override
|
||||
public ResultSet executeQuery(String sql) throws SQLException {
|
||||
return this.getMockResultSet();
|
||||
}
|
||||
|
||||
private ResultSet getMockResultSet() {
|
||||
if (!this.resultSets.isEmpty()) {
|
||||
ResultSet resultSet = this.resultSets.get(this.resultSetCounter);
|
||||
this.resultSetCounter++;
|
||||
return resultSet;
|
||||
} else {
|
||||
return new MockResultSet();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int executeUpdate(String sql) throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void close() throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxFieldSize() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMaxFieldSize(int max) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxRows() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMaxRows(int max) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setEscapeProcessing(boolean enable) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getQueryTimeout() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setQueryTimeout(int seconds) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancel() throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public SQLWarning getWarnings() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void clearWarnings() throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCursorName(String name) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean execute(String sql) throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultSet getResultSet() throws SQLException {
|
||||
return getMockResultSet();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getUpdateCount() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean getMoreResults() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getFetchDirection() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setFetchDirection(int direction) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getFetchSize() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setFetchSize(int rows) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getResultSetConcurrency() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getResultSetType() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addBatch(String sql) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void clearBatch() throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public int[] executeBatch() throws SQLException {
|
||||
return new int[0];
|
||||
}
|
||||
|
||||
@Override
|
||||
public Connection getConnection() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean getMoreResults(int current) throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultSet getGeneratedKeys() throws SQLException {
|
||||
return getMockResultSet();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int executeUpdate(String sql, int autoGeneratedKeys) throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int executeUpdate(String sql, int[] columnIndexes) throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int executeUpdate(String sql, String[] columnNames) throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean execute(String sql, int autoGeneratedKeys) throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean execute(String sql, int[] columnIndexes) throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean execute(String sql, String[] columnNames) throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getResultSetHoldability() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isClosed() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isPoolable() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPoolable(boolean poolable) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void closeOnCompletion() throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isCloseOnCompletion() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T unwrap(Class<T> iface) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isWrapperFor(Class<?> iface) throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultSet executeQuery() throws SQLException {
|
||||
return getMockResultSet();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int executeUpdate() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setNull(int parameterIndex, int sqlType) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBoolean(int parameterIndex, boolean x) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setByte(int parameterIndex, byte x) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setShort(int parameterIndex, short x) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setInt(int parameterIndex, int x) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setLong(int parameterIndex, long x) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setFloat(int parameterIndex, float x) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setDouble(int parameterIndex, double x) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBigDecimal(int parameterIndex, BigDecimal x) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setString(int parameterIndex, String x) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBytes(int parameterIndex, byte[] x) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setDate(int parameterIndex, Date x) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setTime(int parameterIndex, Time x) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setTimestamp(int parameterIndex, Timestamp x) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setAsciiStream(int parameterIndex, InputStream x, int length) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setUnicodeStream(int parameterIndex, InputStream x, int length) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBinaryStream(int parameterIndex, InputStream x, int length) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void clearParameters() throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setObject(int parameterIndex, Object x, int targetSqlType) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setObject(int parameterIndex, Object x) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean execute() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addBatch() throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCharacterStream(int parameterIndex, Reader reader, int length) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setRef(int parameterIndex, Ref x) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBlob(int parameterIndex, Blob x) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setClob(int parameterIndex, Clob x) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setArray(int parameterIndex, Array x) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultSetMetaData getMetaData() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setDate(int parameterIndex, Date x, Calendar cal) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setTime(int parameterIndex, Time x, Calendar cal) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setTimestamp(int parameterIndex, Timestamp x, Calendar cal) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setNull(int parameterIndex, int sqlType, String typeName) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setURL(int parameterIndex, URL x) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public ParameterMetaData getParameterMetaData() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setRowId(int parameterIndex, RowId x) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setNString(int parameterIndex, String value) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setNCharacterStream(int parameterIndex, Reader value, long length) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setNClob(int parameterIndex, NClob value) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setClob(int parameterIndex, Reader reader, long length) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBlob(int parameterIndex, InputStream inputStream, long length) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setNClob(int parameterIndex, Reader reader, long length) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSQLXML(int parameterIndex, SQLXML xmlObject) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setObject(int parameterIndex, Object x, int targetSqlType, int scaleOrLength) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setAsciiStream(int parameterIndex, InputStream x, long length) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBinaryStream(int parameterIndex, InputStream x, long length) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCharacterStream(int parameterIndex, Reader reader, long length) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setAsciiStream(int parameterIndex, InputStream x) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBinaryStream(int parameterIndex, InputStream x) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCharacterStream(int parameterIndex, Reader reader) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setNCharacterStream(int parameterIndex, Reader value) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setClob(int parameterIndex, Reader reader) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBlob(int parameterIndex, InputStream inputStream) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setNClob(int parameterIndex, Reader reader) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
public void addResultSet(MockResultSet resultSet) {
|
||||
this.resultSets.add(resultSet);
|
||||
}
|
||||
}
|
@ -0,0 +1,738 @@
|
||||
CREATE TABLE IF NOT EXISTS DM_DEVICE_TYPE (
|
||||
ID INT AUTO_INCREMENT NOT NULL,
|
||||
NAME VARCHAR(300) NULL DEFAULT NULL,
|
||||
DEVICE_TYPE_META VARCHAR(20000) NULL DEFAULT NULL,
|
||||
LAST_UPDATED_TIMESTAMP TIMESTAMP NOT NULL,
|
||||
PROVIDER_TENANT_ID INTEGER DEFAULT 0,
|
||||
SHARED_WITH_ALL_TENANTS BOOLEAN NOT NULL DEFAULT FALSE,
|
||||
PRIMARY KEY (ID)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_DEVICE_CERTIFICATE (
|
||||
ID INTEGER auto_increment NOT NULL,
|
||||
SERIAL_NUMBER VARCHAR(500) DEFAULT NULL,
|
||||
CERTIFICATE BLOB DEFAULT NULL,
|
||||
TENANT_ID INTEGER DEFAULT 0,
|
||||
USERNAME VARCHAR(500) DEFAULT NULL,
|
||||
PRIMARY KEY (ID)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_GROUP (
|
||||
ID INTEGER AUTO_INCREMENT NOT NULL,
|
||||
GROUP_NAME VARCHAR(100) DEFAULT NULL,
|
||||
STATUS VARCHAR(50) DEFAULT NULL,
|
||||
DESCRIPTION TEXT DEFAULT NULL,
|
||||
OWNER VARCHAR(255) DEFAULT NULL,
|
||||
PARENT_PATH VARCHAR(255) DEFAULT '/',
|
||||
TENANT_ID INTEGER DEFAULT 0,
|
||||
PRIMARY KEY (ID)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_ROLE_GROUP_MAP (
|
||||
ID INTEGER AUTO_INCREMENT NOT NULL,
|
||||
GROUP_ID INTEGER DEFAULT NULL,
|
||||
ROLE VARCHAR(45) DEFAULT NULL,
|
||||
TENANT_ID INTEGER DEFAULT 0,
|
||||
PRIMARY KEY (ID),
|
||||
CONSTRAINT fk_DM_ROLE_GROUP_MAP_DM_GROUP2 FOREIGN KEY (GROUP_ID)
|
||||
REFERENCES DM_GROUP (ID) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_DEVICE (
|
||||
ID INTEGER auto_increment NOT NULL,
|
||||
DESCRIPTION TEXT DEFAULT NULL,
|
||||
NAME VARCHAR(100) DEFAULT NULL,
|
||||
DEVICE_TYPE_ID INT(11) DEFAULT NULL,
|
||||
DEVICE_IDENTIFICATION VARCHAR(300) DEFAULT NULL,
|
||||
LAST_UPDATED_TIMESTAMP TIMESTAMP NOT NULL,
|
||||
TENANT_ID INTEGER DEFAULT 0,
|
||||
PRIMARY KEY (ID),
|
||||
CONSTRAINT fk_DM_DEVICE_DM_DEVICE_TYPE2 FOREIGN KEY (DEVICE_TYPE_ID)
|
||||
REFERENCES DM_DEVICE_TYPE (ID) ON DELETE NO ACTION ON UPDATE NO ACTION,
|
||||
CONSTRAINT uk_DM_DEVICE UNIQUE (NAME, DEVICE_TYPE_ID, DEVICE_IDENTIFICATION, TENANT_ID)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_DEVICE_PROPERTIES (
|
||||
DEVICE_TYPE_NAME VARCHAR(300) NOT NULL,
|
||||
DEVICE_IDENTIFICATION VARCHAR(300) NOT NULL,
|
||||
PROPERTY_NAME VARCHAR(100) DEFAULT 0,
|
||||
PROPERTY_VALUE VARCHAR(100) DEFAULT NULL,
|
||||
TENANT_ID VARCHAR(100),
|
||||
PRIMARY KEY (DEVICE_TYPE_NAME, DEVICE_IDENTIFICATION, PROPERTY_NAME, TENANT_ID)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS GROUP_PROPERTIES (
|
||||
GROUP_ID INTEGER NOT NULL,
|
||||
PROPERTY_NAME VARCHAR(100) DEFAULT 0,
|
||||
PROPERTY_VALUE VARCHAR(100) DEFAULT NULL,
|
||||
TENANT_ID VARCHAR(100),
|
||||
PRIMARY KEY (GROUP_ID, PROPERTY_NAME, TENANT_ID)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_DEVICE_GROUP_MAP (
|
||||
ID INTEGER AUTO_INCREMENT NOT NULL,
|
||||
DEVICE_ID INTEGER DEFAULT NULL,
|
||||
GROUP_ID INTEGER DEFAULT NULL,
|
||||
TENANT_ID INTEGER DEFAULT 0,
|
||||
PRIMARY KEY (ID),
|
||||
CONSTRAINT fk_DM_DEVICE_GROUP_MAP_DM_DEVICE2 FOREIGN KEY (DEVICE_ID)
|
||||
REFERENCES DM_DEVICE (ID) ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
CONSTRAINT fk_DM_DEVICE_GROUP_MAP_DM_GROUP2 FOREIGN KEY (GROUP_ID)
|
||||
REFERENCES DM_GROUP (ID) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_OPERATION (
|
||||
ID INTEGER AUTO_INCREMENT NOT NULL,
|
||||
TYPE VARCHAR(50) NOT NULL,
|
||||
CREATED_TIMESTAMP TIMESTAMP NOT NULL,
|
||||
RECEIVED_TIMESTAMP TIMESTAMP NULL,
|
||||
OPERATION_CODE VARCHAR(1000) NOT NULL,
|
||||
INITIATED_BY VARCHAR(100) NULL,
|
||||
OPERATION_DETAILS BLOB DEFAULT NULL,
|
||||
ENABLED BOOLEAN NOT NULL DEFAULT FALSE,
|
||||
PRIMARY KEY (ID)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_ENROLMENT (
|
||||
ID INTEGER AUTO_INCREMENT NOT NULL,
|
||||
DEVICE_ID INTEGER NOT NULL,
|
||||
OWNER VARCHAR(255) NOT NULL,
|
||||
OWNERSHIP VARCHAR(45) DEFAULT NULL,
|
||||
STATUS VARCHAR(50) NULL,
|
||||
IS_TRANSFERRED BOOLEAN NOT NULL DEFAULT FALSE,
|
||||
DATE_OF_ENROLMENT TIMESTAMP DEFAULT NULL,
|
||||
DATE_OF_LAST_UPDATE TIMESTAMP DEFAULT NULL,
|
||||
TENANT_ID INT NOT NULL,
|
||||
PRIMARY KEY (ID),
|
||||
CONSTRAINT fk_dm_device_enrolment FOREIGN KEY (DEVICE_ID) REFERENCES
|
||||
DM_DEVICE (ID) ON DELETE NO ACTION ON UPDATE NO ACTION,
|
||||
CONSTRAINT uk_dm_device_enrolment UNIQUE (DEVICE_ID, OWNER, OWNERSHIP, TENANT_ID)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_ENROLMENT_OP_MAPPING (
|
||||
ID INTEGER AUTO_INCREMENT NOT NULL,
|
||||
ENROLMENT_ID INTEGER NOT NULL,
|
||||
OPERATION_ID INTEGER NOT NULL,
|
||||
STATUS VARCHAR(50) NULL,
|
||||
PUSH_NOTIFICATION_STATUS VARCHAR(50) NULL,
|
||||
CREATED_TIMESTAMP INT NOT NULL,
|
||||
UPDATED_TIMESTAMP INT NOT NULL,
|
||||
OPERATION_CODE VARCHAR(50) NOT NULL,
|
||||
INITIATED_BY VARCHAR(100) NULL,
|
||||
TYPE VARCHAR(20) NOT NULL,
|
||||
DEVICE_ID INTEGER DEFAULT NULL,
|
||||
DEVICE_TYPE VARCHAR(300) NOT NULL,
|
||||
DEVICE_IDENTIFICATION VARCHAR(300) DEFAULT NULL,
|
||||
TENANT_ID INTEGER DEFAULT 0,
|
||||
PRIMARY KEY (ID),
|
||||
CONSTRAINT fk_dm_device_operation_mapping_device FOREIGN KEY (ENROLMENT_ID) REFERENCES
|
||||
DM_ENROLMENT (ID) ON DELETE NO ACTION ON UPDATE NO ACTION,
|
||||
CONSTRAINT fk_dm_device_operation_mapping_operation FOREIGN KEY (OPERATION_ID) REFERENCES
|
||||
DM_OPERATION (ID) ON DELETE NO ACTION ON UPDATE NO ACTION
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_DEVICE_OPERATION_RESPONSE (
|
||||
ID INTEGER AUTO_INCREMENT NOT NULL,
|
||||
ENROLMENT_ID INTEGER NOT NULL,
|
||||
OPERATION_ID INTEGER NOT NULL,
|
||||
EN_OP_MAP_ID INTEGER NOT NULL,
|
||||
OPERATION_RESPONSE VARCHAR(1024) DEFAULT NULL ,
|
||||
IS_LARGE_RESPONSE BOOLEAN NOT NULL DEFAULT FALSE,
|
||||
RECEIVED_TIMESTAMP TIMESTAMP NULL,
|
||||
PRIMARY KEY (ID),
|
||||
CONSTRAINT fk_dm_device_operation_response_enrollment FOREIGN KEY (ENROLMENT_ID) REFERENCES
|
||||
DM_ENROLMENT (ID) ON DELETE NO ACTION ON UPDATE NO ACTION,
|
||||
CONSTRAINT fk_dm_device_operation_response_operation FOREIGN KEY (OPERATION_ID) REFERENCES
|
||||
DM_OPERATION (ID) ON DELETE NO ACTION ON UPDATE NO ACTION,
|
||||
CONSTRAINT fk_dm_en_op_map_response FOREIGN KEY (EN_OP_MAP_ID) REFERENCES
|
||||
DM_ENROLMENT_OP_MAPPING (ID) ON DELETE NO ACTION ON UPDATE NO ACTION
|
||||
);
|
||||
|
||||
CREATE TABLE DM_DEVICE_OPERATION_RESPONSE_LARGE (
|
||||
ID INTEGER NOT NULL,
|
||||
OPERATION_RESPONSE LONGBLOB DEFAULT NULL,
|
||||
OPERATION_ID INTEGER NOT NULL,
|
||||
EN_OP_MAP_ID INTEGER NOT NULL,
|
||||
RECEIVED_TIMESTAMP TIMESTAMP NULL,
|
||||
DEVICE_IDENTIFICATION VARCHAR(300) DEFAULT NULL,
|
||||
CONSTRAINT fk_dm_device_operation_response_large_mapping FOREIGN KEY (ID)
|
||||
REFERENCES DM_DEVICE_OPERATION_RESPONSE (ID)
|
||||
ON DELETE NO ACTION ON UPDATE NO ACTION,
|
||||
CONSTRAINT fk_dm_en_op_map_response_large FOREIGN KEY (EN_OP_MAP_ID)
|
||||
REFERENCES DM_ENROLMENT_OP_MAPPING (ID)
|
||||
ON DELETE NO ACTION ON UPDATE NO ACTION
|
||||
);
|
||||
|
||||
-- POLICY RELATED TABLES --
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_PROFILE (
|
||||
ID INT NOT NULL AUTO_INCREMENT ,
|
||||
PROFILE_NAME VARCHAR(45) NOT NULL ,
|
||||
TENANT_ID INT NOT NULL ,
|
||||
DEVICE_TYPE VARCHAR(300) NOT NULL ,
|
||||
CREATED_TIME DATETIME NOT NULL ,
|
||||
UPDATED_TIME DATETIME NOT NULL ,
|
||||
PRIMARY KEY (ID)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_POLICY (
|
||||
ID INT(11) NOT NULL AUTO_INCREMENT ,
|
||||
NAME VARCHAR(45) DEFAULT NULL ,
|
||||
DESCRIPTION VARCHAR(1000) NULL,
|
||||
PAYLOAD_VERSION VARCHAR (45) NULL,
|
||||
TENANT_ID INT(11) NOT NULL ,
|
||||
PROFILE_ID INT(11) NOT NULL ,
|
||||
OWNERSHIP_TYPE VARCHAR(45) NULL,
|
||||
COMPLIANCE VARCHAR(100) NULL,
|
||||
PRIORITY INT NOT NULL,
|
||||
ACTIVE INT(2) NOT NULL,
|
||||
UPDATED INT(1) NULL,
|
||||
POLICY_TYPE VARCHAR(45) NULL,
|
||||
PRIMARY KEY (ID) ,
|
||||
CONSTRAINT FK_DM_PROFILE_DM_POLICY
|
||||
FOREIGN KEY (PROFILE_ID )
|
||||
REFERENCES DM_PROFILE (ID )
|
||||
ON DELETE NO ACTION
|
||||
ON UPDATE NO ACTION
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_DEVICE_POLICY (
|
||||
ID INT(11) NOT NULL AUTO_INCREMENT ,
|
||||
DEVICE_ID INT(11) NOT NULL ,
|
||||
ENROLMENT_ID INT(11) NOT NULL,
|
||||
DEVICE BLOB NOT NULL,
|
||||
POLICY_ID INT(11) NOT NULL ,
|
||||
PRIMARY KEY (ID) ,
|
||||
CONSTRAINT FK_POLICY_DEVICE_POLICY
|
||||
FOREIGN KEY (POLICY_ID )
|
||||
REFERENCES DM_POLICY (ID )
|
||||
ON DELETE NO ACTION
|
||||
ON UPDATE NO ACTION,
|
||||
CONSTRAINT FK_DEVICE_DEVICE_POLICY
|
||||
FOREIGN KEY (DEVICE_ID )
|
||||
REFERENCES DM_DEVICE (ID )
|
||||
ON DELETE NO ACTION
|
||||
ON UPDATE NO ACTION
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_DEVICE_TYPE_POLICY (
|
||||
ID INT(11) NOT NULL ,
|
||||
DEVICE_TYPE VARCHAR(300) NOT NULL ,
|
||||
POLICY_ID INT(11) NOT NULL ,
|
||||
PRIMARY KEY (ID) ,
|
||||
CONSTRAINT FK_DEVICE_TYPE_POLICY
|
||||
FOREIGN KEY (POLICY_ID )
|
||||
REFERENCES DM_POLICY (ID )
|
||||
ON DELETE NO ACTION
|
||||
ON UPDATE NO ACTION
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_PROFILE_FEATURES (
|
||||
ID INT(11) NOT NULL AUTO_INCREMENT,
|
||||
PROFILE_ID INT(11) NOT NULL,
|
||||
FEATURE_CODE VARCHAR(100) NOT NULL,
|
||||
DEVICE_TYPE VARCHAR(300) NOT NULL,
|
||||
TENANT_ID INT(11) NOT NULL ,
|
||||
CONTENT BLOB NULL DEFAULT NULL,
|
||||
PRIMARY KEY (ID),
|
||||
CONSTRAINT FK_DM_PROFILE_DM_POLICY_FEATURES
|
||||
FOREIGN KEY (PROFILE_ID)
|
||||
REFERENCES DM_PROFILE (ID)
|
||||
ON DELETE NO ACTION
|
||||
ON UPDATE NO ACTION
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_POLICY_CORRECTIVE_ACTION (
|
||||
ID INT(11) NOT NULL AUTO_INCREMENT,
|
||||
ACTION_TYPE VARCHAR(45) NOT NULL,
|
||||
CORRECTIVE_POLICY_ID INT(11) DEFAULT NULL,
|
||||
POLICY_ID INT(11) NOT NULL,
|
||||
FEATURE_ID INT(11) DEFAULT NULL,
|
||||
IS_REACTIVE BOOLEAN NOT NULL DEFAULT FALSE,
|
||||
PRIMARY KEY (ID),
|
||||
CONSTRAINT FK_DM_POLICY_DM_POLICY_CORRECTIVE_ACTION
|
||||
FOREIGN KEY (POLICY_ID)
|
||||
REFERENCES DM_POLICY (ID)
|
||||
ON DELETE NO ACTION
|
||||
ON UPDATE NO ACTION
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_ROLE_POLICY (
|
||||
ID INT(11) NOT NULL AUTO_INCREMENT ,
|
||||
ROLE_NAME VARCHAR(45) NOT NULL ,
|
||||
POLICY_ID INT(11) NOT NULL ,
|
||||
PRIMARY KEY (ID) ,
|
||||
CONSTRAINT FK_ROLE_POLICY_POLICY
|
||||
FOREIGN KEY (POLICY_ID )
|
||||
REFERENCES DM_POLICY (ID )
|
||||
ON DELETE NO ACTION
|
||||
ON UPDATE NO ACTION
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_USER_POLICY (
|
||||
ID INT NOT NULL AUTO_INCREMENT ,
|
||||
POLICY_ID INT NOT NULL ,
|
||||
USERNAME VARCHAR(45) NOT NULL ,
|
||||
PRIMARY KEY (ID) ,
|
||||
CONSTRAINT DM_POLICY_USER_POLICY
|
||||
FOREIGN KEY (POLICY_ID )
|
||||
REFERENCES DM_POLICY (ID )
|
||||
ON DELETE NO ACTION
|
||||
ON UPDATE NO ACTION
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_DEVICE_POLICY_APPLIED (
|
||||
ID INT NOT NULL AUTO_INCREMENT ,
|
||||
DEVICE_ID INT NOT NULL ,
|
||||
ENROLMENT_ID INT(11) NOT NULL,
|
||||
POLICY_ID INT NOT NULL ,
|
||||
POLICY_CONTENT BLOB NULL ,
|
||||
TENANT_ID INT NOT NULL,
|
||||
APPLIED TINYINT(1) NULL ,
|
||||
CREATED_TIME TIMESTAMP NULL ,
|
||||
UPDATED_TIME TIMESTAMP NULL ,
|
||||
APPLIED_TIME TIMESTAMP NULL ,
|
||||
PRIMARY KEY (ID) ,
|
||||
CONSTRAINT FK_DM_POLICY_DEVCIE_APPLIED
|
||||
FOREIGN KEY (DEVICE_ID )
|
||||
REFERENCES DM_DEVICE (ID )
|
||||
ON DELETE NO ACTION
|
||||
ON UPDATE NO ACTION
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_CRITERIA (
|
||||
ID INT NOT NULL AUTO_INCREMENT,
|
||||
TENANT_ID INT NOT NULL,
|
||||
NAME VARCHAR(50) NULL,
|
||||
PRIMARY KEY (ID)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_POLICY_CRITERIA (
|
||||
ID INT NOT NULL AUTO_INCREMENT,
|
||||
CRITERIA_ID INT NOT NULL,
|
||||
POLICY_ID INT NOT NULL,
|
||||
PRIMARY KEY (ID),
|
||||
CONSTRAINT FK_CRITERIA_POLICY_CRITERIA
|
||||
FOREIGN KEY (CRITERIA_ID)
|
||||
REFERENCES DM_CRITERIA (ID)
|
||||
ON DELETE NO ACTION
|
||||
ON UPDATE NO ACTION,
|
||||
CONSTRAINT FK_POLICY_POLICY_CRITERIA
|
||||
FOREIGN KEY (POLICY_ID)
|
||||
REFERENCES DM_POLICY (ID)
|
||||
ON DELETE NO ACTION
|
||||
ON UPDATE NO ACTION
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_POLICY_CRITERIA_PROPERTIES (
|
||||
ID INT NOT NULL AUTO_INCREMENT,
|
||||
POLICY_CRITERION_ID INT NOT NULL,
|
||||
PROP_KEY VARCHAR(45) NULL,
|
||||
PROP_VALUE VARCHAR(100) NULL,
|
||||
CONTENT BLOB NULL,
|
||||
PRIMARY KEY (ID),
|
||||
CONSTRAINT FK_POLICY_CRITERIA_PROPERTIES
|
||||
FOREIGN KEY (POLICY_CRITERION_ID)
|
||||
REFERENCES DM_POLICY_CRITERIA (ID)
|
||||
ON DELETE CASCADE
|
||||
ON UPDATE NO ACTION
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_POLICY_COMPLIANCE_STATUS (
|
||||
ID INT NOT NULL AUTO_INCREMENT,
|
||||
DEVICE_ID INT NOT NULL,
|
||||
ENROLMENT_ID INT(11) NOT NULL,
|
||||
POLICY_ID INT NOT NULL,
|
||||
TENANT_ID INT NOT NULL,
|
||||
STATUS INT NULL,
|
||||
LAST_SUCCESS_TIME TIMESTAMP NULL,
|
||||
LAST_REQUESTED_TIME TIMESTAMP NULL,
|
||||
LAST_FAILED_TIME TIMESTAMP NULL,
|
||||
ATTEMPTS INT NULL,
|
||||
PRIMARY KEY (ID)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_POLICY_CHANGE_MGT (
|
||||
ID INT NOT NULL AUTO_INCREMENT,
|
||||
POLICY_ID INT NOT NULL,
|
||||
DEVICE_TYPE VARCHAR(300) NOT NULL ,
|
||||
TENANT_ID INT(11) NOT NULL,
|
||||
PRIMARY KEY (ID)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_POLICY_COMPLIANCE_FEATURES (
|
||||
ID INT NOT NULL AUTO_INCREMENT,
|
||||
COMPLIANCE_STATUS_ID INT NOT NULL,
|
||||
TENANT_ID INT NOT NULL,
|
||||
FEATURE_CODE VARCHAR(100) NOT NULL,
|
||||
STATUS INT NULL,
|
||||
PRIMARY KEY (ID),
|
||||
CONSTRAINT FK_COMPLIANCE_FEATURES_STATUS
|
||||
FOREIGN KEY (COMPLIANCE_STATUS_ID)
|
||||
REFERENCES DM_POLICY_COMPLIANCE_STATUS (ID)
|
||||
ON DELETE NO ACTION
|
||||
ON UPDATE NO ACTION
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_APPLICATION (
|
||||
ID INTEGER AUTO_INCREMENT NOT NULL,
|
||||
NAME VARCHAR(150) NOT NULL,
|
||||
APP_IDENTIFIER VARCHAR(150) NOT NULL,
|
||||
PLATFORM VARCHAR(50) DEFAULT NULL,
|
||||
CATEGORY VARCHAR(50) NULL,
|
||||
VERSION VARCHAR(50) NULL,
|
||||
TYPE VARCHAR(50) NULL,
|
||||
LOCATION_URL VARCHAR(100) DEFAULT NULL,
|
||||
IMAGE_URL VARCHAR(100) DEFAULT NULL,
|
||||
APP_PROPERTIES BLOB NULL,
|
||||
MEMORY_USAGE INTEGER(10) NULL,
|
||||
IS_ACTIVE BOOLEAN NOT NULL DEFAULT FALSE,
|
||||
DEVICE_ID INTEGER NOT NULL,
|
||||
ENROLMENT_ID INTEGER NOT NULL,
|
||||
TENANT_ID INTEGER NOT NULL,
|
||||
PRIMARY KEY (ID),
|
||||
CONSTRAINT fk_dm_device
|
||||
FOREIGN KEY (DEVICE_ID)
|
||||
REFERENCES DM_DEVICE (ID)
|
||||
ON DELETE NO ACTION
|
||||
ON UPDATE NO ACTION,
|
||||
CONSTRAINT fk_dm_enrolement
|
||||
FOREIGN KEY (ENROLMENT_ID)
|
||||
REFERENCES DM_ENROLMENT (ID)
|
||||
ON DELETE NO ACTION
|
||||
ON UPDATE NO ACTION
|
||||
);
|
||||
|
||||
-- POLICY RELATED TABLES FINISHED --
|
||||
|
||||
-- NOTIFICATION TABLE --
|
||||
CREATE TABLE IF NOT EXISTS DM_NOTIFICATION (
|
||||
NOTIFICATION_ID INTEGER AUTO_INCREMENT NOT NULL,
|
||||
DEVICE_ID INTEGER NOT NULL,
|
||||
OPERATION_ID INTEGER NULL,
|
||||
TENANT_ID INTEGER NOT NULL,
|
||||
STATUS VARCHAR(10) NULL,
|
||||
DESCRIPTION VARCHAR(1000) NULL,
|
||||
LAST_UPDATED_TIMESTAMP TIMESTAMP NOT NULL,
|
||||
PRIMARY KEY (NOTIFICATION_ID),
|
||||
CONSTRAINT fk_dm_device_notification FOREIGN KEY (DEVICE_ID) REFERENCES
|
||||
DM_DEVICE (ID) ON DELETE NO ACTION ON UPDATE NO ACTION
|
||||
);
|
||||
-- NOTIFICATION TABLE END --
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_DEVICE_INFO (
|
||||
ID INTEGER AUTO_INCREMENT NOT NULL,
|
||||
DEVICE_ID INT NULL,
|
||||
ENROLMENT_ID INT NOT NULL,
|
||||
KEY_FIELD VARCHAR(45) NULL,
|
||||
VALUE_FIELD VARCHAR(1000) NULL,
|
||||
PRIMARY KEY (ID),
|
||||
CONSTRAINT DM_DEVICE_INFO_DEVICE
|
||||
FOREIGN KEY (DEVICE_ID)
|
||||
REFERENCES DM_DEVICE (ID)
|
||||
ON DELETE NO ACTION
|
||||
ON UPDATE NO ACTION,
|
||||
CONSTRAINT DM_DEVICE_INFO_DEVICE_ENROLLMENT
|
||||
FOREIGN KEY (ENROLMENT_ID)
|
||||
REFERENCES DM_ENROLMENT (ID)
|
||||
ON DELETE NO ACTION
|
||||
ON UPDATE NO ACTION
|
||||
);
|
||||
|
||||
CREATE INDEX IDX_DM_DEVICE_INFO_DID_EID_KFIELD ON DM_DEVICE_INFO(DEVICE_ID, ENROLMENT_ID, KEY_FIELD);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_DEVICE_LOCATION (
|
||||
ID INTEGER AUTO_INCREMENT NOT NULL,
|
||||
DEVICE_ID INT NULL,
|
||||
ENROLMENT_ID INT NOT NULL,
|
||||
LATITUDE DOUBLE NULL,
|
||||
LONGITUDE DOUBLE NULL,
|
||||
STREET1 VARCHAR(255) NULL,
|
||||
STREET2 VARCHAR(45) NULL,
|
||||
CITY VARCHAR(45) NULL,
|
||||
ZIP VARCHAR(10) NULL,
|
||||
STATE VARCHAR(45) NULL,
|
||||
COUNTRY VARCHAR(45) NULL,
|
||||
GEO_HASH VARCHAR(45) NULL,
|
||||
UPDATE_TIMESTAMP BIGINT(15) NOT NULL,
|
||||
ALTITUDE DOUBLE NULL,
|
||||
SPEED FLOAT NULL,
|
||||
BEARING FLOAT NULL,
|
||||
DISTANCE DOUBLE NULL,
|
||||
PRIMARY KEY (ID),
|
||||
CONSTRAINT DM_DEVICE_LOCATION_DEVICE
|
||||
FOREIGN KEY (DEVICE_ID)
|
||||
REFERENCES DM_DEVICE (ID)
|
||||
ON DELETE NO ACTION
|
||||
ON UPDATE NO ACTION,
|
||||
CONSTRAINT DM_DEVICE_LOCATION_DM_ENROLLMENT
|
||||
FOREIGN KEY (ENROLMENT_ID)
|
||||
REFERENCES DM_ENROLMENT (ID)
|
||||
ON DELETE NO ACTION
|
||||
ON UPDATE NO ACTION
|
||||
);
|
||||
CREATE INDEX DM_DEVICE_LOCATION_GEO_hashx ON DM_DEVICE_LOCATION(GEO_HASH ASC);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_DEVICE_DETAIL (
|
||||
ID INT NOT NULL AUTO_INCREMENT,
|
||||
DEVICE_ID INT NOT NULL,
|
||||
ENROLMENT_ID INT NOT NULL,
|
||||
DEVICE_MODEL VARCHAR(45) NULL,
|
||||
VENDOR VARCHAR(45) NULL,
|
||||
OS_VERSION VARCHAR(45) NULL,
|
||||
OS_BUILD_DATE VARCHAR(100) NULL,
|
||||
BATTERY_LEVEL DECIMAL(4) NULL,
|
||||
INTERNAL_TOTAL_MEMORY DECIMAL(30,3) NULL,
|
||||
INTERNAL_AVAILABLE_MEMORY DECIMAL(30,3) NULL,
|
||||
EXTERNAL_TOTAL_MEMORY DECIMAL(30,3) NULL,
|
||||
EXTERNAL_AVAILABLE_MEMORY DECIMAL(30,3) NULL,
|
||||
CONNECTION_TYPE VARCHAR(50) NULL,
|
||||
SSID VARCHAR(45) NULL,
|
||||
CPU_USAGE DECIMAL(5) NULL,
|
||||
TOTAL_RAM_MEMORY DECIMAL(30,3) NULL,
|
||||
AVAILABLE_RAM_MEMORY DECIMAL(30,3) NULL,
|
||||
PLUGGED_IN INT(1) NULL,
|
||||
UPDATE_TIMESTAMP BIGINT(15) NOT NULL,
|
||||
PRIMARY KEY (ID),
|
||||
CONSTRAINT FK_DM_DEVICE_DETAILS_DEVICE
|
||||
FOREIGN KEY (DEVICE_ID)
|
||||
REFERENCES DM_DEVICE (ID)
|
||||
ON DELETE NO ACTION
|
||||
ON UPDATE NO ACTION,
|
||||
CONSTRAINT FK_DM_ENROLMENT_DEVICE_DETAILS
|
||||
FOREIGN KEY (ENROLMENT_ID)
|
||||
REFERENCES DM_ENROLMENT (ID)
|
||||
ON DELETE NO ACTION
|
||||
ON UPDATE NO ACTION
|
||||
);
|
||||
|
||||
CREATE INDEX IDX_DM_DEVICE_DETAIL_DID_EID ON DM_DEVICE_DETAIL(DEVICE_ID, ENROLMENT_ID);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_DEVICE_HISTORY_LAST_SEVEN_DAYS
|
||||
(
|
||||
ID INTEGER AUTO_INCREMENT NOT NULL,
|
||||
DEVICE_ID INT NOT NULL,
|
||||
DEVICE_ID_NAME VARCHAR(255) NOT NULL,
|
||||
TENANT_ID INT NOT NULL,
|
||||
DEVICE_TYPE_NAME VARCHAR(45) NOT NULL,
|
||||
LATITUDE DOUBLE NULL,
|
||||
LONGITUDE DOUBLE NULL,
|
||||
SPEED FLOAT NULL,
|
||||
HEADING FLOAT NULL,
|
||||
TIMESTAMP BIGINT(15) NOT NULL,
|
||||
GEO_HASH VARCHAR(45) NULL,
|
||||
DEVICE_OWNER VARCHAR(45) NULL,
|
||||
DEVICE_ALTITUDE DOUBLE NULL,
|
||||
DISTANCE DOUBLE NULL,
|
||||
PRIMARY KEY (ID)
|
||||
);
|
||||
|
||||
-- POLICY AND DEVICE GROUP MAPPING --
|
||||
CREATE TABLE IF NOT EXISTS DM_DEVICE_GROUP_POLICY (
|
||||
ID INT NOT NULL AUTO_INCREMENT,
|
||||
DEVICE_GROUP_ID INT NOT NULL,
|
||||
POLICY_ID INT NOT NULL,
|
||||
TENANT_ID INT NOT NULL,
|
||||
PRIMARY KEY (ID),
|
||||
CONSTRAINT FK_DM_DEVICE_GROUP_POLICY
|
||||
FOREIGN KEY (DEVICE_GROUP_ID)
|
||||
REFERENCES DM_GROUP (ID)
|
||||
ON DELETE CASCADE
|
||||
ON UPDATE CASCADE ,
|
||||
CONSTRAINT FK_DM_DEVICE_GROUP_DM_POLICY
|
||||
FOREIGN KEY (POLICY_ID)
|
||||
REFERENCES DM_POLICY (ID)
|
||||
ON DELETE CASCADE
|
||||
ON UPDATE CASCADE
|
||||
);
|
||||
-- END OF POLICY AND DEVICE GROUP MAPPING --
|
||||
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_DEVICE_TYPE_PLATFORM (
|
||||
ID INT NOT NULL AUTO_INCREMENT,
|
||||
DEVICE_TYPE_ID INT NULL DEFAULT 0,
|
||||
VERSION_NAME VARCHAR(100) NULL,
|
||||
VERSION_STATUS VARCHAR(100) NULL DEFAULT 'ACTIVE',
|
||||
PRIMARY KEY (ID),
|
||||
CONSTRAINT DM_DEVICE_TYPE_DM_DEVICE_TYPE_PLATFORM_MAPPING
|
||||
FOREIGN KEY (DEVICE_TYPE_ID)
|
||||
REFERENCES DM_DEVICE_TYPE (ID) ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
CONSTRAINT device_type_version_uk
|
||||
UNIQUE (
|
||||
DEVICE_TYPE_ID,
|
||||
VERSION_NAME
|
||||
)
|
||||
);
|
||||
|
||||
-- METADATA TABLE --
|
||||
CREATE TABLE IF NOT EXISTS DM_METADATA (
|
||||
METADATA_ID INT AUTO_INCREMENT NOT NULL,
|
||||
DATA_TYPE VARCHAR(16) NOT NULL,
|
||||
METADATA_KEY VARCHAR(128) NOT NULL,
|
||||
METADATA_VALUE VARCHAR(8000) NOT NULL,
|
||||
TENANT_ID INTEGER NOT NULL,
|
||||
PRIMARY KEY (METADATA_ID),
|
||||
CONSTRAINT METADATA_KEY_TENANT_ID UNIQUE (METADATA_KEY, TENANT_ID)
|
||||
);
|
||||
-- END OF METADATA TABLE --
|
||||
|
||||
-- DM_OTP_DATA TABLE --
|
||||
CREATE TABLE IF NOT EXISTS DM_OTP_DATA (
|
||||
ID INT AUTO_INCREMENT NOT NULL,
|
||||
OTP_TOKEN VARCHAR(100) NOT NULL,
|
||||
TENANT_ID INT NOT NULL,
|
||||
USERNAME VARCHAR(500) DEFAULT NOT NULL,
|
||||
EMAIL VARCHAR(100) NOT NULL,
|
||||
EMAIL_TYPE VARCHAR(20) NOT NULL,
|
||||
META_INFO VARCHAR(20000) NOT NULL,
|
||||
CREATED_AT TIMESTAMP NOT NULL,
|
||||
EXPIRY_TIME INT NOT NULL DEFAULT 3600,
|
||||
IS_EXPIRED BOOLEAN DEFAULT false,
|
||||
PRIMARY KEY (ID),
|
||||
CONSTRAINT email_type_uk UNIQUE (EMAIL, EMAIL_TYPE)
|
||||
);
|
||||
-- END OF DM_OTP_DATA TABLE --
|
||||
|
||||
-- DASHBOARD RELATED VIEWS --
|
||||
CREATE VIEW POLICY_COMPLIANCE_INFO AS
|
||||
SELECT
|
||||
DEVICE_INFO.DEVICE_ID,
|
||||
DEVICE_INFO.DEVICE_IDENTIFICATION,
|
||||
DEVICE_INFO.PLATFORM,
|
||||
DEVICE_INFO.OWNERSHIP,
|
||||
DEVICE_INFO.CONNECTIVITY_STATUS,
|
||||
IFNULL(DEVICE_WITH_POLICY_INFO.POLICY_ID, -1) AS POLICY_ID,
|
||||
IFNULL(DEVICE_WITH_POLICY_INFO.IS_COMPLIANT, -1) AS IS_COMPLIANT,
|
||||
DEVICE_INFO.TENANT_ID
|
||||
FROM
|
||||
(SELECT
|
||||
DM_DEVICE.ID AS DEVICE_ID,
|
||||
DM_DEVICE.DEVICE_IDENTIFICATION,
|
||||
DM_DEVICE_TYPE.NAME AS PLATFORM,
|
||||
DM_ENROLMENT.OWNERSHIP,
|
||||
DM_ENROLMENT.STATUS AS CONNECTIVITY_STATUS,
|
||||
DM_DEVICE.TENANT_ID
|
||||
FROM DM_DEVICE, DM_DEVICE_TYPE, DM_ENROLMENT
|
||||
WHERE DM_DEVICE.DEVICE_TYPE_ID = DM_DEVICE_TYPE.ID AND DM_DEVICE.ID = DM_ENROLMENT.DEVICE_ID) DEVICE_INFO
|
||||
LEFT JOIN
|
||||
(SELECT
|
||||
DEVICE_ID,
|
||||
POLICY_ID,
|
||||
STATUS AS IS_COMPLIANT
|
||||
FROM DM_POLICY_COMPLIANCE_STATUS) DEVICE_WITH_POLICY_INFO
|
||||
ON DEVICE_INFO.DEVICE_ID = DEVICE_WITH_POLICY_INFO.DEVICE_ID
|
||||
ORDER BY DEVICE_INFO.DEVICE_ID;
|
||||
|
||||
CREATE VIEW FEATURE_NON_COMPLIANCE_INFO AS
|
||||
SELECT
|
||||
DM_DEVICE.ID AS DEVICE_ID,
|
||||
DM_DEVICE.DEVICE_IDENTIFICATION,
|
||||
DM_DEVICE_DETAIL.DEVICE_MODEL,
|
||||
DM_DEVICE_DETAIL.VENDOR,
|
||||
DM_DEVICE_DETAIL.OS_VERSION,
|
||||
DM_ENROLMENT.OWNERSHIP,
|
||||
DM_ENROLMENT.OWNER,
|
||||
DM_ENROLMENT.STATUS AS CONNECTIVITY_STATUS,
|
||||
DM_POLICY_COMPLIANCE_STATUS.POLICY_ID,
|
||||
DM_DEVICE_TYPE.NAME AS PLATFORM,
|
||||
DM_POLICY_COMPLIANCE_FEATURES.FEATURE_CODE,
|
||||
DM_POLICY_COMPLIANCE_FEATURES.STATUS AS IS_COMPLAINT,
|
||||
DM_DEVICE.TENANT_ID
|
||||
FROM
|
||||
DM_POLICY_COMPLIANCE_FEATURES, DM_POLICY_COMPLIANCE_STATUS, DM_ENROLMENT, DM_DEVICE, DM_DEVICE_TYPE, DM_DEVICE_DETAIL
|
||||
WHERE
|
||||
DM_POLICY_COMPLIANCE_FEATURES.COMPLIANCE_STATUS_ID = DM_POLICY_COMPLIANCE_STATUS.ID AND
|
||||
DM_POLICY_COMPLIANCE_STATUS.ENROLMENT_ID = DM_ENROLMENT.ID AND
|
||||
DM_POLICY_COMPLIANCE_STATUS.DEVICE_ID = DM_DEVICE.ID AND
|
||||
DM_DEVICE.DEVICE_TYPE_ID = DM_DEVICE_TYPE.ID AND
|
||||
DM_DEVICE.ID = DM_DEVICE_DETAIL.DEVICE_ID
|
||||
ORDER BY TENANT_ID, DEVICE_ID;
|
||||
|
||||
-- END OF DASHBOARD RELATED VIEWS --
|
||||
|
||||
-- DM_GEOFENCE TABLE--
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_GEOFENCE (
|
||||
ID INT NOT NULL AUTO_INCREMENT,
|
||||
FENCE_NAME VARCHAR(255) NOT NULL,
|
||||
DESCRIPTION TEXT DEFAULT NULL,
|
||||
LATITUDE DOUBLE DEFAULT NULL,
|
||||
LONGITUDE DOUBLE DEFAULT NULL,
|
||||
RADIUS DOUBLE DEFAULT NULL,
|
||||
GEO_JSON TEXT DEFAULT NULL,
|
||||
FENCE_SHAPE VARCHAR(100) DEFAULT NULL,
|
||||
CREATED_TIMESTAMP TIMESTAMP NOT NULL,
|
||||
OWNER VARCHAR(255) NOT NULL,
|
||||
TENANT_ID INTEGER DEFAULT 0,
|
||||
PRIMARY KEY (ID)
|
||||
);
|
||||
|
||||
-- END OF DM_GEOFENCE TABLE--
|
||||
|
||||
-- DM_GEOFENCE_GROUP_MAPPING TABLE--
|
||||
CREATE TABLE IF NOT EXISTS DM_GEOFENCE_GROUP_MAPPING (
|
||||
ID INT NOT NULL AUTO_INCREMENT,
|
||||
FENCE_ID INT NOT NULL,
|
||||
GROUP_ID INT NOT NULL,
|
||||
PRIMARY KEY (ID),
|
||||
CONSTRAINT fk_dm_geofence_group_mapping_geofence FOREIGN KEY (FENCE_ID) REFERENCES
|
||||
DM_GEOFENCE (ID) ON DELETE NO ACTION ON UPDATE NO ACTION,
|
||||
CONSTRAINT fk_dm_geofence_group_mapping_group FOREIGN KEY (GROUP_ID) REFERENCES
|
||||
DM_GROUP (ID) ON DELETE NO ACTION ON UPDATE NO ACTION
|
||||
);
|
||||
|
||||
-- END OF DM_GEOFENCE_GROUP_MAPPING TABLE--
|
||||
|
||||
-- DM_DEVICE_EVENT TABLE --
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_DEVICE_EVENT (
|
||||
ID INT NOT NULL AUTO_INCREMENT,
|
||||
EVENT_SOURCE VARCHAR(100) NOT NULL,
|
||||
EVENT_LOGIC VARCHAR(100) NOT NULL,
|
||||
ACTIONS TEXT DEFAULT NULL,
|
||||
CREATED_TIMESTAMP TIMESTAMP NOT NULL,
|
||||
TENANT_ID INTEGER DEFAULT 0,
|
||||
PRIMARY KEY (ID)
|
||||
);
|
||||
|
||||
-- END OF DM_DEVICE_EVENT TABLE --
|
||||
|
||||
-- DM_DEVICE_EVENT_GROUP_MAPPING TABLE--
|
||||
CREATE TABLE IF NOT EXISTS DM_DEVICE_EVENT_GROUP_MAPPING (
|
||||
ID INT NOT NULL AUTO_INCREMENT,
|
||||
EVENT_ID INT NOT NULL,
|
||||
GROUP_ID INT NOT NULL,
|
||||
PRIMARY KEY (ID),
|
||||
CONSTRAINT fk_dm_event_group_mapping_event FOREIGN KEY (EVENT_ID) REFERENCES
|
||||
DM_DEVICE_EVENT (ID) ON DELETE NO ACTION ON UPDATE NO ACTION,
|
||||
CONSTRAINT fk_dm_event_group_mapping_group FOREIGN KEY (GROUP_ID) REFERENCES
|
||||
DM_GROUP (ID) ON DELETE NO ACTION ON UPDATE NO ACTION
|
||||
);
|
||||
|
||||
-- END OF DM_DEVICE_EVENT_GROUP_MAPPING TABLE--
|
||||
|
||||
-- DM_GEOFENCE_GROUP_MAPPING TABLE--
|
||||
CREATE TABLE IF NOT EXISTS DM_GEOFENCE_EVENT_MAPPING (
|
||||
ID INT NOT NULL AUTO_INCREMENT,
|
||||
FENCE_ID INT NOT NULL,
|
||||
EVENT_ID INT NOT NULL,
|
||||
PRIMARY KEY (ID),
|
||||
CONSTRAINT fk_dm_geofence_event_mapping_geofence FOREIGN KEY (FENCE_ID) REFERENCES
|
||||
DM_GEOFENCE (ID) ON DELETE NO ACTION ON UPDATE NO ACTION,
|
||||
CONSTRAINT fk_dm_geofence_event_mapping_event FOREIGN KEY (EVENT_ID) REFERENCES
|
||||
DM_DEVICE_EVENT (ID) ON DELETE NO ACTION ON UPDATE NO ACTION
|
||||
);
|
||||
|
||||
-- END OF DM_GEOFENCE_GROUP_MAPPING TABLE--
|
||||
|
||||
-- DM_DEVICE_SUB_TYPE TABLE--
|
||||
CREATE TABLE IF NOT EXISTS DM_DEVICE_SUB_TYPE (
|
||||
TENANT_ID INT DEFAULT 0,
|
||||
SUB_TYPE_ID INT NOT NULL,
|
||||
DEVICE_TYPE VARCHAR(25) NOT NULL,
|
||||
SUB_TYPE_NAME VARCHAR(45) NOT NULL,
|
||||
TYPE_DEFINITION TEXT NOT NULL,
|
||||
PRIMARY KEY (SUB_TYPE_ID,DEVICE_TYPE)
|
||||
);
|
||||
|
||||
-- END OF DM_DEVICE_SUB_TYPE TABLE--
|
@ -0,0 +1,415 @@
|
||||
-- -----------------------------------------------------
|
||||
-- Table `POWER_METER_DEVICE`
|
||||
-- -----------------------------------------------------
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `POWER_METER_DEVICE` (
|
||||
`ID` INTEGER AUTO_INCREMENT NOT NULL,
|
||||
`SERIAL` VARCHAR(45) NOT NULL,
|
||||
`IP_ADDRESS` VARCHAR(45) NULL DEFAULT NULL,
|
||||
`SIM_NUMBER` VARCHAR(45) NULL DEFAULT NULL,
|
||||
`SUB_TYPE_ID` INT NOT NULL,
|
||||
`CUSTOMER_REF` VARCHAR(45) NULL DEFAULT NULL,
|
||||
`NODE_TYPE` VARCHAR(45) NULL DEFAULT NULL,
|
||||
`CATEGORY` VARCHAR(45) NULL DEFAULT NULL,
|
||||
`BRANCH` VARCHAR(45) NULL DEFAULT NULL,
|
||||
`DEPOT` VARCHAR(45) NULL DEFAULT NULL,
|
||||
`SUBSTATION_ID` VARCHAR(45) NULL DEFAULT NULL,
|
||||
`HAS_EXPORT` VARCHAR(5) NULL DEFAULT NULL,
|
||||
`COM_MODULE_IMEI` VARCHAR(45) NULL DEFAULT NULL,
|
||||
`HAS_E_BILLING` VARCHAR(5) NULL DEFAULT NULL,
|
||||
`IS_FEEDER_END` VARCHAR(5) NULL DEFAULT NULL,
|
||||
`POLE_ID` VARCHAR(45) NULL DEFAULT NULL,
|
||||
`METER_FW_VER` VARCHAR(45) NULL DEFAULT NULL,
|
||||
`ASSIGNED_ON` TIMESTAMP NULL DEFAULT NULL,
|
||||
PRIMARY KEY (`ID`, `SERIAL`));
|
||||
|
||||
-- -----------------------------------------------------
|
||||
-- Table `COMMUNICATION_MODULE`
|
||||
-- -----------------------------------------------------
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `COMMUNICATION_MODULE` (
|
||||
`IMEI` VARCHAR(45) NOT NULL,
|
||||
`SIM_IMSI` VARCHAR(45) NULL DEFAULT NULL,
|
||||
`FW_VERSION` INT NULL DEFAULT 0,
|
||||
`SUB_TYPE_ID` INT NOT NULL,
|
||||
`SMS_PIN` VARCHAR(45) NULL DEFAULT NULL,
|
||||
`BRANCH` VARCHAR(45) NULL DEFAULT NULL,
|
||||
PRIMARY KEY (`IMEI`));
|
||||
|
||||
-- -----------------------------------------------------
|
||||
-- Table `METER_AUTHENTICATION_INFO`
|
||||
-- -----------------------------------------------------
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `METER_AUTHENTICATION_INFO` (
|
||||
`ID` INT NOT NULL AUTO_INCREMENT,
|
||||
`CLIENT_ADDRESS` INT NOT NULL,
|
||||
`AUTHENTICATION` VARCHAR(100) NOT NULL,
|
||||
`USER_ID` INT NOT NULL,
|
||||
`PASSWORD` VARCHAR(100) NOT NULL,
|
||||
`METER_SERIAL_ID` VARCHAR(45) NOT NULL,
|
||||
PRIMARY KEY (`ID`));
|
||||
|
||||
CREATE INDEX IDX_METER_AUTHENTICATION_INFO
|
||||
ON METER_AUTHENTICATION_INFO(CLIENT_ADDRESS, METER_SERIAL_ID);
|
||||
|
||||
-- -----------------------------------------------------
|
||||
-- Table `METER_READINGS`
|
||||
-- -----------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS `METER_READINGS` (
|
||||
`ID` INT NOT NULL AUTO_INCREMENT,
|
||||
`OPERATION_ID` INT NOT NULL,
|
||||
`OPERATION_CODE` VARCHAR(45) NOT NULL,
|
||||
`SUB_TYPE_ID` INT NOT NULL,
|
||||
`NODE_TYPE` VARCHAR(45) NULL DEFAULT NULL,
|
||||
`CATEGORY` VARCHAR(45) NULL DEFAULT NULL,
|
||||
`HAS_EXPORT` BOOLEAN NULL DEFAULT NULL,
|
||||
`HAS_E_BILLING` BOOLEAN NULL DEFAULT NULL,
|
||||
`BRANCH` VARCHAR(45) NULL DEFAULT NULL,
|
||||
`DEPOT` VARCHAR(45) NULL DEFAULT NULL,
|
||||
`SUBSTATION_ID` VARCHAR(45) NULL DEFAULT NULL,
|
||||
`SERIAL` VARCHAR(45) NOT NULL,
|
||||
`CUSTOMER_REF` VARCHAR(45) NULL DEFAULT NULL,
|
||||
`RESPONSE` BLOB NOT NULL,
|
||||
`TIMESTAMP` BIGINT(15) NOT NULL,
|
||||
`IS_PARTIAL_RESULT` BOOLEAN NOT NULL DEFAULT FALSE,
|
||||
PRIMARY KEY (`ID`));
|
||||
|
||||
--
|
||||
-- Table structure for table `LAST_METER_READING`
|
||||
--
|
||||
CREATE TABLE IF NOT EXISTS LAST_METER_READING (
|
||||
SERIAL VARCHAR(45) NOT NULL,
|
||||
OPERATION_ID INTEGER NOT NULL,
|
||||
SUB_TYPE_ID INT NOT NULL DEFAULT 0,
|
||||
NODE_TYPE VARCHAR(45) NULL DEFAULT NULL,
|
||||
CATEGORY VARCHAR(45) NULL DEFAULT NULL,
|
||||
HAS_EXPORT BOOLEAN NULL DEFAULT NULL,
|
||||
HAS_E_BILLING BOOLEAN NULL DEFAULT NULL,
|
||||
BRANCH VARCHAR(45) NULL DEFAULT NULL,
|
||||
DEPOT VARCHAR(45) NULL DEFAULT NULL,
|
||||
SUBSTATION_ID VARCHAR(45) NULL DEFAULT NULL,
|
||||
CUSTOMER_REF VARCHAR(45) NULL DEFAULT NULL,
|
||||
RESPONSE LONGBLOB NOT NULL,
|
||||
LAST_READING_TIMESTAMP BIGINT NOT NULL,
|
||||
PRIMARY KEY (SERIAL)
|
||||
);
|
||||
|
||||
-- -----------------------------------------------------
|
||||
-- Table `PROFILE_READINGS`
|
||||
-- -----------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS `PROFILE_READINGS` (
|
||||
`ID` INT NOT NULL AUTO_INCREMENT,
|
||||
`OPERATION_ID` INT NOT NULL,
|
||||
`OBIS` VARCHAR(45) NULL DEFAULT NULL,
|
||||
`SUB_TYPE_ID` INT NOT NULL,
|
||||
`NODE_TYPE` VARCHAR(45) NULL DEFAULT NULL,
|
||||
`CATEGORY` VARCHAR(45) NULL DEFAULT NULL,
|
||||
`HAS_EXPORT` BOOLEAN NULL DEFAULT NULL,
|
||||
`HAS_E_BILLING` BOOLEAN NULL DEFAULT NULL,
|
||||
`BRANCH` VARCHAR(45) NULL DEFAULT NULL,
|
||||
`DEPOT` VARCHAR(45) NULL DEFAULT NULL,
|
||||
`SUBSTATION_ID` VARCHAR(45) NULL DEFAULT NULL,
|
||||
`SERIAL` VARCHAR(45) NOT NULL,
|
||||
`CUSTOMER_REF` VARCHAR(45) NULL DEFAULT NULL,
|
||||
`PROFILE_DATA` BLOB NOT NULL,
|
||||
`TIMESTAMP` BIGINT(15) NOT NULL,
|
||||
PRIMARY KEY (`ID`));
|
||||
|
||||
-- -----------------------------------------------------
|
||||
-- Table `METER_INSTALL`
|
||||
-- -----------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS `METER_INSTALL` (
|
||||
`ID` INT NOT NULL AUTO_INCREMENT,
|
||||
`SERIAL` VARCHAR(45) NOT NULL,
|
||||
`USERNAME` VARCHAR(45) NULL DEFAULT NULL,
|
||||
`JOB_ID` VARCHAR(45) NULL DEFAULT NULL,
|
||||
`LAB_SEAL` VARCHAR(45) NULL DEFAULT NULL,
|
||||
`COM_MODULE_SEAL` VARCHAR(45) NULL DEFAULT NULL,
|
||||
`TERMINAL_COVER_SEAL` VARCHAR(45) NULL DEFAULT NULL,
|
||||
`METER_ENCLOSURE_SEAL` VARCHAR(45) NULL DEFAULT NULL,
|
||||
`PRINTED_SERIAL` VARCHAR(45) NULL DEFAULT NULL,
|
||||
`CUSTOMER_REF` VARCHAR(45) NULL DEFAULT NULL,
|
||||
`IMPORT_READING` DOUBLE DEFAULT 0,
|
||||
`EXPORT_READING` DOUBLE DEFAULT 0,
|
||||
`READING_TIMESTAMP` BIGINT(15) DEFAULT 0,
|
||||
`TIMESTAMP` TIMESTAMP NOT NULL,
|
||||
PRIMARY KEY (`ID`));
|
||||
|
||||
-- -----------------------------------------------------
|
||||
-- Table `METER_UNINSTALL`
|
||||
-- -----------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS `METER_UNINSTALL` (
|
||||
`ID` INT NOT NULL AUTO_INCREMENT,
|
||||
`SERIAL` VARCHAR(45) NOT NULL,
|
||||
`USERNAME` VARCHAR(45) NULL DEFAULT NULL,
|
||||
`JOB_ID` VARCHAR(45) NULL DEFAULT NULL,
|
||||
`LAB_SEAL` VARCHAR(45) NULL DEFAULT NULL,
|
||||
`COM_MODULE_SEAL` VARCHAR(45) NULL DEFAULT NULL,
|
||||
`TERMINAL_COVER_SEAL` VARCHAR(45) NULL DEFAULT NULL,
|
||||
`METER_ENCLOSURE_SEAL` VARCHAR(45) NULL DEFAULT NULL,
|
||||
`PRINTED_SERIAL` VARCHAR(45) NULL DEFAULT NULL,
|
||||
`CUSTOMER_REF` VARCHAR(45) NULL DEFAULT NULL,
|
||||
`IMPORT_READING` DOUBLE DEFAULT 0,
|
||||
`EXPORT_READING` DOUBLE DEFAULT 0,
|
||||
`READING_TIMESTAMP` BIGINT(15) DEFAULT 0,
|
||||
`TIMESTAMP` TIMESTAMP NOT NULL,
|
||||
PRIMARY KEY (`ID`));
|
||||
|
||||
-- -----------------------------------------------------
|
||||
-- Table `RSSI_LEVEL`
|
||||
-- -----------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS `RSSI_LEVEL` (
|
||||
`ID` INT NOT NULL AUTO_INCREMENT,
|
||||
`IMEI` VARCHAR(45) NOT NULL,
|
||||
`SIM_IMSI` VARCHAR(45) NULL DEFAULT NULL,
|
||||
`FW_VERSION` INT NULL DEFAULT 0,
|
||||
`COM_TYPE_ID` INT NOT NULL,
|
||||
`RSSI` INT NULL DEFAULT 0,
|
||||
`NETWORK` VARCHAR(45) NULL DEFAULT NULL,
|
||||
`CELL_ID` VARCHAR(45) NULL DEFAULT NULL,
|
||||
`LAC` VARCHAR(45) NULL DEFAULT NULL,
|
||||
`RSRP` DECIMAL (5, 2) NULL DEFAULT 0,
|
||||
`RSRQ` DECIMAL (5, 2) NULL DEFAULT 0,
|
||||
`SNR` DECIMAL (5, 2) NULL DEFAULT 0,
|
||||
`PCI` INT NULL DEFAULT 0,
|
||||
`TRANSPORT` VARCHAR(45) NULL DEFAULT NULL,
|
||||
`TIMESTAMP` BIGINT(15) NOT NULL,
|
||||
PRIMARY KEY (`ID`));
|
||||
|
||||
-- -----------------------------------------------------
|
||||
-- Table `REQUEST`
|
||||
-- -----------------------------------------------------
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `REQUEST` (
|
||||
`ID` int NOT NULL AUTO_INCREMENT,
|
||||
`DUE_DATE` bigint DEFAULT '0',
|
||||
`REQUESTED_BY` varchar(100) NOT NULL,
|
||||
`REQUESTED_DATE` bigint DEFAULT '0',
|
||||
`STATUS` varchar(45) NOT NULL,
|
||||
`BRANCH` varchar(45) DEFAULT NULL,
|
||||
`REMARKS` varchar(255) NOT NULL,
|
||||
`REQUEST_TYPE` int NOT NULL,
|
||||
PRIMARY KEY (`ID`)
|
||||
) ;
|
||||
|
||||
-- -----------------------------------------------------
|
||||
-- Table `METER_ASSIGNMENT_REQUEST`
|
||||
-- -----------------------------------------------------
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `METER_ASSIGNMENT_REQUEST` (
|
||||
`ID` int NOT NULL,
|
||||
`SUB_TYPE_ID` int NOT NULL,
|
||||
`PRIMARY_CT_RATIO` float DEFAULT '0',
|
||||
`SECONDARY_CT_RATIO` float DEFAULT '0',
|
||||
`PRIMARY_PT_RATIO` float DEFAULT '0',
|
||||
`SECONDARY_PT_RATIO` float DEFAULT '0',
|
||||
`NODE_TYPE` varchar(45) DEFAULT NULL,
|
||||
`REQUESTED_COUNT` int NOT NULL,
|
||||
`ACCEPTED_COUNT` int DEFAULT NULL,
|
||||
`ASSIGNED_COUNT` int DEFAULT NULL,
|
||||
`SUBSTATION_ID` varchar(45) DEFAULT NULL,
|
||||
`CUSTOMER_REF` varchar(45) DEFAULT NULL,
|
||||
`DEPOT` VARCHAR(45) DEFAULT NULL,
|
||||
`PURPOSE` VARCHAR(50) DEFAULT NULL,
|
||||
`ADDRESS` VARCHAR(255) DEFAULT NULL,
|
||||
`DESCRIPTION` VARCHAR(100) DEFAULT NULL,
|
||||
PRIMARY KEY (`ID`),
|
||||
CONSTRAINT `fk_ASSIGNMENT_REQUEST_REQUEST` FOREIGN KEY (`ID`) REFERENCES `REQUEST` (`ID`)
|
||||
) ;
|
||||
|
||||
-- -----------------------------------------------------
|
||||
-- Table `DISCONNECTION_REQUEST`
|
||||
-- -------------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS `DISCONNECTION_REQUEST` (
|
||||
`ID` int NOT NULL,
|
||||
`ACTIVITY_ID` VARCHAR(45) DEFAULT NULL,
|
||||
PRIMARY KEY (`ID`),
|
||||
CONSTRAINT `fk_DISCONNECTION_REQUEST_REQUEST` FOREIGN KEY (`ID`) REFERENCES `REQUEST` (`ID`)
|
||||
) ;
|
||||
|
||||
-- -----------------------------------------------------
|
||||
-- Table `FIELD_TEST_REQUEST`
|
||||
-- -------------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS `FIELD_TEST_REQUEST` (
|
||||
`ID` int NOT NULL,
|
||||
`TEAM` varchar(255) DEFAULT NULL,
|
||||
`SCHEDULED_DATE` bigint DEFAULT '0',
|
||||
`RESULT` varchar(50) DEFAULT NULL,
|
||||
`ATTACHMENT` blob,
|
||||
PRIMARY KEY (`ID`),
|
||||
CONSTRAINT `fk_ASSIGNMENT_FIELD_TEST_REQUEST_REQUEST` FOREIGN KEY (`ID`) REFERENCES `REQUEST` (`ID`)
|
||||
);
|
||||
|
||||
-- -----------------------------------------------------
|
||||
-- Table `LOAD_PROFILE_REQUEST`
|
||||
-- -------------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS `LOAD_PROFILE_REQUEST` (
|
||||
`ID` int NOT NULL,
|
||||
`ACTIVITY_ID` VARCHAR(45) DEFAULT NULL,
|
||||
`START_DATE` bigint DEFAULT '0',
|
||||
`END_DATE` bigint DEFAULT '0',
|
||||
PRIMARY KEY (`ID`),
|
||||
CONSTRAINT `fk_LOAD_PROFILE_REQUEST_REQUEST_REQUEST` FOREIGN KEY (`ID`) REFERENCES `REQUEST` (`ID`)
|
||||
);
|
||||
|
||||
-- -----------------------------------------------------
|
||||
-- Table `READOUT_REQUEST`
|
||||
-- -------------------------------------------------------
|
||||
|
||||
CREATE TABLE `READOUT_REQUEST` (
|
||||
`ID` int NOT NULL,
|
||||
`ACTIVITY_ID` VARCHAR(45) DEFAULT NULL,
|
||||
PRIMARY KEY (`ID`),
|
||||
CONSTRAINT `fk_READUOT_REQUEST_REQUEST_REQUEST` FOREIGN KEY (`ID`) REFERENCES `REQUEST` (`ID`)
|
||||
);
|
||||
|
||||
-- -----------------------------------------------------
|
||||
-- Table `COM_MODULE_REQUEST`
|
||||
-- -----------------------------------------------------
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `COM_MODULE_REQUEST` (
|
||||
`ID` INT NOT NULL,
|
||||
`MODULE_TYPE` VARCHAR(45) NOT NULL,
|
||||
`REQUESTED_COUNT` INT NOT NULL,
|
||||
`ACCEPTED_COUNT` INT DEFAULT NULL,
|
||||
`ASSIGNED_COUNT` INT DEFAULT NULL,
|
||||
PRIMARY KEY (`ID`),
|
||||
CONSTRAINT `fk_COM_MODULE_REQUEST_REQUEST` FOREIGN KEY (`ID`)
|
||||
REFERENCES `REQUEST` (`ID`)
|
||||
);
|
||||
|
||||
-- -----------------------------------------------------
|
||||
-- Table `RECONNECTION_REQUEST`
|
||||
-- -----------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS `RECONNECTION_REQUEST` (
|
||||
`ID` int NOT NULL,
|
||||
`ACTIVITY_ID` VARCHAR(45) DEFAULT NULL,
|
||||
PRIMARY KEY (`ID`),
|
||||
CONSTRAINT `fk_RECONNECTION_REQUEST_REQUEST` FOREIGN KEY (`ID`)
|
||||
REFERENCES `REQUEST` (`ID`) ON DELETE NO ACTION ON UPDATE NO ACTION
|
||||
);
|
||||
|
||||
|
||||
-----------------------------------------------------
|
||||
-- Table `REQUEST_LIFECYCLE_EVENT`
|
||||
-- -----------------------------------------------------
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `REQUEST_LIFECYCLE_EVENT` (
|
||||
`ID` int NOT NULL AUTO_INCREMENT,
|
||||
`REQUEST_ID` int NOT NULL,
|
||||
`UPDATED_BY` varchar(100) NOT NULL,
|
||||
`UPDATED_DATE` bigint DEFAULT '0',
|
||||
`STATUS` varchar(45) NOT NULL,
|
||||
`REMARKS` varchar(200) DEFAULT NULL,
|
||||
PRIMARY KEY (`ID`),
|
||||
CONSTRAINT `fk_REQUEST_LIFECYCLE_EVENT_REQUEST` FOREIGN KEY (`REQUEST_ID`) REFERENCES `REQUEST` (`ID`)
|
||||
) ;
|
||||
|
||||
|
||||
-- -----------------------------------------------------
|
||||
-- Table `DEVICE_EVENTS`
|
||||
-- -----------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS `PROCESSED_DEVICE_EVENTS` (
|
||||
`ID` INT NOT NULL AUTO_INCREMENT,
|
||||
`METER_SERIAL` VARCHAR(45),
|
||||
`IP_ADDRESS` VARCHAR(45),
|
||||
`NUMBER` VARCHAR(45),
|
||||
`TYPE` VARCHAR(45) NOT NULL,
|
||||
`KEY` VARCHAR(100) NOT NULL,
|
||||
`VALUE` VARCHAR(100) NOT NULL,
|
||||
`EVENT` VARCHAR(45) NOT NULL,
|
||||
`TIMESTAMP` BIGINT(15) DEFAULT 0,
|
||||
PRIMARY KEY (`ID`));
|
||||
|
||||
-- -----------------------------------------------------
|
||||
-- Table `DM_DEVICE_SUB_TYPE`
|
||||
-- -----------------------------------------------------
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `DM_DEVICE_SUB_TYPE` (
|
||||
`TENANT_ID` INT DEFAULT 0,
|
||||
`SUB_TYPE_ID` INT NOT NULL,
|
||||
`DEVICE_TYPE` VARCHAR(25) NOT NULL,
|
||||
`SUB_TYPE_NAME` VARCHAR(45) NOT NULL,
|
||||
`TYPE_DEFINITION` TEXT NOT NULL,
|
||||
PRIMARY KEY (`SUB_TYPE_ID`,`DEVICE_TYPE`)
|
||||
);
|
||||
|
||||
-- -----------------------------------------------------
|
||||
-- Table `OPERATION_TEMPLATE`
|
||||
-- -----------------------------------------------------
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `OPERATION_TEMPLATE`(
|
||||
`TEMPLATE_ID` INT NOT NULL AUTO_INCREMENT,
|
||||
`SUB_TYPE_ID` INT NOT NULL,
|
||||
`OPERATION_CODE` VARCHAR(100) NOT NULL,
|
||||
`OPERATION_DEFINITION` TEXT DEFAULT NULL,
|
||||
PRIMARY KEY (`TEMPLATE_ID`)
|
||||
);
|
||||
|
||||
-- -----------------------------------------------------
|
||||
-- Table `GENERIC_METER_REGISTER`
|
||||
-- -----------------------------------------------------
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `GENERIC_METER_REGISTER`(
|
||||
`RRPK_ID` VARCHAR(100) NOT NULL,
|
||||
`DESCRIPTION` VARCHAR(100) NOT NULL,
|
||||
`UNIT` VARCHAR(45) NULL DEFAULT NULL,
|
||||
`ORDER` INT NOT NULL,
|
||||
PRIMARY KEY (`RRPK_ID`)
|
||||
);
|
||||
|
||||
|
||||
|
||||
-- -----------------------------------------------------
|
||||
-- Sample data for DAO test cases
|
||||
-- -----------------------------------------------------
|
||||
INSERT INTO DM_DEVICE_TYPE(NAME, DEVICE_TYPE_META, LAST_UPDATED_TIMESTAMP, PROVIDER_TENANT_ID, SHARED_WITH_ALL_TENANTS) VALUES
|
||||
('android','NULL','2020-10-14 16:05:15',-1234,1),('power-meter','NULL','2020-10-14 16:05:15',-1234,1),
|
||||
('communication-module','NULL','2020-10-14 16:05:15',-1234,1),('sim','NULL','2020-10-14 16:05:15',-1234,1);
|
||||
INSERT INTO DM_DEVICE(DESCRIPTION, NAME, DEVICE_TYPE_ID, DEVICE_IDENTIFICATION, LAST_UPDATED_TIMESTAMP, TENANT_ID) VALUES
|
||||
('+94713192111', '192.168.118.111', 4, '413012689159555', '2022-04-04 16:55:52', '-1234'),
|
||||
('NULL', '864495036647555', 3, '864495036647555', '2022-04-04 16:56:52', '-1234'),
|
||||
('NULL', '000019729555', 2, '000019729555', '2022-04-04 16:56:52', '-1234');
|
||||
|
||||
INSERT INTO DM_ENROLMENT(DEVICE_ID,OWNER,OWNERSHIP,STATUS,IS_TRANSFERRED,DATE_OF_ENROLMENT,DATE_OF_LAST_UPDATE,TENANT_ID) VALUES
|
||||
(1,'admin','COPE','ACTIVE',0,'2022-04-11 15:41:30','2022-04-11 15:41:30',-1234),
|
||||
(2,'admin','COPE','ACTIVE',0,'2022-04-11 15:41:30','2022-04-11 15:41:30',-1234),
|
||||
(3,'admin','COPE','ACTIVE',0,'2022-04-11 15:41:30','2022-04-11 15:41:30',-1234);
|
||||
INSERT INTO DM_DEVICE_PROPERTIES (DEVICE_TYPE_NAME,DEVICE_IDENTIFICATION,PROPERTY_NAME,PROPERTY_VALUE,TENANT_ID) VALUES
|
||||
('sim','413012689159555','APN','LECOSMSTC',-1234),
|
||||
('sim','413012689159555','IP_ADDRESS','192.168.118.111',-1234),
|
||||
('sim','413012689159555','MOBILE_NO','+94713192111',-1234),
|
||||
('sim','413012689159555','SUB_TYPE_ID','1',-1234),
|
||||
('sim','413012689159555','token',NULL,-1234),
|
||||
('communication-module','864495036647555','BRANCH','KOTTE',-1234),
|
||||
('communication-module','864495036647555','FW_VERSION','6',-1234),
|
||||
('communication-module','864495036647555','SIM_IMSI','413012689159555',-1234),
|
||||
('communication-module','864495036647555','SIM_PIN','1234',-1234),
|
||||
('communication-module','864495036647555','SUB_TYPE_ID','1',-1234),
|
||||
('communication-module','864495036647555','token',NULL,-1234),
|
||||
('power-meter','000019729555','BRANCH','KOTTE',-1234),
|
||||
('power-meter','000019729555','CATEGORY','BILLING_BULK',-1234),
|
||||
('power-meter','000019729555','COM_MODULE_IMEI','864495036647555',-1234),
|
||||
('power-meter','000019729555','CUSTOMER_REF','0602297555',-1234),
|
||||
('power-meter','000019729555','DEPOT','PITA-KOTTE',-1234),
|
||||
('power-meter','000019729555','HAS_EXPORT','false',-1234),
|
||||
('power-meter','000019729555','HAS_E_BILLING','false',-1234),
|
||||
('power-meter','000019729555','IP_ADDRESS','192.168.118.111',-1234),
|
||||
('power-meter','000019729555','IS_FEEDER_END','false',-1234),
|
||||
('power-meter','000019729555','NODE_TYPE','BILLING',-1234),
|
||||
('power-meter','000019729555','POLE_ID','NW55/5/15C',-1234),
|
||||
('power-meter','000019729555','SIM_NUMBER','+94713192111',-1234),
|
||||
('power-meter','000019729555','SUBSTATION_ID','AZ8555',-1234),
|
||||
('power-meter','000019729555','SUB_TYPE_ID','1',-1234),
|
||||
('power-meter','000019729555','token',NULL,-1234);
|
||||
|
||||
|
||||
-- INSERT INTO SIM_DEVICE (IMSI,IP_ADDRESS,MOBILE_NO,SUB_TYPE_ID,APN) VALUES ('413012689159555','10.217.55.155','+94713192111',1,'LECOSMSTC');
|
||||
INSERT INTO COMMUNICATION_MODULE(IMEI,SIM_IMSI,FW_VERSION,SUB_TYPE_ID,BRANCH,SMS_PIN) VALUES ('864495036647555','413012689159555',6,1,'KOTTE','1234');
|
||||
INSERT INTO POWER_METER_DEVICE (SERIAL,IP_ADDRESS,SIM_NUMBER,COM_MODULE_IMEI,SUB_TYPE_ID,CUSTOMER_REF,NODE_TYPE,CATEGORY,BRANCH,DEPOT,SUBSTATION_ID,HAS_EXPORT,HAS_E_BILLING,IS_FEEDER_END,POLE_ID,ASSIGNED_ON)
|
||||
VALUES ('000019729555','192.168.118.111','+94713192111','864495036647555',1,'0602297555','BILLING','BILLING_BULK','KOTTE','PITA-KOTTE','AZ82555','false','false','false','NW55/5/15C',NULL);
|
||||
|
||||
INSERT INTO DM_DEVICE_SUB_TYPE (SUB_TYPE_ID, TENANT_ID, DEVICE_TYPE, SUB_TYPE_NAME, TYPE_DEFINITION) VALUES
|
||||
(3,-1234,'Meter','TestSubType','{"make": "TestSubType", "model": "ATx-Mega SIM800", "subTypeId": 3, "hasSMSSupport": true, "hasICMPSupport": true, "socketServerPort": 8071}'),
|
||||
(4,-1234,'Meter','TestSubType','{"make": "TestSubType", "model": "ATx-Mega SIM800", "subTypeId": 4, "hasSMSSupport": true, "hasICMPSupport": true, "socketServerPort": 8071}');
|
||||
|
@ -0,0 +1,727 @@
|
||||
<!--
|
||||
~ Copyright (C) 2018 - 2023 Entgra (Pvt) Ltd, Inc - All Rights Reserved.
|
||||
~
|
||||
~ Unauthorised copying/redistribution of this file, via any medium is strictly prohibited.
|
||||
~
|
||||
~ Licensed under the Entgra Commercial License, Version 1.0 (the "License");
|
||||
~ you may not use this file except in compliance with the License.
|
||||
~ You may obtain a copy of the License at
|
||||
~
|
||||
~ https://entgra.io/licenses/entgra-commercial/1.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.
|
||||
-->
|
||||
|
||||
<axisconfig name="AxisJava2.0">
|
||||
|
||||
<!-- ================================================= -->
|
||||
<!-- Globally engaged modules -->
|
||||
<!-- ================================================= -->
|
||||
<module ref="addressing"/>
|
||||
|
||||
<!-- ================================================= -->
|
||||
<!-- Parameters -->
|
||||
<!-- ================================================= -->
|
||||
<parameter name="hotdeployment">${hotdeployment}</parameter>
|
||||
<parameter name="hotupdate">${hotupdate}</parameter>
|
||||
<parameter name="enableMTOM" locked="false">optional</parameter>
|
||||
<parameter name="cacheAttachments">true</parameter>
|
||||
<parameter name="attachmentDIR">work/mtom</parameter>
|
||||
<parameter name="sizeThreshold">4000</parameter>
|
||||
|
||||
<parameter name="EnableChildFirstClassLoading">${childfirstCL}</parameter>
|
||||
|
||||
<!--
|
||||
The exposeServiceMetadata parameter decides whether the metadata (WSDL, schema, policy) of
|
||||
the services deployed on Axis2 should be visible when ?wsdl, ?wsdl2, ?xsd, ?policy requests
|
||||
are received.
|
||||
This parameter can be defined in the axi2.xml file, in which case this will be applicable
|
||||
globally, or in the services.xml files, in which case, it will be applicable to the
|
||||
Service groups and/or services, depending on the level at which the parameter is declared.
|
||||
This value of this parameter defaults to true.
|
||||
-->
|
||||
<parameter name="exposeServiceMetadata">true</parameter>
|
||||
|
||||
<!--If turned on with use the Accept header of the request to determine the contentType of the
|
||||
response-->
|
||||
<parameter name="httpContentNegotiation">true</parameter>
|
||||
|
||||
<!--
|
||||
Defines how the persistence of WS-ReliableMessaging is handled
|
||||
|
||||
Possible value are: inmemory & persistent
|
||||
-->
|
||||
<!-- Following parameter will completely disable REST handling in both the servlets-->
|
||||
<parameter name="disableREST" locked="false">false</parameter>
|
||||
|
||||
<parameter name="Sandesha2StorageManager">inmemory</parameter>
|
||||
|
||||
<!-- This deployment interceptor will be called whenever before a module is initialized or
|
||||
service is deployed -->
|
||||
<listener class="org.wso2.carbon.core.deployment.DeploymentInterceptor"/>
|
||||
|
||||
<!-- setting servicePath. contextRoot is defined in the carbon.xml file -->
|
||||
<!-- modification of this variable should be accompanied by the change in 'ServerURL' in carbon.xml file -->
|
||||
<parameter name="servicePath">services</parameter>
|
||||
|
||||
<!--the directory in which .aar services are deployed inside axis2 repository-->
|
||||
<parameter name="ServicesDirectory">axis2services</parameter>
|
||||
|
||||
<!--the directory in which modules are deployed inside axis2 repository-->
|
||||
<parameter name="ModulesDirectory">axis2modules</parameter>
|
||||
|
||||
<parameter name="userAgent" locked="true">
|
||||
@product.name@-@product.version@
|
||||
</parameter>
|
||||
<parameter name="server" locked="true">
|
||||
@product.name@-@product.version@
|
||||
</parameter>
|
||||
|
||||
<!-- ========================================================================-->
|
||||
|
||||
<!--During a fault, stacktrace can be sent with the fault message. The following flag will control -->
|
||||
<!--that behaviour.-->
|
||||
<parameter name="sendStacktraceDetailsWithFaults">false</parameter>
|
||||
|
||||
<!--If there aren't any information available to find out the fault reason, we set the message of the expcetion-->
|
||||
<!--as the faultreason/Reason. But when a fault is thrown from a service or some where, it will be -->
|
||||
<!--wrapped by different levels. Due to this the initial exception message can be lost. If this flag-->
|
||||
<!--is set then, Axis2 tries to get the first exception and set its message as the faultreason/Reason.-->
|
||||
<parameter name="DrillDownToRootCauseForFaultReason">false</parameter>
|
||||
|
||||
<!--Set the flag to true if you want to enable transport level session mangment-->
|
||||
<parameter name="manageTransportSession">true</parameter>
|
||||
|
||||
<!-- Synapse Configuration file -->
|
||||
<parameter name="SynapseConfig.ConfigurationFile" locked="false">repository/deployment/server/synapse-configs
|
||||
</parameter>
|
||||
|
||||
<!-- Synapse Home parameter -->
|
||||
<parameter name="SynapseConfig.HomeDirectory" locked="false">.</parameter>
|
||||
|
||||
<!-- Resolve root used to resolve synapse references like schemas inside a WSDL -->
|
||||
<parameter name="SynapseConfig.ResolveRoot" locked="false">.</parameter>
|
||||
|
||||
<!-- Synapse Server name parameter -->
|
||||
<parameter name="SynapseConfig.ServerName" locked="false">WSO2 Carbon Server</parameter>
|
||||
|
||||
<!--By default, JAXWS services are created by reading annotations. WSDL and schema are generated-->
|
||||
<!--using a separate WSDL generator only when ?wsdl is called. Therefore, even if you engage-->
|
||||
<!--policies etc.. to AxisService, it doesn't appear in the WSDL. By setting the following property-->
|
||||
<!--to true, you can create the AxisService using the generated WSDL and remove the need for a-->
|
||||
<!--WSDL generator. When ?wsdl is called, WSDL is generated in the normal way.-->
|
||||
<parameter name="useGeneratedWSDLinJAXWS">${jaxwsparam}</parameter>
|
||||
|
||||
<!-- Deployer for the dataservice. -->
|
||||
<!--<deployer extensions="dbs" directory="dataservices" class="org.wso2.dataservices.DBDeployer"/>-->
|
||||
|
||||
<!-- Axis1 deployer for Axis2-->
|
||||
<!--<deployer extensions="wsdd" class="org.wso2.carbon.axis1services.Axis1Deployer" directory="axis1services"/>-->
|
||||
|
||||
<!-- POJO service deployer for Jar -->
|
||||
<!--<deployer extensions="jar" class="org.apache.axis2.deployment.POJODeployer" directory="pojoservices"/>-->
|
||||
|
||||
<!-- POJO service deployer for Class -->
|
||||
<!--<deployer extensions="class" class="org.apache.axis2.deployment.POJODeployer" directory="pojoservices"/>-->
|
||||
|
||||
<!-- JAXWS service deployer -->
|
||||
<!--<deployer extensions=".jar" class="org.apache.axis2.jaxws.framework.JAXWSDeployer" directory="servicejars"/>-->
|
||||
<!-- ================================================= -->
|
||||
<!-- Message Receivers -->
|
||||
<!-- ================================================= -->
|
||||
<!--This is the Default Message Receiver for the system , if you want to have MessageReceivers for -->
|
||||
<!--all the other MEP implement it and add the correct entry to here , so that you can refer from-->
|
||||
<!--any operation -->
|
||||
<!--Note : You can ovride this for particular service by adding the same element with your requirement-->
|
||||
|
||||
<messageReceivers>
|
||||
<messageReceiver mep="http://www.w3.org/ns/wsdl/in-only"
|
||||
class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/>
|
||||
<messageReceiver mep="http://www.w3.org/ns/wsdl/robust-in-only"
|
||||
class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/>
|
||||
<messageReceiver mep="http://www.w3.org/ns/wsdl/in-out"
|
||||
class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
|
||||
</messageReceivers>
|
||||
|
||||
<messageFormatters>
|
||||
<messageFormatter contentType="application/x-www-form-urlencoded"
|
||||
class="org.apache.axis2.transport.http.XFormURLEncodedFormatter"/>
|
||||
<messageFormatter contentType="multipart/form-data"
|
||||
class="org.apache.axis2.transport.http.MultipartFormDataFormatter"/>
|
||||
<messageFormatter contentType="application/xml"
|
||||
class="org.apache.axis2.transport.http.ApplicationXMLFormatter"/>
|
||||
<messageFormatter contentType="text/xml"
|
||||
class="org.apache.axis2.transport.http.SOAPMessageFormatter"/>
|
||||
<messageFormatter contentType="application/soap+xml"
|
||||
class="org.apache.axis2.transport.http.SOAPMessageFormatter"/>
|
||||
|
||||
<!--JSON Message Formatters-->
|
||||
<!--messageFormatter contentType="application/json"
|
||||
class="org.apache.axis2.json.JSONMessageFormatter"/-->
|
||||
<messageFormatter contentType="application/json"
|
||||
class="org.apache.axis2.json.gson.JsonFormatter"/>
|
||||
<messageFormatter contentType="application/json/badgerfish"
|
||||
class="org.apache.axis2.json.JSONBadgerfishMessageFormatter"/>
|
||||
<!--messageFormatter contentType="text/javascript"
|
||||
class="org.apache.axis2.json.JSONMessageFormatter"/-->
|
||||
<messageFormatter contentType="text/javascript"
|
||||
class="org.apache.axis2.json.gson.JsonFormatter"/>
|
||||
|
||||
<!--messageFormatter contentType="application/x-www-form-urlencoded"
|
||||
class="org.wso2.carbon.relay.ExpandingMessageFormatter"/-->
|
||||
<!--messageFormatter contentType="multipart/form-data"
|
||||
class="org.wso2.carbon.relay.ExpandingMessageFormatter"/-->
|
||||
<!--messageFormatter contentType="application/xml"
|
||||
class="org.wso2.carbon.relay.ExpandingMessageFormatter"/-->
|
||||
<!--messageFormatter contentType="text/html"
|
||||
class="org.wso2.carbon.relay.ExpandingMessageFormatter"/-->
|
||||
<!--messageFormatter contentType="application/soap+xml"
|
||||
class="org.wso2.carbon.relay.ExpandingMessageFormatter"/-->
|
||||
<!--messageFormatter contentType="x-application/hessian"
|
||||
class="org.apache.synapse.format.hessian.HessianMessageFormatter"/-->
|
||||
<!--<messageFormatter contentType="">
|
||||
class="org.apache.synapse.format.hessian.HessianMessageFormatter"/-->
|
||||
</messageFormatters>
|
||||
|
||||
<messageBuilders>
|
||||
<messageBuilder contentType="application/xml"
|
||||
class="org.apache.axis2.builder.ApplicationXMLBuilder"/>
|
||||
<messageBuilder contentType="application/x-www-form-urlencoded"
|
||||
class="org.apache.axis2.builder.XFormURLEncodedBuilder"/>
|
||||
<messageBuilder contentType="multipart/form-data"
|
||||
class="org.apache.axis2.builder.MultipartFormDataBuilder"/>
|
||||
|
||||
<!--JSON Message Builders-->
|
||||
<!--messageBuilder contentType="application/json"
|
||||
class="org.apache.axis2.json.JSONOMBuilder"/-->
|
||||
<messageBuilder contentType="application/json"
|
||||
class="org.apache.axis2.json.gson.JsonBuilder"/>
|
||||
<messageBuilder contentType="application/json/badgerfish"
|
||||
class="org.apache.axis2.json.JSONBadgerfishOMBuilder"/>
|
||||
<!--messageBuilder contentType="text/javascript"
|
||||
class="org.apache.axis2.json.JSONOMBuilder"/-->
|
||||
<messageBuilder contentType="text/javascript"
|
||||
class="org.apache.axis2.json.gson.JsonBuilder"/>
|
||||
|
||||
<!--messageBuilder contentType="application/xml"
|
||||
class="org.wso2.carbon.relay.BinaryRelayBuilder"/-->
|
||||
<!--messageBuilder contentType="application/x-www-form-urlencoded"
|
||||
class="org.wso2.carbon.relay.BinaryRelayBuilder"/-->
|
||||
<!--messageBuilder contentType="multipart/form-data"
|
||||
class="org.wso2.carbon.relay.BinaryRelayBuilder"/-->
|
||||
<!--messageBuilder contentType="multipart/related"
|
||||
class="org.wso2.carbon.relay.BinaryRelayBuilder"/-->
|
||||
<!--messageBuilder contentType="application/soap+xml"
|
||||
class="org.wso2.carbon.relay.BinaryRelayBuilder"/-->
|
||||
<!--messageBuilder contentType="text/plain"
|
||||
class="org.wso2.carbon.relay.BinaryRelayBuilder"/-->
|
||||
<!--messageBuilder contentType="text/xml"
|
||||
class="org.wso2.carbon.relay.BinaryRelayBuilder"/-->
|
||||
<!--messageFormatter contentType="text/plain"
|
||||
class="org.apache.axis2.format.PlainTextBuilder"/-->
|
||||
<!--messageBuilder contentType="x-application/hessian"
|
||||
class="org.apache.synapse.format.hessian.HessianMessageBuilder"/-->
|
||||
</messageBuilders>
|
||||
|
||||
|
||||
<!-- ================================================= -->
|
||||
<!-- In Transports -->
|
||||
<!-- ================================================= -->
|
||||
<transportReceiver name="http"
|
||||
class="org.wso2.carbon.core.transports.http.HttpTransportListener">
|
||||
<!--
|
||||
Uncomment the following if you are deploying this within an application server. You
|
||||
need to specify the HTTP port of the application server
|
||||
-->
|
||||
<parameter name="port">9763</parameter>
|
||||
|
||||
<!--
|
||||
Uncomment the following to enable any proxy like Apache2 mod_proxy or any load balancer. The port on the proxy server like Apache is 80
|
||||
in this case.
|
||||
-->
|
||||
<!--<parameter name="proxyPort">80</parameter>-->
|
||||
</transportReceiver>
|
||||
|
||||
<!--Please uncomment this in Multiple Instance Scenario if you want to use NIO Transport Recievers and
|
||||
Remove the current transport REceivers in axis2.xml -->
|
||||
<!--transportReceiver name="http" class="org.apache.synapse.transport.nhttp.HttpCoreNIOListener">
|
||||
<parameter name="port" locked="false">8280</parameter>
|
||||
<parameter name="non-blocking" locked="false">true</parameter>
|
||||
</transportReceiver>
|
||||
|
||||
<transportReceiver name="https" class="org.apache.synapse.transport.nhttp.HttpCoreNIOSSLListener">
|
||||
<parameter name="port" locked="false">8243</parameter>
|
||||
<parameter name="non-blocking" locked="false">true</parameter>
|
||||
<parameter name="keystore" locked="false">
|
||||
<KeyStore>
|
||||
<Location>repository/resources/security/wso2carbon.jks</Location>
|
||||
<Type>JKS</Type>
|
||||
<Password>wso2carbon</Password>
|
||||
<KeyPassword>wso2carbon</KeyPassword>
|
||||
</KeyStore>
|
||||
</parameter>
|
||||
<parameter name="truststore" locked="false">
|
||||
<TrustStore>
|
||||
<Location>repository/resources/security/client-truststore.jks</Location>
|
||||
<Type>JKS</Type>
|
||||
<Password>wso2carbon</Password>
|
||||
</TrustStore>
|
||||
</parameter>
|
||||
</transportReceiver-->
|
||||
|
||||
|
||||
<transportReceiver name="https"
|
||||
class="org.wso2.carbon.core.transports.http.HttpsTransportListener">
|
||||
<!--
|
||||
Uncomment the following if you are deploying this within an application server. You
|
||||
need to specify the HTTPS port of the application server
|
||||
-->
|
||||
<parameter name="port">9443</parameter>
|
||||
|
||||
<!--
|
||||
Uncomment the following to enable any proxy like Apache2 mod_proxy or any load balancer. The port on a proxy server like Apache is 443
|
||||
in this case.
|
||||
-->
|
||||
<!--<parameter name="proxyPort">443</parameter>-->
|
||||
</transportReceiver>
|
||||
|
||||
<!--
|
||||
Uncomment the following segment to enable TCP transport.
|
||||
Note : Addressing module should be engaged for TCP transport to work
|
||||
-->
|
||||
<!--<transportReceiver name="tcp"
|
||||
class="org.apache.axis2.transport.tcp.TCPServer">
|
||||
<parameter name="port">6667</parameter>
|
||||
</transportReceiver>-->
|
||||
|
||||
<!--
|
||||
To Enable Mail Transport Listener, please uncomment the following.
|
||||
-->
|
||||
<!--<transportReceiver name="mailto" class="org.apache.axis2.transport.mail.MailTransportListener">
|
||||
|
||||
</transportReceiver>-->
|
||||
|
||||
|
||||
<!--
|
||||
Uncomment this and configure as appropriate for JMS transport support,
|
||||
after setting up your JMS environment (e.g. ActiveMQ)
|
||||
-->
|
||||
<!--<transportReceiver name="jms" class="org.apache.axis2.transport.jms.JMSListener">
|
||||
<parameter name="myTopicConnectionFactory">
|
||||
<parameter name="java.naming.factory.initial">org.apache.activemq.jndi.ActiveMQInitialContextFactory</parameter>
|
||||
<parameter name="java.naming.provider.url">tcp://localhost:61616</parameter>
|
||||
<parameter name="transport.jms.ConnectionFactoryJNDIName">TopicConnectionFactory</parameter>
|
||||
</parameter>
|
||||
|
||||
<parameter name="myQueueConnectionFactory">
|
||||
<parameter name="java.naming.factory.initial">org.apache.activemq.jndi.ActiveMQInitialContextFactory</parameter>
|
||||
<parameter name="java.naming.provider.url">tcp://localhost:61616</parameter>
|
||||
<parameter name="transport.jms.ConnectionFactoryJNDIName">QueueConnectionFactory</parameter>
|
||||
</parameter>
|
||||
|
||||
<parameter name="default">
|
||||
<parameter name="java.naming.factory.initial">org.apache.activemq.jndi.ActiveMQInitialContextFactory</parameter>
|
||||
<parameter name="java.naming.provider.url">tcp://localhost:61616</parameter>
|
||||
<parameter name="transport.jms.ConnectionFactoryJNDIName">QueueConnectionFactory</parameter>
|
||||
</parameter>
|
||||
</transportReceiver>-->
|
||||
|
||||
<!--Uncomment this and configure as appropriate for JMS transport support with Apache Qpid -->
|
||||
<!--transportReceiver name="jms" class="org.apache.axis2.transport.jms.JMSListener">
|
||||
<parameter name="myTopicConnectionFactory" locked="false">
|
||||
<parameter name="java.naming.factory.initial" locked="false">org.apache.qpid.jndi.PropertiesFileInitialContextFactory</parameter>
|
||||
<parameter name="java.naming.provider.url" locked="false">repository/conf/jndi.properties</parameter>
|
||||
<parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">TopicConnectionFactory</parameter>
|
||||
<parameter name="transport.jms.ConnectionFactoryType" locked="false">topic</parameter>
|
||||
</parameter>
|
||||
|
||||
<parameter name="myQueueConnectionFactory" locked="false">
|
||||
<parameter name="java.naming.factory.initial" locked="false">org.apache.qpid.jndi.PropertiesFileInitialContextFactory</parameter>
|
||||
<parameter name="java.naming.provider.url" locked="false">repository/conf/jndi.properties</parameter>
|
||||
<parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">QueueConnectionFactory</parameter>
|
||||
<parameter name="transport.jms.ConnectionFactoryType" locked="false">queue</parameter>
|
||||
</parameter>
|
||||
|
||||
<parameter name="default" locked="false">
|
||||
<parameter name="java.naming.factory.initial" locked="false">org.apache.qpid.jndi.PropertiesFileInitialContextFactory</parameter>
|
||||
<parameter name="java.naming.provider.url" locked="false">repository/conf/jndi.properties</parameter>
|
||||
<parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">QueueConnectionFactory</parameter>
|
||||
<parameter name="transport.jms.ConnectionFactoryType" locked="false">queue</parameter>
|
||||
</parameter>
|
||||
</transportReceiver-->
|
||||
|
||||
<!--Uncomment this and configure as appropriate for JMS transport support with WSO2 MB 2.x.x -->
|
||||
<!--transportReceiver name="jms" class="org.apache.axis2.transport.jms.JMSListener">
|
||||
<parameter name="myTopicConnectionFactory" locked="false">
|
||||
<parameter name="java.naming.factory.initial" locked="false">org.wso2.andes.jndi.PropertiesFileInitialContextFactory</parameter>
|
||||
<parameter name="java.naming.provider.url" locked="false">repository/conf/jndi.properties</parameter>
|
||||
<parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">TopicConnectionFactory</parameter>
|
||||
<parameter name="transport.jms.ConnectionFactoryType" locked="false">topic</parameter>
|
||||
</parameter>
|
||||
|
||||
<parameter name="myQueueConnectionFactory" locked="false">
|
||||
<parameter name="java.naming.factory.initial" locked="false">org.wso2.andes.jndi.PropertiesFileInitialContextFactory</parameter>
|
||||
<parameter name="java.naming.provider.url" locked="false">repository/conf/jndi.properties</parameter>
|
||||
<parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">QueueConnectionFactory</parameter>
|
||||
<parameter name="transport.jms.ConnectionFactoryType" locked="false">queue</parameter>
|
||||
</parameter>
|
||||
|
||||
<parameter name="default" locked="false">
|
||||
<parameter name="java.naming.factory.initial" locked="false">org.wso2.andes.jndi.PropertiesFileInitialContextFactory</parameter>
|
||||
<parameter name="java.naming.provider.url" locked="false">repository/conf/jndi.properties</parameter>
|
||||
<parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">QueueConnectionFactory</parameter>
|
||||
<parameter name="transport.jms.ConnectionFactoryType" locked="false">queue</parameter>
|
||||
</parameter>
|
||||
</transportReceiver-->
|
||||
|
||||
|
||||
<!-- ================================================= -->
|
||||
<!-- Out Transports -->
|
||||
<!-- ================================================= -->
|
||||
|
||||
<!--transportSender name="tcp"
|
||||
class="org.apache.axis2.transport.tcp.TCPTransportSender"/-->
|
||||
<transportReceiver name="local"
|
||||
class="org.wso2.carbon.core.transports.local.CarbonLocalTransportReceiver"/>
|
||||
<transportSender name="local"
|
||||
class="org.wso2.carbon.core.transports.local.CarbonLocalTransportSender"/>
|
||||
<!--<transportSender name="jms"
|
||||
class="org.apache.axis2.transport.jms.JMSSender"/>-->
|
||||
<transportSender name="http"
|
||||
class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
|
||||
<parameter name="PROTOCOL">HTTP/1.1</parameter>
|
||||
<parameter name="Transfer-Encoding">chunked</parameter>
|
||||
<!-- This parameter has been added to overcome problems encounted in SOAP action parameter -->
|
||||
<parameter name="OmitSOAP12Action">true</parameter>
|
||||
</transportSender>
|
||||
<transportSender name="https"
|
||||
class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
|
||||
<parameter name="PROTOCOL">HTTP/1.1</parameter>
|
||||
<parameter name="Transfer-Encoding">chunked</parameter>
|
||||
<!-- This parameter has been added to overcome problems encounted in SOAP action parameter -->
|
||||
<parameter name="OmitSOAP12Action">true</parameter>
|
||||
</transportSender>
|
||||
|
||||
<!-- To enable mail transport sender, ncomment the following and change the parameters
|
||||
accordingly-->
|
||||
<!--<transportSender name="mailto"
|
||||
class="org.apache.axis2.transport.mail.MailTransportSender">
|
||||
<parameter name="mail.smtp.from">wso2demomail@gmail.com</parameter>
|
||||
<parameter name="mail.smtp.user">wso2demomail</parameter>
|
||||
<parameter name="mail.smtp.password">mailpassword</parameter>
|
||||
<parameter name="mail.smtp.host">smtp.gmail.com</parameter>
|
||||
|
||||
<parameter name="mail.smtp.port">587</parameter>
|
||||
<parameter name="mail.smtp.starttls.enable">true</parameter>
|
||||
<parameter name="mail.smtp.auth">true</parameter>
|
||||
</transportSender>-->
|
||||
|
||||
<!--Please uncomment this in Multiple Instance Scenario if you want to use NIO sender -->
|
||||
<!--
|
||||
<transportSender name="http" class="org.apache.synapse.transport.nhttp.HttpCoreNIOSender">
|
||||
<parameter name="non-blocking" locked="false">true</parameter>
|
||||
</transportSender>
|
||||
<transportSender name="https" class="org.apache.synapse.transport.nhttp.HttpCoreNIOSSLSender">
|
||||
<parameter name="non-blocking" locked="false">true</parameter>
|
||||
<parameter name="keystore" locked="false">
|
||||
<KeyStore>
|
||||
<Location>repository/resources/security/wso2carbon.jks</Location>
|
||||
<Type>JKS</Type>
|
||||
<Password>wso2carbon</Password>
|
||||
<KeyPassword>wso2carbon</KeyPassword>
|
||||
</KeyStore>
|
||||
</parameter>
|
||||
<parameter name="truststore" locked="false">
|
||||
<TrustStore>
|
||||
<Location>repository/resources/security/client-truststore.jks</Location>
|
||||
<Type>JKS</Type>
|
||||
<Password>wso2carbon</Password>
|
||||
</TrustStore>
|
||||
</parameter>
|
||||
</transportSender>
|
||||
-->
|
||||
|
||||
|
||||
<!-- ================================================= -->
|
||||
<!-- Phases -->
|
||||
<!-- ================================================= -->
|
||||
<phaseOrder type="InFlow">
|
||||
<!-- System pre defined phases -->
|
||||
<!--
|
||||
The MsgInObservation phase is used to observe messages as soon as they are
|
||||
received. In this phase, we could do some things such as SOAP message tracing & keeping
|
||||
track of the time at which a particular message was received
|
||||
|
||||
NOTE: This should be the very first phase in this flow
|
||||
-->
|
||||
<phase name="MsgInObservation"/>
|
||||
|
||||
<phase name="Validation"/>
|
||||
<phase name="Transport">
|
||||
<handler name="RequestURIBasedDispatcher"
|
||||
class="org.apache.axis2.dispatchers.RequestURIBasedDispatcher">
|
||||
<order phase="Transport"/>
|
||||
</handler>
|
||||
<handler name="SOAPActionBasedDispatcher"
|
||||
class="org.apache.axis2.dispatchers.SOAPActionBasedDispatcher">
|
||||
<order phase="Transport"/>
|
||||
</handler>
|
||||
<handler name="RequestURIOperationDispatcher"
|
||||
class="org.apache.axis2.dispatchers.RequestURIOperationDispatcher"/>
|
||||
<handler name="JSONMessageHandler"
|
||||
class="org.apache.axis2.json.gson.JSONMessageHandler"/>
|
||||
</phase>
|
||||
<phase name="Addressing">
|
||||
<handler name="AddressingBasedDispatcher"
|
||||
class="org.wso2.carbon.core.multitenancy.MultitenantAddressingBasedDispatcher">
|
||||
<order phase="Addressing"/>
|
||||
</handler>
|
||||
</phase>
|
||||
<phase name="Ghost">
|
||||
<handler name="GhostDispatcher"
|
||||
class="org.wso2.carbon.core.dispatchers.GhostDispatcher"/>
|
||||
</phase>
|
||||
<phase name="Security"/>
|
||||
<phase name="PreDispatch"/>
|
||||
<phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
|
||||
<handler name="RequestURIBasedDispatcher"
|
||||
class="org.apache.axis2.dispatchers.RequestURIBasedDispatcher"/>
|
||||
<handler name="SOAPActionBasedDispatcher"
|
||||
class="org.apache.axis2.dispatchers.SOAPActionBasedDispatcher"/>
|
||||
<handler name="SOAPMessageBodyBasedDispatcher"
|
||||
class="org.apache.axis2.dispatchers.SOAPMessageBodyBasedDispatcher"/>
|
||||
|
||||
<handler name="HTTPLocationBasedDispatcher"
|
||||
class="org.apache.axis2.dispatchers.HTTPLocationBasedDispatcher"/>
|
||||
</phase>
|
||||
<!-- System pre defined phases -->
|
||||
<phase name="RMPhase"/>
|
||||
<phase name="OpPhase"/>
|
||||
<!-- After Postdispatch phase module author or or service author can add any phase he want -->
|
||||
<phase name="OperationInPhase"/>
|
||||
</phaseOrder>
|
||||
<phaseOrder type="OutFlow">
|
||||
<!-- Handlers related to unified-endpoint component are added to the UEPPhase -->
|
||||
<phase name="UEPPhase"/>
|
||||
<phase name="RMPhase"/>
|
||||
<phase name="OpPhase"/>
|
||||
<!-- user can add his own phases to this area -->
|
||||
<phase name="OperationOutPhase"/>
|
||||
<!--system predefined phase-->
|
||||
<!--these phase will run irrespective of the service-->
|
||||
<phase name="PolicyDetermination"/>
|
||||
<phase name="MessageOut"/>
|
||||
<phase name="Security"/>
|
||||
|
||||
<!--
|
||||
The MsgOutObservation phase is used to observe messages just before the
|
||||
responses are sent out. In this phase, we could do some things such as SOAP message
|
||||
tracing & keeping track of the time at which a particular response was sent.
|
||||
|
||||
NOTE: This should be the very last phase in this flow
|
||||
-->
|
||||
<phase name="MsgOutObservation"/>
|
||||
<!--Following phase is added to publish stats -->
|
||||
<phase name="StatReporting"/>
|
||||
</phaseOrder>
|
||||
<phaseOrder type="InFaultFlow">
|
||||
<!-- System pre defined phases -->
|
||||
<!--
|
||||
The MsgInObservation phase is used to observe messages as soon as they are
|
||||
received. In this phase, we could do some things such as SOAP message tracing & keeping
|
||||
track of the time at which a particular message was received
|
||||
|
||||
NOTE: This should be the very first phase in this flow
|
||||
-->
|
||||
<phase name="MsgInObservation"/>
|
||||
|
||||
<phase name="Validation"/>
|
||||
<phase name="Transport">
|
||||
<handler name="RequestURIBasedDispatcher"
|
||||
class="org.apache.axis2.dispatchers.RequestURIBasedDispatcher">
|
||||
<order phase="Transport"/>
|
||||
</handler>
|
||||
<handler name="SOAPActionBasedDispatcher"
|
||||
class="org.apache.axis2.dispatchers.SOAPActionBasedDispatcher">
|
||||
<order phase="Transport"/>
|
||||
</handler>
|
||||
</phase>
|
||||
|
||||
<phase name="Addressing">
|
||||
<handler name="AddressingBasedDispatcher"
|
||||
class="org.apache.axis2.dispatchers.AddressingBasedDispatcher">
|
||||
<order phase="Addressing"/>
|
||||
</handler>
|
||||
</phase>
|
||||
<phase name="Ghost">
|
||||
<handler name="GhostDispatcher"
|
||||
class="org.wso2.carbon.core.dispatchers.GhostDispatcher"/>
|
||||
</phase>
|
||||
<phase name="Security"/>
|
||||
<phase name="PreDispatch"/>
|
||||
<phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
|
||||
<handler name="RequestURIBasedDispatcher"
|
||||
class="org.apache.axis2.dispatchers.RequestURIBasedDispatcher"/>
|
||||
<handler name="SOAPActionBasedDispatcher"
|
||||
class="org.apache.axis2.dispatchers.SOAPActionBasedDispatcher"/>
|
||||
<handler name="SOAPMessageBodyBasedDispatcher"
|
||||
class="org.apache.axis2.dispatchers.SOAPMessageBodyBasedDispatcher"/>
|
||||
|
||||
<handler name="HTTPLocationBasedDispatcher"
|
||||
class="org.apache.axis2.dispatchers.HTTPLocationBasedDispatcher"/>
|
||||
</phase>
|
||||
<phase name="RMPhase"/>
|
||||
<phase name="OpPhase"/>
|
||||
<!-- user can add his own phases to this area -->
|
||||
<phase name="OperationInFaultPhase"/>
|
||||
</phaseOrder>
|
||||
<phaseOrder type="OutFaultFlow">
|
||||
<!-- Handlers related to unified-endpoint component are added to the UEPPhase -->
|
||||
<phase name="UEPPhase"/>
|
||||
<phase name="RMPhase"/>
|
||||
<!-- user can add his own phases to this area -->
|
||||
<phase name="OperationOutFaultPhase"/>
|
||||
<phase name="PolicyDetermination"/>
|
||||
<phase name="MessageOut"/>
|
||||
<phase name="Security"/>
|
||||
<phase name="Transport"/>
|
||||
<!--
|
||||
The MsgOutObservation phase is used to observe messages just before the
|
||||
responses are sent out. In this phase, we could do some things such as SOAP message
|
||||
tracing & keeping track of the time at which a particular response was sent.
|
||||
|
||||
NOTE: This should be the very last phase in this flow
|
||||
-->
|
||||
<phase name="MsgOutObservation"/>
|
||||
<!--Following phase is added to publish stats -->
|
||||
<phase name="StatReporting"/>
|
||||
</phaseOrder>
|
||||
|
||||
<clustering class="org.wso2.carbon.core.clustering.hazelcast.HazelcastClusteringAgent"
|
||||
enable="false">
|
||||
|
||||
<!--
|
||||
This parameter indicates whether the cluster has to be automatically initalized
|
||||
when the AxisConfiguration is built. If set to "true" the initialization will not be
|
||||
done at that stage, and some other party will have to explictly initialize the cluster.
|
||||
-->
|
||||
<parameter name="AvoidInitiation">true</parameter>
|
||||
|
||||
<!--
|
||||
The membership scheme used in this setup. The only values supported at the moment are
|
||||
"multicast" and "wka"
|
||||
|
||||
1. multicast - membership is automatically discovered using multicasting
|
||||
2. wka - Well-Known Address based multicasting. Membership is discovered with the help
|
||||
of one or more nodes running at a Well-Known Address. New members joining a
|
||||
cluster will first connect to a well-known node, register with the well-known node
|
||||
and get the membership list from it. When new members join, one of the well-known
|
||||
nodes will notify the others in the group. When a member leaves the cluster or
|
||||
is deemed to have left the cluster, it will be detected by the Group Membership
|
||||
Service (GMS) using a TCP ping mechanism.
|
||||
-->
|
||||
<parameter name="membershipScheme">multicast</parameter>
|
||||
<!--<parameter name="licenseKey">xxx</parameter>-->
|
||||
<!--<parameter name="mgtCenterURL">http://localhost:8081/mancenter/</parameter>-->
|
||||
|
||||
<!--
|
||||
The clustering domain/group. Nodes in the same group will belong to the same multicast
|
||||
domain. There will not be interference between nodes in different groups.
|
||||
-->
|
||||
<parameter name="domain">wso2.carbon.domain</parameter>
|
||||
|
||||
<!-- The multicast address to be used -->
|
||||
<!--<parameter name="mcastAddress">228.0.0.4</parameter>-->
|
||||
|
||||
<!-- The multicast port to be used -->
|
||||
<parameter name="mcastPort">45564</parameter>
|
||||
|
||||
<parameter name="mcastTTL">100</parameter>
|
||||
|
||||
<parameter name="mcastTimeout">60</parameter>
|
||||
|
||||
<!--
|
||||
The IP address of the network interface to which the multicasting has to be bound to.
|
||||
Multicasting would be done using this interface.
|
||||
-->
|
||||
<!--
|
||||
<parameter name="mcastBindAddress">127.0.0.1</parameter>
|
||||
-->
|
||||
<!-- The host name or IP address of this member -->
|
||||
|
||||
<parameter name="localMemberHost">127.0.0.1</parameter>
|
||||
|
||||
<!--
|
||||
The bind adress of this member. The difference between localMemberHost & localMemberBindAddress
|
||||
is that localMemberHost is the one that is advertised by this member, while localMemberBindAddress
|
||||
is the address to which this member is bound to.
|
||||
-->
|
||||
<!--
|
||||
<parameter name="localMemberBindAddress">127.0.0.1</parameter>
|
||||
-->
|
||||
|
||||
<!--
|
||||
The TCP port used by this member. This is the port through which other nodes will
|
||||
contact this member
|
||||
-->
|
||||
<parameter name="localMemberPort">4000</parameter>
|
||||
|
||||
<!--
|
||||
The bind port of this member. The difference between localMemberPort & localMemberBindPort
|
||||
is that localMemberPort is the one that is advertised by this member, while localMemberBindPort
|
||||
is the port to which this member is bound to.
|
||||
-->
|
||||
<!--
|
||||
<parameter name="localMemberBindPort">4001</parameter>
|
||||
-->
|
||||
|
||||
<!--
|
||||
Properties specific to this member
|
||||
-->
|
||||
<parameter name="properties">
|
||||
<property name="backendServerURL" value="https://${hostName}:${httpsPort}/services/"/>
|
||||
<property name="mgtConsoleURL" value="https://${hostName}:${httpsPort}/"/>
|
||||
<property name="subDomain" value="worker"/>
|
||||
</parameter>
|
||||
|
||||
<!--
|
||||
Uncomment the following section to load custom Hazelcast data serializers.
|
||||
-->
|
||||
<!--
|
||||
<parameter name="hazelcastSerializers">
|
||||
<serializer typeClass="java.util.TreeSet">org.wso2.carbon.hazelcast.serializer.TreeSetSerializer
|
||||
</serializer>
|
||||
<serializer typeClass="java.util.Map">org.wso2.carbon.hazelcast.serializer.MapSerializer</serializer>
|
||||
</parameter>
|
||||
-->
|
||||
|
||||
<!--
|
||||
The list of static or well-known members. These entries will only be valid if the
|
||||
"membershipScheme" above is set to "wka"
|
||||
-->
|
||||
<members>
|
||||
<member>
|
||||
<hostName>127.0.0.1</hostName>
|
||||
<port>4000</port>
|
||||
</member>
|
||||
</members>
|
||||
|
||||
<!--
|
||||
Enable the groupManagement entry if you need to run this node as a cluster manager.
|
||||
Multiple application domains with different GroupManagementAgent implementations
|
||||
can be defined in this section.
|
||||
-->
|
||||
<groupManagement enable="false">
|
||||
<applicationDomain name="wso2.as.domain"
|
||||
description="AS group"
|
||||
agent="org.wso2.carbon.core.clustering.hazelcast.HazelcastGroupManagementAgent"
|
||||
subDomain="worker"
|
||||
port="2222"/>
|
||||
</groupManagement>
|
||||
</clustering>
|
||||
</axisconfig>
|
@ -0,0 +1,303 @@
|
||||
<!--
|
||||
~ Copyright (C) 2018 - 2023 Entgra (Pvt) Ltd, Inc - All Rights Reserved.
|
||||
~
|
||||
~ Unauthorised copying/redistribution of this file, via any medium is strictly prohibited.
|
||||
~
|
||||
~ Licensed under the Entgra Commercial License, Version 1.0 (the "License");
|
||||
~ you may not use this file except in compliance with the License.
|
||||
~ You may obtain a copy of the License at
|
||||
~
|
||||
~ https://entgra.io/licenses/entgra-commercial/1.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.
|
||||
-->
|
||||
|
||||
<axisconfig name="AxisJava2.0">
|
||||
<!-- ================================================= -->
|
||||
<!-- Parameters -->
|
||||
<!-- ================================================= -->
|
||||
<parameter name="hotdeployment">true</parameter>
|
||||
<parameter name="hotupdate">false</parameter>
|
||||
<parameter name="enableMTOM">false</parameter>
|
||||
|
||||
<!-- commons-http-client defaultMaxConnPerHost -->
|
||||
<parameter name="defaultMaxConnPerHost">500</parameter>
|
||||
<!-- commons-http-client maxTotalConnections -->
|
||||
<parameter name="maxTotalConnections">15000</parameter>
|
||||
|
||||
<!--If turned on with use the Accept header of the request to determine the contentType of the
|
||||
response-->
|
||||
<parameter name="httpContentNegotiation">false</parameter>
|
||||
|
||||
<!--During a fault, stacktrace can be sent with the fault message. The following flag will control -->
|
||||
<!--that behaviour.-->
|
||||
<parameter name="sendStacktraceDetailsWithFaults">true</parameter>
|
||||
|
||||
<!--If there aren't any information available to find out the fault reason, we set the message of the exception-->
|
||||
<!--as the faultreason/Reason. But when a fault is thrown from a service or some where, it will be -->
|
||||
<!--wrapped by different levels. Due to this the initial exception message can be lost. If this flag-->
|
||||
<!--is set then, Axis2 tries to get the first exception and set its message as the faultreason/Reason.-->
|
||||
<parameter name="DrillDownToRootCauseForFaultReason">false</parameter>
|
||||
|
||||
<!--This is the user name and password of admin console-->
|
||||
<parameter name="userName">admin</parameter>
|
||||
<parameter name="password">axis2</parameter>
|
||||
|
||||
<!--To override repository/services you need to uncomment following parameter and value SHOULD be absolute file path.-->
|
||||
<!--ServicesDirectory only works on the following cases-->
|
||||
<!---File based configurator and in that case the value should be a file URL (http:// not allowed)-->
|
||||
<!---When creating URL Based configurator with URL “file://” -->
|
||||
<!--- War based configurator with expanded case , -->
|
||||
|
||||
<!--All the other scenarios it will be ignored.-->
|
||||
<!--<parameter name="ServicesDirectory">service</parameter>-->
|
||||
<!--To override repository/modules you need to uncomment following parameter and value SHOULD be absolute file path-->
|
||||
<!--<parameter name="ModulesDirectory">modules</parameter>-->
|
||||
|
||||
<!--Following params will set the proper context paths for invocations. All the endpoints will have a commons context-->
|
||||
<!--root which can configured using the following contextRoot parameter-->
|
||||
<!--<parameter name="contextRoot">axis2</parameter>-->
|
||||
|
||||
<!--Our HTTP endpoints can handle both REST and SOAP. Following parameters can be used to distinguish those endpoints-->
|
||||
<!--<parameter name="servicePath">services</parameter>-->
|
||||
<!--<parameter name="restPath">rest</parameter>-->
|
||||
|
||||
<!-- Following parameter will completely disable REST handling in Axis2-->
|
||||
<parameter name="disableREST" locked="false">false</parameter>
|
||||
|
||||
<!--POJO deployer , this will alow users to drop .class file and make that into a service-->
|
||||
<deployer extension=".class" directory="pojo" class="org.apache.axis2.deployment.POJODeployer"/>
|
||||
|
||||
<!-- Following parameter will set the host name for the epr-->
|
||||
<!--<parameter name="hostname" locked="true">myhost.com</parameter>-->
|
||||
|
||||
<!-- ================================================= -->
|
||||
<!-- Message Receivers -->
|
||||
<!-- ================================================= -->
|
||||
<!--This is the Default Message Receiver for the system , if you want to have MessageReceivers for -->
|
||||
<!--all the other MEP implement it and add the correct entry to here , so that you can refer from-->
|
||||
<!--any operation -->
|
||||
<!--Note : You can override this for particular service by adding the same element with your requirement-->
|
||||
<messageReceivers>
|
||||
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"
|
||||
class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver"/>
|
||||
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
|
||||
class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
|
||||
<messageReceiver mep="http://www.w3.org/2006/01/wsdl/in-only"
|
||||
class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver"/>
|
||||
<messageReceiver mep="http://www.w3.org/2006/01/wsdl/in-out"
|
||||
class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
|
||||
</messageReceivers>
|
||||
|
||||
<!-- ================================================= -->
|
||||
<!-- Message Formatter -->
|
||||
<!-- ================================================= -->
|
||||
<!--Following content type to message formatter mapping can be used to implement support for different message -->
|
||||
<!--format serialization in Axis2. These message formats are expected to be resolved based on the content type. -->
|
||||
<messageFormatters>
|
||||
<messageFormatter contentType="application/x-www-form-urlencoded"
|
||||
class="org.apache.axis2.transport.http.XFormURLEncodedFormatter"/>
|
||||
<messageFormatter contentType="multipart/form-data"
|
||||
class="org.apache.axis2.transport.http.MultipartFormDataFormatter"/>
|
||||
<messageFormatter contentType="application/xml"
|
||||
class="org.apache.axis2.transport.http.ApplicationXMLFormatter"/>
|
||||
<messageFormatter contentType="text/xml"
|
||||
class="org.apache.axis2.transport.http.SOAPMessageFormatter"/>
|
||||
<messageFormatter contentType="application/soap+xml"
|
||||
class="org.apache.axis2.transport.http.SOAPMessageFormatter"/>
|
||||
<!--JSON Message Formatters-->
|
||||
<messageFormatter contentType="application/json"
|
||||
class="org.apache.axis2.json.JSONMessageFormatter"/>
|
||||
<messageFormatter contentType="application/json/badgerfish"
|
||||
class="org.apache.axis2.json.JSONBadgerfishMessageFormatter"/>
|
||||
<messageFormatter contentType="text/javascript"
|
||||
class="org.apache.axis2.json.JSONMessageFormatter"/>
|
||||
</messageFormatters>
|
||||
|
||||
<!-- ================================================= -->
|
||||
<!-- Message Builders -->
|
||||
<!-- ================================================= -->
|
||||
<!--Following content type to builder mapping can be used to implement support for different message -->
|
||||
<!--formats in Axis2. These message formats are expected to be resolved based on the content type. -->
|
||||
<messageBuilders>
|
||||
<messageBuilder contentType="application/xml"
|
||||
class="org.apache.axis2.builder.ApplicationXMLBuilder"/>
|
||||
<messageBuilder contentType="application/x-www-form-urlencoded"
|
||||
class="org.apache.axis2.builder.XFormURLEncodedBuilder"/>
|
||||
<!--JSON Message Builders-->
|
||||
<messageBuilder contentType="application/json"
|
||||
class="org.apache.axis2.json.JSONOMBuilder"/>
|
||||
<messageBuilder contentType="application/json/badgerfish"
|
||||
class="org.apache.axis2.json.JSONBadgerfishOMBuilder"/>
|
||||
<messageBuilder contentType="text/javascript"
|
||||
class="org.apache.axis2.json.JSONOMBuilder"/>
|
||||
<!--Left commented because it adds the depandancy of servlet-api to other modules.
|
||||
Please uncomment to Receive messages in multipart/form-data format-->
|
||||
<!--<messageBuilder contentType="multipart/form-data"-->
|
||||
<!--class="org.apache.axis2.builder.MultipartFormDataBuilder"/>-->
|
||||
</messageBuilders>
|
||||
|
||||
<!-- ================================================= -->
|
||||
<!-- Target Resolvers -->
|
||||
<!-- ================================================= -->
|
||||
<!-- Uncomment the following and specify the class name for your TargetResolver to add -->
|
||||
<!-- a TargetResolver. TargetResolvers are used to process the To EPR for example to -->
|
||||
<!-- choose a server in a cluster -->
|
||||
<!--<targetResolvers>-->
|
||||
<!--<targetResolver class="" />-->
|
||||
<!--</targetResolvers>-->
|
||||
|
||||
|
||||
<!-- ================================================= -->
|
||||
<!-- Transport Ins -->
|
||||
<!-- ================================================= -->
|
||||
<transportReceiver name="http"
|
||||
class="org.apache.axis2.transport.http.SimpleHTTPServer">
|
||||
<parameter name="port">6071</parameter>
|
||||
<!--If you want to give your own host address for EPR generation-->
|
||||
<!--uncomment following parameter , and set as you required.-->
|
||||
<!--<parameter name="hostname">http://myApp.com/ws</parameter>-->
|
||||
</transportReceiver>
|
||||
|
||||
<!--Uncomment if you want to have TCP transport support-->
|
||||
<!--<transportReceiver name="tcp"
|
||||
class="org.apache.axis2.transport.tcp.TCPServer">
|
||||
<parameter name="port">6061</parameter>-->
|
||||
<!--If you want to give your own host address for EPR generation-->
|
||||
<!--uncomment following parameter , and set as you required.-->
|
||||
<!--<parameter name="hostname">tcp://myApp.com/ws</parameter>-->
|
||||
<!--</transportReceiver>-->
|
||||
|
||||
<!-- ================================================= -->
|
||||
<!-- Transport Outs -->
|
||||
<!-- ================================================= -->
|
||||
|
||||
<!--<transportSender name="jms"-->
|
||||
<!--class="org.apache.axis2.transport.jms.JMSSender"/>-->
|
||||
<!--transportSender name="tcp"
|
||||
class="org.apache.axis2.transport.tcp.TCPTransportSender"/-->
|
||||
<transportSender name="local"
|
||||
class="org.apache.axis2.transport.local.LocalTransportSender"/>
|
||||
<transportSender name="http"
|
||||
class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
|
||||
<parameter name="PROTOCOL">HTTP/1.1</parameter>
|
||||
<parameter name="Transfer-Encoding">chunked</parameter>
|
||||
<parameter name="SO_TIMEOUT">60000</parameter>
|
||||
<parameter name="CONNECTION_TIMEOUT">60000</parameter>
|
||||
</transportSender>
|
||||
<transportSender name="https"
|
||||
class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
|
||||
<parameter name="PROTOCOL">HTTP/1.1</parameter>
|
||||
<parameter name="Transfer-Encoding">chunked</parameter>
|
||||
<parameter name="SO_TIMEOUT">60000</parameter>
|
||||
<parameter name="CONNECTION_TIMEOUT">60000</parameter>
|
||||
</transportSender>
|
||||
<!--<transportSender name="java"-->
|
||||
<!--class="org.apache.axis2.transport.java.JavaTransportSender"/>-->
|
||||
|
||||
|
||||
<!-- ================================================= -->
|
||||
<!-- SOAP Role Configuration -->
|
||||
<!-- ================================================= -->
|
||||
<!-- Use the following pattern to configure this axis2
|
||||
instance to act in particular roles. Note that in
|
||||
the absence of any configuration, Axis2 will act
|
||||
only in the ultimate receiver role -->
|
||||
<!--
|
||||
<SOAPRoleConfiguration isUltimateReceiver="true">
|
||||
<role>http://my/custom/role</role>
|
||||
</SOAPRoleConfiguration>
|
||||
-->
|
||||
|
||||
<!-- ================================================= -->
|
||||
<!-- Phases -->
|
||||
<!-- ================================================= -->
|
||||
<phaseOrder type="InFlow">
|
||||
<!-- System pre-defined phases -->
|
||||
<phase name="Transport">
|
||||
<handler name="RequestURIBasedDispatcher"
|
||||
class="org.apache.axis2.dispatchers.RequestURIBasedDispatcher">
|
||||
<order phase="Transport"/>
|
||||
</handler>
|
||||
<handler name="SOAPActionBasedDispatcher"
|
||||
class="org.apache.axis2.dispatchers.SOAPActionBasedDispatcher">
|
||||
<order phase="Transport"/>
|
||||
</handler>
|
||||
</phase>
|
||||
<phase name="Addressing">
|
||||
<handler name="AddressingBasedDispatcher"
|
||||
class="org.apache.axis2.dispatchers.AddressingBasedDispatcher">
|
||||
<order phase="Addressing"/>
|
||||
</handler>
|
||||
</phase>
|
||||
<phase name="Security"/>
|
||||
<phase name="PreDispatch"/>
|
||||
<phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
|
||||
<handler name="RequestURIBasedDispatcher"
|
||||
class="org.apache.axis2.dispatchers.RequestURIBasedDispatcher"/>
|
||||
<handler name="SOAPActionBasedDispatcher"
|
||||
class="org.apache.axis2.dispatchers.SOAPActionBasedDispatcher"/>
|
||||
<handler name="RequestURIOperationDispatcher"
|
||||
class="org.apache.axis2.dispatchers.RequestURIOperationDispatcher"/>
|
||||
<handler name="SOAPMessageBodyBasedDispatcher"
|
||||
class="org.apache.axis2.dispatchers.SOAPMessageBodyBasedDispatcher"/>
|
||||
|
||||
<handler name="HTTPLocationBasedDispatcher"
|
||||
class="org.apache.axis2.dispatchers.HTTPLocationBasedDispatcher"/>
|
||||
</phase>
|
||||
<phase name="RMPhase"/>
|
||||
<!-- System pre defined phases -->
|
||||
<!-- After Postdispatch phase module author or or service author can add any phase he want -->
|
||||
<phase name="OperationInPhase"/>
|
||||
</phaseOrder>
|
||||
<phaseOrder type="OutFlow">
|
||||
<!-- user can add his own phases to this area -->
|
||||
<phase name="OperationOutPhase"/>
|
||||
<!--system predefined phase-->
|
||||
<!--these phase will run irrespective of the service-->
|
||||
<phase name="RMPhase"/>
|
||||
<phase name="PolicyDetermination"/>
|
||||
<phase name="MessageOut"/>
|
||||
<phase name="Security"/>
|
||||
</phaseOrder>
|
||||
<phaseOrder type="InFaultFlow">
|
||||
<phase name="Addressing">
|
||||
<handler name="AddressingBasedDispatcher"
|
||||
class="org.apache.axis2.dispatchers.AddressingBasedDispatcher">
|
||||
<order phase="Addressing"/>
|
||||
</handler>
|
||||
</phase>
|
||||
<phase name="Security"/>
|
||||
<phase name="PreDispatch"/>
|
||||
<phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
|
||||
<handler name="RequestURIBasedDispatcher"
|
||||
class="org.apache.axis2.dispatchers.RequestURIBasedDispatcher"/>
|
||||
<handler name="SOAPActionBasedDispatcher"
|
||||
class="org.apache.axis2.dispatchers.SOAPActionBasedDispatcher"/>
|
||||
<handler name="RequestURIOperationDispatcher"
|
||||
class="org.apache.axis2.dispatchers.RequestURIOperationDispatcher"/>
|
||||
<handler name="SOAPMessageBodyBasedDispatcher"
|
||||
class="org.apache.axis2.dispatchers.SOAPMessageBodyBasedDispatcher"/>
|
||||
|
||||
<handler name="HTTPLocationBasedDispatcher"
|
||||
class="org.apache.axis2.dispatchers.HTTPLocationBasedDispatcher"/>
|
||||
</phase>
|
||||
<phase name="RMPhase"/>
|
||||
<!-- user can add his own phases to this area -->
|
||||
<phase name="OperationInFaultPhase"/>
|
||||
</phaseOrder>
|
||||
<phaseOrder type="OutFaultFlow">
|
||||
<!-- user can add his own phases to this area -->
|
||||
<phase name="OperationOutFaultPhase"/>
|
||||
<phase name="RMPhase"/>
|
||||
<phase name="PolicyDetermination"/>
|
||||
<phase name="MessageOut"/>
|
||||
<phase name="Security"/>
|
||||
<phase name="Transport"/>
|
||||
</phaseOrder>
|
||||
</axisconfig>
|
@ -0,0 +1,288 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<!--
|
||||
~ Copyright (C) 2018 - 2023 Entgra (Pvt) Ltd, Inc - All Rights Reserved.
|
||||
~
|
||||
~ Unauthorised copying/redistribution of this file, via any medium is strictly prohibited.
|
||||
~
|
||||
~ Licensed under the Entgra Commercial License, Version 1.0 (the "License");
|
||||
~ you may not use this file except in compliance with the License.
|
||||
~ You may obtain a copy of the License at
|
||||
~
|
||||
~ https://entgra.io/licenses/entgra-commercial/1.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.
|
||||
-->
|
||||
|
||||
<axisconfig name="AxisJava2.0">
|
||||
<!-- ================================================= -->
|
||||
<!-- Parameters -->
|
||||
<!-- ================================================= -->
|
||||
<parameter name="hotdeployment">true</parameter>
|
||||
<parameter name="hotupdate">true</parameter>
|
||||
<parameter name="enableMTOM">optional</parameter>
|
||||
|
||||
<!--If turned on with use the Accept header of the request to determine the contentType of the
|
||||
response-->
|
||||
<parameter name="httpContentNegotiation">true</parameter>
|
||||
|
||||
<!--If true, then artifacts(services, modules etc) are not loaded when a tenant is loaded.
|
||||
So service deployment, module deployment etc. will not happen. So the tenant loading time will
|
||||
be fast.-->
|
||||
<parameter name="DisableArtifactLoading">false</parameter>
|
||||
|
||||
<!--During a fault, stacktrace can be sent with the fault message. The following flag will control -->
|
||||
<!--that behaviour.-->
|
||||
<parameter name="sendStacktraceDetailsWithFaults">true</parameter>
|
||||
|
||||
<!--If there aren't any information available to find out the fault reason, we set the message of the exception-->
|
||||
<!--as the faultreason/Reason. But when a fault is thrown from a service or some where, it will be -->
|
||||
<!--wrapped by different levels. Due to this the initial exception message can be lost. If this flag-->
|
||||
<!--is set then, Axis2 tries to get the first exception and set its message as the faultreason/Reason.-->
|
||||
<parameter name="DrillDownToRootCauseForFaultReason">false</parameter>
|
||||
|
||||
<!-- Following parameter will completely disable REST handling in Axis2-->
|
||||
<parameter name="disableREST" locked="false">false</parameter>
|
||||
|
||||
<!--the directory in which .aar services are deployed inside axis2 repository-->
|
||||
<parameter name="ServicesDirectory">axis2services</parameter>
|
||||
|
||||
<!--POJO deployer , this will alow users to drop .class file and make that into a service-->
|
||||
<deployer extension=".class" directory="pojo" class="org.apache.axis2.deployment.POJODeployer"/>
|
||||
<deployer extension=".jar" directory="transports"
|
||||
class="org.apache.axis2.deployment.TransportDeployer"/>
|
||||
|
||||
<!-- Following parameter will set the host name for the epr-->
|
||||
<!--<parameter name="hostname" locked="true">myhost.com</parameter>-->
|
||||
|
||||
<!-- ================================================= -->
|
||||
<!-- Message Receivers -->
|
||||
<!-- ================================================= -->
|
||||
<!--This is the Default Message Receiver for the system , if you want to have MessageReceivers for -->
|
||||
<!--all the other MEP implement it and add the correct entry to here , so that you can refer from-->
|
||||
<!--any operation -->
|
||||
<!--Note : You can override this for particular service by adding the same element with your requirement-->
|
||||
<messageReceivers>
|
||||
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"
|
||||
class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver"/>
|
||||
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
|
||||
class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
|
||||
<messageReceiver mep="http://www.w3.org/2006/01/wsdl/in-only"
|
||||
class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver"/>
|
||||
<messageReceiver mep="http://www.w3.org/2006/01/wsdl/in-out"
|
||||
class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
|
||||
<messageReceiver mep="http://www.w3.org/ns/wsdl/in-only"
|
||||
class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/>
|
||||
<messageReceiver mep="http://www.w3.org/ns/wsdl/robust-in-only"
|
||||
class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/>
|
||||
<messageReceiver mep="http://www.w3.org/ns/wsdl/in-out"
|
||||
class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
|
||||
</messageReceivers>
|
||||
|
||||
<!-- ================================================= -->
|
||||
<!-- Message Formatter -->
|
||||
<!-- ================================================= -->
|
||||
<!--Following content type to message formatter mapping can be used to implement support for different message -->
|
||||
<!--format serialization in Axis2. These message formats are expected to be resolved based on the content type. -->
|
||||
<messageFormatters>
|
||||
<messageFormatter contentType="application/x-www-form-urlencoded"
|
||||
class="org.apache.axis2.transport.http.XFormURLEncodedFormatter"/>
|
||||
<messageFormatter contentType="multipart/form-data"
|
||||
class="org.apache.axis2.transport.http.MultipartFormDataFormatter"/>
|
||||
<messageFormatter contentType="application/xml"
|
||||
class="org.apache.axis2.transport.http.ApplicationXMLFormatter"/>
|
||||
<messageFormatter contentType="text/xml"
|
||||
class="org.apache.axis2.transport.http.SOAPMessageFormatter"/>
|
||||
<messageFormatter contentType="application/soap+xml"
|
||||
class="org.apache.axis2.transport.http.SOAPMessageFormatter"/>
|
||||
<!--JSON Message Formatters-->
|
||||
<!--messageFormatter contentType="application/json"
|
||||
class="org.apache.axis2.json.JSONMessageFormatter"/-->
|
||||
<messageFormatter contentType="application/json"
|
||||
class="org.apache.axis2.json.gson.JsonFormatter"/>
|
||||
<messageFormatter contentType="application/json/badgerfish"
|
||||
class="org.apache.axis2.json.JSONBadgerfishMessageFormatter"/>
|
||||
<!--messageFormatter contentType="text/javascript"
|
||||
class="org.apache.axis2.json.JSONMessageFormatter"/-->
|
||||
<messageFormatter contentType="text/javascript"
|
||||
class="org.apache.axis2.json.gson.JsonFormatter"/>
|
||||
</messageFormatters>
|
||||
|
||||
<!-- ================================================= -->
|
||||
<!-- Message Builders -->
|
||||
<!-- ================================================= -->
|
||||
<!--Following content type to builder mapping can be used to implement support for different message -->
|
||||
<!--formats in Axis2. These message formats are expected to be resolved based on the content type. -->
|
||||
<messageBuilders>
|
||||
<messageBuilder contentType="application/xml"
|
||||
class="org.apache.axis2.builder.ApplicationXMLBuilder"/>
|
||||
<messageBuilder contentType="application/x-www-form-urlencoded"
|
||||
class="org.apache.axis2.builder.XFormURLEncodedBuilder"/>
|
||||
<!--JSON Message Builders-->
|
||||
<!--messageBuilder contentType="application/json"
|
||||
class="org.apache.axis2.json.JSONOMBuilder"/-->
|
||||
<messageBuilder contentType="application/json"
|
||||
class="org.apache.axis2.json.gson.JsonBuilder"/>
|
||||
<messageBuilder contentType="application/json/badgerfish"
|
||||
class="org.apache.axis2.json.JSONBadgerfishOMBuilder"/>
|
||||
<!--messageBuilder contentType="text/javascript"
|
||||
class="org.apache.axis2.json.JSONOMBuilder"/-->
|
||||
<messageBuilder contentType="text/javascript"
|
||||
class="org.apache.axis2.json.gson.JsonBuilder"/>
|
||||
<!--Left commented because it adds the depandancy of servlet-api to other modules.
|
||||
Please uncomment to Receive messages in multipart/form-data format-->
|
||||
<!--<messageBuilder contentType="multipart/form-data"-->
|
||||
<!--class="org.apache.axis2.builder.MultipartFormDataBuilder"/>-->
|
||||
</messageBuilders>
|
||||
|
||||
<!-- ================================================= -->
|
||||
<!-- Phases -->
|
||||
<!-- ================================================= -->
|
||||
<phaseOrder type="InFlow">
|
||||
<!-- System pre-defined phases -->
|
||||
<!--
|
||||
The MsgInObservation phase is used to observe messages as soon as they are
|
||||
received. In this phase, we could do some things such as SOAP message tracing & keeping
|
||||
track of the time at which a particular message was received
|
||||
|
||||
NOTE: This should be the very first phase in this flow
|
||||
-->
|
||||
<phase name="MsgInObservation"/>
|
||||
<phase name="Transport">
|
||||
<handler name="RequestURIBasedDispatcher"
|
||||
class="org.apache.axis2.dispatchers.RequestURIBasedDispatcher">
|
||||
<order phase="Transport"/>
|
||||
</handler>
|
||||
<handler name="SOAPActionBasedDispatcher"
|
||||
class="org.apache.axis2.dispatchers.SOAPActionBasedDispatcher">
|
||||
<order phase="Transport"/>
|
||||
</handler>
|
||||
<handler name="RequestURIOperationDispatcher"
|
||||
class="org.apache.axis2.dispatchers.RequestURIOperationDispatcher"/>
|
||||
<handler name="JSONMessageHandler"
|
||||
class="org.apache.axis2.json.gson.JSONMessageHandler"/>
|
||||
</phase>
|
||||
<phase name="Addressing">
|
||||
<handler name="AddressingBasedDispatcher"
|
||||
class="org.apache.axis2.dispatchers.AddressingBasedDispatcher">
|
||||
<order phase="Addressing"/>
|
||||
</handler>
|
||||
</phase>
|
||||
<phase name="Ghost">
|
||||
<handler name="GhostDispatcher" class="org.wso2.carbon.core.dispatchers.GhostDispatcher"/>
|
||||
</phase>
|
||||
<phase name="Security"/>
|
||||
<phase name="PreDispatch"/>
|
||||
<phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
|
||||
<handler name="RequestURIBasedDispatcher"
|
||||
class="org.apache.axis2.dispatchers.RequestURIBasedDispatcher"/>
|
||||
<handler name="SOAPActionBasedDispatcher"
|
||||
class="org.apache.axis2.dispatchers.SOAPActionBasedDispatcher"/>
|
||||
<handler name="SOAPMessageBodyBasedDispatcher"
|
||||
class="org.apache.axis2.dispatchers.SOAPMessageBodyBasedDispatcher"/>
|
||||
|
||||
<handler name="HTTPLocationBasedDispatcher"
|
||||
class="org.apache.axis2.dispatchers.HTTPLocationBasedDispatcher"/>
|
||||
</phase>
|
||||
<!-- System pre defined phases -->
|
||||
<phase name="RMPhase"/>
|
||||
<phase name="OpPhase"/>
|
||||
<!-- After Postdispatch phase module author or or service author can add any phase he want -->
|
||||
<phase name="OperationInPhase"/>
|
||||
</phaseOrder>
|
||||
<phaseOrder type="OutFlow">
|
||||
<phase name="UEPPhase"/>
|
||||
<phase name="RMPhase"/>
|
||||
<phase name="OpPhase"/>
|
||||
<!-- user can add his own phases to this area -->
|
||||
<phase name="OperationOutPhase"/>
|
||||
<!--system predefined phase-->
|
||||
<!--these phase will run irrespective of the service-->
|
||||
<phase name="PolicyDetermination"/>
|
||||
<phase name="MessageOut"/>
|
||||
<phase name="Security"/>
|
||||
<!--
|
||||
The MsgOutObservation phase is used to observe messages just before the
|
||||
responses are sent out. In this phase, we could do some things such as SOAP message
|
||||
tracing & keeping track of the time at which a particular response was sent.
|
||||
|
||||
NOTE: This should be the very last phase in this flow
|
||||
-->
|
||||
<phase name="MsgOutObservation"/>
|
||||
<!--Following phase is added to publish stats-->
|
||||
<phase name="StatReporting"/>
|
||||
</phaseOrder>
|
||||
<phaseOrder type="InFaultFlow">
|
||||
<!--
|
||||
The MsgInObservation phase is used to observe messages as soon as they are
|
||||
received. In this phase, we could do some things such as SOAP message tracing & keeping
|
||||
track of the time at which a particular message was received
|
||||
|
||||
NOTE: This should be the very first phase in this flow
|
||||
-->
|
||||
<phase name="MsgInObservation"/>
|
||||
<phase name="Transport">
|
||||
<handler name="RequestURIBasedDispatcher"
|
||||
class="org.apache.axis2.dispatchers.RequestURIBasedDispatcher">
|
||||
<order phase="Transport"/>
|
||||
</handler>
|
||||
<handler name="SOAPActionBasedDispatcher"
|
||||
class="org.apache.axis2.dispatchers.SOAPActionBasedDispatcher">
|
||||
<order phase="Transport"/>
|
||||
</handler>
|
||||
</phase>
|
||||
<phase name="Addressing">
|
||||
<handler name="AddressingBasedDispatcher"
|
||||
class="org.apache.axis2.dispatchers.AddressingBasedDispatcher">
|
||||
<order phase="Addressing"/>
|
||||
</handler>
|
||||
</phase>
|
||||
<phase name="Ghost">
|
||||
<handler name="GhostDispatcher" class="org.wso2.carbon.core.dispatchers.GhostDispatcher"/>
|
||||
</phase>
|
||||
<phase name="Security"/>
|
||||
<phase name="PreDispatch"/>
|
||||
<phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
|
||||
<handler name="RequestURIBasedDispatcher"
|
||||
class="org.apache.axis2.dispatchers.RequestURIBasedDispatcher"/>
|
||||
<handler name="SOAPActionBasedDispatcher"
|
||||
class="org.apache.axis2.dispatchers.SOAPActionBasedDispatcher"/>
|
||||
<handler name="RequestURIOperationDispatcher"
|
||||
class="org.apache.axis2.dispatchers.RequestURIOperationDispatcher"/>
|
||||
<handler name="SOAPMessageBodyBasedDispatcher"
|
||||
class="org.apache.axis2.dispatchers.SOAPMessageBodyBasedDispatcher"/>
|
||||
|
||||
<handler name="HTTPLocationBasedDispatcher"
|
||||
class="org.apache.axis2.dispatchers.HTTPLocationBasedDispatcher"/>
|
||||
</phase>
|
||||
<phase name="RMPhase"/>
|
||||
<phase name="OpPhase"/>
|
||||
<!-- user can add his own phases to this area -->
|
||||
<phase name="OperationInFaultPhase"/>
|
||||
</phaseOrder>
|
||||
<phaseOrder type="OutFaultFlow">
|
||||
<!-- user can add his own phases to this area -->
|
||||
<phase name="UEPPhase"/>
|
||||
<phase name="OperationOutFaultPhase"/>
|
||||
<phase name="RMPhase"/>
|
||||
<phase name="PolicyDetermination"/>
|
||||
<phase name="MessageOut"/>
|
||||
<phase name="Security"/>
|
||||
<phase name="Transport"/>
|
||||
<!--
|
||||
The MsgOutObservation phase is used to observe messages just before the
|
||||
responses are sent out. In this phase, we could do some things such as SOAP message
|
||||
tracing & keeping track of the time at which a particular response was sent.
|
||||
|
||||
NOTE: This should be the very last phase in this flow
|
||||
-->
|
||||
<phase name="MsgOutObservation"/>
|
||||
<!--Following phase is added to publish stats-->
|
||||
<phase name="StatReporting"/>
|
||||
</phaseOrder>
|
||||
</axisconfig>
|
@ -0,0 +1,660 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<!--
|
||||
~ Copyright (C) 2018 - 2023 Entgra (Pvt) Ltd, Inc - All Rights Reserved.
|
||||
~
|
||||
~ Unauthorised copying/redistribution of this file, via any medium is strictly prohibited.
|
||||
~
|
||||
~ Licensed under the Entgra Commercial License, Version 1.0 (the "License");
|
||||
~ you may not use this file except in compliance with the License.
|
||||
~ You may obtain a copy of the License at
|
||||
~
|
||||
~ https://entgra.io/licenses/entgra-commercial/1.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.
|
||||
-->
|
||||
|
||||
<!--
|
||||
This is the main server configuration file
|
||||
|
||||
${carbon.home} represents the carbon.home system property.
|
||||
Other system properties can be specified in a similar manner.
|
||||
-->
|
||||
<Server xmlns="http://wso2.org/projects/carbon/carbon.xml">
|
||||
|
||||
<!--
|
||||
Product Name
|
||||
-->
|
||||
<Name>${product.name}</Name>
|
||||
|
||||
<!--
|
||||
machine readable unique key to identify each product
|
||||
-->
|
||||
<ServerKey>${product.key}</ServerKey>
|
||||
|
||||
<!--
|
||||
Product Version
|
||||
-->
|
||||
<Version>${product.version}</Version>
|
||||
|
||||
<!--
|
||||
Host name or IP address of the machine hosting this server
|
||||
e.g. www.wso2.org, 192.168.1.10
|
||||
This is will become part of the End Point Reference of the
|
||||
services deployed on this server instance.
|
||||
-->
|
||||
<!--HostName>www.wso2.org</HostName-->
|
||||
|
||||
<!--
|
||||
Host name to be used for the Carbon management console
|
||||
-->
|
||||
<!--MgtHostName>mgt.wso2.org</MgtHostName-->
|
||||
|
||||
<!--
|
||||
The URL of the back end server. This is where the admin services are hosted and
|
||||
will be used by the clients in the front end server.
|
||||
This is required only for the Front-end server. This is used when seperating BE server from FE server
|
||||
-->
|
||||
<ServerURL>local:/${carbon.context}/services/</ServerURL>
|
||||
<!--
|
||||
<ServerURL>https://${carbon.local.ip}:${carbon.management.port}${carbon.context}/services/</ServerURL>
|
||||
-->
|
||||
<!--
|
||||
The URL of the index page. This is where the user will be redirected after signing in to the
|
||||
carbon server.
|
||||
-->
|
||||
<!-- IndexPageURL>/carbon/admin/index.jsp</IndexPageURL-->
|
||||
|
||||
<!--
|
||||
For cApp deployment, we have to identify the roles that can be acted by the current server.
|
||||
The following property is used for that purpose. Any number of roles can be defined here.
|
||||
Regular expressions can be used in the role.
|
||||
Ex : <Role>.*</Role> means this server can act any role
|
||||
-->
|
||||
<ServerRoles>
|
||||
<Role>${default.server.role}</Role>
|
||||
</ServerRoles>
|
||||
|
||||
<!-- uncommnet this line to subscribe to a bam instance automatically -->
|
||||
<!--<BamServerURL>https://bamhost:bamport/services/</BamServerURL>-->
|
||||
|
||||
<!--
|
||||
The fully qualified name of the server
|
||||
-->
|
||||
<Package>org.wso2.carbon</Package>
|
||||
|
||||
<!--
|
||||
Webapp context root of WSO2 Carbon management console.
|
||||
-->
|
||||
<WebContextRoot>/</WebContextRoot>
|
||||
|
||||
<!--
|
||||
Proxy context path is a useful parameter to add a proxy path when a Carbon server is fronted by reverse proxy. In addtion
|
||||
to the proxy host and proxy port this parameter allows you add a path component to external URLs. e.g.
|
||||
URL of the Carbon server -> https://10.100.1.1:9443/carbon
|
||||
URL of the reverse proxy -> https://prod.abc.com/appserver/carbon
|
||||
|
||||
appserver - proxy context path. This specially required whenever you are generating URLs to displace in
|
||||
Carbon UI components.
|
||||
-->
|
||||
<!--
|
||||
<MgtProxyContextPath></MgtProxyContextPath>
|
||||
<ProxyContextPath></ProxyContextPath>
|
||||
-->
|
||||
|
||||
<!-- In-order to get the registry http Port from the back-end when the default http transport is not the same-->
|
||||
<!--RegistryHttpPort>9763</RegistryHttpPort-->
|
||||
|
||||
<!--
|
||||
Number of items to be displayed on a management console page. This is used at the
|
||||
backend server for pagination of various items.
|
||||
-->
|
||||
<ItemsPerPage>15</ItemsPerPage>
|
||||
|
||||
<!-- The endpoint URL of the cloud instance management Web service -->
|
||||
<!--<InstanceMgtWSEndpoint>https://ec2.amazonaws.com/</InstanceMgtWSEndpoint>-->
|
||||
|
||||
<!--
|
||||
Ports used by this server
|
||||
-->
|
||||
<Ports>
|
||||
|
||||
<!-- Ports offset. This entry will set the value of the ports defined below to
|
||||
the define value + Offset.
|
||||
e.g. Offset=2 and HTTPS port=9443 will set the effective HTTPS port to 9445
|
||||
-->
|
||||
<Offset>0</Offset>
|
||||
|
||||
<!-- The JMX Ports -->
|
||||
<JMX>
|
||||
<!--The port RMI registry is exposed-->
|
||||
<RMIRegistryPort>9999</RMIRegistryPort>
|
||||
<!--The port RMI server should be exposed-->
|
||||
<RMIServerPort>11111</RMIServerPort>
|
||||
</JMX>
|
||||
|
||||
<!-- Embedded LDAP server specific ports -->
|
||||
<EmbeddedLDAP>
|
||||
<!-- Port which embedded LDAP server runs -->
|
||||
<LDAPServerPort>10389</LDAPServerPort>
|
||||
<!-- Port which KDC (Kerberos Key Distribution Center) server runs -->
|
||||
<KDCServerPort>8000</KDCServerPort>
|
||||
</EmbeddedLDAP>
|
||||
|
||||
<!--
|
||||
Override datasources JNDIproviderPort defined in bps.xml and datasources.properties files
|
||||
-->
|
||||
<!--<JNDIProviderPort>2199</JNDIProviderPort>-->
|
||||
<!--Override receive port of thrift based entitlement service.-->
|
||||
<ThriftEntitlementReceivePort>10500</ThriftEntitlementReceivePort>
|
||||
|
||||
</Ports>
|
||||
|
||||
<!--
|
||||
JNDI Configuration
|
||||
-->
|
||||
<JNDI>
|
||||
<!--
|
||||
The fully qualified name of the default initial context factory
|
||||
-->
|
||||
<DefaultInitialContextFactory>org.wso2.carbon.tomcat.jndi.CarbonJavaURLContextFactory
|
||||
</DefaultInitialContextFactory>
|
||||
<!--
|
||||
The restrictions that are done to various JNDI Contexts in a Multi-tenant environment
|
||||
-->
|
||||
<Restrictions>
|
||||
<!--
|
||||
Contexts that will be available only to the super-tenant
|
||||
-->
|
||||
<!-- <SuperTenantOnly>
|
||||
<UrlContexts>
|
||||
<UrlContext>
|
||||
<Scheme>foo</Scheme>
|
||||
</UrlContext>
|
||||
<UrlContext>
|
||||
<Scheme>bar</Scheme>
|
||||
</UrlContext>
|
||||
</UrlContexts>
|
||||
</SuperTenantOnly> -->
|
||||
<!--
|
||||
Contexts that are common to all tenants
|
||||
-->
|
||||
<AllTenants>
|
||||
<UrlContexts>
|
||||
<UrlContext>
|
||||
<Scheme>java</Scheme>
|
||||
</UrlContext>
|
||||
<!-- <UrlContext>
|
||||
<Scheme>foo</Scheme>
|
||||
</UrlContext> -->
|
||||
</UrlContexts>
|
||||
</AllTenants>
|
||||
<!--
|
||||
All other contexts not mentioned above will be available on a per-tenant basis
|
||||
(i.e. will not be shared among tenants)
|
||||
-->
|
||||
</Restrictions>
|
||||
</JNDI>
|
||||
|
||||
<!--
|
||||
Property to determine if the server is running an a cloud deployment environment.
|
||||
This property should only be used to determine deployment specific details that are
|
||||
applicable only in a cloud deployment, i.e when the server deployed *-as-a-service.
|
||||
-->
|
||||
<IsCloudDeployment>false</IsCloudDeployment>
|
||||
|
||||
<!--
|
||||
Property to determine whether usage data should be collected for metering purposes
|
||||
-->
|
||||
<EnableMetering>false</EnableMetering>
|
||||
|
||||
<!-- The Max time a thread should take for execution in seconds -->
|
||||
<MaxThreadExecutionTime>600</MaxThreadExecutionTime>
|
||||
|
||||
<!--
|
||||
A flag to enable or disable Ghost Deployer. By default this is set to false. That is
|
||||
because the Ghost Deployer works only with the HTTP/S transports. If you are using
|
||||
other transports, don't enable Ghost Deployer.
|
||||
-->
|
||||
<GhostDeployment>
|
||||
<Enabled>false</Enabled>
|
||||
</GhostDeployment>
|
||||
|
||||
|
||||
<!--
|
||||
Eager loading or lazy loading is a design pattern commonly used in computer programming which
|
||||
will initialize an object upon creation or load on-demand. In carbon, lazy loading is used to
|
||||
load tenant when a request is received only. Similarly Eager loading is used to enable load
|
||||
existing tenants after carbon server starts up. Using this feature, you will be able to include
|
||||
or exclude tenants which are to be loaded when server startup.
|
||||
|
||||
We can enable only one LoadingPolicy at a given time.
|
||||
|
||||
1. Tenant Lazy Loading
|
||||
This is the default behaviour and enabled by default. With this policy, tenants are not loaded at
|
||||
server startup, but loaded based on-demand (i.e when a request is received for a tenant).
|
||||
The default tenant idle time is 30 minutes.
|
||||
|
||||
2. Tenant Eager Loading
|
||||
This is by default not enabled. It can be be enabled by un-commenting the <EagerLoading> section.
|
||||
The eager loading configurations supported are as below. These configurations can be given as the
|
||||
value for <Include> element with eager loading.
|
||||
(i)Load all tenants when server startup - *
|
||||
(ii)Load all tenants except foo.com & bar.com - *,!foo.com,!bar.com
|
||||
(iii)Load only foo.com & bar.com to be included - foo.com,bar.com
|
||||
-->
|
||||
<Tenant>
|
||||
<LoadingPolicy>
|
||||
<LazyLoading>
|
||||
<IdleTime>30</IdleTime>
|
||||
</LazyLoading>
|
||||
<!-- <EagerLoading>
|
||||
<Include>*,!foo.com,!bar.com</Include>
|
||||
</EagerLoading>-->
|
||||
</LoadingPolicy>
|
||||
</Tenant>
|
||||
|
||||
<!--
|
||||
Caching related configurations
|
||||
-->
|
||||
<Cache>
|
||||
<!-- Default cache timeout in minutes -->
|
||||
<DefaultCacheTimeout>15</DefaultCacheTimeout>
|
||||
</Cache>
|
||||
|
||||
<!--
|
||||
Axis2 related configurations
|
||||
-->
|
||||
<Axis2Config>
|
||||
<!--
|
||||
Location of the Axis2 Services & Modules repository
|
||||
|
||||
This can be a directory in the local file system, or a URL.
|
||||
|
||||
e.g.
|
||||
1. /home/wso2wsas/repository/ - An absolute path
|
||||
2. repository - In this case, the path is relative to CARBON_HOME
|
||||
3. file:///home/wso2wsas/repository/
|
||||
4. http://wso2wsas/repository/
|
||||
-->
|
||||
<RepositoryLocation>${carbon.home}/repository/deployment/server/</RepositoryLocation>
|
||||
|
||||
<!--
|
||||
Deployment update interval in seconds. This is the interval between repository listener
|
||||
executions.
|
||||
-->
|
||||
<DeploymentUpdateInterval>15</DeploymentUpdateInterval>
|
||||
|
||||
<!--
|
||||
Location of the main Axis2 configuration descriptor file, a.k.a. axis2.xml file
|
||||
|
||||
This can be a file on the local file system, or a URL
|
||||
|
||||
e.g.
|
||||
1. /home/repository/axis2.xml - An absolute path
|
||||
2. conf/axis2.xml - In this case, the path is relative to CARBON_HOME
|
||||
3. file:///home/carbon/repository/axis2.xml
|
||||
4. http://repository/conf/axis2.xml
|
||||
-->
|
||||
<ConfigurationFile>${carbon.home}/repository/conf/axis2/axis2.xml</ConfigurationFile>
|
||||
|
||||
<!--
|
||||
ServiceGroupContextIdleTime, which will be set in ConfigurationContex
|
||||
for multiple clients which are going to access the same ServiceGroupContext
|
||||
Default Value is 30 Sec.
|
||||
-->
|
||||
<ServiceGroupContextIdleTime>30000</ServiceGroupContextIdleTime>
|
||||
|
||||
<!--
|
||||
This repository location is used to crete the client side configuration
|
||||
context used by the server when calling admin services.
|
||||
-->
|
||||
<ClientRepositoryLocation>${carbon.home}/repository/deployment/client/</ClientRepositoryLocation>
|
||||
<!-- This axis2 xml is used in createing the configuration context by the FE server
|
||||
calling to BE server -->
|
||||
<clientAxis2XmlLocation>${carbon.home}/repository/conf/axis2/axis2_client.xml</clientAxis2XmlLocation>
|
||||
<!-- If this parameter is set, the ?wsdl on an admin service will not give the admin service wsdl. -->
|
||||
<HideAdminServiceWSDLs>true</HideAdminServiceWSDLs>
|
||||
|
||||
<!--WARNING-Use With Care! Uncommenting bellow parameter would expose all AdminServices in HTTP transport.
|
||||
With HTTP transport your credentials and data routed in public channels are vulnerable for sniffing attacks.
|
||||
Use bellow parameter ONLY if your communication channels are confirmed to be secured by other means -->
|
||||
<!--HttpAdminServices>*</HttpAdminServices-->
|
||||
|
||||
</Axis2Config>
|
||||
|
||||
<!--
|
||||
The default user roles which will be created when the server
|
||||
is started up for the first time.
|
||||
-->
|
||||
<ServiceUserRoles>
|
||||
<Role>
|
||||
<Name>admin</Name>
|
||||
<Description>Default Administrator Role</Description>
|
||||
</Role>
|
||||
<Role>
|
||||
<Name>user</Name>
|
||||
<Description>Default User Role</Description>
|
||||
</Role>
|
||||
</ServiceUserRoles>
|
||||
|
||||
<!--
|
||||
Enable following config to allow Emails as usernames.
|
||||
-->
|
||||
<!--EnableEmailUserName>true</EnableEmailUserName-->
|
||||
|
||||
<!--
|
||||
Security configurations
|
||||
-->
|
||||
<Security>
|
||||
<!--
|
||||
KeyStore which will be used for encrypting/decrypting passwords
|
||||
and other sensitive information.
|
||||
-->
|
||||
<KeyStore>
|
||||
<!-- Keystore file location-->
|
||||
<Location>${carbon.home}/repository/resources/security/wso2carbon.jks</Location>
|
||||
<!-- Keystore type (JKS/PKCS12 etc.)-->
|
||||
<Type>JKS</Type>
|
||||
<!-- Keystore password-->
|
||||
<Password>wso2carbon</Password>
|
||||
<!-- Private Key alias-->
|
||||
<KeyAlias>wso2carbon</KeyAlias>
|
||||
<!-- Private Key password-->
|
||||
<KeyPassword>wso2carbon</KeyPassword>
|
||||
</KeyStore>
|
||||
|
||||
<!--
|
||||
System wide trust-store which is used to maintain the certificates of all
|
||||
the trusted parties.
|
||||
-->
|
||||
<TrustStore>
|
||||
<!-- trust-store file location -->
|
||||
<Location>${carbon.home}/repository/resources/security/client-truststore.jks</Location>
|
||||
<!-- trust-store type (JKS/PKCS12 etc.) -->
|
||||
<Type>JKS</Type>
|
||||
<!-- trust-store password -->
|
||||
<Password>wso2carbon</Password>
|
||||
</TrustStore>
|
||||
|
||||
<!--
|
||||
The Authenticator configuration to be used at the JVM level. We extend the
|
||||
java.net.Authenticator to make it possible to authenticate to given servers and
|
||||
proxies.
|
||||
-->
|
||||
<NetworkAuthenticatorConfig>
|
||||
<!--
|
||||
Below is a sample configuration for a single authenticator. Please note that
|
||||
all child elements are mandatory. Not having some child elements would lead to
|
||||
exceptions at runtime.
|
||||
-->
|
||||
<!-- <Credential> -->
|
||||
<!--
|
||||
the pattern that would match a subset of URLs for which this authenticator
|
||||
would be used
|
||||
-->
|
||||
<!-- <Pattern>regularExpression</Pattern> -->
|
||||
<!--
|
||||
the type of this authenticator. Allowed values are:
|
||||
1. server
|
||||
2. proxy
|
||||
-->
|
||||
<!-- <Type>proxy</Type> -->
|
||||
<!-- the username used to log in to server/proxy -->
|
||||
<!-- <Username>username</Username> -->
|
||||
<!-- the password used to log in to server/proxy -->
|
||||
<!-- <Password>password</Password> -->
|
||||
<!-- </Credential> -->
|
||||
</NetworkAuthenticatorConfig>
|
||||
|
||||
<!--
|
||||
The Tomcat realm to be used for hosted Web applications. Allowed values are;
|
||||
1. UserManager
|
||||
2. Memory
|
||||
|
||||
If this is set to 'UserManager', the realm will pick users & roles from the system's
|
||||
WSO2 User Manager. If it is set to 'memory', the realm will pick users & roles from
|
||||
CARBON_HOME/repository/conf/tomcat/tomcat-users.xml
|
||||
-->
|
||||
<TomcatRealm>UserManager</TomcatRealm>
|
||||
|
||||
<!--Option to disable storing of tokens issued by STS-->
|
||||
<DisableTokenStore>false</DisableTokenStore>
|
||||
|
||||
<!--
|
||||
Security token store class name. If this is not set, default class will be
|
||||
org.wso2.carbon.security.util.SecurityTokenStore
|
||||
-->
|
||||
<!--TokenStoreClassName>org.wso2.carbon.identity.sts.store.DBTokenStore</TokenStoreClassName-->
|
||||
</Security>
|
||||
|
||||
<!--
|
||||
The temporary work directory
|
||||
-->
|
||||
<WorkDirectory>${carbon.home}/tmp/work</WorkDirectory>
|
||||
|
||||
<!--
|
||||
House-keeping configuration
|
||||
-->
|
||||
<HouseKeeping>
|
||||
|
||||
<!--
|
||||
true - Start House-keeping thread on server startup
|
||||
false - Do not start House-keeping thread on server startup.
|
||||
The user will run it manually as and when he wishes.
|
||||
-->
|
||||
<AutoStart>true</AutoStart>
|
||||
|
||||
<!--
|
||||
The interval in *minutes*, between house-keeping runs
|
||||
-->
|
||||
<Interval>10</Interval>
|
||||
|
||||
<!--
|
||||
The maximum time in *minutes*, temp files are allowed to live
|
||||
in the system. Files/directories which were modified more than
|
||||
"MaxTempFileLifetime" minutes ago will be removed by the
|
||||
house-keeping task
|
||||
-->
|
||||
<MaxTempFileLifetime>30</MaxTempFileLifetime>
|
||||
</HouseKeeping>
|
||||
|
||||
<!--
|
||||
Configuration for handling different types of file upload & other file uploading related
|
||||
config parameters.
|
||||
To map all actions to a particular FileUploadExecutor, use
|
||||
<Action>*</Action>
|
||||
-->
|
||||
<FileUploadConfig>
|
||||
<!--
|
||||
The total file upload size limit in MB
|
||||
-->
|
||||
<TotalFileSizeLimit>100</TotalFileSizeLimit>
|
||||
|
||||
<Mapping>
|
||||
<Actions>
|
||||
<Action>keystore</Action>
|
||||
<Action>certificate</Action>
|
||||
<Action>*</Action>
|
||||
</Actions>
|
||||
<Class>org.wso2.carbon.ui.transports.fileupload.AnyFileUploadExecutor</Class>
|
||||
</Mapping>
|
||||
|
||||
<Mapping>
|
||||
<Actions>
|
||||
<Action>jarZip</Action>
|
||||
</Actions>
|
||||
<Class>org.wso2.carbon.ui.transports.fileupload.JarZipUploadExecutor</Class>
|
||||
</Mapping>
|
||||
<Mapping>
|
||||
<Actions>
|
||||
<Action>dbs</Action>
|
||||
</Actions>
|
||||
<Class>org.wso2.carbon.ui.transports.fileupload.DBSFileUploadExecutor</Class>
|
||||
</Mapping>
|
||||
<Mapping>
|
||||
<Actions>
|
||||
<Action>tools</Action>
|
||||
</Actions>
|
||||
<Class>org.wso2.carbon.ui.transports.fileupload.ToolsFileUploadExecutor</Class>
|
||||
</Mapping>
|
||||
<Mapping>
|
||||
<Actions>
|
||||
<Action>toolsAny</Action>
|
||||
</Actions>
|
||||
<Class>org.wso2.carbon.ui.transports.fileupload.ToolsAnyFileUploadExecutor</Class>
|
||||
</Mapping>
|
||||
</FileUploadConfig>
|
||||
|
||||
<!--
|
||||
Processors which process special HTTP GET requests such as ?wsdl, ?policy etc.
|
||||
|
||||
In order to plug in a processor to handle a special request, simply add an entry to this
|
||||
section.
|
||||
|
||||
The value of the Item element is the first parameter in the query string(e.g. ?wsdl)
|
||||
which needs special processing
|
||||
|
||||
The value of the Class element is a class which implements
|
||||
org.wso2.carbon.transport.HttpGetRequestProcessor
|
||||
-->
|
||||
<HttpGetRequestProcessors>
|
||||
<Processor>
|
||||
<Item>info</Item>
|
||||
<Class>org.wso2.carbon.core.transports.util.InfoProcessor</Class>
|
||||
</Processor>
|
||||
<Processor>
|
||||
<Item>wsdl</Item>
|
||||
<Class>org.wso2.carbon.core.transports.util.Wsdl11Processor</Class>
|
||||
</Processor>
|
||||
<Processor>
|
||||
<Item>wsdl2</Item>
|
||||
<Class>org.wso2.carbon.core.transports.util.Wsdl20Processor</Class>
|
||||
</Processor>
|
||||
<Processor>
|
||||
<Item>xsd</Item>
|
||||
<Class>org.wso2.carbon.core.transports.util.XsdProcessor</Class>
|
||||
</Processor>
|
||||
</HttpGetRequestProcessors>
|
||||
|
||||
<!-- Deployment Synchronizer Configuration. t Enabled value to true when running with "svn based" dep sync.
|
||||
In master nodes you need to set both AutoCommit and AutoCheckout to true
|
||||
and in worker nodes set only AutoCheckout to true.
|
||||
-->
|
||||
<DeploymentSynchronizer>
|
||||
<Enabled>false</Enabled>
|
||||
<AutoCommit>false</AutoCommit>
|
||||
<AutoCheckout>true</AutoCheckout>
|
||||
<RepositoryType>svn</RepositoryType>
|
||||
<SvnUrl>http://svnrepo.example.com/repos/</SvnUrl>
|
||||
<SvnUser>username</SvnUser>
|
||||
<SvnPassword>password</SvnPassword>
|
||||
<SvnUrlAppendTenantId>true</SvnUrlAppendTenantId>
|
||||
</DeploymentSynchronizer>
|
||||
|
||||
<!-- Deployment Synchronizer Configuration. Uncomment the following section when running with "registry based" dep sync.
|
||||
In master nodes you need to set both AutoCommit and AutoCheckout to true
|
||||
and in worker nodes set only AutoCheckout to true.
|
||||
-->
|
||||
<!--<DeploymentSynchronizer>
|
||||
<Enabled>true</Enabled>
|
||||
<AutoCommit>false</AutoCommit>
|
||||
<AutoCheckout>true</AutoCheckout>
|
||||
</DeploymentSynchronizer>-->
|
||||
|
||||
<!-- Mediation persistence configurations. Only valid if mediation features are available i.e. ESB -->
|
||||
<!--<MediationConfig>
|
||||
<LoadFromRegistry>false</LoadFromRegistry>
|
||||
<SaveToFile>false</SaveToFile>
|
||||
<Persistence>enabled</Persistence>
|
||||
<RegistryPersistence>enabled</RegistryPersistence>
|
||||
</MediationConfig>-->
|
||||
|
||||
<!--
|
||||
Server intializing code, specified as implementation classes of org.wso2.carbon.core.ServerInitializer.
|
||||
This code will be run when the Carbon server is initialized
|
||||
-->
|
||||
<ServerInitializers>
|
||||
<!--<Initializer></Initializer>-->
|
||||
</ServerInitializers>
|
||||
|
||||
<!--
|
||||
Indicates whether the Carbon Servlet is required by the system, and whether it should be
|
||||
registered
|
||||
-->
|
||||
<RequireCarbonServlet>${require.carbon.servlet}</RequireCarbonServlet>
|
||||
|
||||
<!--
|
||||
Carbon H2 OSGI Configuration
|
||||
By default non of the servers start.
|
||||
name="web" - Start the web server with the H2 Console
|
||||
name="webPort" - The port (default: 8082)
|
||||
name="webAllowOthers" - Allow other computers to connect
|
||||
name="webSSL" - Use encrypted (HTTPS) connections
|
||||
name="tcp" - Start the TCP server
|
||||
name="tcpPort" - The port (default: 9092)
|
||||
name="tcpAllowOthers" - Allow other computers to connect
|
||||
name="tcpSSL" - Use encrypted (SSL) connections
|
||||
name="pg" - Start the PG server
|
||||
name="pgPort" - The port (default: 5435)
|
||||
name="pgAllowOthers" - Allow other computers to connect
|
||||
name="trace" - Print additional trace information; for all servers
|
||||
name="baseDir" - The base directory for H2 databases; for all servers
|
||||
-->
|
||||
<!--H2DatabaseConfiguration>
|
||||
<property name="web" />
|
||||
<property name="webPort">8082</property>
|
||||
<property name="webAllowOthers" />
|
||||
<property name="webSSL" />
|
||||
<property name="tcp" />
|
||||
<property name="tcpPort">9092</property>
|
||||
<property name="tcpAllowOthers" />
|
||||
<property name="tcpSSL" />
|
||||
<property name="pg" />
|
||||
<property name="pgPort">5435</property>
|
||||
<property name="pgAllowOthers" />
|
||||
<property name="trace" />
|
||||
<property name="baseDir">${carbon.home}</property>
|
||||
</H2DatabaseConfiguration-->
|
||||
<!--Disabling statistics reporter by default-->
|
||||
<StatisticsReporterDisabled>true</StatisticsReporterDisabled>
|
||||
|
||||
<!-- Enable accessing Admin Console via HTTP -->
|
||||
<!-- EnableHTTPAdminConsole>true</EnableHTTPAdminConsole -->
|
||||
|
||||
<!--
|
||||
Default Feature Repository of WSO2 Carbon.
|
||||
-->
|
||||
<FeatureRepository>
|
||||
<RepositoryName>default repository</RepositoryName>
|
||||
<RepositoryURL>${p2.repo.url}</RepositoryURL>
|
||||
</FeatureRepository>
|
||||
|
||||
<!--
|
||||
Configure API Management
|
||||
-->
|
||||
<APIManagement>
|
||||
|
||||
<!--Uses the embedded API Manager by default. If you want to use an external
|
||||
API Manager instance to manage APIs, configure below externalAPIManager-->
|
||||
|
||||
<Enabled>true</Enabled>
|
||||
|
||||
<!--Uncomment and configure API Gateway and
|
||||
Publisher URLs to use external API Manager instance-->
|
||||
|
||||
<!--ExternalAPIManager>
|
||||
|
||||
<APIGatewayURL>http://localhost:8281</APIGatewayURL>
|
||||
<APIPublisherURL>http://localhost:8281/publisher</APIPublisherURL>
|
||||
|
||||
</ExternalAPIManager-->
|
||||
|
||||
<LoadAPIContextsInServerStartup>true</LoadAPIContextsInServerStartup>
|
||||
</APIManagement>
|
||||
</Server>
|
@ -0,0 +1,172 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<!--
|
||||
~ Copyright (C) 2018 - 2023 Entgra (Pvt) Ltd, Inc - All Rights Reserved.
|
||||
~
|
||||
~ Unauthorised copying/redistribution of this file, via any medium is strictly prohibited.
|
||||
~
|
||||
~ Licensed under the Entgra Commercial License, Version 1.0 (the "License");
|
||||
~ you may not use this file except in compliance with the License.
|
||||
~ You may obtain a copy of the License at
|
||||
~
|
||||
~ https://entgra.io/licenses/entgra-commercial/1.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.
|
||||
-->
|
||||
|
||||
<DeviceMgtConfiguration>
|
||||
<ManagementRepository>
|
||||
<DataSourceConfiguration>
|
||||
<JndiLookupDefinition>
|
||||
<Name>jdbc/DM_DS</Name>
|
||||
</JndiLookupDefinition>
|
||||
</DataSourceConfiguration>
|
||||
</ManagementRepository>
|
||||
<PushNotificationConfiguration>
|
||||
<SchedulerBatchSize>1000</SchedulerBatchSize>
|
||||
<SchedulerBatchDelayMills>60000</SchedulerBatchDelayMills>
|
||||
<SchedulerTaskInitialDelay>60000</SchedulerTaskInitialDelay>
|
||||
<SchedulerTaskEnabled>true</SchedulerTaskEnabled>
|
||||
<PushNotificationProviders>
|
||||
<Provider>
|
||||
org.wso2.carbon.device.mgt.extensions.push.notification.provider.fcm.FCMBasedPushNotificationProvider
|
||||
</Provider>
|
||||
<Provider>
|
||||
org.wso2.carbon.device.mgt.extensions.push.notification.provider.mqtt.MQTTBasedPushNotificationProvider
|
||||
</Provider>
|
||||
<Provider>
|
||||
org.wso2.carbon.device.mgt.extensions.push.notification.provider.http.HTTPBasedPushNotificationProvider
|
||||
</Provider>
|
||||
<Provider>
|
||||
org.wso2.carbon.device.mgt.extensions.push.notification.provider.xmpp.XMPPBasedPushNotificationProvider
|
||||
</Provider>
|
||||
</PushNotificationProviders>
|
||||
</PushNotificationConfiguration>
|
||||
<PullNotificationConfiguration>
|
||||
<Enabled>false</Enabled>
|
||||
</PullNotificationConfiguration>
|
||||
<IdentityConfiguration>
|
||||
<ServerUrl>https://localhost:9443</ServerUrl>
|
||||
<AdminUsername>admin</AdminUsername>
|
||||
<AdminPassword>admin</AdminPassword>
|
||||
</IdentityConfiguration>
|
||||
<KeyManagerConfiguration>
|
||||
<ServerUrl>https://localhost:9443</ServerUrl>
|
||||
<AdminUsername>admin</AdminUsername>
|
||||
<AdminPassword>admin</AdminPassword>
|
||||
</KeyManagerConfiguration>
|
||||
<PolicyConfiguration>
|
||||
<MonitoringClass>org.wso2.carbon.policy.mgt</MonitoringClass>
|
||||
<MonitoringEnable>true</MonitoringEnable>
|
||||
<MonitoringFrequency>60000</MonitoringFrequency>
|
||||
<MaxRetries>5</MaxRetries>
|
||||
<MinRetriesToMarkUnreachable>8</MinRetriesToMarkUnreachable>
|
||||
<MinRetriesToMarkInactive>20</MinRetriesToMarkInactive>
|
||||
<!--Set the policy evaluation point name-->
|
||||
<!--Simple -> Simple policy evaluation point-->
|
||||
<!--Merged -> Merged policy evaluation point -->
|
||||
<PolicyEvaluationPoint>Simple</PolicyEvaluationPoint>
|
||||
<CacheEnable>true</CacheEnable>
|
||||
</PolicyConfiguration>
|
||||
<!-- Default Page size configuration for paginated DM APIs-->
|
||||
<PaginationConfiguration>
|
||||
<DeviceListPageSize>20</DeviceListPageSize>
|
||||
<GroupListPageSize>20</GroupListPageSize>
|
||||
<NotificationListPageSize>20</NotificationListPageSize>
|
||||
<ActivityListPageSize>20</ActivityListPageSize>
|
||||
<OperationListPageSize>20</OperationListPageSize>
|
||||
<TopicListPageSize>20</TopicListPageSize>
|
||||
<MetadataListPageSize>20</MetadataListPageSize>
|
||||
</PaginationConfiguration>
|
||||
<!--This specifies whether to enable the DeviceStatus Task in this node. In clustered setup only master node
|
||||
should have to run this task.-->
|
||||
<DeviceStatusTaskConfig>
|
||||
<Enable>true</Enable>
|
||||
</DeviceStatusTaskConfig>
|
||||
<!--This controls the in-memory device cache which is local to this node. Setting it enable will activate the
|
||||
device caching for upto configured expiry-time in seconds. In clustered setup all worker nodes can enable the
|
||||
device-cache to improve performance. -->
|
||||
<DeviceCacheConfiguration>
|
||||
<Enable>false</Enable>
|
||||
<ExpiryTime>600</ExpiryTime>
|
||||
<!--This configuration specifies the number of cache entries in device cache. default capacity is 10000 entries.
|
||||
This can be configured to higher number if cache eviction happens due to large number of devices in the
|
||||
server environment-->
|
||||
<Capacity>10000</Capacity>
|
||||
</DeviceCacheConfiguration>
|
||||
<GeoFenceCacheConfiguration>
|
||||
<Enable>false</Enable>
|
||||
<ExpiryTime>600</ExpiryTime>
|
||||
<!--This configuration specifies the number of cache entries in device cache. default capacity is 10000 entries.
|
||||
This can be configured to higher number if cache eviction happens due to large number of devices in the
|
||||
server environment-->
|
||||
<Capacity>10000</Capacity>
|
||||
</GeoFenceCacheConfiguration>
|
||||
<EventOperationTaskConfiguration>
|
||||
<Enable>true</Enable>
|
||||
</EventOperationTaskConfiguration>
|
||||
<CertificateCacheConfiguration>
|
||||
<Enable>false</Enable>
|
||||
<ExpiryTime>86400</ExpiryTime>
|
||||
</CertificateCacheConfiguration>
|
||||
<ArchivalConfiguration>
|
||||
<DataSourceConfiguration>
|
||||
<JndiLookupDefinition>
|
||||
<Name>jdbc/DM_ARCHIVAL_DS</Name>
|
||||
</JndiLookupDefinition>
|
||||
</DataSourceConfiguration>
|
||||
<ArchivalTask>
|
||||
<Enabled>false</Enabled>
|
||||
<TaskClass>org.wso2.carbon.device.mgt.core.task.impl.ArchivalTask</TaskClass>
|
||||
<!-- Cron expression to run the task at specified time -->
|
||||
<CronExpression>0 0 0 1/1 * ? *</CronExpression>
|
||||
<!-- How many days of data should we keep in transactional tables? Must be in number of days -->
|
||||
<RetentionPeriod>30</RetentionPeriod>
|
||||
<ExecutionBatchSize>1000</ExecutionBatchSize>
|
||||
<PurgingTask>
|
||||
<Enabled>false</Enabled>
|
||||
<TaskClass>org.wso2.carbon.device.mgt.core.task.impl.ArchivedDataDeletionTask</TaskClass>
|
||||
<!-- Cron expression to run the task at specified time -->
|
||||
<CronExpression>0 0 3 1/1 * ? *</CronExpression>
|
||||
<!-- After this number of days, data will be permanently deleted from archival tables.
|
||||
Data retention period must be in number of DAYS -->
|
||||
<RetentionPeriod>365</RetentionPeriod>
|
||||
</PurgingTask>
|
||||
</ArchivalTask>
|
||||
</ArchivalConfiguration>
|
||||
<GeoLocationConfiguration>
|
||||
<Enabled>false</Enabled>
|
||||
</GeoLocationConfiguration>
|
||||
<OperationAnalyticsConfiguration>
|
||||
<PublishLocationResponse>false</PublishLocationResponse>
|
||||
<PublishDeviceInfoResponse>false</PublishDeviceInfoResponse>
|
||||
<PublishOperationResponse>
|
||||
<Enabled>false</Enabled>
|
||||
<Operations>
|
||||
<!-- Publish specific operation responses -->
|
||||
<!--
|
||||
<Operation>BATTERY_LEVEL</Operation>
|
||||
<Operation>CHECK_LOCK_STATUS</Operation>
|
||||
-->
|
||||
<!-- use wildcard '*' to publish all responses -->
|
||||
<Operation>*</Operation>
|
||||
</Operations>
|
||||
</PublishOperationResponse>
|
||||
</OperationAnalyticsConfiguration>
|
||||
<!--This configuration used to configure the options for remote device control feature -->
|
||||
<RemoteSessionConfiguration>
|
||||
<Enabled>true</Enabled>
|
||||
<RemoteSessionServerUrl>wss://localhost:9443</RemoteSessionServerUrl>
|
||||
<MaximumHTTPConnectionPerHost>2</MaximumHTTPConnectionPerHost>
|
||||
<MaximumTotalHTTPConnections>100</MaximumTotalHTTPConnections>
|
||||
<MaximumMessagesPerSecond>20</MaximumMessagesPerSecond>
|
||||
<SessionIdleTimeOut>15</SessionIdleTimeOut>
|
||||
<MaximumMessageBufferSize>640</MaximumMessageBufferSize>
|
||||
</RemoteSessionConfiguration>
|
||||
<DefaultGroupsConfiguration>BYOD,COPE</DefaultGroupsConfiguration>
|
||||
</DeviceMgtConfiguration>
|
||||
|
@ -0,0 +1,26 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<!--
|
||||
~ Copyright (C) 2018 - 2023 Entgra (Pvt) Ltd, Inc - All Rights Reserved.
|
||||
~
|
||||
~ Unauthorised copying/redistribution of this file, via any medium is strictly prohibited.
|
||||
~
|
||||
~ Licensed under the Entgra Commercial License, Version 1.0 (the "License");
|
||||
~ you may not use this file except in compliance with the License.
|
||||
~ You may obtain a copy of the License at
|
||||
~
|
||||
~ https://entgra.io/licenses/entgra-commercial/1.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.
|
||||
-->
|
||||
|
||||
<DataSourceConfig>
|
||||
<Url>jdbc:h2:mem:smart-meter-test-db;DB_CLOSE_ON_EXIT=FALSE;MVCC=true</Url>
|
||||
<DriverClassName>org.h2.Driver</DriverClassName>
|
||||
<User>wso2carbon</User>
|
||||
<Password>wso2carbon</Password>
|
||||
</DataSourceConfig>
|
@ -0,0 +1,12 @@
|
||||
This directory supports adding third-pary config files to specific bundles during runtime.
|
||||
|
||||
Explanation: Each OSGi bundle has its own classLoader. Some thirdpary libs read configs from classPath. This scenario fails in OSGi runtime, since OSGi runtime does not share a common classPath for individual bundles. Bundling config files during the bundle creation process itself will solve the issue. However it limits the ability to edit the configs during restarts.
|
||||
|
||||
Here we are providing a workaround for such scenarios. The given config file will get resolved to a fragment bundle and will get attached to the specified host bundle. The host bundle name(symbolic name) is resolved by looking at the directory structure. Hence host bundle name should be directory name of the config file directory.
|
||||
|
||||
|
||||
Example: The bundle with symbolic name, 'org.foo.bar' expects a config file named 'foobar.properties' from its classPath.
|
||||
|
||||
create a directory named 'org.foo.bar' inside 'repository/conf/etc/bundle-config' - (this directory) and place the foobar.properties file.
|
||||
|
||||
|
@ -0,0 +1,22 @@
|
||||
#
|
||||
# Copyright (C) 2018 - 2023 Entgra (Pvt) Ltd, Inc - All Rights Reserved.
|
||||
#
|
||||
# Unauthorised copying/redistribution of this file, via any medium is strictly prohibited.
|
||||
#
|
||||
# Licensed under the Entgra Commercial License, Version 1.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# https://entgra.io/licenses/entgra-commercial/1.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.
|
||||
#
|
||||
|
||||
#osgi.service.1 = org.wso2.carbon.client.configcontext.provider.Axis2ClientConfigContextProvider
|
||||
#osgi.service.2 = org.wso2.carbon.user.core.UserManager
|
||||
#osgi.service.3 = org.wso2.carbon.user.api.UserRealmService
|
@ -0,0 +1,56 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<!--
|
||||
~ Copyright (C) 2018 - 2023 Entgra (Pvt) Ltd, Inc - All Rights Reserved.
|
||||
~
|
||||
~ Unauthorised copying/redistribution of this file, via any medium is strictly prohibited.
|
||||
~
|
||||
~ Licensed under the Entgra Commercial License, Version 1.0 (the "License");
|
||||
~ you may not use this file except in compliance with the License.
|
||||
~ You may obtain a copy of the License at
|
||||
~
|
||||
~ https://entgra.io/licenses/entgra-commercial/1.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.
|
||||
-->
|
||||
|
||||
<!--configuration bit values should be given in Mega Bytes (1KB = 1024 bytes, 1MB = 1024 KB, 1GB = 1024 MB), CPU value in MHz-->
|
||||
<Configuration enabled="true">
|
||||
<!--Configuration Validators to validate system configs against recommended config settings-->
|
||||
<Validator class="org.wso2.carbon.core.bootup.validator.SystemValidator">
|
||||
<Parameter id="CPU">800</Parameter>
|
||||
<Parameter id="RAM">2047</Parameter>
|
||||
<Parameter id="swap">2047</Parameter>
|
||||
<Parameter id="freeDisk">1024</Parameter>
|
||||
<Parameter id="ulimit">4096</Parameter>
|
||||
<Parameter id="certFingerprint">02:FB:AA:5F:20:64:49:4A:27:29:55:71:83:F7:46:CD</Parameter>
|
||||
</Validator>
|
||||
<Validator class="org.wso2.carbon.core.bootup.validator.JVMValidator">
|
||||
<Parameter id="initHeapSize">256</Parameter>
|
||||
<Parameter id="maxHeapSize">512</Parameter>
|
||||
<Parameter id="maxPermGenSize">256</Parameter>
|
||||
</Validator>
|
||||
<Validator class="org.wso2.carbon.core.bootup.validator.RequiredSystemPropertiesValidator">
|
||||
<Parameter id="p1">carbon.home</Parameter>
|
||||
<Parameter id="p2">carbon.config.dir.path</Parameter>
|
||||
<Parameter id="p3">axis2.home</Parameter>
|
||||
</Validator>
|
||||
<Validator class="org.wso2.carbon.core.bootup.validator.SupportedOSValidator">
|
||||
<Parameter id="os1">Linux</Parameter>
|
||||
<Parameter id="os2">Unix</Parameter>
|
||||
<Parameter id="os3">Mac OS</Parameter>
|
||||
<Parameter id="os4">Windows Server 2003</Parameter>
|
||||
<Parameter id="os5">Windows XP</Parameter>
|
||||
<Parameter id="os6">Windows Vista</Parameter>
|
||||
<Parameter id="os7">Windows 7</Parameter>
|
||||
<Parameter id="os8">Mac OS X</Parameter>
|
||||
<Parameter id="os9">Windows Server 2008</Parameter>
|
||||
<Parameter id="os10">Windows Server 2008 R2</Parameter>
|
||||
<Parameter id="os11">AIX</Parameter>
|
||||
</Validator>
|
||||
</Configuration>
|
||||
|
@ -0,0 +1,35 @@
|
||||
<!--
|
||||
~ Copyright (C) 2018 - 2023 Entgra (Pvt) Ltd, Inc - All Rights Reserved.
|
||||
~
|
||||
~ Unauthorised copying/redistribution of this file, via any medium is strictly prohibited.
|
||||
~
|
||||
~ Licensed under the Entgra Commercial License, Version 1.0 (the "License");
|
||||
~ you may not use this file except in compliance with the License.
|
||||
~ You may obtain a copy of the License at
|
||||
~
|
||||
~ https://entgra.io/licenses/entgra-commercial/1.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.
|
||||
-->
|
||||
|
||||
<!--
|
||||
This file is used to configuring the JMX server. You can disable the JMX RMI server from starting
|
||||
by setting the value of the StartRMIServer to false.
|
||||
-->
|
||||
<JMX xmlns="http://wso2.org/projects/carbon/jmx.xml">
|
||||
<StartRMIServer>true</StartRMIServer>
|
||||
|
||||
<!-- HostName, or Network interface to which this RMI server should be bound -->
|
||||
<HostName>localhost</HostName>
|
||||
|
||||
<!-- ${Ports.JMX.RMIRegistryPort} is defined in the Ports section of the carbon.xml-->
|
||||
<RMIRegistryPort>${Ports.JMX.RMIRegistryPort}</RMIRegistryPort>
|
||||
|
||||
<!-- ${Ports.JMX.RMIRegistryPort} is defined in the Ports section of the carbon.xml-->
|
||||
<RMIServerPort>${Ports.JMX.RMIServerPort}</RMIServerPort>
|
||||
</JMX>
|
@ -0,0 +1,258 @@
|
||||
# Eclipse Runtime Configuration Overrides
|
||||
# These properties are loaded prior to starting the framework and can also be used to override System Properties
|
||||
# @null is a special value used to override and clear the framework's copy of a System Property prior to starting the framework
|
||||
# "*" can be used together with @null to clear System Properties that match a prefix name.
|
||||
|
||||
osgi.*=@null
|
||||
org.osgi.*=@null
|
||||
eclipse.*=@null
|
||||
|
||||
osgi.parentClassloader=app
|
||||
osgi.contextClassLoaderParent=app
|
||||
|
||||
# When osgi.clean is set to "true", any cached data used by the OSGi framework
|
||||
# will be wiped clean. This will clean the caches used to store bundle
|
||||
# dependency resolution and eclipse extension registry data. Using this
|
||||
# option will force OSGi framework to reinitialize these caches.
|
||||
# The following setting is put in place to get rid of the problems
|
||||
# faced when re-starting the system. Please note that, when this setting is
|
||||
# true, if you manually start a bundle, it would not be available when
|
||||
# you re-start the system. To avid this, copy the bundle jar to the plugins
|
||||
# folder, before you re-start the system.
|
||||
osgi.clean=true
|
||||
|
||||
# Uncomment the following line to turn on Eclipse Equinox debugging.
|
||||
# You may also edit the osgi-debug.options file and fine tune the debugging
|
||||
# options to suite your needs.
|
||||
#osgi.debug=./repository/conf/osgi-debug.options
|
||||
|
||||
# Following system property allows us to control the public JDK packages exported through the system bundle.
|
||||
org.osgi.framework.system.packages=javax.accessibility,\
|
||||
javax.activity,\
|
||||
javax.crypto,\
|
||||
javax.crypto.interfaces,\
|
||||
javax.crypto.spec,\
|
||||
javax.imageio,\
|
||||
javax.imageio.event,\
|
||||
javax.imageio.metadata,\
|
||||
javax.imageio.plugins.bmp,\
|
||||
javax.imageio.plugins.jpeg,\
|
||||
javax.imageio.spi,\
|
||||
javax.imageio.stream,\
|
||||
javax.jms,\
|
||||
javax.management,\
|
||||
javax.management.loading,\
|
||||
javax.management.modelmbean,\
|
||||
javax.management.monitor,\
|
||||
javax.management.openmbean,\
|
||||
javax.management.relation,\
|
||||
javax.management.remote,\
|
||||
javax.management.remote.rmi,\
|
||||
javax.management.timer,\
|
||||
javax.naming,\
|
||||
javax.naming.directory,\
|
||||
javax.naming.event,\
|
||||
javax.naming.ldap,\
|
||||
javax.naming.spi,\
|
||||
javax.net,\
|
||||
javax.net.ssl,\
|
||||
javax.print,\
|
||||
javax.print.attribute,\
|
||||
javax.print.attribute.standard,\
|
||||
javax.print.event,\
|
||||
javax.rmi,\
|
||||
javax.rmi.CORBA,\
|
||||
javax.rmi.ssl,\
|
||||
javax.script,\
|
||||
javax.security.auth,\
|
||||
javax.security.auth.callback,\
|
||||
javax.security.auth.kerberos,\
|
||||
javax.security.auth.login,\
|
||||
javax.security.auth.spi,\
|
||||
javax.security.auth.x500,\
|
||||
javax.security.cert,\
|
||||
javax.security.sasl,\
|
||||
javax.sound.midi,\
|
||||
javax.sound.midi.spi,\
|
||||
javax.sound.sampled,\
|
||||
javax.sound.sampled.spi,\
|
||||
javax.sql,\
|
||||
javax.sql.rowset,\
|
||||
javax.sql.rowset.serial,\
|
||||
javax.sql.rowset.spi,\
|
||||
javax.swing,\
|
||||
javax.swing.border,\
|
||||
javax.swing.colorchooser,\
|
||||
javax.swing.event,\
|
||||
javax.swing.filechooser,\
|
||||
javax.swing.plaf,\
|
||||
javax.swing.plaf.basic,\
|
||||
javax.swing.plaf.metal,\
|
||||
javax.swing.plaf.multi,\
|
||||
javax.swing.plaf.synth,\
|
||||
javax.swing.table,\
|
||||
javax.swing.text,\
|
||||
javax.swing.text.html,\
|
||||
javax.swing.text.html.parser,\
|
||||
javax.swing.text.rtf,\
|
||||
javax.swing.tree,\
|
||||
javax.swing.undo,\
|
||||
javax.transaction,\
|
||||
javax.transaction.xa,\
|
||||
javax.xml.namespace,\
|
||||
javax.xml.parsers,\
|
||||
javax.xml.stream,\
|
||||
javax.xml.stream.events,\
|
||||
javax.xml.stream.util,\
|
||||
javax.xml.transform,\
|
||||
javax.xml.transform.stream,\
|
||||
javax.xml.transform.dom,\
|
||||
javax.xml.transform.sax,\
|
||||
javax.xml,\
|
||||
javax.xml.validation,\
|
||||
javax.xml.datatype,\
|
||||
javax.xml.xpath,\
|
||||
javax.activation,\
|
||||
com.sun.activation.registries,\
|
||||
com.sun.activation.viewers,\
|
||||
org.ietf.jgss,\
|
||||
org.omg.CORBA,\
|
||||
org.omg.CORBA_2_3,\
|
||||
org.omg.CORBA_2_3.portable,\
|
||||
org.omg.CORBA.DynAnyPackage,\
|
||||
org.omg.CORBA.ORBPackage,\
|
||||
org.omg.CORBA.portable,\
|
||||
org.omg.CORBA.TypeCodePackage,\
|
||||
org.omg.CosNaming,\
|
||||
org.omg.CosNaming.NamingContextExtPackage,\
|
||||
org.omg.CosNaming.NamingContextPackage,\
|
||||
org.omg.Dynamic,\
|
||||
org.omg.DynamicAny,\
|
||||
org.omg.DynamicAny.DynAnyFactoryPackage,\
|
||||
org.omg.DynamicAny.DynAnyPackage,\
|
||||
org.omg.IOP,\
|
||||
org.omg.IOP.CodecFactoryPackage,\
|
||||
org.omg.IOP.CodecPackage,\
|
||||
org.omg.Messaging,\
|
||||
org.omg.PortableInterceptor,\
|
||||
org.omg.PortableInterceptor.ORBInitInfoPackage,\
|
||||
org.omg.PortableServer,\
|
||||
org.omg.PortableServer.CurrentPackage,\
|
||||
org.omg.PortableServer.POAManagerPackage,\
|
||||
org.omg.PortableServer.POAPackage,\
|
||||
org.omg.PortableServer.portable,\
|
||||
org.omg.PortableServer.ServantLocatorPackage,\
|
||||
org.omg.SendingContext,\
|
||||
org.omg.stub.java.rmi,\
|
||||
org.w3c.dom,\
|
||||
org.w3c.dom.bootstrap,\
|
||||
org.w3c.dom.css,\
|
||||
org.w3c.dom.events,\
|
||||
org.w3c.dom.html,\
|
||||
org.w3c.dom.ls,\
|
||||
org.w3c.dom.ranges,\
|
||||
org.w3c.dom.stylesheets,\
|
||||
org.w3c.dom.traversal,\
|
||||
org.w3c.dom.views ,\
|
||||
org.xml.sax,\
|
||||
org.xml.sax.ext,\
|
||||
org.xml.sax.helpers,\
|
||||
org.apache.xerces.xpointer,\
|
||||
org.apache.xerces.xni.grammars,\
|
||||
org.apache.xerces.impl.xs.util,\
|
||||
org.apache.xerces.jaxp.validation,\
|
||||
org.apache.xerces.impl.dtd.models,\
|
||||
org.apache.xerces.impl.xpath,\
|
||||
org.apache.xerces.dom3.as,\
|
||||
org.apache.xerces.impl.dv.xs,\
|
||||
org.apache.xerces.util,\
|
||||
org.apache.xerces.impl.xs.identity,\
|
||||
org.apache.xerces.impl.xs.opti,\
|
||||
org.apache.xerces.jaxp,\
|
||||
org.apache.xerces.impl.dv,\
|
||||
org.apache.xerces.xs.datatypes,\
|
||||
org.apache.xerces.dom.events,\
|
||||
org.apache.xerces.impl.msg,\
|
||||
org.apache.xerces.xni,\
|
||||
org.apache.xerces.impl.xs,\
|
||||
org.apache.xerces.impl,\
|
||||
org.apache.xerces.impl.io,\
|
||||
org.apache.xerces.xinclude,\
|
||||
org.apache.xerces.jaxp.datatype,\
|
||||
org.apache.xerces.parsers,\
|
||||
org.apache.xerces.impl.dv.util,\
|
||||
org.apache.xerces.xni.parser,\
|
||||
org.apache.xerces.impl.xs.traversers,\
|
||||
org.apache.xerces.impl.dv.dtd,\
|
||||
org.apache.xerces.xs,\
|
||||
org.apache.xerces.impl.dtd,\
|
||||
org.apache.xerces.impl.validation,\
|
||||
org.apache.xerces.impl.xs.models,\
|
||||
org.apache.xerces.impl.xpath.regex,\
|
||||
org.apache.xml.serialize,\
|
||||
org.apache.xerces.dom,\
|
||||
org.apache.xalan,\
|
||||
org.apache.xalan.xslt,\
|
||||
org.apache.xalan.templates,\
|
||||
org.apache.xalan.xsltc,\
|
||||
org.apache.xalan.xsltc.cmdline,\
|
||||
org.apache.xalan.xsltc.cmdline.getopt,\
|
||||
org.apache.xalan.xsltc.trax,\
|
||||
org.apache.xalan.xsltc.dom,\
|
||||
org.apache.xalan.xsltc.runtime,\
|
||||
org.apache.xalan.xsltc.runtime.output,\
|
||||
org.apache.xalan.xsltc.util,\
|
||||
org.apache.xalan.xsltc.compiler,\
|
||||
org.apache.xalan.xsltc.compiler.util,\
|
||||
org.apache.xalan.serialize,\
|
||||
org.apache.xalan.client,\
|
||||
org.apache.xalan.res,\
|
||||
org.apache.xalan.transformer,\
|
||||
org.apache.xalan.extensions,\
|
||||
org.apache.xalan.lib,\
|
||||
org.apache.xalan.lib.sql,\
|
||||
org.apache.xalan.processor,\
|
||||
org.apache.xalan.trace,\
|
||||
org.apache.xml.dtm,\
|
||||
org.apache.xml.dtm.ref,\
|
||||
org.apache.xml.dtm.ref.sax2dtm,\
|
||||
org.apache.xml.dtm.ref.dom2dtm,\
|
||||
org.apache.xml.utils,\
|
||||
org.apache.xml.utils.res,\
|
||||
org.apache.xml.res,\
|
||||
org.apache.xml.serializer,\
|
||||
org.apache.xml.serializer.utils,\
|
||||
org.apache.xpath,\
|
||||
org.apache.xpath.domapi,\
|
||||
org.apache.xpath.objects,\
|
||||
org.apache.xpath.patterns,\
|
||||
org.apache.xpath.jaxp,\
|
||||
org.apache.xpath.res,\
|
||||
org.apache.xpath.operations,\
|
||||
org.apache.xpath.functions,\
|
||||
org.apache.xpath.axes,\
|
||||
org.apache.xpath.compiler,\
|
||||
org.apache.xml.resolver,\
|
||||
org.apache.xml.resolver.tools,\
|
||||
org.apache.xml.resolver.helpers,\
|
||||
org.apache.xml.resolver.readers,\
|
||||
org.apache.xml.resolver.etc,\
|
||||
org.apache.xml.resolver.apps,\
|
||||
javax.xml.ws,\
|
||||
javax.xml.ws.handler,\
|
||||
javax.xml.ws.handler.soap,\
|
||||
javax.xml.ws.http,\
|
||||
javax.xml.ws.soap,\
|
||||
javax.xml.ws.spi,\
|
||||
javax.xml.ws.spi.http,\
|
||||
javax.xml.ws.wsaddressing,\
|
||||
javax.xml.bind,\
|
||||
javax.xml.bind.annotation,\
|
||||
javax.xml.bind.annotation.adapters,\
|
||||
javax.annotation,\
|
||||
javax.jws,\
|
||||
javax.jws.soap,\
|
||||
com.sun.xml.internal.messaging.saaj.soap.ver1_1,\
|
||||
com.sun.xml.internal.messaging.saaj.soap,\
|
||||
com.sun.tools.internal.ws.spi,\
|
||||
org.wso2.carbon.bootstrap
|
@ -0,0 +1,73 @@
|
||||
#
|
||||
# Copyright (C) 2018 - 2023 Entgra (Pvt) Ltd, Inc - All Rights Reserved.
|
||||
#
|
||||
# Unauthorised copying/redistribution of this file, via any medium is strictly prohibited.
|
||||
#
|
||||
# Licensed under the Entgra Commercial License, Version 1.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# https://entgra.io/licenses/entgra-commercial/1.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.
|
||||
#
|
||||
|
||||
############################################################
|
||||
# Default Logging Configuration File
|
||||
#
|
||||
# You can use a different file by specifying a filename
|
||||
# with the java.util.logging.config.file system property.
|
||||
# For example java -Djava.util.logging.config.file=myfile
|
||||
############################################################
|
||||
############################################################
|
||||
# Global properties
|
||||
# NOTE: this configuration file use to get the handler list,
|
||||
# Properties(except level property) define for each handler
|
||||
# may be not available because LogRecords handover to log4j
|
||||
# appenders in runtime.
|
||||
############################################################
|
||||
# "handlers" specifies a comma separated list of log Handler
|
||||
# classes. These handlers will be installed during VM startup.
|
||||
# Note that these classes must be on the system classpath.
|
||||
# By default we only configure a ConsoleHandler, which will only
|
||||
# show messages at the INFO and above levels.
|
||||
#handlers= java.util.logging.ConsoleHandler
|
||||
# To also add the FileHandler, use the following line instead.
|
||||
#handlers= java.util.logging.FileHandler, java.util.logging.ConsoleHandler
|
||||
# Add org.wso2.carbon.bootstrap.logging.handlers.LogEventHandler to handlers if you need to push java logs to LOGEVENT appender
|
||||
handlers=org.wso2.carbon.bootstrap.logging.handlers.LoggingConsoleHandler, org.wso2.carbon.bootstrap.logging.handlers.LoggingFileHandler
|
||||
# Default global logging level.
|
||||
# This specifies which kinds of events are logged across
|
||||
# all loggers. For any given facility this global level
|
||||
# can be overriden by a facility specific level
|
||||
# Note that the ConsoleHandler also has a separate level
|
||||
# setting to limit messages printed to the console.
|
||||
.level=INFO
|
||||
############################################################
|
||||
# Handler specific properties.
|
||||
# Describes specific configuration info for Handlers.
|
||||
#
|
||||
############################################################
|
||||
# This FileHandler pushed LogRecords to a log4j FileAppander in runtime
|
||||
org.wso2.carbon.bootstrap.logging.handlers.LoggingFileHandler.level=INFO
|
||||
#org.wso2.carbon.bootstrap.logging.handlers.LoggingFileHandler.formatter = java.util.logging.SimpleFormatter
|
||||
# This ConsoleHandler pushed LogRecords to q log4j ConsoleAppander in runtime
|
||||
org.wso2.carbon.bootstrap.logging.handlers.LoggingConsoleHandler.level=INFO
|
||||
#org.wso2.carbon.bootstrap.logging.handlers.LoggingConsoleHandler.formatter = java.util.logging.SimpleFormatter
|
||||
############################################################
|
||||
# Facility specific properties.
|
||||
# Provides extra control for each logger.
|
||||
############################################################
|
||||
# For example, set the com.xyz.foo logger to only log SEVERE
|
||||
# messages:
|
||||
#com.xyz.foo.level = SEVERE
|
||||
org.apache.coyote.level=SEVERE
|
||||
org.apache.catalina.level=SEVERE
|
||||
com.hazelcast.level=SEVERE
|
||||
|
||||
|
@ -0,0 +1,27 @@
|
||||
#
|
||||
# Copyright 2005-2011 WSO2, Inc. (http://wso2.com)
|
||||
#
|
||||
# Licensed 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.
|
||||
#
|
||||
|
||||
# This file is to define the human readable media type for a mime type.
|
||||
# Eg:-
|
||||
# text/plain txt text
|
||||
application/wsdl+xml WSDL
|
||||
application/x-xsd+xml Schema
|
||||
application/policy+xml Policy
|
||||
application/vnd.wso2-service+xml Service
|
||||
application/vnd.wso2-hyperlink Hyperlink
|
||||
application/vnd.wso2.endpoint Endpoint
|
||||
application/vnd.wso2-api+xml API
|
||||
application/vnd.wso2-uri+xml URI
|
@ -0,0 +1,734 @@
|
||||
#
|
||||
# Copyright 2005-2009 WSO2, Inc. (http://wso2.com)
|
||||
#
|
||||
# Licensed 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.
|
||||
#
|
||||
|
||||
# Media type for wsdl files. This is not defined in the original mime.types file.
|
||||
chemical/x-alchemy alc
|
||||
application/andrew-inset ez
|
||||
application/wsdl+xml wsdl
|
||||
application/vnd.sun.wadl+xml wadl
|
||||
application/activemessage
|
||||
application/applefile
|
||||
application/atomicmail
|
||||
application/batch-SMTP
|
||||
application/beep+xml
|
||||
application/cals-1840
|
||||
application/commonground
|
||||
application/cu-seeme cu
|
||||
application/cybercash
|
||||
application/dca-rft
|
||||
application/dec-dx
|
||||
application/docbook+xml
|
||||
application/dsptype tsp
|
||||
application/dvcs
|
||||
application/edi-consent
|
||||
application/edi-x12
|
||||
application/edifact
|
||||
application/eshop
|
||||
application/font-tdpfr
|
||||
application/futuresplash spl
|
||||
application/ghostview
|
||||
application/hta hta
|
||||
application/http
|
||||
application/hyperstudio
|
||||
application/iges
|
||||
application/index
|
||||
application/index.cmd
|
||||
application/index.obj
|
||||
application/index.response
|
||||
application/index.vnd
|
||||
application/iotp
|
||||
application/ipp
|
||||
application/isup
|
||||
application/java-archive jar
|
||||
application/java-serialized-object ser
|
||||
application/java-vm class
|
||||
application/mac-binhex40 hqx
|
||||
application/mac-compactpro cpt
|
||||
application/macwriteii
|
||||
application/marc
|
||||
application/mathematica nb
|
||||
application/mathematica-old
|
||||
application/msaccess mdb
|
||||
application/msword doc dot
|
||||
application/news-message-id
|
||||
application/news-transmission
|
||||
application/ocsp-request
|
||||
application/ocsp-response
|
||||
application/octet-stream bin
|
||||
application/oda oda
|
||||
application/ogg ogg
|
||||
application/parityfec
|
||||
application/pdf pdf
|
||||
application/pgp-encrypted
|
||||
application/pgp-keys key
|
||||
application/pgp-signature pgp
|
||||
application/pics-rules prf
|
||||
application/pkcs10
|
||||
application/pkcs7-mime
|
||||
application/pkcs7-signature
|
||||
application/pkix-cert
|
||||
application/pkix-crl
|
||||
application/pkixcmp
|
||||
application/policy+xml
|
||||
application/postscript ps ai eps
|
||||
application/prs.alvestrand.titrax-sheet
|
||||
application/prs.cww
|
||||
application/prs.nprend
|
||||
application/qsig
|
||||
application/rar rar
|
||||
application/rdf+xml rdf
|
||||
application/remote-printing
|
||||
application/riscos
|
||||
application/rss+xml rss
|
||||
application/rtf
|
||||
application/sdp
|
||||
application/set-payment
|
||||
application/set-payment-initiation
|
||||
application/set-registration
|
||||
application/set-registration-initiation
|
||||
application/sgml
|
||||
application/sgml-open-catalog
|
||||
application/sieve
|
||||
application/slate
|
||||
application/smil smi smil
|
||||
application/timestamp-query
|
||||
application/timestamp-reply
|
||||
application/vemmi
|
||||
application/whoispp-query
|
||||
application/whoispp-response
|
||||
application/wita
|
||||
application/wordperfect wpd
|
||||
application/wordperfect5.1 wp5
|
||||
application/x400-bp
|
||||
application/xhtml+xml xhtml xht
|
||||
application/xml xml xsl xslt jrxml
|
||||
application/xml-dtd
|
||||
application/xml-external-parsed-entity
|
||||
application/zip zip
|
||||
application/vnd.3M.Post-it-Notes
|
||||
application/vnd.accpac.simply.aso
|
||||
application/vnd.accpac.simply.imp
|
||||
application/vnd.acucobol
|
||||
application/vnd.aether.imp
|
||||
application/vnd.anser-web-certificate-issue-initiation
|
||||
application/vnd.anser-web-funds-transfer-initiation
|
||||
application/vnd.audiograph
|
||||
application/vnd.bmi
|
||||
application/vnd.businessobjects
|
||||
application/vnd.canon-cpdl
|
||||
application/vnd.canon-lips
|
||||
application/vnd.cinderella cdy
|
||||
application/vnd.claymore
|
||||
application/vnd.commerce-battelle
|
||||
application/vnd.commonspace
|
||||
application/vnd.comsocaller
|
||||
application/vnd.contact.cmsg
|
||||
application/vnd.cosmocaller
|
||||
application/vnd.ctc-posml
|
||||
application/vnd.cups-postscript
|
||||
application/vnd.cups-raster
|
||||
application/vnd.cups-raw
|
||||
application/vnd.cybank
|
||||
application/vnd.dna
|
||||
application/vnd.dpgraph
|
||||
application/vnd.dxr
|
||||
application/vnd.ecdis-update
|
||||
application/vnd.ecowin.chart
|
||||
application/vnd.ecowin.filerequest
|
||||
application/vnd.ecowin.fileupdate
|
||||
application/vnd.ecowin.series
|
||||
application/vnd.ecowin.seriesrequest
|
||||
application/vnd.ecowin.seriesupdate
|
||||
application/vnd.enliven
|
||||
application/vnd.epson.esf
|
||||
application/vnd.epson.msf
|
||||
application/vnd.epson.quickanime
|
||||
application/vnd.epson.salt
|
||||
application/vnd.epson.ssf
|
||||
application/vnd.ericsson.quickcall
|
||||
application/vnd.eudora.data
|
||||
application/vnd.fdf
|
||||
application/vnd.ffsns
|
||||
application/vnd.flographit
|
||||
application/vnd.framemaker
|
||||
application/vnd.fsc.weblaunch
|
||||
application/vnd.fujitsu.oasys
|
||||
application/vnd.fujitsu.oasys2
|
||||
application/vnd.fujitsu.oasys3
|
||||
application/vnd.fujitsu.oasysgp
|
||||
application/vnd.fujitsu.oasysprs
|
||||
application/vnd.fujixerox.ddd
|
||||
application/vnd.fujixerox.docuworks
|
||||
application/vnd.fujixerox.docuworks.binder
|
||||
application/vnd.fut-misnet
|
||||
application/vnd.grafeq
|
||||
application/vnd.groove-account
|
||||
application/vnd.groove-identity-message
|
||||
application/vnd.groove-injector
|
||||
application/vnd.groove-tool-message
|
||||
application/vnd.groove-tool-template
|
||||
application/vnd.groove-vcard
|
||||
application/vnd.hhe.lesson-player
|
||||
application/vnd.hp-HPGL
|
||||
application/vnd.hp-PCL
|
||||
application/vnd.hp-PCLXL
|
||||
application/vnd.hp-hpid
|
||||
application/vnd.hp-hps
|
||||
application/vnd.httphone
|
||||
application/vnd.hzn-3d-crossword
|
||||
application/vnd.ibm.MiniPay
|
||||
application/vnd.ibm.afplinedata
|
||||
application/vnd.ibm.modcap
|
||||
application/vnd.informix-visionary
|
||||
application/vnd.intercon.formnet
|
||||
application/vnd.intertrust.digibox
|
||||
application/vnd.intertrust.nncp
|
||||
application/vnd.intu.qbo
|
||||
application/vnd.intu.qfx
|
||||
application/vnd.irepository.package+xml
|
||||
application/vnd.is-xpr
|
||||
application/vnd.japannet-directory-service
|
||||
application/vnd.japannet-jpnstore-wakeup
|
||||
application/vnd.japannet-payment-wakeup
|
||||
application/vnd.japannet-registration
|
||||
application/vnd.japannet-registration-wakeup
|
||||
application/vnd.japannet-setstore-wakeup
|
||||
application/vnd.japannet-verification
|
||||
application/vnd.japannet-verification-wakeup
|
||||
application/vnd.koan
|
||||
application/vnd.lotus-1-2-3
|
||||
application/vnd.lotus-approach
|
||||
application/vnd.lotus-freelance
|
||||
application/vnd.lotus-notes
|
||||
application/vnd.lotus-organizer
|
||||
application/vnd.lotus-screencam
|
||||
application/vnd.lotus-wordpro
|
||||
application/vnd.mcd
|
||||
application/vnd.mediastation.cdkey
|
||||
application/vnd.meridian-slingshot
|
||||
application/vnd.mif
|
||||
application/vnd.minisoft-hp3000-save
|
||||
application/vnd.mitsubishi.misty-guard.trustweb
|
||||
application/vnd.mobius.daf
|
||||
application/vnd.mobius.dis
|
||||
application/vnd.mobius.msl
|
||||
application/vnd.mobius.plc
|
||||
application/vnd.mobius.txf
|
||||
application/vnd.motorola.flexsuite
|
||||
application/vnd.motorola.flexsuite.adsi
|
||||
application/vnd.motorola.flexsuite.fis
|
||||
application/vnd.motorola.flexsuite.gotap
|
||||
application/vnd.motorola.flexsuite.kmr
|
||||
application/vnd.motorola.flexsuite.ttc
|
||||
application/vnd.motorola.flexsuite.wem
|
||||
application/vnd.mozilla.xul+xml xul
|
||||
application/vnd.ms-artgalry
|
||||
application/vnd.ms-asf
|
||||
application/vnd.ms-excel xls xlb xlt
|
||||
application/vnd.ms-lrm
|
||||
application/vnd.ms-pki.seccat cat
|
||||
application/vnd.ms-pki.stl stl
|
||||
application/vnd.ms-powerpoint ppt pps
|
||||
application/vnd.ms-project
|
||||
application/vnd.ms-tnef
|
||||
application/vnd.ms-works
|
||||
application/vnd.mseq
|
||||
application/vnd.msign
|
||||
application/vnd.music-niff
|
||||
application/vnd.musician
|
||||
application/vnd.netfpx
|
||||
application/vnd.noblenet-directory
|
||||
application/vnd.noblenet-sealer
|
||||
application/vnd.noblenet-web
|
||||
application/vnd.novadigm.EDM
|
||||
application/vnd.novadigm.EDX
|
||||
application/vnd.novadigm.EXT
|
||||
application/vnd.oasis.opendocument.chart odc
|
||||
application/vnd.oasis.opendocument.database odb
|
||||
application/vnd.oasis.opendocument.formula odf
|
||||
application/vnd.oasis.opendocument.graphics odg
|
||||
application/vnd.oasis.opendocument.graphics-template otg
|
||||
application/vnd.oasis.opendocument.image odi
|
||||
application/vnd.oasis.opendocument.presentation odp
|
||||
application/vnd.oasis.opendocument.presentation-template otp
|
||||
application/vnd.oasis.opendocument.spreadsheet ods
|
||||
application/vnd.oasis.opendocument.spreadsheet-template ots
|
||||
application/vnd.oasis.opendocument.text odt
|
||||
application/vnd.oasis.opendocument.text-master odm
|
||||
application/vnd.oasis.opendocument.text-template ott
|
||||
application/vnd.oasis.opendocument.text-web oth
|
||||
application/vnd.osa.netdeploy
|
||||
application/vnd.palm
|
||||
application/vnd.pg.format
|
||||
application/vnd.pg.osasli
|
||||
application/vnd.powerbuilder6
|
||||
application/vnd.powerbuilder6-s
|
||||
application/vnd.powerbuilder7
|
||||
application/vnd.powerbuilder7-s
|
||||
application/vnd.powerbuilder75
|
||||
application/vnd.powerbuilder75-s
|
||||
application/vnd.previewsystems.box
|
||||
application/vnd.publishare-delta-tree
|
||||
application/vnd.pvi.ptid1
|
||||
application/vnd.pwg-xhtml-print+xml
|
||||
application/vnd.rapid
|
||||
application/vnd.rim.cod cod
|
||||
application/vnd.s3sms
|
||||
application/vnd.seemail
|
||||
application/vnd.shana.informed.formdata
|
||||
application/vnd.shana.informed.formtemplate
|
||||
application/vnd.shana.informed.interchange
|
||||
application/vnd.shana.informed.package
|
||||
application/vnd.smaf mmf
|
||||
application/vnd.sss-cod
|
||||
application/vnd.sss-dtf
|
||||
application/vnd.sss-ntf
|
||||
application/vnd.stardivision.calc sdc
|
||||
application/vnd.stardivision.draw sda
|
||||
application/vnd.stardivision.impress sdd sdp
|
||||
application/vnd.stardivision.math smf
|
||||
application/vnd.stardivision.writer sdw vor
|
||||
application/vnd.stardivision.writer-global sgl
|
||||
application/vnd.street-stream
|
||||
application/vnd.sun.xml.calc sxc
|
||||
application/vnd.sun.xml.calc.template stc
|
||||
application/vnd.sun.xml.draw sxd
|
||||
application/vnd.sun.xml.draw.template std
|
||||
application/vnd.sun.xml.impress sxi
|
||||
application/vnd.sun.xml.impress.template sti
|
||||
application/vnd.sun.xml.math sxm
|
||||
application/vnd.sun.xml.writer sxw
|
||||
application/vnd.sun.xml.writer.global sxg
|
||||
application/vnd.sun.xml.writer.template stw
|
||||
application/vnd.svd
|
||||
application/vnd.swiftview-ics
|
||||
application/vnd.symbian.install sis
|
||||
application/vnd.triscape.mxs
|
||||
application/vnd.trueapp
|
||||
application/vnd.truedoc
|
||||
application/vnd.tve-trigger
|
||||
application/vnd.ufdl
|
||||
application/vnd.uplanet.alert
|
||||
application/vnd.uplanet.alert-wbxml
|
||||
application/vnd.uplanet.bearer-choice
|
||||
application/vnd.uplanet.bearer-choice-wbxml
|
||||
application/vnd.uplanet.cacheop
|
||||
application/vnd.uplanet.cacheop-wbxml
|
||||
application/vnd.uplanet.channel
|
||||
application/vnd.uplanet.channel-wbxml
|
||||
application/vnd.uplanet.list
|
||||
application/vnd.uplanet.list-wbxml
|
||||
application/vnd.uplanet.listcmd
|
||||
application/vnd.uplanet.listcmd-wbxml
|
||||
application/vnd.uplanet.signal
|
||||
application/vnd.vcx
|
||||
application/vnd.vectorworks
|
||||
application/vnd.vidsoft.vidconference
|
||||
application/vnd.visio vsd
|
||||
application/vnd.vividence.scriptfile
|
||||
application/vnd.wap.sic
|
||||
application/vnd.wap.slc
|
||||
application/vnd.wap.wbxml wbxml
|
||||
application/vnd.wap.wmlc wmlc
|
||||
application/vnd.wap.wmlscriptc wmlsc
|
||||
application/vnd.webturbo
|
||||
application/vnd.wrq-hp3000-labelled
|
||||
application/vnd.wso2.bpel+xml bpel
|
||||
application/vnd.wso2.bpmn+xml bpmn
|
||||
application/vnd.wso2.endpoint
|
||||
application/vnd.wso2.governance-archive gar
|
||||
application/vnd.wso2-hyperlink
|
||||
application/vnd.wso2.registry-ext-type+xml rxt
|
||||
application/vnd.wso2-service+xml
|
||||
application/vnd.wso2.xpdl+xml xpdl
|
||||
application/vnd.wt.stf
|
||||
application/vnd.xara
|
||||
application/vnd.xfdl
|
||||
application/vnd.yellowriver-custom-menu
|
||||
application/x-123 wk
|
||||
application/x-abiword abw
|
||||
application/x-apple-diskimage dmg
|
||||
application/x-bcpio bcpio
|
||||
application/x-bittorrent torrent
|
||||
application/x-cdf cdf
|
||||
application/x-cdlink vcd
|
||||
application/x-chess-pgn pgn
|
||||
application/x-core
|
||||
application/x-cpio cpio
|
||||
application/x-csh csh
|
||||
application/x-debian-package deb udeb
|
||||
application/x-director dcr dir dxr
|
||||
application/x-dms dms
|
||||
application/x-doom wad
|
||||
application/x-dvi dvi
|
||||
application/x-executable
|
||||
application/x-flac flac
|
||||
application/x-font pfa pfb gsf pcf pcf.Z
|
||||
application/x-freemind mm
|
||||
application/x-futuresplash spl
|
||||
application/x-gnumeric gnumeric
|
||||
application/x-go-sgf sgf
|
||||
application/x-graphing-calculator gcf
|
||||
application/x-gtar gtar tgz taz
|
||||
application/x-hdf hdf
|
||||
application/x-httpd-php phtml pht php
|
||||
application/x-httpd-php-source phps
|
||||
application/x-httpd-php3 php3
|
||||
application/x-httpd-php3-preprocessed php3p
|
||||
application/x-httpd-php4 php4
|
||||
application/x-httpd-eruby rhtml
|
||||
application/x-ica ica
|
||||
application/x-internet-signup ins isp
|
||||
application/x-iphone iii
|
||||
application/x-iso9660-image iso
|
||||
application/x-java-applet
|
||||
application/x-java-bean
|
||||
application/x-java-jnlp-file jnlp
|
||||
application/x-javascript js
|
||||
application/x-jmol jmz
|
||||
application/x-kchart chrt
|
||||
application/x-kdelnk
|
||||
application/x-killustrator kil
|
||||
application/x-koan skp skd skt skm
|
||||
application/x-kpresenter kpr kpt
|
||||
application/x-kspread ksp
|
||||
application/x-kword kwd kwt
|
||||
application/x-latex latex
|
||||
application/x-lha lha
|
||||
application/x-lzh lzh
|
||||
application/x-lzx lzx
|
||||
application/x-maker frm maker frame fm fb book fbdoc
|
||||
application/x-mif mif
|
||||
application/x-ms-wmd wmd
|
||||
application/x-ms-wmz wmz
|
||||
application/x-msdos-program com exe bat dll
|
||||
application/x-msi msi
|
||||
application/x-netcdf nc
|
||||
application/x-ns-proxy-autoconfig pac
|
||||
application/x-nwc nwc
|
||||
application/x-object o
|
||||
application/x-oz-application oza
|
||||
application/x-pkcs7-certreqresp p7r
|
||||
application/x-pkcs7-crl crl
|
||||
application/x-python-code pyc pyo
|
||||
application/x-quicktimeplayer qtl
|
||||
application/x-redhat-package-manager rpm
|
||||
application/x-rx
|
||||
application/x-sh sh
|
||||
application/x-shar shar
|
||||
application/x-shellscript
|
||||
application/x-shockwave-flash swf swfl
|
||||
application/x-stuffit sit
|
||||
application/x-sv4cpio sv4cpio
|
||||
application/x-sv4crc sv4crc
|
||||
application/x-tar tar
|
||||
application/x-tcl tcl
|
||||
application/x-tex-gf gf
|
||||
application/x-tex-pk pk
|
||||
application/x-texinfo texinfo texi
|
||||
application/x-trash ~ % bak old sik
|
||||
application/x-troff t tr roff
|
||||
application/x-troff-man man
|
||||
application/x-troff-me me
|
||||
application/x-troff-ms ms
|
||||
application/x-ustar ustar
|
||||
application/x-videolan
|
||||
application/x-wais-source src
|
||||
application/x-wingz wz
|
||||
application/x-x509-ca-cert crt
|
||||
application/x-xcf xcf
|
||||
application/x-xfig fig
|
||||
application/x-xpinstall xpi
|
||||
application/x-xsd+xml xsd
|
||||
|
||||
audio/32kadpcm
|
||||
audio/basic au snd
|
||||
audio/g.722.1
|
||||
audio/l16
|
||||
audio/midi mid midi kar
|
||||
audio/mp4a-latm
|
||||
audio/mpa-robust
|
||||
audio/mpeg mpga mpega mp2 mp3 m4a
|
||||
audio/mpegurl m3u
|
||||
audio/parityfec
|
||||
audio/prs.sid sid
|
||||
audio/telephone-event
|
||||
audio/tone
|
||||
audio/vnd.cisco.nse
|
||||
audio/vnd.cns.anp1
|
||||
audio/vnd.cns.inf1
|
||||
audio/vnd.digital-winds
|
||||
audio/vnd.everad.plj
|
||||
audio/vnd.lucent.voice
|
||||
audio/vnd.nortel.vbk
|
||||
audio/vnd.nuera.ecelp4800
|
||||
audio/vnd.nuera.ecelp7470
|
||||
audio/vnd.nuera.ecelp9600
|
||||
audio/vnd.octel.sbc
|
||||
audio/vnd.qcelp
|
||||
audio/vnd.rhetorex.32kadpcm
|
||||
audio/vnd.vmx.cvsd
|
||||
audio/x-aiff aif aiff aifc
|
||||
audio/x-gsm gsm
|
||||
audio/x-mpegurl m3u
|
||||
audio/x-ms-wma wma
|
||||
audio/x-ms-wax wax
|
||||
audio/x-pn-realaudio-plugin
|
||||
audio/x-pn-realaudio ra rm ram
|
||||
audio/x-realaudio ra
|
||||
audio/x-scpls pls
|
||||
audio/x-sd2 sd2
|
||||
audio/x-wav wav
|
||||
|
||||
chemical/x-alchemy alc
|
||||
chemical/x-cache cac cache
|
||||
chemical/x-cache-csf csf
|
||||
chemical/x-cactvs-binary cbin cascii ctab
|
||||
chemical/x-cdx cdx
|
||||
chemical/x-cerius cer
|
||||
chemical/x-chem3d c3d
|
||||
chemical/x-chemdraw chm
|
||||
chemical/x-cif cif
|
||||
chemical/x-cmdf cmdf
|
||||
chemical/x-cml cml
|
||||
chemical/x-compass cpa
|
||||
chemical/x-crossfire bsd
|
||||
chemical/x-csml csml csm
|
||||
chemical/x-ctx ctx
|
||||
chemical/x-cxf cxf cef
|
||||
#chemical/x-daylight-smiles smi
|
||||
chemical/x-embl-dl-nucleotide emb embl
|
||||
chemical/x-galactic-spc spc
|
||||
chemical/x-gamess-input inp gam gamin
|
||||
chemical/x-gaussian-checkpoint fch fchk
|
||||
chemical/x-gaussian-cube cub
|
||||
chemical/x-gaussian-input gau gjc gjf
|
||||
chemical/x-gaussian-log gal
|
||||
chemical/x-gcg8-sequence gcg
|
||||
chemical/x-genbank gen
|
||||
chemical/x-hin hin
|
||||
chemical/x-isostar istr ist
|
||||
chemical/x-jcamp-dx jdx dx
|
||||
chemical/x-kinemage kin
|
||||
chemical/x-macmolecule mcm
|
||||
chemical/x-macromodel-input mmd mmod
|
||||
chemical/x-mdl-molfile mol
|
||||
chemical/x-mdl-rdfile rd
|
||||
chemical/x-mdl-rxnfile rxn
|
||||
chemical/x-mdl-sdfile sd sdf
|
||||
chemical/x-mdl-tgf tgf
|
||||
#chemical/x-mif mif
|
||||
chemical/x-mmcif mcif
|
||||
chemical/x-mol2 mol2
|
||||
chemical/x-molconn-Z b
|
||||
chemical/x-mopac-graph gpt
|
||||
chemical/x-mopac-input mop mopcrt mpc dat zmt
|
||||
chemical/x-mopac-out moo
|
||||
chemical/x-mopac-vib mvb
|
||||
chemical/x-ncbi-asn1 asn
|
||||
chemical/x-ncbi-asn1-ascii prt ent
|
||||
chemical/x-ncbi-asn1-binary val aso
|
||||
chemical/x-ncbi-asn1-spec asn
|
||||
chemical/x-pdb pdb ent
|
||||
chemical/x-rosdal ros
|
||||
chemical/x-swissprot sw
|
||||
chemical/x-vamas-iso14976 vms
|
||||
chemical/x-vmd vmd
|
||||
chemical/x-xtel xtel
|
||||
chemical/x-xyz xyz
|
||||
|
||||
image/cgm
|
||||
image/g3fax
|
||||
image/gif gif
|
||||
image/ief ief
|
||||
image/jpeg jpeg jpg jpe
|
||||
image/naplps
|
||||
image/pcx pcx
|
||||
image/png png
|
||||
image/prs.btif
|
||||
image/prs.pti
|
||||
image/svg+xml svg svgz
|
||||
image/tiff tiff tif
|
||||
image/vnd.cns.inf2
|
||||
image/vnd.djvu djvu djv
|
||||
image/vnd.dwg
|
||||
image/vnd.dxf
|
||||
image/vnd.fastbidsheet
|
||||
image/vnd.fpx
|
||||
image/vnd.fst
|
||||
image/vnd.fujixerox.edmics-mmr
|
||||
image/vnd.fujixerox.edmics-rlc
|
||||
image/vnd.mix
|
||||
image/vnd.net-fpx
|
||||
image/vnd.svf
|
||||
image/vnd.wap.wbmp wbmp
|
||||
image/vnd.xiff
|
||||
image/x-cmu-raster ras
|
||||
image/x-coreldraw cdr
|
||||
image/x-coreldrawpattern pat
|
||||
image/x-coreldrawtemplate cdt
|
||||
image/x-corelphotopaint cpt
|
||||
image/x-icon ico
|
||||
image/x-jg art
|
||||
image/x-jng jng
|
||||
image/x-ms-bmp bmp
|
||||
image/x-photoshop psd
|
||||
image/x-portable-anymap pnm
|
||||
image/x-portable-bitmap pbm
|
||||
image/x-portable-graymap pgm
|
||||
image/x-portable-pixmap ppm
|
||||
image/x-rgb rgb
|
||||
image/x-xbitmap xbm
|
||||
image/x-xpixmap xpm
|
||||
image/x-xwindowdump xwd
|
||||
|
||||
inode/chardevice
|
||||
inode/blockdevice
|
||||
inode/directory-locked
|
||||
inode/directory
|
||||
inode/fifo
|
||||
inode/socket
|
||||
|
||||
message/delivery-status
|
||||
message/disposition-notification
|
||||
message/external-body
|
||||
message/http
|
||||
message/s-http
|
||||
message/news
|
||||
message/partial
|
||||
message/rfc822
|
||||
|
||||
model/iges igs iges
|
||||
model/mesh msh mesh silo
|
||||
model/vnd.dwf
|
||||
model/vnd.flatland.3dml
|
||||
model/vnd.gdl
|
||||
model/vnd.gs-gdl
|
||||
model/vnd.gtw
|
||||
model/vnd.mts
|
||||
model/vnd.vtu
|
||||
model/vrml wrl vrml
|
||||
|
||||
multipart/alternative
|
||||
multipart/appledouble
|
||||
multipart/byteranges
|
||||
multipart/digest
|
||||
multipart/encrypted
|
||||
multipart/form-data
|
||||
multipart/header-set
|
||||
multipart/mixed
|
||||
multipart/parallel
|
||||
multipart/related
|
||||
multipart/report
|
||||
multipart/signed
|
||||
multipart/voice-message
|
||||
|
||||
text/calendar ics icz
|
||||
text/comma-separated-values csv
|
||||
text/css css
|
||||
text/directory
|
||||
text/english
|
||||
text/enriched
|
||||
text/h323 323
|
||||
text/html html htm shtml
|
||||
text/iuls uls
|
||||
text/mathml mml
|
||||
text/parityfec
|
||||
text/plain asc txt text diff pot sql
|
||||
text/prs.lines.tag
|
||||
text/rfc822-headers
|
||||
text/richtext rtx
|
||||
text/rtf rtf
|
||||
text/scriptlet sct wsc
|
||||
text/t140
|
||||
text/texmacs tm ts
|
||||
text/tab-separated-values tsv
|
||||
text/uri-list
|
||||
text/vnd.abc
|
||||
text/vnd.curl
|
||||
text/vnd.DMClientScript
|
||||
text/vnd.flatland.3dml
|
||||
text/vnd.fly
|
||||
text/vnd.fmi.flexstor
|
||||
text/vnd.in3d.3dml
|
||||
text/vnd.in3d.spot
|
||||
text/vnd.IPTC.NewsML
|
||||
text/vnd.IPTC.NITF
|
||||
text/vnd.latex-z
|
||||
text/vnd.motorola.reflex
|
||||
text/vnd.ms-mediapackage
|
||||
text/vnd.sun.j2me.app-descriptor jad
|
||||
text/vnd.wap.si
|
||||
text/vnd.wap.sl
|
||||
text/vnd.wap.wml wml
|
||||
text/vnd.wap.wmlscript wmls
|
||||
text/x-bibtex bib
|
||||
text/x-boo boo
|
||||
text/x-c++hdr h++ hpp hxx hh
|
||||
text/x-c++src c++ cpp cxx cc
|
||||
text/x-chdr h
|
||||
text/x-component htc
|
||||
text/x-crontab
|
||||
text/x-csh csh
|
||||
text/x-csrc c
|
||||
text/x-dsrc d
|
||||
text/x-haskell hs
|
||||
text/x-java java
|
||||
text/x-literate-haskell lhs
|
||||
text/x-makefile
|
||||
text/x-moc moc
|
||||
text/x-pascal p pas
|
||||
text/x-pcs-gcd gcd
|
||||
text/x-perl pl pm
|
||||
text/x-python py
|
||||
text/x-server-parsed-html
|
||||
text/x-setext etx
|
||||
text/x-sh sh
|
||||
text/x-tcl tcl tk
|
||||
text/x-tex tex ltx sty cls
|
||||
text/x-vcalendar vcs
|
||||
text/x-vcard vcf
|
||||
|
||||
video/dl dl
|
||||
video/dv dif dv
|
||||
video/fli fli
|
||||
video/gl gl
|
||||
video/mpeg mpeg mpg mpe
|
||||
video/mp4 mp4
|
||||
video/quicktime qt mov
|
||||
video/mp4v-es
|
||||
video/parityfec
|
||||
video/pointer
|
||||
video/vnd.fvt
|
||||
video/vnd.motorola.video
|
||||
video/vnd.motorola.videop
|
||||
video/vnd.mpegurl mxu
|
||||
video/vnd.mts
|
||||
video/vnd.nokia.interleaved-multimedia
|
||||
video/vnd.vivo
|
||||
video/x-la-asf lsf lsx
|
||||
video/x-mng mng
|
||||
video/x-ms-asf asf asx
|
||||
video/x-ms-wm wm
|
||||
video/x-ms-wmv wmv
|
||||
video/x-ms-wmx wmx
|
||||
video/x-ms-wvx wvx
|
||||
video/x-msvideo avi
|
||||
video/x-sgi-movie movie
|
||||
|
||||
x-conference/x-cooltalk ice
|
||||
|
||||
x-world/x-vrml vrm vrml wrl
|
@ -0,0 +1,95 @@
|
||||
#### Debugging options for org.eclipse.osgi
|
||||
|
||||
# Turn on general debugging for org.eclipse.osgi
|
||||
org.eclipse.osgi/debug=true
|
||||
# Prints out class loading debug information
|
||||
org.eclipse.osgi/debug/loader=false
|
||||
# Prints out event (FrameworkEvent/BundleEvent/ServiceEvent) and listener debug information
|
||||
org.eclipse.osgi/debug/events=false
|
||||
# Prints out OSGi service debug information (registration/getting/ungetting etc.)
|
||||
org.eclipse.osgi/debug/services=false
|
||||
# Prints out bundle manifest parsing debug information
|
||||
org.eclipse.osgi/debug/manifest=false
|
||||
# Prints out LDAP filter debug information
|
||||
org.eclipse.osgi/debug/filter=false
|
||||
# Prints out security (PermissionAdmin service) debug information
|
||||
org.eclipse.osgi/debug/security=false
|
||||
# Prints out start level service debug information
|
||||
org.eclipse.osgi/debug/startlevel=true
|
||||
# Prints out package admin service debug information
|
||||
org.eclipse.osgi/debug/packageadmin=false
|
||||
# Prints out timing information for bundle activation
|
||||
org.eclipse.osgi/debug/bundleTime=false
|
||||
# Debug the loading of message bundles
|
||||
org.eclipse.osgi/debug/messageBundles=false
|
||||
|
||||
# Eclipse adaptor options
|
||||
org.eclipse.osgi/eclipseadaptor/debug = false
|
||||
org.eclipse.osgi/eclipseadaptor/debug/location = false
|
||||
org.eclipse.osgi/eclipseadaptor/debug/platformadmin=false
|
||||
org.eclipse.osgi/eclipseadaptor/debug/platformadmin/resolver=false
|
||||
org.eclipse.osgi/eclipseadaptor/converter/debug = false
|
||||
|
||||
### OSGi resolver options
|
||||
# Turns on debugging for the resolver
|
||||
org.eclipse.osgi/resolver/debug = false
|
||||
# Prints out wiring information after the resolver has completed the resolve process
|
||||
org.eclipse.osgi/resolver/wiring = false
|
||||
# Prints out Import-Package information
|
||||
org.eclipse.osgi/resolver/imports = false
|
||||
# Prints out Require-Bundle information
|
||||
org.eclipse.osgi/resolver/requires = false
|
||||
# Prints out package grouping information form the "uses" clause
|
||||
org.eclipse.osgi/resolver/grouping = false
|
||||
# Prints out cycle information
|
||||
org.eclipse.osgi/resolver/cycles = false
|
||||
# Prints out Eclipse-GenericRequire information
|
||||
org.eclipse.osgi/resolver/generics = false
|
||||
|
||||
#### Profile settings
|
||||
org.eclipse.osgi/profile/startup = false
|
||||
org.eclipse.osgi/profile/benchmark = false
|
||||
org.eclipse.osgi/profile/debug = true
|
||||
|
||||
# Override the default implemenation
|
||||
org.eclipse.osgi/profile/impl = org.eclipse.osgi.internal.profile.DefaultProfileLogger
|
||||
|
||||
# Append all profile messages to the filename specified
|
||||
org.eclipse.osgi/defaultprofile/logfilename =
|
||||
|
||||
# Output all profile log messages synchronously to the jvm console.
|
||||
# By default, all log messages are cached until the log buffer is
|
||||
# requested.
|
||||
org.eclipse.osgi/defaultprofile/logsynchronously = false
|
||||
|
||||
# Specify the size of the default profile implementation log buffer.
|
||||
org.eclipse.osgi/defaultprofile/buffersize = 256
|
||||
|
||||
#### Monitoring settings
|
||||
# monitor class loading
|
||||
org.eclipse.osgi/monitor/classes=false
|
||||
|
||||
# monitor bundle activation
|
||||
org.eclipse.osgi/monitor/activation=false
|
||||
|
||||
# monitor resource bundle (*.properties) loading
|
||||
org.eclipse.osgi/monitor/resources=false
|
||||
|
||||
|
||||
#### Trace settings
|
||||
# trace class loading - snapshot the execution stack when a class is loaded
|
||||
org.eclipse.osgi/trace/classLoading=false
|
||||
|
||||
# trace location - file in which execution traces are written
|
||||
org.eclipse.osgi/trace/filename=runtime.traces
|
||||
|
||||
# trace filters - Java properties file defining which classes should
|
||||
# be traced (if trace/classLoading is true)
|
||||
# File format:
|
||||
# plugins=<comma separated list of plugins whose classes to trace>
|
||||
# packages=<comma separated list of package prefixes of classes to trace>
|
||||
# Note that there may be many 'plugins' and 'packages' lines in one file.
|
||||
org.eclipse.osgi/trace/filters=trace.properties
|
||||
|
||||
# trace bundle activation - snapshot the execution stack when a bundle is activated
|
||||
org.eclipse.osgi/trace/activation=false
|
@ -0,0 +1,70 @@
|
||||
<!--
|
||||
~ Copyright (C) 2018 - 2023 Entgra (Pvt) Ltd, Inc - All Rights Reserved.
|
||||
~
|
||||
~ Unauthorised copying/redistribution of this file, via any medium is strictly prohibited.
|
||||
~
|
||||
~ Licensed under the Entgra Commercial License, Version 1.0 (the "License");
|
||||
~ you may not use this file except in compliance with the License.
|
||||
~ You may obtain a copy of the License at
|
||||
~
|
||||
~ https://entgra.io/licenses/entgra-commercial/1.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.
|
||||
-->
|
||||
|
||||
<tasks-configuration>
|
||||
|
||||
<!--
|
||||
The currently running server mode; possible values are:-
|
||||
STANDALONE, CLUSTERED, REMOTE, AUTO.
|
||||
In AUTO mode, the server startup checks whether clustering is enabled in the system,
|
||||
if so, CLUSTERED mode will be used, or else, the the server mode will be STANDALONE.
|
||||
-->
|
||||
<taskServerMode>STANDALONE</taskServerMode>
|
||||
|
||||
<!--
|
||||
To be used in CLUSTERED mode to notify how many servers are there in
|
||||
the task server cluster, the servers wait till this amount of servers
|
||||
are activated before the tasks are scheduled -->
|
||||
<taskServerCount>2</taskServerCount>
|
||||
|
||||
<!-- The default location resolver configuration -->
|
||||
<defaultLocationResolver>
|
||||
<locationResolverClass>org.wso2.carbon.ntask.core.impl.RoundRobinTaskLocationResolver</locationResolverClass>
|
||||
</defaultLocationResolver>
|
||||
|
||||
<!--
|
||||
if task-type-pattern matches and task-name-pattern matches, check existing addresses of address-pattern,
|
||||
and if addresses exist, select address in round-robin fashion, if not move onto next rule in sequence.
|
||||
<property name="rule-[order]">[task-type-pattern],[task-name-pattern],[address-pattern]</property>
|
||||
-->
|
||||
<!--defaultLocationResolver>
|
||||
<locationResolverClass>org.wso2.carbon.ntask.core.impl.RuleBasedLocationResolver</locationResolverClass>
|
||||
<properties>
|
||||
<property name="rule-1">HIVE_TASK,.*,192.168.2.*</property>
|
||||
<property name="rule-5">.*,.*,.*</property>
|
||||
</properties>
|
||||
</defaultLocationResolver-->
|
||||
|
||||
<!-- The address to which the remote task server should dispatch the trigger messages to,
|
||||
usually this would be an endpoint to a load balancer -->
|
||||
<taskClientDispatchAddress>https://localhost:9448</taskClientDispatchAddress>
|
||||
|
||||
<!-- The address of the remote task server -->
|
||||
<remoteServerAddress>https://localhost:9443</remoteServerAddress>
|
||||
|
||||
<!-- The username to authenticate to the remote task server -->
|
||||
<remoteServerUsername>admin</remoteServerUsername>
|
||||
|
||||
<!-- The password to authenticate to the remote task server -->
|
||||
<remoteServerPassword>admin</remoteServerPassword>
|
||||
|
||||
<!-- Below contain a sample to be used when using with secure vault -->
|
||||
<!--remoteServerPassword svns:secretAlias="remote.task.server.password"></remoteServerPassword-->
|
||||
|
||||
</tasks-configuration>
|
@ -0,0 +1,33 @@
|
||||
#
|
||||
# Copyright (C) 2018 - 2023 Entgra (Pvt) Ltd, Inc - All Rights Reserved.
|
||||
#
|
||||
# Unauthorised copying/redistribution of this file, via any medium is strictly prohibited.
|
||||
#
|
||||
# Licensed under the Entgra Commercial License, Version 1.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# https://entgra.io/licenses/entgra-commercial/1.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.
|
||||
#
|
||||
log4j.rootLogger=DEBUG, console, Default
|
||||
#Automation file appender
|
||||
log4j.appender.Default=org.apache.log4j.RollingFileAppender
|
||||
log4j.appender.Default.File=target/logs/automation.log
|
||||
log4j.appender.Default.Append=true
|
||||
log4j.appender.Default.MaxFileSize=10MB
|
||||
log4j.appender.Default.MaxBackupIndex=10
|
||||
log4j.appender.Default.layout=org.apache.log4j.PatternLayout
|
||||
log4j.appender.Default.layout.ConversionPattern=%d{ISO8601} %-5p [%c] [%t] - %m%n
|
||||
#Automation console appender
|
||||
log4j.appender.console=org.apache.log4j.ConsoleAppender
|
||||
log4j.appender.console.Target=System.out
|
||||
log4j.appender.console.layout=org.apache.log4j.PatternLayout
|
||||
log4j.appender.console.layout.ConversionPattern=%d{ISO8601} %-5p [%c] [%t] - %m%n
|
||||
log4j.logger.io.entgra=TRACE
|
@ -0,0 +1,109 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<!--
|
||||
~ Copyright (C) 2018 - 2023 Entgra (Pvt) Ltd, Inc - All Rights Reserved.
|
||||
~
|
||||
~ Unauthorised copying/redistribution of this file, via any medium is strictly prohibited.
|
||||
~
|
||||
~ Licensed under the Entgra Commercial License, Version 1.0 (the "License");
|
||||
~ you may not use this file except in compliance with the License.
|
||||
~ You may obtain a copy of the License at
|
||||
~
|
||||
~ https://entgra.io/licenses/entgra-commercial/1.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.
|
||||
-->
|
||||
<wso2registry>
|
||||
|
||||
<!--
|
||||
For details on configuring different config & governance registries see;
|
||||
http://wso2.org/library/tutorials/2010/04/sharing-registry-space-across-multiple-product-instances
|
||||
-->
|
||||
|
||||
<currentDBConfig>wso2registry</currentDBConfig>
|
||||
<readOnly>false</readOnly>
|
||||
<enableCache>true</enableCache>
|
||||
<registryRoot>/</registryRoot>
|
||||
|
||||
<dbConfig name="wso2registry">
|
||||
<url>jdbc:h2:./target/databasetest/CARBON_TEST</url>
|
||||
<!--userName>sa</userName>
|
||||
<password>sa</password-->
|
||||
<driverName>org.h2.Driver</driverName>
|
||||
<maxActive>80</maxActive>
|
||||
<maxWait>60000</maxWait>
|
||||
<minIdle>5</minIdle>
|
||||
</dbConfig>
|
||||
|
||||
<!--<handler class="org.wso2.carbon.registry.extensions.handlers.SynapseRepositoryHandler">
|
||||
<filter class="org.wso2.carbon.registry.core.jdbc.handlers.filters.MediaTypeMatcher">
|
||||
<property name="mediaType">application/vnd.apache.synapse</property>
|
||||
</filter>
|
||||
</handler>
|
||||
|
||||
<handler class="org.wso2.carbon.registry.extensions.handlers.SynapseRepositoryHandler">
|
||||
<filter class="org.wso2.carbon.registry.core.jdbc.handlers.filters.MediaTypeMatcher">
|
||||
<property name="mediaType">application/vnd.apache.esb</property>
|
||||
</filter>
|
||||
</handler>
|
||||
|
||||
<handler class="org.wso2.carbon.registry.extensions.handlers.Axis2RepositoryHandler">
|
||||
<filter class="org.wso2.carbon.registry.core.jdbc.handlers.filters.MediaTypeMatcher">
|
||||
<property name="mediaType">application/vnd.apache.axis2</property>
|
||||
</filter>
|
||||
</handler>
|
||||
|
||||
<handler class="org.wso2.carbon.registry.extensions.handlers.Axis2RepositoryHandler">
|
||||
<filter class="org.wso2.carbon.registry.core.jdbc.handlers.filters.MediaTypeMatcher">
|
||||
<property name="mediaType">application/vnd.apache.wsas</property>
|
||||
</filter>
|
||||
</handler>
|
||||
|
||||
<handler class="org.wso2.carbon.registry.extensions.handlers.WSDLMediaTypeHandler">
|
||||
<filter class="org.wso2.carbon.registry.core.jdbc.handlers.filters.MediaTypeMatcher">
|
||||
<property name="mediaType">application/wsdl+xml</property>
|
||||
</filter>
|
||||
</handler>
|
||||
|
||||
<handler class="org.wso2.carbon.registry.extensions.handlers.XSDMediaTypeHandler">
|
||||
<filter class="org.wso2.carbon.registry.core.jdbc.handlers.filters.MediaTypeMatcher">
|
||||
<property name="mediaType">application/x-xsd+xml</property>
|
||||
</filter>
|
||||
</handler> -->
|
||||
|
||||
<!--remoteInstance url="https://localhost:9443/registry">
|
||||
<id>instanceid</id>
|
||||
<username>username</username>
|
||||
<password>password</password>
|
||||
</remoteInstance-->
|
||||
|
||||
<!--remoteInstance url="https://localhost:9443/registry">
|
||||
<id>instanceid</id>
|
||||
<dbConfig>wso2registry</dbConfig>
|
||||
<readOnly>false</readOnly>
|
||||
<enableCache>true</enableCache>
|
||||
<registryRoot>/</registryRoot>
|
||||
</remoteInstance-->
|
||||
|
||||
<!--mount path="/_system/config" overwrite="true|false|virtual">
|
||||
<instanceId>instanceid</instanceId>
|
||||
<targetPath>/_system/nodes</targetPath>
|
||||
</mount-->
|
||||
|
||||
|
||||
<versionResourcesOnChange>false</versionResourcesOnChange>
|
||||
|
||||
<!-- NOTE: You can edit the options under "StaticConfiguration" only before the
|
||||
startup. -->
|
||||
<staticConfiguration>
|
||||
<versioningProperties>true</versioningProperties>
|
||||
<versioningComments>true</versioningComments>
|
||||
<versioningTags>true</versioningTags>
|
||||
<versioningRatings>true</versioningRatings>
|
||||
</staticConfiguration>
|
||||
</wso2registry>
|
@ -0,0 +1,76 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<!--
|
||||
~ Copyright (C) 2018 - 2023 Entgra (Pvt) Ltd, Inc - All Rights Reserved.
|
||||
~
|
||||
~ Unauthorised copying/redistribution of this file, via any medium is strictly prohibited.
|
||||
~
|
||||
~ Licensed under the Entgra Commercial License, Version 1.0 (the "License");
|
||||
~ you may not use this file except in compliance with the License.
|
||||
~ You may obtain a copy of the License at
|
||||
~
|
||||
~ https://entgra.io/licenses/entgra-commercial/1.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.
|
||||
-->
|
||||
|
||||
<!--
|
||||
This is the configuration file for Carbon authenticators. All the authenticator related configurations
|
||||
should go here.
|
||||
-->
|
||||
<Authenticators xmlns="http://wso2.org/projects/carbon/authenticators.xml">
|
||||
|
||||
<!-- Authenticator Configurations for TokenUIAuthenticator -->
|
||||
<Authenticator name="TokenUIAuthenticator" disabled="true">
|
||||
<Priority>5</Priority>
|
||||
</Authenticator>
|
||||
|
||||
<!-- Authenticator Configurations for SAML2SSOAuthenticator -->
|
||||
<Authenticator name="SAML2SSOAuthenticator" disabled="true">
|
||||
<Priority>10</Priority>
|
||||
<Config>
|
||||
<Parameter name="LoginPage">/carbon/admin/login.jsp</Parameter>
|
||||
<Parameter name="ServiceProviderID">carbonServer</Parameter>
|
||||
<Parameter name="IdentityProviderSSOServiceURL">https://localhost:9443/samlsso</Parameter>
|
||||
<Parameter name="NameIDPolicyFormat">urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified</Parameter>
|
||||
|
||||
<!-- <Parameter name="IdPCertAlias">wso2carbon</Parameter> -->
|
||||
<!-- <Parameter name="ResponseSignatureValidationEnabled">false</Parameter> -->
|
||||
<!-- <Parameter name="LoginAttributeName"></Parameter> -->
|
||||
<!-- <Parameter name="RoleClaimAttribute"></Parameter> -->
|
||||
<!-- <Parameter name="AttributeValueSeparator">,</Parameter> -->
|
||||
|
||||
<!-- <Parameter name="JITUserProvisioning">true</Parameter> -->
|
||||
<!-- <Parameter name="ProvisioningDefaultUserstore">PRIMARY</Parameter> -->
|
||||
<!-- <Parameter name="ProvisioningDefaultRole">admin</Parameter> -->
|
||||
<!-- <Parameter name="IsSuperAdminRoleRequired">true</Parameter> -->
|
||||
</Config>
|
||||
|
||||
<!-- If this authenticator should skip any URI from authentication, specify it under "SkipAuthentication"
|
||||
<SkipAuthentication>
|
||||
<UrlContains></UrlContains>
|
||||
</SkipAuthentication> -->
|
||||
|
||||
<!-- If this authenticator should skip any URI from session validation, specify it under "SkipAuthentication
|
||||
<SkipSessionValidation>
|
||||
<UrlContains></UrlContains>
|
||||
</SkipSessionValidation> -->
|
||||
</Authenticator>
|
||||
|
||||
<!-- Authenticator Configurations for MutualSSLAuthenticator -->
|
||||
<!--Authenticator name="MutualSSLAuthenticator" disabled="false">
|
||||
<Priority>5</Priority>
|
||||
<Config>
|
||||
<Parameter name="UsernameHeader">UserName</Parameter>
|
||||
<Parameter name="WhiteListEnabled">false</Parameter>
|
||||
<Parameter name="WhiteList"/>
|
||||
</Config>
|
||||
</Authenticator-->
|
||||
|
||||
</Authenticators>
|
||||
|
@ -0,0 +1,36 @@
|
||||
<!--
|
||||
~ Copyright (C) 2018 - 2023 Entgra (Pvt) Ltd, Inc - All Rights Reserved.
|
||||
~
|
||||
~ Unauthorised copying/redistribution of this file, via any medium is strictly prohibited.
|
||||
~
|
||||
~ Licensed under the Entgra Commercial License, Version 1.0 (the "License");
|
||||
~ you may not use this file except in compliance with the License.
|
||||
~ You may obtain a copy of the License at
|
||||
~
|
||||
~ https://entgra.io/licenses/entgra-commercial/1.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.
|
||||
-->
|
||||
|
||||
<!-- The contents of this file will be loaded for each web application -->
|
||||
<Context privileged="true" allowLinking="true">
|
||||
|
||||
<!-- Default set of monitored resources -->
|
||||
<WatchedResource>WEB-INF/web.xml</WatchedResource>
|
||||
|
||||
<!-- comment this out to enable session persistence across Tomcat restarts -->
|
||||
<Manager pathname=""/>
|
||||
|
||||
<JarScanner className="org.wso2.carbon.tomcat.ext.scan.CarbonTomcatJarScanner" scanClassPath="true"
|
||||
scanAllFiles="false" scanAllDirectories="false"/>
|
||||
|
||||
<!-- Following are default values. But we specifically add them in kernel, becuase they get overridden in WSO2 AS -->
|
||||
<Loader className="org.apache.catalina.loader.WebappLoader"
|
||||
loaderClass="org.apache.catalina.loader.WebappClassLoader"/>
|
||||
|
||||
</Context>
|
@ -0,0 +1,62 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
~ Copyright (C) 2018 - 2023 Entgra (Pvt) Ltd, Inc - All Rights Reserved.
|
||||
~
|
||||
~ Unauthorised copying/redistribution of this file, via any medium is strictly prohibited.
|
||||
~
|
||||
~ Licensed under the Entgra Commercial License, Version 1.0 (the "License");
|
||||
~ you may not use this file except in compliance with the License.
|
||||
~ You may obtain a copy of the License at
|
||||
~
|
||||
~ https://entgra.io/licenses/entgra-commercial/1.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.
|
||||
-->
|
||||
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
|
||||
"http://java.sun.com/dtd/web-app_2_3.dtd">
|
||||
<web-app id="WebApp">
|
||||
|
||||
<servlet id="bridge">
|
||||
<servlet-name>bridgeservlet</servlet-name>
|
||||
<display-name>Carbon Bridge Servlet</display-name>
|
||||
<description>Carbon Bridge Servlet</description>
|
||||
<servlet-class>org.wso2.carbon.tomcat.ext.servlet.DelegationServlet</servlet-class>
|
||||
|
||||
<load-on-startup>1</load-on-startup>
|
||||
</servlet>
|
||||
<servlet-mapping>
|
||||
<servlet-name>bridgeservlet</servlet-name>
|
||||
<url-pattern>/*</url-pattern>
|
||||
</servlet-mapping>
|
||||
<!--
|
||||
This is required if your application bundles expose JSPs.
|
||||
-->
|
||||
<servlet-mapping>
|
||||
<servlet-name>bridgeservlet</servlet-name>
|
||||
<url-pattern>*.jsp</url-pattern>
|
||||
</servlet-mapping>
|
||||
|
||||
<!--This is for performing the character encoding in the JSPs. -->
|
||||
<filter>
|
||||
<filter-name>CharsetFilter</filter-name>
|
||||
<filter-class>org.wso2.carbon.tomcat.ext.filter.CharacterSetFilter</filter-class>
|
||||
<init-param>
|
||||
<param-name>requestEncoding</param-name>
|
||||
<param-value>UTF-8</param-value>
|
||||
</init-param>
|
||||
</filter>
|
||||
|
||||
<filter-mapping>
|
||||
<filter-name>CharsetFilter</filter-name>
|
||||
<url-pattern>/*</url-pattern>
|
||||
</filter-mapping>
|
||||
|
||||
<session-config>
|
||||
<session-timeout>15</session-timeout>
|
||||
</session-config>
|
||||
</web-app>
|
@ -0,0 +1,99 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<!--
|
||||
~ Copyright (C) 2018 - 2023 Entgra (Pvt) Ltd, Inc - All Rights Reserved.
|
||||
~
|
||||
~ Unauthorised copying/redistribution of this file, via any medium is strictly prohibited.
|
||||
~
|
||||
~ Licensed under the Entgra Commercial License, Version 1.0 (the "License");
|
||||
~ you may not use this file except in compliance with the License.
|
||||
~ You may obtain a copy of the License at
|
||||
~
|
||||
~ https://entgra.io/licenses/entgra-commercial/1.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.
|
||||
-->
|
||||
|
||||
<Server port="8005" shutdown="SHUTDOWN">
|
||||
|
||||
<Service className="org.wso2.carbon.tomcat.ext.service.ExtendedStandardService" name="Catalina">
|
||||
|
||||
<!--
|
||||
optional attributes:
|
||||
|
||||
proxyPort="80"
|
||||
-->
|
||||
<Connector protocol="org.apache.coyote.http11.Http11NioProtocol"
|
||||
port="9763"
|
||||
redirectPort="9443"
|
||||
bindOnInit="false"
|
||||
maxHttpHeaderSize="8192"
|
||||
acceptorThreadCount="2"
|
||||
maxThreads="250"
|
||||
minSpareThreads="50"
|
||||
disableUploadTimeout="false"
|
||||
connectionUploadTimeout="120000"
|
||||
maxKeepAliveRequests="200"
|
||||
acceptCount="200"
|
||||
server="WSO2 Carbon Server"
|
||||
compression="on"
|
||||
compressionMinSize="2048"
|
||||
noCompressionUserAgents="gozilla, traviata"
|
||||
compressableMimeType="text/html,text/javascript,application/x-javascript,application/javascript,application/xml,text/css,application/xslt+xml,text/xsl,image/gif,image/jpg,image/jpeg"
|
||||
URIEncoding="UTF-8"/>
|
||||
|
||||
<!--
|
||||
optional attributes:
|
||||
|
||||
proxyPort="443"
|
||||
-->
|
||||
<Connector protocol="org.apache.coyote.http11.Http11NioProtocol"
|
||||
port="9443"
|
||||
bindOnInit="false"
|
||||
sslProtocol="TLS"
|
||||
maxHttpHeaderSize="8192"
|
||||
acceptorThreadCount="2"
|
||||
maxThreads="250"
|
||||
minSpareThreads="50"
|
||||
disableUploadTimeout="false"
|
||||
enableLookups="false"
|
||||
connectionUploadTimeout="120000"
|
||||
maxKeepAliveRequests="200"
|
||||
acceptCount="200"
|
||||
server="WSO2 Carbon Server"
|
||||
clientAuth="false"
|
||||
compression="on"
|
||||
scheme="https"
|
||||
secure="true"
|
||||
SSLEnabled="true"
|
||||
compressionMinSize="2048"
|
||||
noCompressionUserAgents="gozilla, traviata"
|
||||
compressableMimeType="text/html,text/javascript,application/x-javascript,application/javascript,application/xml,text/css,application/xslt+xml,text/xsl,image/gif,image/jpg,image/jpeg"
|
||||
keystoreFile="${carbon.home}/repository/resources/security/wso2carbon.jks"
|
||||
keystorePass="wso2carbon"
|
||||
URIEncoding="UTF-8"/>
|
||||
|
||||
|
||||
<Engine name="Catalina" defaultHost="localhost">
|
||||
|
||||
<!--Realm className="org.apache.catalina.realm.MemoryRealm" pathname="${carbon.home}/repository/conf/tomcat/tomcat-users.xml"/-->
|
||||
|
||||
<Realm className="org.wso2.carbon.tomcat.ext.realms.CarbonTomcatRealm"/>
|
||||
|
||||
<Host name="localhost" unpackWARs="true" deployOnStartup="false" autoDeploy="false"
|
||||
appBase="${carbon.home}/repository/deployment/server/webapps/">
|
||||
<Valve className="org.wso2.carbon.tomcat.ext.valves.CarbonContextCreatorValve"/>
|
||||
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="${carbon.home}/repository/logs"
|
||||
prefix="http_access_" suffix=".log"
|
||||
pattern="combined"/>
|
||||
<Valve className="org.wso2.carbon.tomcat.ext.valves.CarbonStuckThreadDetectionValve" threshold="600"/>
|
||||
<Valve className="org.wso2.carbon.tomcat.ext.valves.CompositeValve"/>
|
||||
</Host>
|
||||
</Engine>
|
||||
</Service>
|
||||
</Server>
|
||||
|
@ -0,0 +1,35 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<!--
|
||||
~ Copyright (C) 2018 - 2023 Entgra (Pvt) Ltd, Inc - All Rights Reserved.
|
||||
~
|
||||
~ Unauthorised copying/redistribution of this file, via any medium is strictly prohibited.
|
||||
~
|
||||
~ Licensed under the Entgra Commercial License, Version 1.0 (the "License");
|
||||
~ you may not use this file except in compliance with the License.
|
||||
~ You may obtain a copy of the License at
|
||||
~
|
||||
~ https://entgra.io/licenses/entgra-commercial/1.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.
|
||||
-->
|
||||
|
||||
<!--
|
||||
This is the standard tomcat-users.xml file which can be used for definig users & roles. This
|
||||
is applicable to webapps only, and will be used only if the Security/TomcatRealm entry in the
|
||||
carbon.xml is set to Memory
|
||||
-->
|
||||
<tomcat-users>
|
||||
<role rolename="manager"/>
|
||||
<role rolename="tomcat"/>
|
||||
<role rolename="role1"/>
|
||||
<role rolename="admin"/>
|
||||
<user username="both" password="tomcat" roles="tomcat,role1"/>
|
||||
<user username="tomcat" password="tomcat" roles="tomcat"/>
|
||||
<user username="admin" password="admin" roles="tomcat,manager,admin"/>
|
||||
<user username="role1" password="tomcat" roles="role1"/>
|
||||
</tomcat-users>
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,383 @@
|
||||
<!--
|
||||
~ Copyright (C) 2018 - 2023 Entgra (Pvt) Ltd, Inc - All Rights Reserved.
|
||||
~
|
||||
~ Unauthorised copying/redistribution of this file, via any medium is strictly prohibited.
|
||||
~
|
||||
~ Licensed under the Entgra Commercial License, Version 1.0 (the "License");
|
||||
~ you may not use this file except in compliance with the License.
|
||||
~ You may obtain a copy of the License at
|
||||
~
|
||||
~ https://entgra.io/licenses/entgra-commercial/1.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.
|
||||
-->
|
||||
|
||||
<UserManager>
|
||||
<Realm>
|
||||
<Configuration>
|
||||
<AddAdmin>true</AddAdmin>
|
||||
<AdminRole>admin</AdminRole>
|
||||
<AdminUser>
|
||||
<UserName>admin</UserName>
|
||||
<Password>admin</Password>
|
||||
</AdminUser>
|
||||
<EveryOneRoleName>everyone</EveryOneRoleName> <!-- By default users in this role sees the registry root -->
|
||||
<Property name="dataSource">jdbc/WSO2CarbonDB</Property>
|
||||
</Configuration>
|
||||
<!-- Following is the default user store manager. This user store manager is based on embedded-apacheds LDAP. It reads/writes users and roles into the default apacheds LDAP user store. Descriptions about each of the following properties can be found in user management documentation of the respective product. In case if user core cache domain is needed to identify uniquely set property <Property name="UserCoreCacheIdentifier">domain</Property>
|
||||
Note: Do not comment within UserStoreManager tags. Cause, specific tag names are used as tokens when building configurations for products. -->
|
||||
<!--UserStoreManager class="org.wso2.carbon.user.core.ldap.ReadWriteLDAPUserStoreManager">
|
||||
<Property name="TenantManager">org.wso2.carbon.user.core.tenant.CommonHybridLDAPTenantManager</Property>
|
||||
<Property name="ConnectionURL">ldap://localhost:${Ports.EmbeddedLDAP.LDAPServerPort}</Property>
|
||||
<Property name="ConnectionName">uid=admin,ou=system</Property>
|
||||
<Property name="ConnectionPassword">admin</Property>
|
||||
<Property name="LDAPConnectionTimeout">5000</Property>
|
||||
<Property name="Disabled">false</Property>
|
||||
<Property name="PasswordHashMethod">SHA</Property>
|
||||
<Property name="UserNameListFilter">(objectClass=person)</Property>
|
||||
<Property name="UserEntryObjectClass">wso2Person</Property>
|
||||
<Property name="UserSearchBase">ou=Users,dc=wso2,dc=org</Property>
|
||||
<Property name="UserNameSearchFilter">(&(objectClass=person)(uid=?))</Property>
|
||||
<Property name="UserNameAttribute">uid</Property>
|
||||
<Property name="PasswordJavaRegEx">^[\S]{5,30}$</Property>
|
||||
<Property name="PasswordJavaRegExViolationErrorMsg">Password length should be between 5 to 30 characters</Property>
|
||||
<Property name="PasswordJavaScriptRegEx">^[\S]{5,30}$</Property>
|
||||
<Property name="UsernameJavaScriptRegEx">^[\S]{3,30}$</Property>
|
||||
<Property name="UsernameJavaRegEx">[a-zA-Z0-9._-|//]{3,30}$</Property>
|
||||
<Property name="RolenameJavaScriptRegEx">^[\S]{3,30}$</Property>
|
||||
<Property name="RolenameJavaRegEx">[a-zA-Z0-9._-|//]{3,30}$</Property>
|
||||
<Property name="ReadGroups">true</Property>
|
||||
<Property name="WriteGroups">true</Property>
|
||||
<Property name="EmptyRolesAllowed">true</Property>
|
||||
<Property name="GroupSearchBase">ou=Groups,dc=wso2,dc=org</Property>
|
||||
<Property name="GroupNameListFilter">(objectClass=groupOfNames)</Property>
|
||||
<Property name="GroupEntryObjectClass">groupOfNames</Property>
|
||||
<Property name="GroupNameSearchFilter">(&(objectClass=groupOfNames)(cn=?))</Property>
|
||||
<Property name="GroupNameAttribute">cn</Property>
|
||||
<Property name="SharedGroupNameAttribute">cn</Property>
|
||||
<Property name="SharedGroupSearchBase">ou=SharedGroups,dc=wso2,dc=org</Property>
|
||||
<Property name="SharedGroupEntryObjectClass">groupOfNames</Property>
|
||||
<Property name="SharedGroupNameListFilter">(objectClass=groupOfNames)</Property>
|
||||
<Property name="SharedGroupNameSearchFilter">(&(objectClass=groupOfNames)(cn=?))</Property>
|
||||
<Property name="SharedTenantNameListFilter">(objectClass=organizationalUnit)</Property>
|
||||
<Property name="SharedTenantNameAttribute">ou</Property>
|
||||
<Property name="SharedTenantObjectClass">organizationalUnit</Property>
|
||||
<Property name="MembershipAttribute">member</Property>
|
||||
<Property name="UserRolesCacheEnabled">true</Property>
|
||||
<Property name="UserDNPattern">uid={0},ou=Users,dc=wso2,dc=org</Property>
|
||||
<Property name="MaxRoleNameListLength">100</Property>
|
||||
<Property name="MaxUserNameListLength">100</Property>
|
||||
<Property name="SCIMEnabled">false</Property>
|
||||
<Property name="ConnectionPoolingEnabled">false</Property>
|
||||
<Property name="MultiAttributeSeparator">,</Property>
|
||||
<Property name="BulkImportSupported">true</Property>
|
||||
</UserStoreManager-->
|
||||
|
||||
<!-- Following is the configuration for internal JDBC user store. This user store manager is based on JDBC. In case if application needs to manage passwords externally set property <Property name="PasswordsExternallyManaged">true</Property>. In case if user core cache domain is needed to identify uniquely set property <Property name="UserCoreCacheIdentifier">domain</Property>. Furthermore properties, IsEmailUserName and DomainCalculation are readonly properties.
|
||||
Note: Do not comment within UserStoreManager tags. Cause, specific tag names are used as tokens when building configurations for products. -->
|
||||
<UserStoreManager class="org.wso2.carbon.user.core.jdbc.JDBCUserStoreManager">
|
||||
<Property name="TenantManager">org.wso2.carbon.user.core.tenant.JDBCTenantManager</Property>
|
||||
<Property name="ReadOnly">false</Property>
|
||||
<Property name="MaxUserNameListLength">100</Property>
|
||||
<Property name="IsEmailUserName">false</Property>
|
||||
<Property name="DomainCalculation">default</Property>
|
||||
<Property name="PasswordDigest">SHA-256</Property>
|
||||
<Property name="StoreSaltedPassword">true</Property>
|
||||
<Property name="ReadGroups">true</Property>
|
||||
<Property name="WriteGroups">true</Property>
|
||||
<Property name="UserNameUniqueAcrossTenants">false</Property>
|
||||
<Property name="PasswordJavaRegEx">^[\S]{5,30}$</Property>
|
||||
<Property name="PasswordJavaRegExViolationErrorMsg">Password length should be between 5 to 30 characters
|
||||
</Property>
|
||||
<Property name="PasswordJavaScriptRegEx">^[\S]{5,30}$</Property>
|
||||
<Property name="UsernameJavaRegEx">[a-zA-Z0-9._-|//]{3,30}$</Property>
|
||||
<Property name="UsernameJavaScriptRegEx">^[\S]{3,30}$</Property>
|
||||
<Property name="RolenameJavaRegEx">^[^~!#$;%^*+={}\\|\\\\<>,\'\"]{3,30}$</Property>
|
||||
<Property name="RolenameJavaScriptRegEx">^[\S]{3,30}$</Property>
|
||||
<Property name="UserRolesCacheEnabled">true</Property>
|
||||
<Property name="MaxRoleNameListLength">100</Property>
|
||||
<Property name="MaxUserNameListLength">100</Property>
|
||||
<Property name="SharedGroupEnabled">false</Property>
|
||||
<Property name="SCIMEnabled">false</Property>
|
||||
<Property name="CaseSensitiveUsername">true</Property>
|
||||
<Property name="MultiAttributeSeparator">,</Property>
|
||||
<Property name="BulkImportSupported">true</Property>
|
||||
</UserStoreManager>
|
||||
|
||||
<!-- If product is using an external LDAP as the user store in READ ONLY mode, use following user manager.
|
||||
In case if user core cache domain is needed to identify uniquely set property <Property name="UserCoreCacheIdentifier">domain</Property>
|
||||
-->
|
||||
<!--UserStoreManager class="org.wso2.carbon.user.core.ldap.ReadOnlyLDAPUserStoreManager">
|
||||
<Property name="TenantManager">org.wso2.carbon.user.core.tenant.CommonHybridLDAPTenantManager</Property>
|
||||
<Property name="ReadOnly">true</Property>
|
||||
<Property name="Disabled">false</Property>
|
||||
<Property name="MaxUserNameListLength">100</Property>
|
||||
<Property name="ConnectionURL">ldap://localhost:10389</Property>
|
||||
<Property name="ConnectionName">uid=admin,ou=system</Property>
|
||||
<Property name="ConnectionPassword">admin</Property>
|
||||
<Property name="LDAPConnectionTimeout">5000</Property>
|
||||
<Property name="PasswordHashMethod">PLAIN_TEXT</Property>
|
||||
<Property name="UserSearchBase">ou=system</Property>
|
||||
<Property name="UserNameListFilter">(objectClass=person)</Property>
|
||||
<Property name="UserNameSearchFilter">(&(objectClass=person)(uid=?))</Property>
|
||||
<Property name="UserNameAttribute">uid</Property>
|
||||
<Property name="ReadGroups">true</Property>
|
||||
<Property name="GroupSearchBase">ou=system</Property>
|
||||
<Property name="GroupNameListFilter">(objectClass=groupOfNames)</Property>
|
||||
<Property name="GroupNameSearchFilter">(&(objectClass=groupOfNames)(cn=?))</Property>
|
||||
<Property name="GroupNameAttribute">cn</Property>
|
||||
<Property name="SharedGroupNameAttribute">cn</Property>
|
||||
<Property name="SharedGroupSearchBase">ou=SharedGroups,dc=wso2,dc=org</Property>
|
||||
<Property name="SharedGroupNameListFilter">(objectClass=groupOfNames)</Property>
|
||||
<Property name="SharedTenantNameListFilter">(objectClass=organizationalUnit)</Property>
|
||||
<Property name="SharedTenantNameAttribute">ou</Property>
|
||||
<Property name="SharedTenantObjectClass">organizationalUnit</Property>
|
||||
<Property name="MembershipAttribute">member</Property>
|
||||
<Property name="UserRolesCacheEnabled">true</Property>
|
||||
<Property name="ReplaceEscapeCharactersAtUserLogin">true</Property>
|
||||
<Property name="MaxRoleNameListLength">100</Property>
|
||||
<Property name="MaxUserNameListLength">100</Property>
|
||||
<Property name="SCIMEnabled">false</Property>
|
||||
<Property name="ConnectionPoolingEnabled">false</Property>
|
||||
<Property name="MultiAttributeSeparator">,</Property>
|
||||
<Property name="BulkImportSupported">true</Property>
|
||||
</UserStoreManager-->
|
||||
|
||||
<!-- Active directory configuration is as follows.
|
||||
In case if user core cache domain is needed to identify uniquely set property <Property name="UserCoreCacheIdentifier">domain</Property>
|
||||
There are few special properties for "Active Directory".
|
||||
They are :
|
||||
1.Referral - (comment out this property if this feature is not reuired) This enables LDAP referral support.
|
||||
2.BackLinksEnabled - (Do not comment, set to true or false) In some cases LDAP works with BackLinksEnabled. In which role is stored
|
||||
at user level. Depending on this value we need to change the Search Base within code.
|
||||
3.isADLDSRole - (Do not comment) Set to true if connecting to an AD LDS instance else set to false.
|
||||
-->
|
||||
<!--UserStoreManager class="org.wso2.carbon.user.core.ldap.ActiveDirectoryUserStoreManager">
|
||||
<Property name="TenantManager">org.wso2.carbon.user.core.tenant.CommonHybridLDAPTenantManager</Property>
|
||||
<Property name="defaultRealmName">WSO2.ORG</Property>
|
||||
<Property name="Disabled">false</Property>
|
||||
<Property name="kdcEnabled">false</Property>
|
||||
<Property name="ConnectionURL">ldaps://10.100.1.100:636</Property>
|
||||
<Property name="ConnectionName">CN=admin,CN=Users,DC=WSO2,DC=Com</Property>
|
||||
<Property name="ConnectionPassword">A1b2c3d4</Property>
|
||||
<Property name="LDAPConnectionTimeout">5000</Property>
|
||||
<Property name="PasswordHashMethod">PLAIN_TEXT</Property>
|
||||
<Property name="UserSearchBase">CN=Users,DC=WSO2,DC=Com</Property>
|
||||
<Property name="UserEntryObjectClass">user</Property>
|
||||
<Property name="UserNameAttribute">cn</Property>
|
||||
<Property name="MemberOfAttribute">memberOf</Property>
|
||||
<Property name="Referral">follow</Property>
|
||||
<Property name="isADLDSRole">false</Property>
|
||||
<Property name="userAccountControl">512</Property>
|
||||
<Property name="UserNameListFilter">(objectClass=user)</Property>
|
||||
<Property name="UserNameSearchFilter">(&(objectClass=user)(cn=?))</Property>
|
||||
<Property name="UsernameJavaRegEx">[a-zA-Z0-9._-|//]{3,30}$</Property>
|
||||
<Property name="UsernameJavaScriptRegEx">^[\S]{3,30}$</Property>
|
||||
<Property name="PasswordJavaRegEx">^[\S]{5,30}$</Property>
|
||||
<Property name="PasswordJavaRegExViolationErrorMsg">Password length should be between 5 to 30 characters</Property>
|
||||
<Property name="PasswordJavaScriptRegEx">^[\S]{5,30}$</Property>
|
||||
<Property name="RolenameJavaScriptRegEx">^[\S]{3,30}$</Property>
|
||||
<Property name="RolenameJavaRegEx">[a-zA-Z0-9._-|//]{3,30}$</Property>
|
||||
<Property name="ReadGroups">true</Property>
|
||||
<Property name="WriteGroups">true</Property>
|
||||
<Property name="EmptyRolesAllowed">true</Property>
|
||||
<Property name="GroupSearchBase">CN=Users,DC=WSO2,DC=Com</Property>
|
||||
<Property name="GroupEntryObjectClass">group</Property>
|
||||
<Property name="GroupNameAttribute">cn</Property>
|
||||
<Property name="SharedGroupNameAttribute">cn</Property>
|
||||
<Property name="SharedGroupSearchBase">ou=SharedGroups,dc=wso2,dc=org</Property>
|
||||
<Property name="SharedGroupEntryObjectClass">groups</Property>
|
||||
<Property name="SharedTenantNameListFilter">(object=organizationalUnit)</Property>
|
||||
<Property name="SharedTenantNameAttribute">ou</Property>
|
||||
<Property name="SharedTenantObjectClass">organizationalUnit</Property>
|
||||
<Property name="MembershipAttribute">member</Property>
|
||||
<Property name="GroupNameListFilter">(objectcategory=group)</Property>
|
||||
<Property name="GroupNameSearchFilter">(&(objectClass=group)(cn=?))</Property>
|
||||
<Property name="UserRolesCacheEnabled">true</Property>
|
||||
<Property name="Referral">follow</Property>
|
||||
<Property name="BackLinksEnabled">true</Property>
|
||||
<Property name="MaxRoleNameListLength">100</Property>
|
||||
<Property name="MaxUserNameListLength">100</Property>
|
||||
<Property name="SCIMEnabled">false</Property>
|
||||
<Property name="ConnectionPoolingEnabled">false</Property>
|
||||
<Property name="MultiAttributeSeparator">,</Property>
|
||||
<Property name="BulkImportSupported">true</Property>
|
||||
</UserStoreManager-->
|
||||
|
||||
<!-- If product is using an external LDAP as the user store in read/write mode, use following user manager
|
||||
In case if user core cache domain is needed to identify uniquely set property <Property name="UserCoreCacheIdentifier">domain</Property>
|
||||
-->
|
||||
<!--UserStoreManager class="org.wso2.carbon.user.core.ldap.ReadWriteLDAPUserStoreManager">
|
||||
<Property name="TenantManager">org.wso2.carbon.user.core.tenant.CommonHybridLDAPTenantManager</Property>
|
||||
<Property name="ConnectionURL">ldap://localhost:10389</Property>
|
||||
<Property name="Disabled">false</Property>
|
||||
<Property name="ConnectionName">uid=admin,ou=system</Property>
|
||||
<Property name="ConnectionPassword">secret</Property>
|
||||
<Property name="LDAPConnectionTimeout">5000</Property>
|
||||
<Property name="PasswordHashMethod">PLAIN_TEXT</Property>
|
||||
<Property name="UserNameListFilter">(objectClass=person)</Property>
|
||||
<Property name="UserEntryObjectClass">inetOrgPerson</Property>
|
||||
<Property name="UserSearchBase">ou=system</Property>
|
||||
<Property name="UserNameSearchFilter">(&(objectClass=person)(uid=?))</Property>
|
||||
<Property name="UserNameAttribute">uid</Property>
|
||||
<Property name="UsernameJavaRegEx">[a-zA-Z0-9._-|//]{3,30}$</Property>
|
||||
<Property name="UsernameJavaScriptRegEx">^[\S]{3,30}$</Property>
|
||||
<Property name="RolenameJavaScriptRegEx">^[\S]{3,30}$</Property>
|
||||
<Property name="RolenameJavaRegEx">[a-zA-Z0-9._-|//]{3,30}$</Property>
|
||||
<Property name="PasswordJavaScriptRegEx">^[\S]{5,30}$</Property>
|
||||
<Property name="PasswordJavaRegEx">^[\S]{5,30}$</Property>
|
||||
<Property name="PasswordJavaRegExViolationErrorMsg">Password length should be between 5 to 30 characters</Property>
|
||||
<Property name="ReadGroups">true</Property>
|
||||
<Property name="WriteGroups">true</Property>
|
||||
<Property name="EmptyRolesAllowed">false</Property>
|
||||
<Property name="GroupSearchBase">ou=system</Property>
|
||||
<Property name="GroupNameListFilter">(objectClass=groupOfNames)</Property>
|
||||
<Property name="GroupEntryObjectClass">groupOfNames</Property>
|
||||
<Property name="GroupNameSearchFilter">(&(objectClass=groupOfNames)(cn=?))</Property>
|
||||
<Property name="GroupNameAttribute">cn</Property>
|
||||
<Property name="SharedGroupNameAttribute">cn</Property>
|
||||
<Property name="SharedGroupSearchBase">ou=SharedGroups,dc=wso2,dc=org</Property>
|
||||
<Property name="SharedGroupEntryObjectClass">groupOfNames</Property>
|
||||
<Property name="SharedGroupNameListFilter">(objectClass=groupOfNames)</Property>
|
||||
<Property name="SharedGroupNameSearchFilter">(&(objectClass=groupOfNames)(cn=?))</Property>
|
||||
<Property name="SharedTenantNameListFilter">(objectClass=organizationalUnit)</Property>
|
||||
<Property name="SharedTenantNameAttribute">ou</Property>
|
||||
<Property name="SharedTenantObjectClass">organizationalUnit</Property>
|
||||
<Property name="MembershipAttribute">member</Property>
|
||||
<Property name="UserRolesCacheEnabled">true</Property>
|
||||
<Property name="ReplaceEscapeCharactersAtUserLogin">true</Property>
|
||||
<Property name="MaxRoleNameListLength">100</Property>
|
||||
<Property name="MaxUserNameListLength">100</Property>
|
||||
<Property name="SCIMEnabled">false</Property>
|
||||
<Property name="ConnectionPoolingEnabled">false</Property>
|
||||
<Property name="MultiAttributeSeparator">,</Property>
|
||||
<Property name="BulkImportSupported">true</Property>
|
||||
</UserStoreManager-->
|
||||
|
||||
<!-- Following user manager is used by Identity Server (IS) as its default user manager.
|
||||
IS will do token replacement when building the product. Therefore do not change the syntax.
|
||||
If "kdcEnabled" parameter is true, IS will allow service principle management. Thus "ServicePasswordJavaRegEx", "ServiceNameJavaRegEx"
|
||||
properties control the service name format and service password formats.
|
||||
In case if user core cache domain is needed to identify uniquely set property <Property name="UserCoreCacheIdentifier">domain</Property>
|
||||
-->
|
||||
<!--ISUserStoreManager class="org.wso2.carbon.user.core.ldap.ReadWriteLDAPUserStoreManager">
|
||||
<Property name="TenantManager">org.wso2.carbon.user.core.tenant.CommonHybridLDAPTenantManager</Property>
|
||||
<Property name="defaultRealmName">WSO2.ORG</Property>
|
||||
<Property name="kdcEnabled">false</Property>
|
||||
<Property name="Disabled">false</Property>
|
||||
<Property name="ConnectionURL">ldap://localhost:${Ports.EmbeddedLDAP.LDAPServerPort}</Property>
|
||||
<Property name="ConnectionName">uid=admin,ou=system</Property>
|
||||
<Property name="ConnectionPassword">admin</Property>
|
||||
<Property name="LDAPConnectionTimeout">5000</Property>
|
||||
<Property name="PasswordHashMethod">SHA</Property>
|
||||
<Property name="UserNameListFilter">(objectClass=person)</Property>
|
||||
<Property name="UserEntryObjectClass">identityPerson</Property>
|
||||
<Property name="UserSearchBase">ou=Users,dc=wso2,dc=org</Property>
|
||||
<Property name="UserNameSearchFilter">(&(objectClass=person)(uid=?))</Property>
|
||||
<Property name="UserNameAttribute">uid</Property>
|
||||
<Property name="PasswordJavaScriptRegEx">^[\S]{5,30}$</Property>
|
||||
<Property name="PasswordJavaRegEx">^[\S]{5,30}$</Property>
|
||||
<Property name="ServicePasswordJavaRegEx">^[\\S]{5,30}$</Property>
|
||||
<Property name="PasswordJavaRegExViolationErrorMsg">Password length should be between 5 to 30 characters</Property>
|
||||
<Property name="ServiceNameJavaRegEx">^[\\S]{2,30}/[\\S]{2,30}$</Property>
|
||||
<Property name="UsernameJavaScriptRegEx">^[\S]{3,30}$</Property>
|
||||
<Property name="UsernameJavaRegEx">[a-zA-Z0-9._-|//]{3,30}$</Property>
|
||||
<Property name="RolenameJavaScriptRegEx">^[\S]{3,30}$</Property>
|
||||
<Property name="RolenameJavaRegEx">[a-zA-Z0-9._-|//]{3,30}$</Property>
|
||||
<Property name="ReadGroups">true</Property>
|
||||
<Property name="WriteGroups">true</Property>
|
||||
<Property name="EmptyRolesAllowed">true</Property>
|
||||
<Property name="GroupSearchBase">ou=Groups,dc=wso2,dc=org</Property>
|
||||
<Property name="GroupNameListFilter">(objectClass=groupOfNames)</Property>
|
||||
<Property name="GroupEntryObjectClass">groupOfNames</Property>
|
||||
<Property name="GroupNameSearchFilter">(&(objectClass=groupOfNames)(cn=?))</Property>
|
||||
<Property name="GroupNameAttribute">cn</Property>
|
||||
<Property name="SharedGroupNameAttribute">cn</Property>
|
||||
<Property name="SharedGroupSearchBase">ou=SharedGroups,dc=wso2,dc=org</Property>
|
||||
<Property name="SharedGroupEntryObjectClass">groupOfNames</Property>
|
||||
<Property name="SharedGroupNameListFilter">(objectClass=groupOfNames)</Property>
|
||||
<Property name="SharedGroupNameSearchFilter">(&(objectClass=groupOfNames)(cn=?))</Property>
|
||||
<Property name="SharedTenantNameListFilter">(objectClass=organizationalUnit)</Property>
|
||||
<Property name="SharedTenantNameAttribute">ou</Property>
|
||||
<Property name="SharedTenantObjectClass">organizationalUnit</Property>
|
||||
<Property name="MembershipAttribute">member</Property>
|
||||
<Property name="UserRolesCacheEnabled">true</Property>
|
||||
<Property name="UserDNPattern">uid={0},ou=Users,dc=wso2,dc=org</Property>
|
||||
<Property name="RoleDNPattern">cn={0},ou=Groups,dc=wso2,dc=org</Property>
|
||||
<Property name="SCIMEnabled">true</Property>
|
||||
<Property name="MaxRoleNameListLength">100</Property>
|
||||
<Property name="MaxUserNameListLength">100</Property>
|
||||
<Property name="ConnectionPoolingEnabled">false</Property>
|
||||
<Property name="MultiAttributeSeparator">,</Property>
|
||||
<Property name="BulkImportSupported">true</Property>
|
||||
</ISUserStoreManager-->
|
||||
|
||||
<!-- Following configuration is for the CassandraUserStoreManager. The CassandraUserStoreManager is capable of using a Cassandra
|
||||
database as a user store. This user manager supports multiple credentials for authentication. Credential types can be defined
|
||||
and configured in the following configuration. The CassandraUserStoreManager does not ships with the any of the WSO2 Carbon
|
||||
Servers by default, therefor Cassandra user manager component needs to be installed to the Carbon Server befor using.
|
||||
|
||||
And if this CassandraUserStoreManager is used as the primary user store with multi tenants, it should also implement a
|
||||
compatible TenantManager and set property <Property name="TenantManager">FULL_QUALIFIED_TENANT_MANAGER_CLASS_NAME</Property>.
|
||||
-->
|
||||
<!--UserStoreManager class="org.wso2.carbon.user.cassandra.CassandraUserStoreManager">
|
||||
<Property name="Keyspace">User_KS3</Property>
|
||||
<Property name="Host">localhost</Property>
|
||||
<Property name="Port">9160</Property>
|
||||
<Property name="PasswordDigest">SHA-256</Property>
|
||||
<Property name="StoreSaltedPassword">true</Property>
|
||||
<Property name="AuthenticateWithAnyCredential">true</Property>
|
||||
<Property name="DomainName">multipleCredentialUserStoreDomain</Property>
|
||||
<Property name="BulkImportSupported">true</Property>
|
||||
<MultipleCredentials>
|
||||
<Credential type="Default">org.wso2.carbon.user.cassandra.credentialtypes.EmailCredential</Credential>
|
||||
<Credential type="Email">org.wso2.carbon.user.cassandra.credentialtypes.EmailCredential</Credential>
|
||||
<Credential type="PhoneNumber">org.wso2.carbon.user.cassandra.credentialtypes.PhoneNumberCredential</Credential>
|
||||
<Credential type="Device">org.wso2.carbon.user.cassandra.credentialtypes.DeviceCredential</Credential>
|
||||
<Credential type="External">org.wso2.carbon.user.cassandra.credentialtypes.ExternalProviderCredential</Credential>
|
||||
</MultipleCredentials>
|
||||
</UserStoreManager-->
|
||||
|
||||
<AuthorizationManager
|
||||
class="org.wso2.carbon.user.core.authorization.JDBCAuthorizationManager">
|
||||
<Property name="AdminRoleManagementPermissions">/permission</Property>
|
||||
<Property name="AuthorizationCacheEnabled">true</Property>
|
||||
<Property name="GetAllRolesOfUserEnabled">true</Property>
|
||||
</AuthorizationManager>
|
||||
</Realm>
|
||||
</UserManager>
|
||||
|
||||
<!--*******Description of some of the configuration properties used in user-mgt.xml*********************************
|
||||
|
||||
DomainName - This property must be used by all secondary user store managers in multiple user store configuration.
|
||||
DomainName is a unique identifier given to the user store. Users must provide both the domain name and
|
||||
username at log-in as "DomainName\Username"
|
||||
|
||||
UserRolesCacheEnabled - This is to indicate whether to cache role list of a user. By default it is set to true.
|
||||
You may need to disable it if user-roles are changed by external means and need to reflect
|
||||
those changes in the carbon product immediately.
|
||||
|
||||
ReplaceEscapeCharactersAtUserLogin - This is to configure whether escape characters in user name needs to be replaced at user login.
|
||||
Currently the identified escape characters that needs to be replaced are '\' & '\\'
|
||||
|
||||
UserDNPattern - This property will be used when authenticating users. During authentication we do a bind. But if the user is login with
|
||||
email address or some other property we need to first lookup LDAP and retreive DN for the user. This involves an additional step.
|
||||
If UserDNPattern is specified the DN will be contructed using the pattern specified in this property. Performance of this is much better than looking
|
||||
up DN and binding user.
|
||||
|
||||
RoleDNPattern - This property will be used when checking whether user has been assigned to a given role. Rather than searching the role in search base, by
|
||||
using this property direct search can be done.
|
||||
|
||||
PasswordHashMethod - This says how the password should be stored. Allowed values are as follows,
|
||||
SHA - Uses SHA digest method
|
||||
MD5 - Uses MD 5 digest method
|
||||
PLAIN_TEXT - Plain text passwords
|
||||
In addition to above this supports all digest methods supported by http://docs.oracle.com/javase/6/docs/api/java/security/MessageDigest.html.
|
||||
|
||||
DisplayNameAttribute - this is to have a dedicated LDAP attribute to display an entity(User/Role) in UI, in addition to the UserNameAttribute which is used for IS-UserStore interactions.
|
||||
-->
|
@ -0,0 +1,38 @@
|
||||
<!--
|
||||
~ Copyright (C) 2018 - 2023 Entgra (Pvt) Ltd, Inc - All Rights Reserved.
|
||||
~
|
||||
~ Unauthorised copying/redistribution of this file, via any medium is strictly prohibited.
|
||||
~
|
||||
~ Licensed under the Entgra Commercial License, Version 1.0 (the "License");
|
||||
~ you may not use this file except in compliance with the License.
|
||||
~ You may obtain a copy of the License at
|
||||
~
|
||||
~ https://entgra.io/licenses/entgra-commercial/1.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.
|
||||
-->
|
||||
|
||||
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
|
||||
|
||||
<suite name="DeviceSubType">
|
||||
<parameter name="useDefaultListeners" value="false"/>
|
||||
|
||||
<test name="DAO Unit Tests" preserve-order="true">
|
||||
<classes>
|
||||
<class name="io.entgra.device.mgt.subtype.mgt.DAOTest"/>
|
||||
<class name="io.entgra.device.mgt.subtype.mgt.DAONegativeTest"/>
|
||||
</classes>
|
||||
</test>
|
||||
|
||||
<test name="Service Unit Tests" preserve-order="true">
|
||||
<classes>
|
||||
<class name="io.entgra.device.mgt.subtype.mgt.ServiceTest"/>
|
||||
<class name="io.entgra.device.mgt.subtype.mgt.ServiceNegativeTest"/>
|
||||
</classes>
|
||||
</test>
|
||||
</suite>
|
@ -0,0 +1,39 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
~ Copyright (C) 2018 - 2023 Entgra (Pvt) Ltd, Inc - All Rights Reserved.
|
||||
~
|
||||
~ Unauthorised copying/redistribution of this file, via any medium is strictly prohibited.
|
||||
~
|
||||
~ Licensed under the Entgra Commercial License, Version 1.0 (the "License");
|
||||
~ you may not use this file except in compliance with the License.
|
||||
~ You may obtain a copy of the License at
|
||||
~
|
||||
~ https://entgra.io/licenses/entgra-commercial/1.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/xsd/maven-4.0.0.xsd">
|
||||
<parent>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<artifactId>carbon-devicemgt</artifactId>
|
||||
<version>5.0.20-SNAPSHOT</version>
|
||||
<relativePath>../../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<artifactId>subtype-mgt</artifactId>
|
||||
<packaging>pom</packaging>
|
||||
<name>Entgra IoT - Subtype Mgt</name>
|
||||
<url>http://entgra.io</url>
|
||||
|
||||
<modules>
|
||||
<module>io.entgra.device.mgt.subtype.mgt</module>
|
||||
</modules>
|
||||
|
||||
</project>
|
@ -0,0 +1,107 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
~ Copyright (C) 2018 - 2023 Entgra (Pvt) Ltd, Inc - All Rights Reserved.
|
||||
~
|
||||
~ Unauthorised copying/redistribution of this file, via any medium is strictly prohibited.
|
||||
~
|
||||
~ Licensed under the Entgra Commercial License, Version 1.0 (the "License");
|
||||
~ you may not use this file except in compliance with the License.
|
||||
~ You may obtain a copy of the License at
|
||||
~
|
||||
~ https://entgra.io/licenses/entgra-commercial/1.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:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
|
||||
<parent>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<artifactId>carbon-devicemgt</artifactId>
|
||||
<version>5.0.20-SNAPSHOT</version>
|
||||
<relativePath>../../../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<artifactId>io.entgra.device.mgt.subtype.mgt.feature</artifactId>
|
||||
<packaging>pom</packaging>
|
||||
<name>Entgra IoT - Subtype Management Feature Impl</name>
|
||||
<url>http://entgra.io</url>
|
||||
<description>
|
||||
This feature contains the core bundles required for Subtype management functionality
|
||||
</description>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<artifactId>io.entgra.device.mgt.subtype.mgt</artifactId>
|
||||
</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.subtype.mgt</id>
|
||||
<propertiesFile>../../etc/feature.properties</propertiesFile>
|
||||
<adviceFile>
|
||||
<properties>
|
||||
<propertyDef>org.wso2.carbon.p2.category.type:server
|
||||
</propertyDef>
|
||||
<propertyDef>org.eclipse.equinox.p2.type.group:true
|
||||
</propertyDef>
|
||||
</properties>
|
||||
</adviceFile>
|
||||
<bundles>
|
||||
<bundleDef>
|
||||
org.wso2.carbon.devicemgt:io.entgra.device.mgt.subtype.mgt:${carbon.device.mgt.version}
|
||||
</bundleDef>
|
||||
</bundles>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
@ -0,0 +1 @@
|
||||
custom = true
|
@ -0,0 +1 @@
|
||||
instructions.configure = \
|
@ -0,0 +1,41 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
~ Copyright (C) 2018 - 2023 Entgra (Pvt) Ltd, Inc - All Rights Reserved.
|
||||
~
|
||||
~ Unauthorised copying/redistribution of this file, via any medium is strictly prohibited.
|
||||
~
|
||||
~ Licensed under the Entgra Commercial License, Version 1.0 (the "License");
|
||||
~ you may not use this file except in compliance with the License.
|
||||
~ You may obtain a copy of the License at
|
||||
~
|
||||
~ https://entgra.io/licenses/entgra-commercial/1.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:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
|
||||
<parent>
|
||||
<artifactId>carbon-devicemgt</artifactId>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<version>5.0.20-SNAPSHOT</version>
|
||||
<relativePath>../../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<artifactId>subtype-mgt-feature</artifactId>
|
||||
<packaging>pom</packaging>
|
||||
<name>Entgra IoT - Subtype Management Feature</name>
|
||||
<url>http://entgra.io</url>
|
||||
|
||||
<modules>
|
||||
<module>io.entgra.device.mgt.subtype.mgt.feature</module>
|
||||
</modules>
|
||||
|
||||
</project>
|
Loading…
Reference in new issue