diff --git a/components/apimgt-extensions/org.wso2.carbon.apimgt.annotations/pom.xml b/components/apimgt-extensions/org.wso2.carbon.apimgt.annotations/pom.xml
index 01a40d7f31..85b88a8b40 100644
--- a/components/apimgt-extensions/org.wso2.carbon.apimgt.annotations/pom.xml
+++ b/components/apimgt-extensions/org.wso2.carbon.apimgt.annotations/pom.xml
@@ -22,13 +22,13 @@
apimgt-extensions
org.wso2.carbon.devicemgt
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../pom.xml
4.0.0
org.wso2.carbon.apimgt.annotations
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
bundle
WSO2 Carbon - API Management Annotations
WSO2 Carbon - API Management Custom Annotation Module
diff --git a/components/apimgt-extensions/org.wso2.carbon.apimgt.application.extension.api/pom.xml b/components/apimgt-extensions/org.wso2.carbon.apimgt.application.extension.api/pom.xml
index 2b3c1af1a7..cfaa9afe67 100644
--- a/components/apimgt-extensions/org.wso2.carbon.apimgt.application.extension.api/pom.xml
+++ b/components/apimgt-extensions/org.wso2.carbon.apimgt.application.extension.api/pom.xml
@@ -21,12 +21,12 @@
apimgt-extensions
org.wso2.carbon.devicemgt
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../pom.xml
4.0.0
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
org.wso2.carbon.apimgt.application.extension.api
war
WSO2 Carbon - API Application Management API
diff --git a/components/apimgt-extensions/org.wso2.carbon.apimgt.application.extension/pom.xml b/components/apimgt-extensions/org.wso2.carbon.apimgt.application.extension/pom.xml
index 8144fe8c76..a2aa064026 100644
--- a/components/apimgt-extensions/org.wso2.carbon.apimgt.application.extension/pom.xml
+++ b/components/apimgt-extensions/org.wso2.carbon.apimgt.application.extension/pom.xml
@@ -22,12 +22,12 @@
apimgt-extensions
org.wso2.carbon.devicemgt
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../pom.xml
4.0.0
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
org.wso2.carbon.apimgt.application.extension
bundle
WSO2 Carbon - API Application Management
diff --git a/components/apimgt-extensions/org.wso2.carbon.apimgt.handlers/pom.xml b/components/apimgt-extensions/org.wso2.carbon.apimgt.handlers/pom.xml
index 430b92fc3b..5c53bbbbe7 100644
--- a/components/apimgt-extensions/org.wso2.carbon.apimgt.handlers/pom.xml
+++ b/components/apimgt-extensions/org.wso2.carbon.apimgt.handlers/pom.xml
@@ -21,13 +21,13 @@
apimgt-extensions
org.wso2.carbon.devicemgt
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../pom.xml
4.0.0
org.wso2.carbon.apimgt.handlers
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
bundle
WSO2 Carbon - API Security Handler Component
WSO2 Carbon - API Management Security Handler Module
@@ -55,6 +55,11 @@
org.json.wso2
json
+
+ org.slf4j
+ slf4j-simple
+ test
+
@@ -97,6 +102,15 @@
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+
+ src/test/resources/testng.xml
+
+
+
org.jacoco
jacoco-maven-plugin
diff --git a/components/apimgt-extensions/org.wso2.carbon.apimgt.handlers/src/main/java/org/wso2/carbon/apimgt/handlers/AuthenticationHandler.java b/components/apimgt-extensions/org.wso2.carbon.apimgt.handlers/src/main/java/org/wso2/carbon/apimgt/handlers/AuthenticationHandler.java
index 276380ce86..b851ee4f8c 100644
--- a/components/apimgt-extensions/org.wso2.carbon.apimgt.handlers/src/main/java/org/wso2/carbon/apimgt/handlers/AuthenticationHandler.java
+++ b/components/apimgt-extensions/org.wso2.carbon.apimgt.handlers/src/main/java/org/wso2/carbon/apimgt/handlers/AuthenticationHandler.java
@@ -52,7 +52,7 @@ public class AuthenticationHandler extends AbstractHandler {
private static final Log log = LogFactory.getLog(AuthenticationHandler.class);
private RESTInvoker restInvoker;
- private static final String X_JWT_ASSERTION = "X-JWT-Assertion";
+ private static final String X_JWT_ASSERTION = "X-JWT-Assertion";
private static final String JWTTOKEN = "JWTToken";
private static final String AUTHORIZATION = "Authorization";
private static final String BEARER = "Bearer ";
@@ -72,8 +72,8 @@ public class AuthenticationHandler extends AbstractHandler {
/**
* Handling the message and checking the security.
*
- * @param messageContext
- * @return
+ * @param messageContext Request message context.
+ * @return Boolean value of the result of the processing the request.
*/
@Override
public boolean handleRequest(org.apache.synapse.MessageContext messageContext) {
@@ -87,7 +87,7 @@ public class AuthenticationHandler extends AbstractHandler {
Map headers = (Map) axisMC.getProperty(MessageContext.TRANSPORT_HEADERS);
try {
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
- RESTResponse response;
+ RESTResponse response = null;
if (headers.containsKey(AuthConstants.MDM_SIGNATURE)) {
String mdmSignature = headers.get(AuthConstants.MDM_SIGNATURE);
@@ -95,7 +95,7 @@ public class AuthenticationHandler extends AbstractHandler {
log.debug("Verify Cert:\n" + mdmSignature);
}
String deviceType = this.getDeviceType(messageContext.getTo().getAddress().trim());
- if (deviceType == null){
+ if (deviceType == null) {
return false;
}
URI certVerifyUrl = new URI(iotServerConfiguration.getVerificationEndpoint() + deviceType);
@@ -108,8 +108,7 @@ public class AuthenticationHandler extends AbstractHandler {
Gson gson = new Gson();
String certVerifyContent = gson.toJson(certificate);
- response = restInvoker.invokePOST(certVerifyUrl, certVerifyHeaders, null,
- null, certVerifyContent);
+ response = restInvoker.invokePOST(certVerifyUrl, certVerifyHeaders, certVerifyContent);
String str = response.getContent();
if (log.isDebugEnabled()) {
@@ -140,8 +139,7 @@ public class AuthenticationHandler extends AbstractHandler {
Gson gson = new Gson();
String certVerifyContent = gson.toJson(certificate);
- response = restInvoker.invokePOST(certVerifyUrl, certVerifyHeaders, null,
- null, certVerifyContent);
+ response = restInvoker.invokePOST(certVerifyUrl, certVerifyHeaders, certVerifyContent);
if (log.isDebugEnabled()) {
log.debug("Verify response:" + response.getContent());
}
@@ -155,8 +153,6 @@ public class AuthenticationHandler extends AbstractHandler {
if (x509 != null) {
headers.put(AuthConstants.PROXY_MUTUAL_AUTH_HEADER, CertificateGenerator.getCommonName(x509));
return true;
- } else {
- response = null;
}
} else if (headers.containsKey(AuthConstants.ENCODED_PEM)) {
String encodedPem = headers.get(AuthConstants.ENCODED_PEM);
@@ -173,8 +169,7 @@ public class AuthenticationHandler extends AbstractHandler {
certificate.setSerial("");
Gson gson = new Gson();
String certVerifyContent = gson.toJson(certificate);
- response = restInvoker.invokePOST(certVerifyUrl, certVerifyHeaders, null,
- null, certVerifyContent);
+ response = restInvoker.invokePOST(certVerifyUrl, certVerifyHeaders, certVerifyContent);
if (log.isDebugEnabled()) {
log.debug("Verify response:" + response.getContent());
}
diff --git a/components/apimgt-extensions/org.wso2.carbon.apimgt.handlers/src/main/java/org/wso2/carbon/apimgt/handlers/invoker/RESTInvoker.java b/components/apimgt-extensions/org.wso2.carbon.apimgt.handlers/src/main/java/org/wso2/carbon/apimgt/handlers/invoker/RESTInvoker.java
index da182e325b..bd59e03dc1 100644
--- a/components/apimgt-extensions/org.wso2.carbon.apimgt.handlers/src/main/java/org/wso2/carbon/apimgt/handlers/invoker/RESTInvoker.java
+++ b/components/apimgt-extensions/org.wso2.carbon.apimgt.handlers/src/main/java/org/wso2/carbon/apimgt/handlers/invoker/RESTInvoker.java
@@ -17,11 +17,9 @@
*/
package org.wso2.carbon.apimgt.handlers.invoker;
-import org.apache.commons.codec.binary.Base64;
import org.apache.commons.io.IOUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.apache.http.Header;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.*;
import org.apache.http.entity.StringEntity;
@@ -32,7 +30,6 @@ import org.apache.http.util.EntityUtils;
import java.io.IOException;
import java.net.URI;
-import java.nio.charset.StandardCharsets;
import java.util.Map;
import java.util.Set;
@@ -63,7 +60,7 @@ public class RESTInvoker {
.setConnectionManager(connectionManager)
.setDefaultRequestConfig(defaultRequestConfig)
.build();
- if(log.isDebugEnabled()){
+ if (log.isDebugEnabled()) {
log.debug("REST client initialized with " +
"maxTotalConnection = " + maxTotalConnections +
"maxConnectionsPerRoute = " + maxTotalConnectionsPerRoute +
@@ -72,14 +69,11 @@ public class RESTInvoker {
}
- public RESTResponse invokePOST(URI uri, Map requestHeaders, String username,
- String password, String payload) throws IOException {
+ public RESTResponse invokePOST(URI uri, Map requestHeaders, String payload) throws IOException {
HttpPost httpPost = null;
CloseableHttpResponse response = null;
- Header[] headers;
int httpStatus;
- String contentType;
String output;
try {
httpPost = new HttpPost(uri);
@@ -90,11 +84,9 @@ public class RESTInvoker {
httpPost.setHeader(header, requestHeaders.get(header));
}
}
- response = sendReceiveRequest(httpPost, username, password);
+ response = sendReceiveRequest(httpPost);
output = IOUtils.toString(response.getEntity().getContent());
- headers = response.getAllHeaders();
httpStatus = response.getStatusLine().getStatusCode();
- contentType = response.getEntity().getContentType().getValue();
if (log.isDebugEnabled()) {
log.debug("Invoked POST " + uri.toString() +
" - Input payload: " + payload + " - Response message: " + output);
@@ -108,21 +100,11 @@ public class RESTInvoker {
httpPost.releaseConnection();
}
}
- return new RESTResponse(contentType, output, headers, httpStatus);
+ return new RESTResponse(output, httpStatus);
}
- private CloseableHttpResponse sendReceiveRequest(HttpRequestBase requestBase, String username, String password)
+ private CloseableHttpResponse sendReceiveRequest(HttpRequestBase requestBase)
throws IOException {
- CloseableHttpResponse response;
- if (username != null && !username.equals("") && password != null) {
- String combinedCredentials = username + ":" + password;
- byte[] encodedCredentials = Base64.encodeBase64(combinedCredentials.getBytes(StandardCharsets.UTF_8));
- requestBase.addHeader("Authorization", "Basic " + new String(encodedCredentials));
-
- response = client.execute(requestBase);
- } else {
- response = client.execute(requestBase);
- }
- return response;
+ return client.execute(requestBase);
}
}
diff --git a/components/apimgt-extensions/org.wso2.carbon.apimgt.handlers/src/main/java/org/wso2/carbon/apimgt/handlers/invoker/RESTResponse.java b/components/apimgt-extensions/org.wso2.carbon.apimgt.handlers/src/main/java/org/wso2/carbon/apimgt/handlers/invoker/RESTResponse.java
index 57b4d58f94..205130b30e 100644
--- a/components/apimgt-extensions/org.wso2.carbon.apimgt.handlers/src/main/java/org/wso2/carbon/apimgt/handlers/invoker/RESTResponse.java
+++ b/components/apimgt-extensions/org.wso2.carbon.apimgt.handlers/src/main/java/org/wso2/carbon/apimgt/handlers/invoker/RESTResponse.java
@@ -17,40 +17,25 @@
*/
package org.wso2.carbon.apimgt.handlers.invoker;
-import org.apache.http.Header;
/**
* RESTResponse class holds the data retrieved from the HTTP invoke response.
*/
public class RESTResponse {
- private String contentType;
private String content;
- private Header[] headers;
private int httpStatus;
/**
* Constructor
*
- * @param contentType from the REST invoke response
* @param content from the REST invoke response
- * @param headers from the REST invoke response
* @param httpStatus from the REST invoke response
*/
- RESTResponse(String contentType, String content, Header[] headers, int httpStatus) {
- this.contentType = contentType;
+ RESTResponse(String content, int httpStatus) {
this.content = content;
- this.headers = headers;
this.httpStatus = httpStatus;
}
- /**
- * Get the content type of the EST invoke response
- *
- * @return String content type of the response
- */
- public String getContentType() {
- return contentType;
- }
/**
* Get contents of the REST invoke response
@@ -61,15 +46,6 @@ public class RESTResponse {
return content;
}
- /**
- * Get headers of the REST invoke response
- *
- * @return headers of the REST invoke response
- */
- public Header[] getHeaders() {
- return headers;
- }
-
/**
* Get the HTTP Status code from REST invoke response
*
diff --git a/components/apimgt-extensions/org.wso2.carbon.apimgt.handlers/src/main/java/org/wso2/carbon/apimgt/handlers/utils/Utils.java b/components/apimgt-extensions/org.wso2.carbon.apimgt.handlers/src/main/java/org/wso2/carbon/apimgt/handlers/utils/Utils.java
index 1a2d7e5859..a36dc0f647 100644
--- a/components/apimgt-extensions/org.wso2.carbon.apimgt.handlers/src/main/java/org/wso2/carbon/apimgt/handlers/utils/Utils.java
+++ b/components/apimgt-extensions/org.wso2.carbon.apimgt.handlers/src/main/java/org/wso2/carbon/apimgt/handlers/utils/Utils.java
@@ -59,6 +59,7 @@ public class Utils {
/**
* This method initializes the iot-api-config.xml file.
+ *
* @return IoTServerConfiguration Object based on the configuration file.
*/
public static IOTServerConfiguration initConfig() {
@@ -67,10 +68,11 @@ public class Utils {
/**
* This methods initialized the iot-api-config.xml from provided path.
+ *
* @param path The actual file path of iot-api-config.xml
* @return The instance of the IOTServerConfiguration based on the configuration.
*/
- public static IOTServerConfiguration initConfig(String path){
+ public static IOTServerConfiguration initConfig(String path) {
try {
File file = new File(path);
Document doc = Utils.convertToDocument(file);
@@ -145,15 +147,15 @@ public class Utils {
getClientSecretes(iotServerConfiguration, restInvoker);
}
URI tokenUrl = new URI(iotServerConfiguration.getOauthTokenEndpoint());
- String tokenContent = "grant_type=password&username=" + iotServerConfiguration.getUsername()+ "&password=" +
+ String tokenContent = "grant_type=password&username=" + iotServerConfiguration.getUsername() + "&password=" +
iotServerConfiguration.getPassword() + "&scope=activity-view";
String tokenBasicAuth = "Basic " + Base64.encode((clientId + ":" + clientSecret).getBytes());
Map tokenHeaders = new HashMap<>();
tokenHeaders.put("Authorization", tokenBasicAuth);
tokenHeaders.put("Content-Type", "application/x-www-form-urlencoded");
- RESTResponse response = restInvoker.invokePOST(tokenUrl, tokenHeaders, null, null, tokenContent);
- if(log.isDebugEnabled()) {
+ RESTResponse response = restInvoker.invokePOST(tokenUrl, tokenHeaders, tokenContent);
+ if (log.isDebugEnabled()) {
log.debug("Token response:" + response.getContent());
}
JSONObject jsonResponse = new JSONObject(response.getContent());
@@ -168,6 +170,7 @@ public class Utils {
/**
* This method register an application to get the client key and secret.
+ *
* @param iotServerConfiguration Instance of the IoTServerConfiguration.
* @throws APIMCertificateMGTException
*/
@@ -189,7 +192,7 @@ public class Utils {
dcrHeaders.put(AuthConstants.CONTENT_TYPE_HEADER, AuthConstants.CONTENT_TYPE);
dcrHeaders.put(AuthConstants.AUTHORIZATION_HEADER, AuthConstants.BASIC_AUTH_PREFIX + basicAuth);
URI dcrUrl = new URI(iotServerConfiguration.getDynamicClientRegistrationEndpoint());
- RESTResponse response = restInvoker.invokePOST(dcrUrl, dcrHeaders, null, null, dcrContent);
+ RESTResponse response = restInvoker.invokePOST(dcrUrl, dcrHeaders, dcrContent);
if (log.isDebugEnabled()) {
log.debug("DCR response :" + response.getContent());
}
diff --git a/components/apimgt-extensions/org.wso2.carbon.apimgt.handlers/src/test/java/org/wso2/carbon/apimgt/handlers/AuthenticationHandlerTest.java b/components/apimgt-extensions/org.wso2.carbon.apimgt.handlers/src/test/java/org/wso2/carbon/apimgt/handlers/AuthenticationHandlerTest.java
index f68a9bd973..f42505409a 100644
--- a/components/apimgt-extensions/org.wso2.carbon.apimgt.handlers/src/test/java/org/wso2/carbon/apimgt/handlers/AuthenticationHandlerTest.java
+++ b/components/apimgt-extensions/org.wso2.carbon.apimgt.handlers/src/test/java/org/wso2/carbon/apimgt/handlers/AuthenticationHandlerTest.java
@@ -78,7 +78,7 @@ public class AuthenticationHandlerTest extends BaseAPIHandlerTest {
@Test(description = "Handle request with without device type",
dependsOnMethods = "testHandleRequestWithEmptyTransportHeader")
- public void testHandleRequestWithURISyntaxError() throws Exception {
+ public void testHandleRequestWithoutDeviceType() throws Exception {
HashMap transportHeaders = new HashMap<>();
transportHeaders.put(AuthConstants.MDM_SIGNATURE, "some cert");
boolean response = this.handler.handleRequest(createSynapseMessageContext("", this.synapseConfiguration,
@@ -87,7 +87,7 @@ public class AuthenticationHandlerTest extends BaseAPIHandlerTest {
}
@Test(description = "Handle request with device type URI with MDM ceritificate",
- dependsOnMethods = "testHandleRequestWithURISyntaxError")
+ dependsOnMethods = "testHandleRequestWithoutDeviceType")
public void testHandleSuccessfulRequestMDMCertificate() throws Exception {
HashMap transportHeaders = new HashMap<>();
transportHeaders.put(AuthConstants.MDM_SIGNATURE, "some cert");
@@ -150,6 +150,70 @@ public class AuthenticationHandlerTest extends BaseAPIHandlerTest {
this.mockClient.reset();
}
+ @Test(description = "Handle request with device type URI with Encoded Pem with invalid response",
+ dependsOnMethods = "testHandleSuccessRequestEncodedPem")
+ public void testHandleSuccessRequestEncodedPemInvalidResponse() throws Exception {
+ HashMap transportHeaders = new HashMap<>();
+ transportHeaders.put(AuthConstants.ENCODED_PEM, "encoded pem");
+ setMockClient();
+ this.mockClient.setResponse(getAccessTokenReponse());
+ this.mockClient.setResponse(getInvalidResponse());
+ MessageContext messageContext = createSynapseMessageContext("", this.synapseConfiguration,
+ transportHeaders, "https://test.com/testservice/api/testdevice");
+ boolean response = this.handler.handleRequest(messageContext);
+ Assert.assertFalse(response);
+ this.mockClient.reset();
+ }
+
+ @Test(description = "Handle request with cert management exception ",
+ dependsOnMethods = "testHandleSuccessRequestEncodedPem")
+ public void testHandleRequestWithCertMgmtException() throws Exception {
+ HashMap transportHeaders = new HashMap<>();
+ transportHeaders.put(AuthConstants.ENCODED_PEM, "encoded pem");
+ setMockClient();
+ this.mockClient.setResponse(null);
+ MessageContext messageContext = createSynapseMessageContext("", this.synapseConfiguration,
+ transportHeaders, "https://test.com/testservice/api/testdevice");
+ boolean response = this.handler.handleRequest(messageContext);
+ Assert.assertFalse(response);
+ this.mockClient.reset();
+ }
+
+ @Test(description = "Handle request with IO exception",
+ dependsOnMethods = "testHandleRequestWithCertMgmtException")
+ public void testHandleRequestWithIOException() throws Exception {
+ HashMap transportHeaders = new HashMap<>();
+ transportHeaders.put(AuthConstants.ENCODED_PEM, "encoded pem");
+ setMockClient();
+ this.mockClient.setResponse(getAccessTokenReponse());
+ this.mockClient.setResponse(null);
+ MessageContext messageContext = createSynapseMessageContext("", this.synapseConfiguration,
+ transportHeaders, "https://test.com/testservice/api/testdevice");
+ boolean response = this.handler.handleRequest(messageContext);
+ Assert.assertFalse(response);
+ this.mockClient.reset();
+ }
+
+ @Test(description = "Handle request with URI exception",
+ dependsOnMethods = "testHandleRequestWithIOException")
+ public void testHandleRequestWithURIException() throws Exception {
+ TestUtils.resetSystemProperties();
+ HashMap transportHeaders = new HashMap<>();
+ transportHeaders.put(AuthConstants.MDM_SIGNATURE, "some cert");
+ AuthenticationHandler handler = new AuthenticationHandler();
+ boolean response = handler.handleRequest(createSynapseMessageContext("", this.synapseConfiguration,
+ transportHeaders, "https://test.com/testservice/api/testdevice"));
+ Assert.assertFalse(response);
+ TestUtils.setSystemProperties();
+ }
+
+ @Test(description = "Handle response")
+ public void testHandleResponse() throws Exception {
+ boolean response = this.handler.handleResponse(null);
+ Assert.assertTrue(response);
+ }
+
+
private static MessageContext createSynapseMessageContext(
String payload, SynapseConfiguration config, HashMap transportHeaders,
String address) throws Exception {
@@ -228,6 +292,16 @@ public class AuthenticationHandlerTest extends BaseAPIHandlerTest {
return mockDCRResponse;
}
+ private CloseableHttpResponse getInvalidResponse() throws UnsupportedEncodingException {
+ CloseableHttpResponse mockDCRResponse = new MockHttpResponse();
+ BasicHttpEntity responseEntity = new BasicHttpEntity();
+ responseEntity.setContent(new ByteArrayInputStream("invalid response".getBytes(StandardCharsets.UTF_8.name())));
+ responseEntity.setContentType(TestUtils.CONTENT_TYPE);
+ mockDCRResponse.setEntity(responseEntity);
+ mockDCRResponse.setStatusLine(new BasicStatusLine(new ProtocolVersion("http", 1, 0), 400, "Bad Request"));
+ return mockDCRResponse;
+ }
+
private String getContent(String filePath) throws IOException {
FileReader fileReader = new FileReader(filePath);
BufferedReader bufferedReader = new BufferedReader(fileReader);
diff --git a/components/apimgt-extensions/org.wso2.carbon.apimgt.handlers/src/test/java/org/wso2/carbon/apimgt/handlers/mock/MockClient.java b/components/apimgt-extensions/org.wso2.carbon.apimgt.handlers/src/test/java/org/wso2/carbon/apimgt/handlers/mock/MockClient.java
index 6c36969026..0c8ab4f6bd 100644
--- a/components/apimgt-extensions/org.wso2.carbon.apimgt.handlers/src/test/java/org/wso2/carbon/apimgt/handlers/mock/MockClient.java
+++ b/components/apimgt-extensions/org.wso2.carbon.apimgt.handlers/src/test/java/org/wso2/carbon/apimgt/handlers/mock/MockClient.java
@@ -41,7 +41,11 @@ public class MockClient extends CloseableHttpClient {
throws IOException {
if (this.responseCount < this.responses.size()) {
this.responseCount++;
- return this.responses.get(this.responseCount - 1);
+ CloseableHttpResponse response = this.responses.get(this.responseCount - 1);
+ if (response == null) {
+ throw new IOException("test exception");
+ }
+ return response;
} else {
return new MockHttpResponse();
}
diff --git a/components/apimgt-extensions/org.wso2.carbon.apimgt.integration.client/pom.xml b/components/apimgt-extensions/org.wso2.carbon.apimgt.integration.client/pom.xml
index 0ec3bb433b..795328c8f4 100644
--- a/components/apimgt-extensions/org.wso2.carbon.apimgt.integration.client/pom.xml
+++ b/components/apimgt-extensions/org.wso2.carbon.apimgt.integration.client/pom.xml
@@ -13,13 +13,13 @@
apimgt-extensions
org.wso2.carbon.devicemgt
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../pom.xml
4.0.0
org.wso2.carbon.apimgt.integration.client
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
bundle
WSO2 Carbon - API Management Integration Client
WSO2 Carbon - API Management Integration Client
diff --git a/components/apimgt-extensions/org.wso2.carbon.apimgt.integration.generated.client/pom.xml b/components/apimgt-extensions/org.wso2.carbon.apimgt.integration.generated.client/pom.xml
index 80a8057ce1..65b720815e 100644
--- a/components/apimgt-extensions/org.wso2.carbon.apimgt.integration.generated.client/pom.xml
+++ b/components/apimgt-extensions/org.wso2.carbon.apimgt.integration.generated.client/pom.xml
@@ -13,13 +13,13 @@
apimgt-extensions
org.wso2.carbon.devicemgt
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../pom.xml
4.0.0
org.wso2.carbon.apimgt.integration.generated.client
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
bundle
WSO2 Carbon - API Management Integration Generated Client
WSO2 Carbon - API Management Integration Client
diff --git a/components/apimgt-extensions/org.wso2.carbon.apimgt.webapp.publisher/pom.xml b/components/apimgt-extensions/org.wso2.carbon.apimgt.webapp.publisher/pom.xml
index 72843c6886..4a1c7e4304 100644
--- a/components/apimgt-extensions/org.wso2.carbon.apimgt.webapp.publisher/pom.xml
+++ b/components/apimgt-extensions/org.wso2.carbon.apimgt.webapp.publisher/pom.xml
@@ -22,13 +22,13 @@
apimgt-extensions
org.wso2.carbon.devicemgt
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../pom.xml
4.0.0
org.wso2.carbon.apimgt.webapp.publisher
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
bundle
WSO2 Carbon - API Management Webapp Publisher
WSO2 Carbon - API Management Webapp Publisher
diff --git a/components/apimgt-extensions/org.wso2.carbon.apimgt.webapp.publisher/src/main/java/org/wso2/carbon/apimgt/webapp/publisher/APIPublisherServiceImpl.java b/components/apimgt-extensions/org.wso2.carbon.apimgt.webapp.publisher/src/main/java/org/wso2/carbon/apimgt/webapp/publisher/APIPublisherServiceImpl.java
index f7914d3d52..bc02e33e5a 100644
--- a/components/apimgt-extensions/org.wso2.carbon.apimgt.webapp.publisher/src/main/java/org/wso2/carbon/apimgt/webapp/publisher/APIPublisherServiceImpl.java
+++ b/components/apimgt-extensions/org.wso2.carbon.apimgt.webapp.publisher/src/main/java/org/wso2/carbon/apimgt/webapp/publisher/APIPublisherServiceImpl.java
@@ -62,7 +62,7 @@ public class APIPublisherServiceImpl implements APIPublisherService {
for (APIInfo apiInfo : apiList.getList()) {
if (api.getName().equals(apiInfo.getName()) && api.getVersion().equals(apiInfo.getVersion())) {
api = publisherClient.getApi().apisApiIdPut(apiInfo.getId(), api, CONTENT_TYPE, null, null);
- if (CREATED_STATUS.equals(api.getStatus())) {
+ if (api != null && CREATED_STATUS.equals(api.getStatus())) {
publisherClient.getApi().apisChangeLifecyclePost(PUBLISH_ACTION, api.getId(), null, null,
null);
}
@@ -83,7 +83,9 @@ public class APIPublisherServiceImpl implements APIPublisherService {
return false;
}
for (APIInfo existingApi : apiList.getList()) {
- if (existingApi.getName().equals(api.getName()) && existingApi.getVersion().equals(api.getVersion())) {
+ if (existingApi.getName() != null && existingApi.getName().equals(api.
+ getName()) && existingApi.getVersion() != null &&
+ existingApi.getVersion().equals(api.getVersion())) {
return true;
}
}
diff --git a/components/apimgt-extensions/org.wso2.carbon.apimgt.webapp.publisher/src/test/java/org/wso2/carbon/apimgt/webapp/publisher/APIPublisherServiceTest.java b/components/apimgt-extensions/org.wso2.carbon.apimgt.webapp.publisher/src/test/java/org/wso2/carbon/apimgt/webapp/publisher/APIPublisherServiceTest.java
index cf313fca21..2a5b533eaf 100644
--- a/components/apimgt-extensions/org.wso2.carbon.apimgt.webapp.publisher/src/test/java/org/wso2/carbon/apimgt/webapp/publisher/APIPublisherServiceTest.java
+++ b/components/apimgt-extensions/org.wso2.carbon.apimgt.webapp.publisher/src/test/java/org/wso2/carbon/apimgt/webapp/publisher/APIPublisherServiceTest.java
@@ -19,17 +19,30 @@ package org.wso2.carbon.apimgt.webapp.publisher;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.mockito.Mockito;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
+import org.wso2.carbon.apimgt.integration.client.IntegrationClientServiceImpl;
import org.wso2.carbon.apimgt.integration.client.OAuthRequestInterceptor;
import org.wso2.carbon.apimgt.integration.client.model.OAuthApplication;
+import org.wso2.carbon.apimgt.integration.client.publisher.PublisherClient;
+import org.wso2.carbon.apimgt.integration.client.service.IntegrationClientService;
+import org.wso2.carbon.apimgt.integration.generated.client.publisher.api.APIsApi;
+import org.wso2.carbon.apimgt.integration.generated.client.publisher.model.API;
+import org.wso2.carbon.apimgt.integration.generated.client.publisher.model.APIInfo;
+import org.wso2.carbon.apimgt.integration.generated.client.publisher.model.APIList;
+import org.wso2.carbon.apimgt.webapp.publisher.config.WebappPublisherConfig;
import org.wso2.carbon.apimgt.webapp.publisher.dto.ApiScope;
import org.wso2.carbon.apimgt.webapp.publisher.dto.ApiUriTemplate;
import org.wso2.carbon.apimgt.webapp.publisher.exception.APIManagerPublisherException;
+import org.wso2.carbon.apimgt.webapp.publisher.internal.APIPublisherDataHolder;
+import org.wso2.carbon.apimgt.webapp.publisher.utils.Api;
import java.lang.reflect.Field;
import java.util.*;
+import static org.mockito.Mockito.doReturn;
+
/**
* This is the test class for {@link APIPublisherServiceImpl}
*/
@@ -37,23 +50,119 @@ public class
APIPublisherServiceTest extends BaseAPIPublisherTest {
private static final Log log = LogFactory.getLog(APIPublisherServiceTest.class);
private APIPublisherServiceImpl apiPublisherService = new APIPublisherServiceImpl();
- private APIConfig apiConfig = new APIConfig();
@BeforeTest
public void initialConfigs() throws Exception {
- setApiConfigs(apiConfig);
initializeOAuthApplication();
+ WebappPublisherConfig.init();
}
@Test(description = "Publishes an API | will fail if there are any exceptions")
public void publishAPI() throws NoSuchFieldException, IllegalAccessException,
APIManagerPublisherException {
+ APIConfig apiConfig = new APIConfig();
+ setApiConfigs(apiConfig, "testAPI-0");
+ apiPublisherService.publishAPI(apiConfig);
+ }
+
+ @Test(description = "Testing for API status CREATED | will fail if there are any exceptions")
+ public void publishCreatedAPI() throws APIManagerPublisherException, NoSuchFieldException,
+ IllegalAccessException {
+ APIConfig apiConfig = new APIConfig();
+ setApiConfigs(apiConfig, "testAPI-1");
+ APIPublisherDataHolder apiPublisherDataHolder = Mockito.mock(APIPublisherDataHolder.getInstance().
+ getClass(), Mockito.CALLS_REAL_METHODS);
+ IntegrationClientService integrationClientService = Mockito.mock(IntegrationClientServiceImpl.
+ class, Mockito.CALLS_REAL_METHODS);
+ doReturn(integrationClientService).when(apiPublisherDataHolder).getIntegrationClientService();
+ PublisherClient publisherClient = APIPublisherDataHolder.getInstance().getIntegrationClientService().
+ getPublisherClient();
+ doReturn(publisherClient).when(integrationClientService).getPublisherClient();
+ APIsApi apIsApi = Mockito.mock(Api.class, Mockito.CALLS_REAL_METHODS);
+ doReturn(apIsApi).when(publisherClient).getApi();
+ API api = Mockito.mock(API.class, Mockito.CALLS_REAL_METHODS);
+ api.setStatus("CREATED");
+ doReturn(api).when(apIsApi).apisPost(Mockito.any(), Mockito.anyString());
apiPublisherService.publishAPI(apiConfig);
}
- private void setApiConfigs(APIConfig apiConfig) {
- apiConfig.setName("Windows Device Management Administrative Service");
- apiConfig.setContext("/api/device-mgt/windows/v1.0/admin/devices");
+ @Test(description = "createAPIListWithNoApi | will fail if there are any exceptions")
+ private void publishWithNoAPIListCreated() throws APIManagerPublisherException {
+ APIConfig apiConfig = new APIConfig();
+ setApiConfigs(apiConfig, "testAPI-2");
+ APIPublisherDataHolder apiPublisherDataHolder = Mockito.mock(APIPublisherDataHolder.getInstance().
+ getClass(), Mockito.CALLS_REAL_METHODS);
+ IntegrationClientService integrationClientService = Mockito.mock(IntegrationClientServiceImpl.
+ class, Mockito.CALLS_REAL_METHODS);
+ doReturn(integrationClientService).when(apiPublisherDataHolder).getIntegrationClientService();
+ PublisherClient publisherClient = APIPublisherDataHolder.getInstance().getIntegrationClientService().
+ getPublisherClient();
+ doReturn(publisherClient).when(integrationClientService).getPublisherClient();
+ APIsApi apIsApi = Mockito.mock(Api.class, Mockito.CALLS_REAL_METHODS);
+ doReturn(apIsApi).when(publisherClient).getApi();
+ API api = Mockito.mock(API.class, Mockito.CALLS_REAL_METHODS);
+ api.setStatus("CREATED");
+ doReturn(api).when(apIsApi).apisPost(Mockito.any(), Mockito.anyString());
+ APIList apiList = Mockito.mock(APIList.class, Mockito.CALLS_REAL_METHODS);
+ APIInfo apiInfo = new APIInfo();
+ List apiInfoList = new ArrayList<>();
+ apiInfoList.add(apiInfo);
+ apiList.list(apiInfoList);
+ doReturn(apiList).when(apIsApi).apisGet(Mockito.anyInt(), Mockito.anyInt(),
+ Mockito.anyString(), Mockito.anyString(), Mockito.anyString());
+ doReturn(api).when(apIsApi).apisApiIdPut(Mockito.anyString(), Mockito.any(),
+ Mockito.anyString(), Mockito.anyString(), Mockito.anyString());
+ apiPublisherService.publishAPI(apiConfig);
+ }
+
+ @Test(description = "createAPIList | will fail if there are any exceptions")
+ private void publishWithAPIListCreated() throws APIManagerPublisherException {
+ APIConfig apiConfig = new APIConfig();
+ setApiConfigs(apiConfig, "testAPI-3");
+ APIPublisherDataHolder apiPublisherDataHolder = Mockito.mock(APIPublisherDataHolder.getInstance().
+ getClass(), Mockito.CALLS_REAL_METHODS);
+ IntegrationClientService integrationClientService = Mockito.mock(IntegrationClientServiceImpl.
+ class, Mockito.CALLS_REAL_METHODS);
+ doReturn(integrationClientService).when(apiPublisherDataHolder).getIntegrationClientService();
+ PublisherClient publisherClient = APIPublisherDataHolder.getInstance().getIntegrationClientService().
+ getPublisherClient();
+ doReturn(publisherClient).when(integrationClientService).getPublisherClient();
+ APIsApi apIsApi = Mockito.mock(Api.class, Mockito.CALLS_REAL_METHODS);
+ doReturn(apIsApi).when(publisherClient).getApi();
+ API api = Mockito.mock(API.class, Mockito.CALLS_REAL_METHODS);
+ api.setStatus("CREATED");
+ doReturn(api).when(apIsApi).apisPost(Mockito.any(), Mockito.anyString());
+ APIList apiList = Mockito.mock(APIList.class, Mockito.CALLS_REAL_METHODS);
+ APIInfo apiInfo = new APIInfo();
+ apiInfo.setName("testAPI-3");
+ apiInfo.setVersion("1.0.0");
+ apiInfo.setId("test-one");
+ List apiInfoList = new ArrayList<>();
+ apiInfoList.add(apiInfo);
+ apiList.list(apiInfoList);
+ doReturn(apiList).when(apIsApi).apisGet(Mockito.anyInt(), Mockito.anyInt(),
+ Mockito.anyString(), Mockito.anyString(), Mockito.anyString());
+ doReturn(api).when(apIsApi).apisApiIdPut(Mockito.anyString(), Mockito.any(),
+ Mockito.anyString(), Mockito.anyString(), Mockito.anyString());
+ apiConfig.setSharedWithAllTenants(false);
+ apiPublisherService.publishAPI(apiConfig);
+ }
+
+ @Test(description = "publish API with scope added | will fail if there are any exceptions")
+ private void publishWithAPIScope() throws APIManagerPublisherException {
+ APIConfig apiConfig = new APIConfig();
+ setApiConfigs(apiConfig, "testAPI-4");
+ Set scopes = new HashSet<>();
+ ApiScope apiScope = new ApiScope();
+ apiScope.setDescription("testing");
+ scopes.add(apiScope);
+ apiConfig.setScopes(scopes);
+ apiPublisherService.publishAPI(apiConfig);
+ }
+
+ private void setApiConfigs(APIConfig apiConfig, String name) {
+ apiConfig.setName(name);
+ apiConfig.setContext("api/device-mgt/windows/v1.g0/admin/devices");
apiConfig.setOwner("admin");
apiConfig.setEndpoint("https://localhost:9443/api/device-mgt/windows/v1.0/admin/devices");
apiConfig.setVersion("1.0.0");
@@ -98,3 +207,4 @@ APIPublisherServiceTest extends BaseAPIPublisherTest {
}
}
+
diff --git a/components/apimgt-extensions/org.wso2.carbon.apimgt.webapp.publisher/src/test/java/org/wso2/carbon/apimgt/webapp/publisher/APIPublisherUtilTest.java b/components/apimgt-extensions/org.wso2.carbon.apimgt.webapp.publisher/src/test/java/org/wso2/carbon/apimgt/webapp/publisher/APIPublisherUtilTest.java
new file mode 100644
index 0000000000..ca1bc1fba4
--- /dev/null
+++ b/components/apimgt-extensions/org.wso2.carbon.apimgt.webapp.publisher/src/test/java/org/wso2/carbon/apimgt/webapp/publisher/APIPublisherUtilTest.java
@@ -0,0 +1,126 @@
+/*
+* Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+*
+* WSO2 Inc. licenses this file to you under the Apache License,
+* Version 2.0 (the "License"); you may not use this file except
+* in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing,
+* software distributed under the License is distributed on an
+* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+* KIND, either express or implied. See the License for the
+* specific language governing permissions and limitations
+* under the License.
+*/
+package org.wso2.carbon.apimgt.webapp.publisher;
+
+import org.testng.Assert;
+import org.testng.annotations.AfterClass;
+import org.testng.annotations.BeforeTest;
+import org.testng.annotations.Test;
+import org.wso2.carbon.apimgt.webapp.publisher.config.APIResource;
+import org.wso2.carbon.apimgt.webapp.publisher.config.APIResourceConfiguration;
+import org.wso2.carbon.apimgt.webapp.publisher.config.WebappPublisherConfig;
+import org.wso2.carbon.apimgt.webapp.publisher.dto.ApiScope;
+import org.wso2.carbon.apimgt.webapp.publisher.exception.APIManagerPublisherException;
+import org.wso2.carbon.apimgt.webapp.publisher.utils.MockServletContext;
+import org.wso2.carbon.context.PrivilegedCarbonContext;
+import org.wso2.carbon.registry.core.exceptions.RegistryException;
+import org.wso2.carbon.registry.core.jdbc.realm.InMemoryRealmService;
+import org.wso2.carbon.user.api.RealmConfiguration;
+import org.wso2.carbon.user.api.UserRealm;
+import org.wso2.carbon.user.api.UserStoreException;
+import org.wso2.carbon.utils.multitenancy.MultitenantConstants;
+
+import javax.servlet.ServletContext;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import static org.wso2.carbon.apimgt.webapp.publisher.APIPublisherUtil.buildApiConfig;
+
+/**
+ * This is the test class for {@link APIPublisherUtil}
+ */
+public class APIPublisherUtilTest extends BaseAPIPublisherTest {
+
+ @BeforeTest
+ public void initialConfigs() throws WebappPublisherConfigurationFailedException,
+ org.wso2.carbon.user.core.UserStoreException, RegistryException {
+ WebappPublisherConfig.init();
+ setUserRealm();
+ }
+
+ @Test(description = "test buildAPIConfig method and ensures an APIConfig is created")
+ private void buildApiConfigTest() throws UserStoreException, RegistryException {
+ try {
+ startTenantFlowAsTestTenant();
+ ServletContext servletContext = new MockServletContext();
+ APIResourceConfiguration apiDef = new APIResourceConfiguration();
+ List resources = new ArrayList<>();
+ apiDef.setResources(resources);
+ APIConfig apiConfig = buildApiConfig(servletContext, apiDef);
+ Assert.assertNotNull(apiConfig, "API configuration is null.");
+ } finally {
+ PrivilegedCarbonContext.endTenantFlow();
+ }
+ }
+
+ @Test(description = "test buildAPIConfig method as SuperTenant and ensures" +
+ " an APIConfig is created")
+ private void buildApiConfigAsSuperTenat() throws UserStoreException {
+ ServletContext servletContext = new MockServletContext();
+ APIResourceConfiguration apiDef = new APIResourceConfiguration();
+ List resources = new ArrayList<>();
+ apiDef.setResources(resources);
+ APIConfig apiConfig = buildApiConfig(servletContext, apiDef);
+ Assert.assertNotNull(apiConfig, "API configuration is null.");
+ }
+
+ @Test(description = "test buildAPIConfig with API tags specified and ensures " +
+ "an APIConfig is created")
+ private void buildApiConfigTestWithTags() throws UserStoreException {
+ ServletContext servletContext = new MockServletContext();
+ APIResourceConfiguration apiDef = new APIResourceConfiguration();
+ List resources = new ArrayList<>();
+ APIResource apiResource = new APIResource();
+ resources.add(apiResource);
+ apiDef.setResources(resources);
+ apiDef.setTags(new String[]{"windows", "device_management"});
+ APIConfig apiConfig = buildApiConfig(servletContext, apiDef);
+ Assert.assertNotNull(apiConfig, "API configuration is null.");
+ }
+
+ @Test(description = "test buildAPIConfig method with API scopes specified and " +
+ "ensures an APIConfig is created")
+ private void buildApiConfigTestWithScope() throws UserStoreException, APIManagerPublisherException {
+ ServletContext servletContext = new MockServletContext();
+ APIResourceConfiguration apiDef = new APIResourceConfiguration();
+ List resources = new ArrayList<>();
+ APIResource apiResource = new APIResource();
+ ApiScope apiScope = new ApiScope();
+ apiScope.setDescription("testing");
+ apiResource.setScope(apiScope);
+ resources.add(apiResource);
+ apiDef.setResources(resources);
+ apiDef.setTags(new String[]{"windows", "device_management"});
+ APIConfig apiConfig = buildApiConfig(servletContext, apiDef);
+ Assert.assertNotNull(apiConfig, "API configuration is null.");
+ }
+
+ private void setUserRealm() throws RegistryException, org.wso2.carbon.user.core.UserStoreException {
+ RealmConfiguration configuration = new RealmConfiguration();
+ UserRealm userRealm = new InMemoryRealmService().getUserRealm(configuration);
+ PrivilegedCarbonContext.getThreadLocalCarbonContext().setUserRealm(userRealm);
+ }
+
+ private void startTenantFlowAsTestTenant() throws org.wso2.carbon.user.core.UserStoreException, RegistryException {
+ PrivilegedCarbonContext.startTenantFlow();
+ PrivilegedCarbonContext.getThreadLocalCarbonContext().setTenantId(1212);
+ PrivilegedCarbonContext.getThreadLocalCarbonContext().setTenantDomain("test.com");
+ setUserRealm();
+ }
+}
diff --git a/components/apimgt-extensions/org.wso2.carbon.apimgt.webapp.publisher/src/test/java/org/wso2/carbon/apimgt/webapp/publisher/utils/MockServletContext.java b/components/apimgt-extensions/org.wso2.carbon.apimgt.webapp.publisher/src/test/java/org/wso2/carbon/apimgt/webapp/publisher/utils/MockServletContext.java
new file mode 100644
index 0000000000..d88dac206a
--- /dev/null
+++ b/components/apimgt-extensions/org.wso2.carbon.apimgt.webapp.publisher/src/test/java/org/wso2/carbon/apimgt/webapp/publisher/utils/MockServletContext.java
@@ -0,0 +1,285 @@
+/*
+* Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+*
+* WSO2 Inc. licenses this file to you under the Apache License,
+* Version 2.0 (the "License"); you may not use this file except
+* in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing,
+* software distributed under the License is distributed on an
+* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+* KIND, either express or implied. See the License for the
+* specific language governing permissions and limitations
+* under the License.
+*/
+package org.wso2.carbon.apimgt.webapp.publisher.utils;
+
+import javax.servlet.*;
+import javax.servlet.descriptor.JspConfigDescriptor;
+import java.io.InputStream;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.Enumeration;
+import java.util.EventListener;
+import java.util.Map;
+import java.util.Set;
+
+public class MockServletContext implements ServletContext {
+ @Override
+ public ServletContext getContext(String s) {
+ return null;
+ }
+
+ @Override
+ public String getContextPath() {
+ return null;
+ }
+
+ @Override
+ public int getMajorVersion() {
+ return 0;
+ }
+
+ @Override
+ public int getMinorVersion() {
+ return 0;
+ }
+
+ @Override
+ public int getEffectiveMajorVersion() {
+ return 0;
+ }
+
+ @Override
+ public int getEffectiveMinorVersion() {
+ return 0;
+ }
+
+ @Override
+ public String getMimeType(String s) {
+ return null;
+ }
+
+ @Override
+ public Set getResourcePaths(String s) {
+ return null;
+ }
+
+ @Override
+ public URL getResource(String s) throws MalformedURLException {
+ return null;
+ }
+
+ @Override
+ public InputStream getResourceAsStream(String s) {
+ return null;
+ }
+
+ @Override
+ public RequestDispatcher getRequestDispatcher(String s) {
+ return null;
+ }
+
+ @Override
+ public RequestDispatcher getNamedDispatcher(String s) {
+ return null;
+ }
+
+ @Override
+ public Servlet getServlet(String s) throws ServletException {
+ return null;
+ }
+
+ @Override
+ public Enumeration getServlets() {
+ return null;
+ }
+
+ @Override
+ public Enumeration getServletNames() {
+ return null;
+ }
+
+ @Override
+ public void log(String s) {
+
+ }
+
+ @Override
+ public void log(Exception e, String s) {
+
+ }
+
+ @Override
+ public void log(String s, Throwable throwable) {
+
+ }
+
+ @Override
+ public String getRealPath(String s) {
+ return null;
+ }
+
+ @Override
+ public String getServerInfo() {
+ return null;
+ }
+
+ @Override
+ public String getInitParameter(String s) {
+ return "true";
+ }
+
+ @Override
+ public Enumeration getInitParameterNames() {
+ return null;
+ }
+
+ @Override
+ public boolean setInitParameter(String s, String s1) {
+ return false;
+ }
+
+ @Override
+ public Object getAttribute(String s) {
+ return null;
+ }
+
+ @Override
+ public Enumeration getAttributeNames() {
+ return null;
+ }
+
+ @Override
+ public void setAttribute(String s, Object o) {
+
+ }
+
+ @Override
+ public void removeAttribute(String s) {
+
+ }
+
+ @Override
+ public String getServletContextName() {
+ return null;
+ }
+
+ @Override
+ public ServletRegistration.Dynamic addServlet(String s, String s1) {
+ return null;
+ }
+
+ @Override
+ public ServletRegistration.Dynamic addServlet(String s, Servlet servlet) {
+ return null;
+ }
+
+ @Override
+ public ServletRegistration.Dynamic addServlet(String s, Class extends Servlet> aClass) {
+ return null;
+ }
+
+ @Override
+ public T createServlet(Class aClass) throws ServletException {
+ return null;
+ }
+
+ @Override
+ public ServletRegistration getServletRegistration(String s) {
+ return null;
+ }
+
+ @Override
+ public Map getServletRegistrations() {
+ return null;
+ }
+
+ @Override
+ public FilterRegistration.Dynamic addFilter(String s, String s1) {
+ return null;
+ }
+
+ @Override
+ public FilterRegistration.Dynamic addFilter(String s, Filter filter) {
+ return null;
+ }
+
+ @Override
+ public FilterRegistration.Dynamic addFilter(String s, Class extends Filter> aClass) {
+ return null;
+ }
+
+ @Override
+ public T createFilter(Class aClass) throws ServletException {
+ return null;
+ }
+
+ @Override
+ public FilterRegistration getFilterRegistration(String s) {
+ return null;
+ }
+
+ @Override
+ public Map getFilterRegistrations() {
+ return null;
+ }
+
+ @Override
+ public SessionCookieConfig getSessionCookieConfig() {
+ return null;
+ }
+
+ @Override
+ public void setSessionTrackingModes(Set set) throws IllegalStateException, IllegalArgumentException {
+
+ }
+
+ @Override
+ public Set getDefaultSessionTrackingModes() {
+ return null;
+ }
+
+ @Override
+ public Set getEffectiveSessionTrackingModes() {
+ return null;
+ }
+
+ @Override
+ public void addListener(String s) {
+
+ }
+
+ @Override
+ public void addListener(T t) {
+
+ }
+
+ @Override
+ public void addListener(Class extends EventListener> aClass) {
+
+ }
+
+ @Override
+ public T createListener(Class aClass) throws ServletException {
+ return null;
+ }
+
+ @Override
+ public void declareRoles(String... strings) {
+
+ }
+
+ @Override
+ public ClassLoader getClassLoader() {
+ return null;
+ }
+
+ @Override
+ public JspConfigDescriptor getJspConfigDescriptor() {
+ return null;
+ }
+}
diff --git a/components/apimgt-extensions/org.wso2.carbon.apimgt.webapp.publisher/src/test/resources/carbon-home/repository/conf/etc/webapp-publisher-config.xml b/components/apimgt-extensions/org.wso2.carbon.apimgt.webapp.publisher/src/test/resources/carbon-home/repository/conf/etc/webapp-publisher-config.xml
new file mode 100644
index 0000000000..6e03eb73bd
--- /dev/null
+++ b/components/apimgt-extensions/org.wso2.carbon.apimgt.webapp.publisher/src/test/resources/carbon-home/repository/conf/etc/webapp-publisher-config.xml
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+ https://${iot.core.host}:${iot.core.https.port}
+
+
+ true
+
+
+ true
+
+
+
+ default
+
+
diff --git a/components/apimgt-extensions/pom.xml b/components/apimgt-extensions/pom.xml
index eff6a49bcb..7893e1104c 100644
--- a/components/apimgt-extensions/pom.xml
+++ b/components/apimgt-extensions/pom.xml
@@ -22,13 +22,13 @@
org.wso2.carbon.devicemgt
carbon-devicemgt
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../../pom.xml
4.0.0
apimgt-extensions
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
pom
WSO2 Carbon - API Management Extensions Component
http://wso2.org
diff --git a/components/certificate-mgt/org.wso2.carbon.certificate.mgt.api/pom.xml b/components/certificate-mgt/org.wso2.carbon.certificate.mgt.api/pom.xml
index a617b24c0a..fb19ba069d 100644
--- a/components/certificate-mgt/org.wso2.carbon.certificate.mgt.api/pom.xml
+++ b/components/certificate-mgt/org.wso2.carbon.certificate.mgt.api/pom.xml
@@ -22,7 +22,7 @@
certificate-mgt
org.wso2.carbon.devicemgt
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../pom.xml
diff --git a/components/certificate-mgt/org.wso2.carbon.certificate.mgt.cert.admin.api/pom.xml b/components/certificate-mgt/org.wso2.carbon.certificate.mgt.cert.admin.api/pom.xml
index 843ee002b4..59c8c06887 100644
--- a/components/certificate-mgt/org.wso2.carbon.certificate.mgt.cert.admin.api/pom.xml
+++ b/components/certificate-mgt/org.wso2.carbon.certificate.mgt.cert.admin.api/pom.xml
@@ -22,7 +22,7 @@
certificate-mgt
org.wso2.carbon.devicemgt
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../pom.xml
diff --git a/components/certificate-mgt/org.wso2.carbon.certificate.mgt.core/pom.xml b/components/certificate-mgt/org.wso2.carbon.certificate.mgt.core/pom.xml
index b06d36ca42..dc30ec19c5 100644
--- a/components/certificate-mgt/org.wso2.carbon.certificate.mgt.core/pom.xml
+++ b/components/certificate-mgt/org.wso2.carbon.certificate.mgt.core/pom.xml
@@ -21,13 +21,13 @@
org.wso2.carbon.devicemgt
certificate-mgt
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../pom.xml
4.0.0
org.wso2.carbon.certificate.mgt.core
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
bundle
WSO2 Carbon - Certificate Management Core
WSO2 Carbon - Certificate Management Core
diff --git a/components/certificate-mgt/pom.xml b/components/certificate-mgt/pom.xml
index 6cb0e09b82..e49d1841b7 100644
--- a/components/certificate-mgt/pom.xml
+++ b/components/certificate-mgt/pom.xml
@@ -22,14 +22,14 @@
org.wso2.carbon.devicemgt
carbon-devicemgt
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../../pom.xml
4.0.0
org.wso2.carbon.devicemgt
certificate-mgt
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
pom
WSO2 Carbon - Certificate Management Component
http://wso2.org
diff --git a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/pom.xml b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/pom.xml
index f73413d30c..6b5084e0de 100644
--- a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/pom.xml
+++ b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/pom.xml
@@ -22,7 +22,7 @@
device-mgt-extensions
org.wso2.carbon.devicemgt
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../pom.xml
@@ -74,6 +74,39 @@
org.wso2.carbon
org.wso2.carbon.ndatasource.core
+
+ org.testng
+ testng
+
+
+ org.powermock
+ powermock-module-testng
+ test
+
+
+ org.wso2.carbon.registry
+ org.wso2.carbon.registry.indexing
+ test
+
+
+ org.slf4j
+ jcl-over-slf4j
+
+
+ org.slf4j
+ slf4j-api
+
+
+ org.slf4j
+ log4j-over-slf4j
+
+
+
+
+ org.wso2.carbon.devicemgt
+ org.wso2.carbon.device.mgt.core
+ test
+
diff --git a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/deployer/DeviceTypePluginDeployer.java b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/deployer/DeviceTypePluginDeployer.java
index eb02504d97..82d039f53e 100644
--- a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/deployer/DeviceTypePluginDeployer.java
+++ b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/deployer/DeviceTypePluginDeployer.java
@@ -51,8 +51,8 @@ public class DeviceTypePluginDeployer extends AbstractDeployer {
private static Log log = LogFactory.getLog(DeviceTypePluginDeployer.class);
private ConfigurationContext configurationContext;
- protected Map deviceTypeServiceRegistrations = new ConcurrentHashMap();
- protected Map deviceTypeConfigurationDataMap = new ConcurrentHashMap();
+ private Map deviceTypeServiceRegistrations = new ConcurrentHashMap();
+ private Map deviceTypeConfigurationDataMap = new ConcurrentHashMap();
@Override
public void init(ConfigurationContext configurationContext) {
@@ -118,7 +118,7 @@ public class DeviceTypePluginDeployer extends AbstractDeployer {
}
}
- private ServiceRegistration registerDeviceType(DeviceTypeConfigIdentifier deviceTypeConfigIdentifier,
+ protected ServiceRegistration registerDeviceType(DeviceTypeConfigIdentifier deviceTypeConfigIdentifier,
DeviceTypeConfiguration deviceManagementConfiguration) {
DeviceTypeManagerService deviceTypeManagerService = new DeviceTypeManagerService(deviceTypeConfigIdentifier,
deviceManagementConfiguration);
diff --git a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/deployer/DeviceTypePluginDeployerTest.java b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/deployer/DeviceTypePluginDeployerTest.java
new file mode 100644
index 0000000000..7f158ff569
--- /dev/null
+++ b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/deployer/DeviceTypePluginDeployerTest.java
@@ -0,0 +1,95 @@
+/*
+ * Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * WSO2 Inc. licenses this file to you under the Apache License,
+ * Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.wso2.carbon.device.mgt.extensions.device.type.deployer;
+
+import org.apache.axis2.deployment.DeploymentException;
+import org.apache.axis2.deployment.repository.util.DeploymentFileData;
+import org.junit.Assert;
+import org.mockito.Mockito;
+import org.osgi.framework.ServiceRegistration;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
+import org.wso2.carbon.context.PrivilegedCarbonContext;
+import org.wso2.carbon.device.mgt.extensions.device.type.template.DeviceTypeConfigIdentifier;
+import org.wso2.carbon.registry.core.exceptions.RegistryException;
+import java.io.File;
+import java.io.IOException;
+import java.lang.reflect.Field;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+/*
+ Unit tests for DeviceTypePluginDeployer
+ */
+public class DeviceTypePluginDeployerTest {
+ private DeviceTypePluginDeployer deviceTypePluginDeployer;
+ private DeploymentFileData deploymentFileData;
+ private Field deviceTypeServiceRegistrations = null;
+ private Field deviceTypeConfigurationDataMap = null;
+ private ServiceRegistration serviceRegistration = null;
+
+ @BeforeClass
+ public void init() throws NoSuchFieldException, IllegalAccessException, IOException, RegistryException {
+ deviceTypePluginDeployer = Mockito.mock(DeviceTypePluginDeployer.class, Mockito.CALLS_REAL_METHODS);
+ serviceRegistration = Mockito.mock(ServiceRegistration.class, Mockito.CALLS_REAL_METHODS);
+ Mockito.doReturn(serviceRegistration).when(deviceTypePluginDeployer).registerDeviceType(Mockito.any(),
+ Mockito.any());
+ deviceTypeServiceRegistrations = DeviceTypePluginDeployer.class.getDeclaredField
+ ("deviceTypeServiceRegistrations");
+ deviceTypeServiceRegistrations.setAccessible(true);
+ deviceTypeServiceRegistrations.set(deviceTypePluginDeployer, new ConcurrentHashMap());
+ deviceTypeConfigurationDataMap = DeviceTypePluginDeployer.class.getDeclaredField
+ ("deviceTypeConfigurationDataMap");
+ deviceTypeConfigurationDataMap.setAccessible(true);
+ deviceTypeConfigurationDataMap.set(deviceTypePluginDeployer, new ConcurrentHashMap());
+ this.initializeCarbonContext();
+ }
+
+ private void initializeCarbonContext() throws IOException, RegistryException {
+
+ if (System.getProperty("carbon.home") == null) {
+ File file = new File("src/test/resources");
+ if (file.exists()) {
+ System.setProperty("carbon.home", file.getAbsolutePath());
+ }
+ }
+ PrivilegedCarbonContext.getThreadLocalCarbonContext().setTenantDomain(
+ org.wso2.carbon.base.MultitenantConstants.SUPER_TENANT_DOMAIN_NAME);
+ PrivilegedCarbonContext.getThreadLocalCarbonContext().setTenantId(
+ org.wso2.carbon.base.MultitenantConstants.SUPER_TENANT_ID);
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test(description = "Testing deviceType deploy method by deploying Android device type")
+ public void deploy() throws DeploymentException, IllegalAccessException {
+ File file = new File("src/test/resources/android.xml");
+ if (file.exists()) {
+ deploymentFileData = new DeploymentFileData(file);
+ }
+ deviceTypePluginDeployer.deploy(deploymentFileData);
+ Map tempServiceRegistration = (Map)
+ deviceTypeServiceRegistrations.get(deviceTypePluginDeployer);
+ Assert.assertEquals(tempServiceRegistration.get(deploymentFileData.getAbsolutePath()), serviceRegistration);
+ Map tempDeviceTypeConfig = (Map)
+ deviceTypeConfigurationDataMap.get(deviceTypePluginDeployer);
+ DeviceTypeConfigIdentifier deviceTypeConfigIdentifier = tempDeviceTypeConfig.get(deploymentFileData
+ .getAbsolutePath());
+ Assert.assertEquals(deviceTypeConfigIdentifier.getDeviceType(), "android");
+ }
+}
diff --git a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/src/test/resources/android.xml b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/src/test/resources/android.xml
new file mode 100644
index 0000000000..21db962414
--- /dev/null
+++ b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/src/test/resources/android.xml
@@ -0,0 +1,382 @@
+
+
+
+
+
+
+
+ en_US
+ 1.0.0
+ This End User License Agreement ("Agreement") is a legal agreement between you ("You") and WSO2,
+ Inc., regarding the enrollment of Your personal mobile device ("Device") in SoR's mobile device
+ management program, and the loading to and removal from Your Device and Your use of certain
+ applications and any associated software and user documentation, whether provided in "online" or
+ electronic format, used in connection with the operation of or provision of services to WSO2,
+ Inc., BY SELECTING "I ACCEPT" DURING INSTALLATION, YOU ARE ENROLLING YOUR DEVICE, AND THEREBY
+ AUTHORIZING SOR OR ITS AGENTS TO INSTALL, UPDATE AND REMOVE THE APPS FROM YOUR DEVICE AS DESCRIBED
+ IN THIS AGREEMENT. YOU ARE ALSO EXPLICITLY ACKNOWLEDGING AND AGREEING THAT (1) THIS IS A BINDING
+ CONTRACT AND (2) YOU HAVE READ AND AGREE TO THE TERMS OF THIS AGREEMENT.
+
+ IF YOU DO NOT ACCEPT THESE TERMS, DO NOT ENROLL YOUR DEVICE AND DO NOT PROCEED ANY FURTHER.
+
+ You agree that: (1) You understand and agree to be bound by the terms and conditions contained in
+ this Agreement, and (2) You are at least 21 years old and have the legal capacity to enter into
+ this Agreement as defined by the laws of Your jurisdiction. SoR shall have the right, without
+ prior notice, to terminate or suspend (i) this Agreement, (ii) the enrollment of Your Device, or
+ (iii) the functioning of the Apps in the event of a violation of this Agreement or the cessation
+ of Your relationship with SoR (including termination of Your employment if You are an employee or
+ expiration or termination of Your applicable franchise or supply agreement if You are a franchisee
+ of or supplier to the WSO2 WSO2, Inc., system). SoR expressly reserves all rights not expressly
+ granted herein.
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+ jdbc/MobileAndroidDM_DS
+
+
+
+ DEVICE_ID
+
+ FCM_TOKEN
+ DEVICE_INFO
+ IMEI
+ IMSI
+ OS_VERSION
+ DEVICE_MODEL
+ VENDOR
+ LATITUDE
+ LONGITUDE
+ SERIAL
+ MAC_ADDRESS
+ DEVICE_NAME
+ OS_BUILD_DATE
+
+
+
+
+
+
+
+ Ring
+ Ring the device
+
+
+
+
+ Device Lock
+ Lock the device
+
+
+
+
+ Location
+ Request coordinates of device location
+
+
+
+
+ Clear Password
+ Clear current password
+
+
+
+
+ Reboot
+ Reboot the device
+
+
+
+
+ Upgrade Firmware
+ Upgrade Firmware
+
+
+
+
+ Mute
+ Enable mute in the device
+
+
+
+
+ Message
+ Send message
+
+
+
+
+ Change Lock-code
+ Change current lock code
+
+
+
+
+ Enterprise Wipe
+ Remove enterprise applications
+
+
+
+
+ Wipe Data
+ Factory reset the device
+
+
+
+
+ Wifi
+ Setting up wifi configuration
+
+
+ Camera
+ Enable or disable camera
+
+
+ Email
+ Configure email settings
+
+
+ Device info
+ Request device information
+
+
+ Application List
+ Request list of current installed applications
+
+
+ Install App
+ Install App
+
+
+ Uninstall App
+ Uninstall App
+
+
+ Blacklist app
+ Blacklist applications
+
+
+ Encrypt Storage
+ Encrypt storage
+
+
+ Password Policy
+ Set passcode policy
+
+
+ Configure VPN
+ Configure VPN settings
+
+
+ Disallow user to change volume
+ Allow or disallow user to change volume"
+
+
+ Disallow bluetooth configuration
+ Allow or disallow bluetooth configuration
+
+
+ Disallow user to change cell broadcast configurations
+ Allow or disallow user to change cell broadcast configurations
+
+
+ Disallow user to change user credentials
+ Allow or disallow user to change user credentials
+
+
+ Disallow user to change mobile networks configurations
+ Allow or disallow user to change mobile networks configurations
+
+
+ Disallow user to change tethering configurations
+ Allow or disallow user to change tethering configurations
+
+
+ Disallow user to change VPN configurations
+ Allow or disallow user to change VPN configurations
+
+
+ Disallow user to change WIFI configurations
+ Allow or disallow user to change WIFI configurations
+
+
+ Disallow user to change app control
+ Allow or disallow user to change app control
+
+
+ Disallow window creation
+ Allow or disallow window creation
+
+
+ Disallow user to change app control configurations
+ Allow or disallow user to change app control configurations
+
+
+ Disallow cross profile copy paste
+ Allow or disallow cross profile copy paste
+
+
+ Disallow debugging features
+ Allow or disallow debugging features
+
+
+ Disallow factory reset
+ Allow or disallow factory reset
+
+
+ Disallow add user
+ Allow or disallow add user
+
+
+ Disallow install apps
+ Allow or disallow install apps
+
+
+ Disallow install unknown sources
+ Allow or disallow install unknown sources
+
+
+ Disallow modify account
+ Allow or disallow modify account
+
+
+ Disallow mount physical media
+ Allow or disallow mount physical media
+
+
+ Disallow network reset
+ Allow or disallow network reset
+
+
+ Disallow outgoing beam
+ Allow or disallow outgoing beam
+
+
+ Disallow outgoing calls
+ Allow or disallow outgoing calls
+
+
+ Disallow remove users
+ Allow or disallow remove users
+
+
+ Disallow safe boot
+ Allow or disallow safe boot
+
+
+ Disallow share location
+ Allow or disallow share location
+
+
+ Disallow sms
+ Allow or disallow sms
+
+
+ Disallow uninstall app
+ Allow or disallow uninstall app
+
+
+ Disallow unmute mic
+ Allow or disallow unmute mic
+
+
+ Disallow usb file transfer
+ Allow or disallow usb file transfer
+
+
+ Disallow parent profile app linking
+ Allow or disallow parent profile app linking
+
+
+ Disallow ensure verify apps
+ Allow or disallow ensure verify apps
+
+
+ Disallow auto timing
+ Allow or disallow auto timing
+
+
+ Remove device owner
+ Remove device owner
+
+
+ Fetch device logcat
+ Fetch device logcat
+
+
+ Unlock the device
+ Unlock the device
+
+
+
+ true
+ 60000
+
+
+ DEVICE_INFO
+ 1
+
+
+ APPLICATION_LIST
+ 5
+
+
+ DEVICE_LOCATION
+ 1
+
+
+
+
+
+
+ DEVICE_INFO
+ APPLICATION_LIST
+ DEVICE_LOCATION
+
+
+
+
+ true
+ 300
+ 900
+ 600
+
+
diff --git a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/src/test/resources/log4j.properties b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/src/test/resources/log4j.properties
new file mode 100644
index 0000000000..e415fd607d
--- /dev/null
+++ b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/src/test/resources/log4j.properties
@@ -0,0 +1,34 @@
+#
+# Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+#
+# WSO2 Inc. licenses this file to you under the Apache License,
+# Version 2.0 (the "License"); you may not use this file except
+# in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+#
+# This is the log4j configuration file used by WSO2 Carbon
+#
+# IMPORTANT : Please do not remove or change the names of any
+# of the Appender defined here. The layout pattern & log file
+# can be changed using the WSO2 Carbon Management Console, and those
+# settings will override the settings in this file.
+#
+
+log4j.rootLogger=DEBUG, STD_OUT
+
+# Redirect log messages to console
+log4j.appender.STD_OUT=org.apache.log4j.ConsoleAppender
+log4j.appender.STD_OUT.Target=System.out
+log4j.appender.STD_OUT.layout=org.apache.log4j.PatternLayout
+log4j.appender.STD_OUT.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
diff --git a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/src/test/resources/repository/conf/carbon.xml b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/src/test/resources/repository/conf/carbon.xml
new file mode 100644
index 0000000000..f24ee57be2
--- /dev/null
+++ b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/src/test/resources/repository/conf/carbon.xml
@@ -0,0 +1,656 @@
+
+
+
+
+
+
+
+
+ ${product.name}
+
+
+ ${product.key}
+
+
+ ${product.version}
+
+
+
+
+
+
+
+
+ local:/${carbon.context}/services/
+
+
+
+
+
+
+ ${default.server.role}
+
+
+
+
+
+
+ org.wso2.carbon
+
+
+ /
+
+
+
+
+
+
+
+
+ 15
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ 9999
+
+ 11111
+
+
+
+
+
+ 10389
+
+ 8000
+
+
+
+
+
+ 10500
+
+
+
+
+
+
+ org.wso2.carbon.tomcat.jndi.CarbonJavaURLContextFactory
+
+
+
+
+
+
+
+
+ java
+
+
+
+
+
+
+
+
+
+ false
+
+
+ false
+
+
+ 600
+
+
+
+ false
+
+
+
+
+
+
+
+ 30
+
+
+
+
+
+
+
+
+ 15
+
+
+
+
+
+ ${carbon.home}/repository/deployment/server/
+
+
+ 15
+
+
+ ${carbon.home}/repository/conf/axis2/axis2.xml
+
+
+ 30000
+
+
+ ${carbon.home}/repository/deployment/client/
+
+ ${carbon.home}/repository/conf/axis2/axis2_client.xml
+
+ true
+
+
+
+
+
+
+
+
+
+ admin
+ Default Administrator Role
+
+
+ user
+ Default User Role
+
+
+
+
+
+
+
+
+
+
+
+ ${carbon.home}/repository/resources/security/wso2carbon.jks
+
+ JKS
+
+ wso2carbon
+
+ wso2carbon
+
+ wso2carbon
+
+
+
+
+
+ ${carbon.home}/repository/resources/security/client-truststore.jks
+
+ JKS
+
+ wso2carbon
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UserManager
+
+
+ false
+
+
+
+
+
+
+ ${carbon.home}/tmp/work
+
+
+
+
+
+ true
+
+
+ 10
+
+
+ 30
+
+
+
+
+
+ 100
+
+
+
+ keystore
+ certificate
+ *
+
+ org.wso2.carbon.ui.transports.fileupload.AnyFileUploadExecutor
+
+
+
+
+ jarZip
+
+ org.wso2.carbon.ui.transports.fileupload.JarZipUploadExecutor
+
+
+
+ dbs
+
+ org.wso2.carbon.ui.transports.fileupload.DBSFileUploadExecutor
+
+
+
+ tools
+
+ org.wso2.carbon.ui.transports.fileupload.ToolsFileUploadExecutor
+
+
+
+ toolsAny
+
+ org.wso2.carbon.ui.transports.fileupload.ToolsAnyFileUploadExecutor
+
+
+
+
+
+
+ - info
+ org.wso2.carbon.core.transports.util.InfoProcessor
+
+
+ - wsdl
+ org.wso2.carbon.core.transports.util.Wsdl11Processor
+
+
+ - wsdl2
+ org.wso2.carbon.core.transports.util.Wsdl20Processor
+
+
+ - xsd
+ org.wso2.carbon.core.transports.util.XsdProcessor
+
+
+
+
+
+ false
+ false
+ true
+ svn
+ http://svnrepo.example.com/repos/
+ username
+ password
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ${require.carbon.servlet}
+
+
+
+
+ true
+
+
+
+
+
+
+ default repository
+ ${p2.repo.url}
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+ true
+
+
diff --git a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/src/test/resources/testng.xml b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/src/test/resources/testng.xml
new file mode 100644
index 0000000000..d0ea4e8805
--- /dev/null
+++ b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/src/test/resources/testng.xml
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.pull.notification/pom.xml b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.pull.notification/pom.xml
index 8d2dd41c38..b5d3f7761e 100644
--- a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.pull.notification/pom.xml
+++ b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.pull.notification/pom.xml
@@ -22,7 +22,7 @@
device-mgt-extensions
org.wso2.carbon.devicemgt
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../pom.xml
diff --git a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.fcm/pom.xml b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.fcm/pom.xml
index d33d704db6..df61b1ee82 100644
--- a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.fcm/pom.xml
+++ b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.fcm/pom.xml
@@ -22,7 +22,7 @@
device-mgt-extensions
org.wso2.carbon.devicemgt
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../pom.xml
diff --git a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.http/pom.xml b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.http/pom.xml
index 9f4cf3f719..b92a837af1 100644
--- a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.http/pom.xml
+++ b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.http/pom.xml
@@ -22,7 +22,7 @@
device-mgt-extensions
org.wso2.carbon.devicemgt
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../pom.xml
diff --git a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.mqtt/pom.xml b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.mqtt/pom.xml
index 9bd6e9b3c4..865078133a 100644
--- a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.mqtt/pom.xml
+++ b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.mqtt/pom.xml
@@ -22,7 +22,7 @@
device-mgt-extensions
org.wso2.carbon.devicemgt
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../pom.xml
diff --git a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.xmpp/pom.xml b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.xmpp/pom.xml
index 4aa469074d..835b663a99 100644
--- a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.xmpp/pom.xml
+++ b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.xmpp/pom.xml
@@ -22,7 +22,7 @@
device-mgt-extensions
org.wso2.carbon.devicemgt
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../pom.xml
diff --git a/components/device-mgt-extensions/pom.xml b/components/device-mgt-extensions/pom.xml
index 69239a8995..b75a311808 100644
--- a/components/device-mgt-extensions/pom.xml
+++ b/components/device-mgt-extensions/pom.xml
@@ -22,7 +22,7 @@
carbon-devicemgt
org.wso2.carbon.devicemgt
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../../pom.xml
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/pom.xml b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/pom.xml
index e64544a6ac..9e1027681f 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/pom.xml
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/pom.xml
@@ -22,7 +22,7 @@
org.wso2.carbon.devicemgt
device-mgt
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../pom.xml
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/pom.xml b/components/device-mgt/org.wso2.carbon.device.mgt.api/pom.xml
index 767c5b008c..6861387df0 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.api/pom.xml
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/pom.xml
@@ -22,7 +22,7 @@
device-mgt
org.wso2.carbon.devicemgt
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../pom.xml
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.common/pom.xml b/components/device-mgt/org.wso2.carbon.device.mgt.common/pom.xml
index bc829ee28e..2923154537 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.common/pom.xml
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.common/pom.xml
@@ -21,7 +21,7 @@
device-mgt
org.wso2.carbon.devicemgt
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../pom.xml
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/pom.xml b/components/device-mgt/org.wso2.carbon.device.mgt.core/pom.xml
index 39d08c73f3..50ae9aa246 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.core/pom.xml
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/pom.xml
@@ -22,7 +22,7 @@
org.wso2.carbon.devicemgt
device-mgt
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../pom.xml
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/impl/GenericOperationDAOImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/impl/GenericOperationDAOImpl.java
index a575d18cf3..500e48b0ee 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/impl/GenericOperationDAOImpl.java
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/impl/GenericOperationDAOImpl.java
@@ -394,28 +394,6 @@ public class GenericOperationDAOImpl implements OperationDAO {
List activities = new ArrayList<>();
try {
Connection conn = OperationManagementDAOFactory.getConnection();
-
-/*
- String sql = "SELECT opm.ENROLMENT_ID, opm.CREATED_TIMESTAMP, opm.UPDATED_TIMESTAMP, opm.OPERATION_ID,\n" +
- "op.OPERATION_CODE, op.TYPE as OPERATION_TYPE, opm.STATUS, en.DEVICE_ID,\n" +
- "ops.RECEIVED_TIMESTAMP, ops.ID as OP_RES_ID, ops.OPERATION_RESPONSE,\n" +
- "de.DEVICE_IDENTIFICATION, dt.NAME as DEVICE_TYPE\n" +
- "FROM DM_ENROLMENT_OP_MAPPING AS opm\n" +
- "LEFT JOIN DM_OPERATION AS op ON opm.OPERATION_ID = op.ID \n" +
- "LEFT JOIN DM_ENROLMENT as en ON opm.ENROLMENT_ID = en.ID \n" +
- "LEFT JOIN DM_DEVICE as de ON en.DEVICE_ID = de.ID \n" +
- "LEFT JOIN DM_DEVICE_TYPE as dt ON dt.ID = de.DEVICE_TYPE_ID \n" +
- "LEFT JOIN DM_DEVICE_OPERATION_RESPONSE as ops ON \n" +
- "opm.ENROLMENT_ID = ops.ENROLMENT_ID AND opm.OPERATION_ID = ops.OPERATION_ID \n" +
- "WHERE opm.UPDATED_TIMESTAMP > ? \n" +
- "AND de.TENANT_ID = ? \n";
-
- if (timestamp == 0) {
- sql += "ORDER BY opm.OPERATION_ID LIMIT ? OFFSET ?;";
- } else {
- sql += "ORDER BY opm.UPDATED_TIMESTAMP asc LIMIT ? OFFSET ?";
- }
-*/
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
String sql = "SELECT " +
" opr.ENROLMENT_ID, " +
@@ -650,11 +628,6 @@ public class GenericOperationDAOImpl implements OperationDAO {
operation.setType(Operation.Type.valueOf(rs.getString("TYPE")));
operation.setCreatedTimeStamp(rs.getTimestamp("CREATED_TIMESTAMP").toString());
operation.setStatus(Operation.Status.valueOf(rs.getString("STATUS")));
-// if (rs.getTimestamp("RECEIVED_TIMESTAMP") == null) {
-// operation.setReceivedTimeStamp("");
-// } else {
-// operation.setReceivedTimeStamp(rs.getTimestamp("RECEIVED_TIMESTAMP").toString());
-// }
if (rs.getLong("UPDATED_TIMESTAMP") == 0) {
operation.setReceivedTimeStamp("");
} else {
@@ -696,11 +669,6 @@ public class GenericOperationDAOImpl implements OperationDAO {
operation.setId(rs.getInt("ID"));
operation.setType(Operation.Type.valueOf(rs.getString("TYPE")));
operation.setCreatedTimeStamp(rs.getTimestamp("CREATED_TIMESTAMP").toString());
-// if (rs.getTimestamp("RECEIVED_TIMESTAMP") == null) {
-// operation.setReceivedTimeStamp("");
-// } else {
-// operation.setReceivedTimeStamp(rs.getTimestamp("RECEIVED_TIMESTAMP").toString());
-// }
if (rs.getLong("UPDATED_TIMESTAMP") == 0) {
operation.setReceivedTimeStamp("");
} else {
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/search/mgt/impl/ProcessorImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/search/mgt/impl/ProcessorImpl.java
index cf7a1eb069..f96e2e4048 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/search/mgt/impl/ProcessorImpl.java
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/search/mgt/impl/ProcessorImpl.java
@@ -251,7 +251,7 @@ public class ProcessorImpl implements Processor {
if (log.isDebugEnabled()) {
log.debug("Query : " + queryHolder.getQuery());
}
- Connection conn;
+ Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
List devices = new ArrayList<>();
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/search/mgt/impl/QueryBuilderImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/search/mgt/impl/QueryBuilderImpl.java
index d5d0b1700a..65b6af46fa 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/search/mgt/impl/QueryBuilderImpl.java
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/search/mgt/impl/QueryBuilderImpl.java
@@ -23,7 +23,11 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.wso2.carbon.context.PrivilegedCarbonContext;
import org.wso2.carbon.device.mgt.common.search.Condition;
-import org.wso2.carbon.device.mgt.core.search.mgt.*;
+import org.wso2.carbon.device.mgt.core.search.mgt.Constants;
+import org.wso2.carbon.device.mgt.core.search.mgt.InvalidOperatorException;
+import org.wso2.carbon.device.mgt.core.search.mgt.QueryBuilder;
+import org.wso2.carbon.device.mgt.core.search.mgt.QueryHolder;
+import org.wso2.carbon.device.mgt.core.search.mgt.ValueType;
import java.util.ArrayList;
import java.util.HashMap;
@@ -93,8 +97,8 @@ public class QueryBuilderImpl implements QueryBuilder {
intArr[0] = 1;
//int x = 1;
String query = this.getGenericQueryPart(valueTypeArray) +
- this.processAND(andColumns, valueTypeArray, intArr) +
- this.processOR(orColumns, valueTypeArray, intArr);
+ this.processAND(andColumns, valueTypeArray, intArr) +
+ this.processOR(orColumns, valueTypeArray, intArr);
List queryHolders = new ArrayList<>();
QueryHolder queryHolder = new QueryHolder();
queryHolder.setQuery(query);
@@ -135,20 +139,13 @@ public class QueryBuilderImpl implements QueryBuilder {
+ " LIKE ? ";
ValueType type = new ValueType();
type.setColumnType(ValueType.columnType.STRING);
- type.setStringValue("%"+con.getValue()+"%");
+ type.setStringValue("%" + con.getValue() + "%");
valueType[x] = type;
x++;
} else {
querySuffix = querySuffix + " AND DD." + Utils.getDeviceDetailsColumnNames().get(con.getKey()) + con
.getOperator() + " ? ";
- ValueType type = new ValueType();
- if (Utils.checkColumnType(con.getKey())) {
- type.setColumnType(ValueType.columnType.STRING);
- type.setStringValue(con.getValue());
- } else {
- type.setColumnType(ValueType.columnType.INTEGER);
- type.setIntValue(Integer.parseInt(con.getValue()));
- }
+ ValueType type = this.getValueType(con);
valueType[x] = type;
x++;
}
@@ -182,21 +179,15 @@ public class QueryBuilderImpl implements QueryBuilder {
+ " LIKE ? ";
ValueType type = new ValueType();
type.setColumnType(ValueType.columnType.STRING);
- type.setStringValue("%"+con.getValue()+"%");
+ type.setStringValue("%" + con.getValue() + "%");
valueType[x] = type;
x++;
} else {
querySuffix = querySuffix + " OR DD." + Utils.getDeviceDetailsColumnNames().get(con.getKey()) + con
.getOperator() + " ? ";
- ValueType type = new ValueType();
- if (Utils.checkColumnType(con.getKey())) {
- type.setColumnType(ValueType.columnType.STRING);
- type.setStringValue(con.getValue());
- } else {
- type.setColumnType(ValueType.columnType.INTEGER);
- type.setIntValue(Integer.parseInt(con.getValue()));
- }
+ ValueType type = this.getValueType(con);
+
valueType[x] = type;
x++;
}
@@ -386,4 +377,35 @@ public class QueryBuilderImpl implements QueryBuilder {
throw new InvalidOperatorException("Error occurred while building the sql", e);
}
}
+
+ /**
+ * Returns a Value type based on the Condition data.
+ *
+ * @param con : The condition that passed.
+ * @re
+ */
+ private ValueType getValueType(Condition con) {
+ ValueType type = new ValueType();
+ String colValue = Utils.checkColumnType(con.getKey());
+
+ switch (colValue) {
+ case "String":
+ type.setColumnType(ValueType.columnType.STRING);
+ type.setStringValue(con.getValue());
+ break;
+ case "Double":
+ type.setColumnType(ValueType.columnType.DOUBLE);
+ type.setDoubleValue(Double.parseDouble(con.getValue()));
+ break;
+ case "Integer":
+ type.setColumnType(ValueType.columnType.INTEGER);
+ type.setIntValue(Integer.parseInt(con.getValue()));
+ break;
+ case "Long":
+ type.setColumnType(ValueType.columnType.STRING);
+ type.setLongValue(Long.parseLong(con.getValue()));
+ }
+
+ return type;
+ }
}
\ No newline at end of file
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/search/mgt/impl/Utils.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/search/mgt/impl/Utils.java
index 9e0d044e1e..fb5251acf4 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/search/mgt/impl/Utils.java
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/search/mgt/impl/Utils.java
@@ -75,32 +75,56 @@ public class Utils {
}
- public static boolean checkColumnType(String column) {
+ public static String checkColumnType(String column) {
- boolean bool = false;
+ String type;
switch (column) {
case "deviceModel":
- bool = true;
+ type = "String";
break;
case "vendor":
- bool = true;
+ type = "String";
break;
case "osVersion":
- bool = true;
+ type = "String";
break;
case "connectionType":
- bool = true;
+ type = "String";
break;
case "ssid":
- bool = true;
+ type = "String";
+ break;
+ case "imei":
+ type = "String";
+ break;
+ case "imsi":
+ type = "String";
+ break;
+ case "batteryLevel":
+ type = "Double";
+ break;
+ case "internalTotalMemory":
+ type = "Double";
+ break;
+ case "internalAvailableMemory":
+ type = "Double";
+ break;
+ case "externalAvailableMemory":
+ type = "Double";
+ break;
+ case "externalTotalMemory":
+ type = "Double";
+ break;
+ case "cpuUsage":
+ type = "Double";
break;
default:
- bool = false;
+ type = "String";
break;
}
- return bool;
+ return type;
}
public static Map getDeviceDetailsColumnNames() {
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/DeviceManagementProviderServiceImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/DeviceManagementProviderServiceImpl.java
index 552c10d12e..5244a74201 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/DeviceManagementProviderServiceImpl.java
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/DeviceManagementProviderServiceImpl.java
@@ -66,8 +66,11 @@ import org.wso2.carbon.device.mgt.core.dao.DeviceManagementDAOException;
import org.wso2.carbon.device.mgt.core.dao.DeviceManagementDAOFactory;
import org.wso2.carbon.device.mgt.core.dao.DeviceTypeDAO;
import org.wso2.carbon.device.mgt.core.dao.EnrollmentDAO;
+import org.wso2.carbon.device.mgt.core.device.details.mgt.DeviceDetailsMgtException;
+import org.wso2.carbon.device.mgt.core.device.details.mgt.DeviceInformationManager;
import org.wso2.carbon.device.mgt.core.device.details.mgt.dao.DeviceDetailsDAO;
import org.wso2.carbon.device.mgt.core.device.details.mgt.dao.DeviceDetailsMgtDAOException;
+import org.wso2.carbon.device.mgt.core.device.details.mgt.impl.DeviceInformationManagerImpl;
import org.wso2.carbon.device.mgt.core.dto.DeviceType;
import org.wso2.carbon.device.mgt.core.dto.DeviceTypeServiceIdentifier;
import org.wso2.carbon.device.mgt.core.internal.DeviceManagementDataHolder;
@@ -272,6 +275,18 @@ public class DeviceManagementProviderServiceImpl implements DeviceManagementProv
DeviceManagementDAOFactory.closeConnection();
}
+ if (device.getDeviceInfo() != null) {
+ DeviceInformationManager deviceInformationManager = new DeviceInformationManagerImpl();
+ try {
+ deviceInformationManager.addDeviceInfo(deviceIdentifier, device.getDeviceInfo());
+ } catch (DeviceDetailsMgtException e) {
+ String msg = "Error occurred while adding device info for the device " +
+ device.getDeviceIdentifier();
+ log.error(msg, e);
+ throw new DeviceManagementException(msg, e);
+ }
+ }
+
if (log.isDebugEnabled()) {
log.debug("An enrolment is successfully created with the id '" + enrolmentId + "' associated with " +
"the device identified by key '" + device.getDeviceIdentifier() + "', which belongs to " +
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/common/BaseDeviceManagementTest.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/common/BaseDeviceManagementTest.java
index 466d92becf..57ac66a1ea 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/common/BaseDeviceManagementTest.java
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/common/BaseDeviceManagementTest.java
@@ -21,10 +21,7 @@ package org.wso2.carbon.device.mgt.core.common;
import org.apache.axis2.AxisFault;
import org.apache.axis2.context.ConfigurationContext;
import org.apache.axis2.context.ConfigurationContextFactory;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.apache.tomcat.jdbc.pool.PoolProperties;
-import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeSuite;
import org.w3c.dom.Document;
@@ -59,14 +56,11 @@ import javax.xml.bind.Unmarshaller;
import java.io.File;
import java.io.InputStream;
import java.sql.Connection;
-import java.sql.PreparedStatement;
-import java.sql.SQLException;
import java.sql.Statement;
public abstract class BaseDeviceManagementTest {
private DataSource dataSource;
- private static final Log log = LogFactory.getLog(BaseDeviceManagementTest.class);
@BeforeSuite
public void setupDataSource() throws Exception {
@@ -77,7 +71,8 @@ public abstract class BaseDeviceManagementTest {
}
protected void initDataSource() throws Exception {
- this.dataSource = this.getDataSource(this.readDataSourceConfig());
+ this.dataSource = this.getDataSource(this.
+ readDataSourceConfig("src/test/resources/config/datasource/data-source-config.xml"));
DeviceManagementDAOFactory.init(dataSource);
GroupManagementDAOFactory.init(dataSource);
OperationManagementDAOFactory.init(dataSource);
@@ -116,7 +111,7 @@ public abstract class BaseDeviceManagementTest {
@BeforeClass
public abstract void init() throws Exception;
- private DataSource getDataSource(DataSourceConfig config) {
+ protected DataSource getDataSource(DataSourceConfig config) {
PoolProperties properties = new PoolProperties();
properties.setUrl(config.getUrl());
properties.setDriverClassName(config.getDriverClassName());
@@ -151,9 +146,9 @@ public abstract class BaseDeviceManagementTest {
PrivilegedCarbonContext.getThreadLocalCarbonContext().setTenantId(MultitenantConstants.SUPER_TENANT_ID);
}
- private DataSourceConfig readDataSourceConfig() throws DeviceManagementException {
+ protected DataSourceConfig readDataSourceConfig(String configLocation) throws DeviceManagementException {
try {
- File file = new File("src/test/resources/config/datasource/data-source-config.xml");
+ File file = new File(configLocation);
Document doc = DeviceManagerUtil.convertToDocument(file);
JAXBContext testDBContext = JAXBContext.newInstance(DataSourceConfig.class);
Unmarshaller unmarshaller = testDBContext.createUnmarshaller();
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/mock/MockConnection.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/mock/MockConnection.java
new file mode 100644
index 0000000000..f7a3e1bdf4
--- /dev/null
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/mock/MockConnection.java
@@ -0,0 +1,316 @@
+/*
+* Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+* WSO2 Inc. licenses this file to you under the Apache License,
+* Version 2.0 (the "License"); you may not use this file except
+* in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing,
+* software distributed under the License is distributed on an
+* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+* KIND, either express or implied. See the License for the
+* specific language governing permissions and limitations
+* under the License.
+*
+*/
+package org.wso2.carbon.device.mgt.core.mock;
+
+import java.sql.Array;
+import java.sql.Blob;
+import java.sql.CallableStatement;
+import java.sql.Clob;
+import java.sql.Connection;
+import java.sql.DatabaseMetaData;
+import java.sql.NClob;
+import java.sql.PreparedStatement;
+import java.sql.SQLClientInfoException;
+import java.sql.SQLException;
+import java.sql.SQLWarning;
+import java.sql.SQLXML;
+import java.sql.Savepoint;
+import java.sql.Statement;
+import java.sql.Struct;
+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 {
+ @Override
+ public Statement createStatement() throws SQLException {
+ return null;
+ }
+
+ @Override
+ public PreparedStatement prepareStatement(String sql) throws SQLException {
+ return null;
+ }
+
+ @Override
+ public CallableStatement prepareCall(String sql) throws SQLException {
+ return null;
+ }
+
+ @Override
+ public String nativeSQL(String sql) throws SQLException {
+ return null;
+ }
+
+ @Override
+ public void setAutoCommit(boolean autoCommit) throws SQLException {
+
+ }
+
+ @Override
+ public boolean getAutoCommit() throws SQLException {
+ return false;
+ }
+
+ @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 null;
+ }
+
+ @Override
+ public void setReadOnly(boolean readOnly) throws SQLException {
+
+ }
+
+ @Override
+ public boolean isReadOnly() throws SQLException {
+ return false;
+ }
+
+ @Override
+ public void setCatalog(String catalog) throws SQLException {
+
+ }
+
+ @Override
+ public String getCatalog() throws SQLException {
+ return null;
+ }
+
+ @Override
+ public void setTransactionIsolation(int level) throws SQLException {
+
+ }
+
+ @Override
+ public int getTransactionIsolation() throws SQLException {
+ return 0;
+ }
+
+ @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> getTypeMap() throws SQLException {
+ return null;
+ }
+
+ @Override
+ public void setTypeMap(Map> map) throws SQLException {
+
+ }
+
+ @Override
+ public void setHoldability(int holdability) throws SQLException {
+
+ }
+
+ @Override
+ public int getHoldability() throws SQLException {
+ return 0;
+ }
+
+ @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 null;
+ }
+
+ @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 void setClientInfo(Properties properties) throws SQLClientInfoException {
+
+ }
+
+ @Override
+ public String getClientInfo(String name) throws SQLException {
+ return null;
+ }
+
+ @Override
+ public Properties getClientInfo() throws SQLException {
+ return null;
+ }
+
+ @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 void setSchema(String schema) throws SQLException {
+
+ }
+
+ @Override
+ public String getSchema() throws SQLException {
+ return null;
+ }
+
+ @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 unwrap(Class iface) throws SQLException {
+ return null;
+ }
+
+ @Override
+ public boolean isWrapperFor(Class> iface) throws SQLException {
+ return false;
+ }
+}
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/mock/MockDataSource.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/mock/MockDataSource.java
new file mode 100644
index 0000000000..e9231bbe42
--- /dev/null
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/mock/MockDataSource.java
@@ -0,0 +1,99 @@
+/*
+* Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+* WSO2 Inc. licenses this file to you under the Apache License,
+* Version 2.0 (the "License"); you may not use this file except
+* in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing,
+* software distributed under the License is distributed on an
+* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+* KIND, either express or implied. See the License for the
+* specific language governing permissions and limitations
+* under the License.
+*
+*/
+package org.wso2.carbon.device.mgt.core.mock;
+
+import java.io.PrintWriter;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.sql.SQLFeatureNotSupportedException;
+import java.util.logging.Logger;
+import javax.sql.DataSource;
+
+/**
+ * This is the mock data source implementation that will be used in the test cases.
+ *
+ */
+public class MockDataSource implements DataSource {
+ private boolean throwException = false;
+ private Connection connection;
+
+ @Override
+ public Connection getConnection() throws SQLException {
+ if (throwException) {
+ throw new SQLException("Cannot created test connection.");
+ } else {
+ if (connection != null) {
+ return connection;
+ }
+ return new MockConnection();
+ }
+ }
+
+ @Override
+ public Connection getConnection(String username, String password) throws SQLException {
+ return null;
+ }
+
+ @Override
+ public T unwrap(Class 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 void setLoginTimeout(int seconds) throws SQLException {
+
+ }
+
+ @Override
+ public int getLoginTimeout() throws SQLException {
+ return 0;
+ }
+
+ @Override
+ public Logger getParentLogger() throws SQLFeatureNotSupportedException {
+ return null;
+ }
+
+ public void setThrowException(boolean throwException) {
+ this.throwException = throwException;
+ }
+
+ public void reset() {
+ this.throwException = false;
+ this.connection = null;
+ }
+
+ private void setConnection(Connection connection) {
+ this.connection = connection;
+ }
+}
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/mock/MockJDBCDriver.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/mock/MockJDBCDriver.java
new file mode 100644
index 0000000000..1ce52f5544
--- /dev/null
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/mock/MockJDBCDriver.java
@@ -0,0 +1,69 @@
+/*
+* Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+* WSO2 Inc. licenses this file to you under the Apache License,
+* Version 2.0 (the "License"); you may not use this file except
+* in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing,
+* software distributed under the License is distributed on an
+* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+* KIND, either express or implied. See the License for the
+* specific language governing permissions and limitations
+* under the License.
+*
+*/
+package org.wso2.carbon.device.mgt.core.mock;
+
+import java.sql.Connection;
+import java.sql.Driver;
+import java.sql.DriverPropertyInfo;
+import java.sql.SQLException;
+import java.sql.SQLFeatureNotSupportedException;
+import java.util.Properties;
+import java.util.logging.Logger;
+
+/**
+ * This is the mock JDBC driver which is used in the testcases to mock other database operations.
+ */
+public class MockJDBCDriver implements Driver {
+
+ @Override
+ public Connection connect(String url, Properties info) throws SQLException {
+ return null;
+ }
+
+ @Override
+ public boolean acceptsURL(String url) throws SQLException {
+ return true;
+ }
+
+ @Override
+ public DriverPropertyInfo[] getPropertyInfo(String url, Properties info) throws SQLException {
+ return new DriverPropertyInfo[0];
+ }
+
+ @Override
+ public int getMajorVersion() {
+ return 0;
+ }
+
+ @Override
+ public int getMinorVersion() {
+ return 0;
+ }
+
+ @Override
+ public boolean jdbcCompliant() {
+ return true;
+ }
+
+ @Override
+ public Logger getParentLogger() throws SQLFeatureNotSupportedException {
+ return null;
+ }
+
+
+}
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/mock/MockStatement.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/mock/MockStatement.java
new file mode 100644
index 0000000000..f717f67660
--- /dev/null
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/mock/MockStatement.java
@@ -0,0 +1,250 @@
+/*
+* Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+* WSO2 Inc. licenses this file to you under the Apache License,
+* Version 2.0 (the "License"); you may not use this file except
+* in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing,
+* software distributed under the License is distributed on an
+* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+* KIND, either express or implied. See the License for the
+* specific language governing permissions and limitations
+* under the License.
+*
+*/
+package org.wso2.carbon.device.mgt.core.mock;
+
+import java.sql.Connection;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.SQLWarning;
+import java.sql.Statement;
+
+/**
+ * This is the mock statement for the testcases.
+ */
+public class MockStatement implements Statement {
+
+ @Override
+ public ResultSet executeQuery(String sql) throws SQLException {
+ return null;
+ }
+
+ @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 null;
+ }
+
+ @Override
+ public int getUpdateCount() throws SQLException {
+ return 0;
+ }
+
+ @Override
+ public boolean getMoreResults() throws SQLException {
+ return false;
+ }
+
+ @Override
+ public void setFetchDirection(int direction) throws SQLException {
+
+ }
+
+ @Override
+ public int getFetchDirection() throws SQLException {
+ return 0;
+ }
+
+ @Override
+ public void setFetchSize(int rows) throws SQLException {
+
+ }
+
+ @Override
+ public int getFetchSize() throws SQLException {
+ return 0;
+ }
+
+ @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 null;
+ }
+
+ @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 void setPoolable(boolean poolable) throws SQLException {
+
+ }
+
+ @Override
+ public boolean isPoolable() throws SQLException {
+ return false;
+ }
+
+ @Override
+ public void closeOnCompletion() throws SQLException {
+
+ }
+
+ @Override
+ public boolean isCloseOnCompletion() throws SQLException {
+ return false;
+ }
+
+ @Override
+ public T unwrap(Class iface) throws SQLException {
+ return null;
+ }
+
+ @Override
+ public boolean isWrapperFor(Class> iface) throws SQLException {
+ return false;
+ }
+}
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/operation/OperationManagementNegativeDBOperationTest.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/operation/OperationManagementNegativeDBOperationTest.java
new file mode 100644
index 0000000000..981fbd5c3b
--- /dev/null
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/operation/OperationManagementNegativeDBOperationTest.java
@@ -0,0 +1,228 @@
+/*
+* Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+* WSO2 Inc. licenses this file to you under the Apache License,
+* Version 2.0 (the "License"); you may not use this file except
+* in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing,
+* software distributed under the License is distributed on an
+* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+* KIND, either express or implied. See the License for the
+* specific language governing permissions and limitations
+* under the License.
+*
+*/
+package org.wso2.carbon.device.mgt.core.operation;
+
+import org.testng.annotations.AfterClass;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
+import org.wso2.carbon.context.PrivilegedCarbonContext;
+import org.wso2.carbon.device.mgt.common.Device;
+import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
+import org.wso2.carbon.device.mgt.common.DeviceManagementException;
+import org.wso2.carbon.device.mgt.common.PaginationRequest;
+import org.wso2.carbon.device.mgt.common.operation.mgt.Operation;
+import org.wso2.carbon.device.mgt.common.operation.mgt.OperationManagementException;
+import org.wso2.carbon.device.mgt.common.operation.mgt.OperationManager;
+import org.wso2.carbon.device.mgt.common.push.notification.NotificationStrategy;
+import org.wso2.carbon.device.mgt.core.TestDeviceManagementService;
+import org.wso2.carbon.device.mgt.core.common.BaseDeviceManagementTest;
+import org.wso2.carbon.device.mgt.core.common.TestDataHolder;
+import org.wso2.carbon.device.mgt.core.internal.DeviceManagementDataHolder;
+import org.wso2.carbon.device.mgt.core.mock.MockDataSource;
+import org.wso2.carbon.device.mgt.core.operation.mgt.OperationManagerImpl;
+import org.wso2.carbon.device.mgt.core.operation.mgt.dao.OperationManagementDAOFactory;
+import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService;
+import org.wso2.carbon.utils.multitenancy.MultitenantConstants;
+
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.List;
+import javax.sql.DataSource;
+
+/**
+ * Negative testcases for {@link OperationManagerImpl}
+ * regarding the database connectivity.
+ */
+public class OperationManagementNegativeDBOperationTest extends BaseDeviceManagementTest {
+
+ private static final String DEVICE_TYPE = "NEGDB_OP_TEST_TYPE";
+ private static final String DEVICE_ID_PREFIX = "NEGDB_OP-TEST-DEVICE-ID-";
+ private static final int NO_OF_DEVICES = 5;
+ private static final String ADMIN_USER = "admin";
+
+ private List deviceIds = new ArrayList<>();
+ private OperationManager operationMgtService;
+ private MockDataSource dataSource;
+
+
+ @BeforeClass
+ @Override
+ public void init() throws Exception {
+ DataSource datasource = this.getDataSource(this.
+ readDataSourceConfig("src/test/resources/config/datasource/mock-data-source-config.xml"));
+ OperationManagementDAOFactory.init(datasource);
+ for (int i = 0; i < NO_OF_DEVICES; i++) {
+ deviceIds.add(new DeviceIdentifier(DEVICE_ID_PREFIX + i, DEVICE_TYPE));
+ }
+ List devices = TestDataHolder.generateDummyDeviceData(this.deviceIds);
+ DeviceManagementProviderService deviceMgtService = DeviceManagementDataHolder.getInstance().
+ getDeviceManagementProvider();
+ deviceMgtService.registerDeviceType(new TestDeviceManagementService(DEVICE_TYPE,
+ MultitenantConstants.SUPER_TENANT_DOMAIN_NAME));
+ for (Device device : devices) {
+ deviceMgtService.enrollDevice(device);
+ }
+ List returnedDevices = deviceMgtService.getAllDevices(DEVICE_TYPE);
+ for (Device device : returnedDevices) {
+ if (!device.getDeviceIdentifier().startsWith(DEVICE_ID_PREFIX)) {
+ throw new Exception("Incorrect device with ID - " + device.getDeviceIdentifier() + " returned!");
+ }
+ }
+ NotificationStrategy notificationStrategy = new TestNotificationStrategy();
+ this.operationMgtService = new OperationManagerImpl(DEVICE_TYPE, notificationStrategy);
+ this.setMockDataSource();
+ }
+
+ @Test(description = "Get operation by device id", expectedExceptions = OperationManagementException.class)
+ public void getOperations() throws OperationManagementException {
+ this.dataSource.setThrowException(true);
+ try {
+ this.operationMgtService.getOperations(this.deviceIds.get(0));
+ } finally {
+ this.dataSource.reset();
+ }
+ }
+
+ @Test(description = "Get operations with paginated request",
+ expectedExceptions = OperationManagementException.class)
+ public void getOperationsPaginatedRequest() throws OperationManagementException {
+ PrivilegedCarbonContext.startTenantFlow();
+ PrivilegedCarbonContext.getThreadLocalCarbonContext().setTenantId(MultitenantConstants.SUPER_TENANT_ID, true);
+ PrivilegedCarbonContext.getThreadLocalCarbonContext().setUsername(ADMIN_USER);
+ PaginationRequest request = new PaginationRequest(1, 2);
+ request.setDeviceType(DEVICE_TYPE);
+ request.setOwner(ADMIN_USER);
+ this.dataSource.setThrowException(true);
+ try {
+ this.operationMgtService.getOperations(this.deviceIds.get(0), request);
+ } finally {
+ PrivilegedCarbonContext.endTenantFlow();
+ this.dataSource.reset();
+ }
+ }
+
+ @Test(description = "Get pending operations", expectedExceptions = OperationManagementException.class)
+ public void getPendingOperations() throws OperationManagementException {
+ this.dataSource.setThrowException(true);
+ try {
+ this.operationMgtService.getPendingOperations(this.deviceIds.get(0));
+ } finally {
+ this.dataSource.reset();
+ }
+ }
+
+ @Test(description = "Get next pending operations", expectedExceptions = OperationManagementException.class)
+ public void getNextPendingOperations() throws OperationManagementException {
+ this.dataSource.setThrowException(true);
+ try {
+ this.operationMgtService.getNextPendingOperation(this.deviceIds.get(0));
+ } finally {
+ this.dataSource.reset();
+ }
+ }
+
+ @Test(description = "Get operation by device and operation id",
+ expectedExceptions = OperationManagementException.class)
+ public void getOperationByDeviceAndOperationId() throws OperationManagementException {
+ this.dataSource.setThrowException(true);
+ try {
+ this.operationMgtService.getOperationByDeviceAndOperationId(this.deviceIds.get(0), 1);
+ } finally {
+ this.dataSource.reset();
+ }
+ }
+
+ @Test(description = "Get operation by device and status",
+ expectedExceptions = OperationManagementException.class)
+ public void getOperationByDeviceAndStatus() throws OperationManagementException, DeviceManagementException {
+ this.dataSource.setThrowException(true);
+ try {
+ this.operationMgtService.getOperationsByDeviceAndStatus(this.deviceIds.get(0), Operation.Status.PENDING);
+ } finally {
+ this.dataSource.reset();
+ }
+ }
+
+ @Test(description = "Get operation by operation id",
+ expectedExceptions = OperationManagementException.class)
+ public void getOperationByOperationId() throws OperationManagementException, DeviceManagementException {
+ this.dataSource.setThrowException(true);
+ try {
+ this.operationMgtService.getOperation(1);
+ } finally {
+ this.dataSource.reset();
+ }
+ }
+
+ @Test(description = "Get operation by activity id",
+ expectedExceptions = OperationManagementException.class)
+ public void getOperationByActivityId() throws OperationManagementException, DeviceManagementException {
+ this.dataSource.setThrowException(true);
+ try {
+ this.operationMgtService.getOperationByActivityId("ACTIVITY_1");
+ } finally {
+ this.dataSource.reset();
+ }
+ }
+
+ @Test(description = "Get operation by activity id and device id",
+ expectedExceptions = OperationManagementException.class)
+ public void getOperationByActivityAndDeviceID() throws OperationManagementException, DeviceManagementException {
+ this.dataSource.setThrowException(true);
+ try {
+ this.operationMgtService.getOperationByActivityIdAndDevice("ACTIVITY_1", deviceIds.get(0));
+ } finally {
+ this.dataSource.reset();
+ }
+ }
+
+ @Test(description = "Get activities updated after some timestamp",
+ expectedExceptions = OperationManagementException.class)
+ public void getActivitiesUpdatedAfter() throws OperationManagementException, DeviceManagementException {
+ this.dataSource.setThrowException(true);
+ try {
+ this.operationMgtService.getActivitiesUpdatedAfter(System.currentTimeMillis() / 1000, 10, 0);
+ } finally {
+ this.dataSource.reset();
+ }
+ }
+
+ @Test(description = "Get activities count updated after some timestamp",
+ expectedExceptions = OperationManagementException.class)
+ public void getActivityCountUpdatedAfter() throws OperationManagementException, DeviceManagementException {
+ this.dataSource.setThrowException(true);
+ try {
+ this.operationMgtService.getActivityCountUpdatedAfter(System.currentTimeMillis() / 1000);
+ } finally {
+ this.dataSource.reset();
+ }
+ }
+
+ private void setMockDataSource() throws NoSuchFieldException, IllegalAccessException {
+ Field datasource = OperationManagementDAOFactory.class.getDeclaredField("dataSource");
+ datasource.setAccessible(true);
+ this.dataSource = new MockDataSource();
+ datasource.set(datasource, this.dataSource);
+ }
+
+ @AfterClass
+ public void resetDatabase() throws DeviceManagementException {
+ OperationManagementDAOFactory.init(this.getDataSource(this.
+ readDataSourceConfig("src/test/resources/config/datasource/data-source-config.xml")));
+ }
+}
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/operation/OperationManagementNoDBSchemaTests.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/operation/OperationManagementNoDBSchemaTests.java
new file mode 100644
index 0000000000..3292b4960e
--- /dev/null
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/operation/OperationManagementNoDBSchemaTests.java
@@ -0,0 +1,196 @@
+/*
+* Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+* WSO2 Inc. licenses this file to you under the Apache License,
+* Version 2.0 (the "License"); you may not use this file except
+* in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing,
+* software distributed under the License is distributed on an
+* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+* KIND, either express or implied. See the License for the
+* specific language governing permissions and limitations
+* under the License.
+*
+*/
+
+package org.wso2.carbon.device.mgt.core.operation;
+
+import org.testng.annotations.AfterClass;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
+import org.wso2.carbon.context.PrivilegedCarbonContext;
+import org.wso2.carbon.device.mgt.common.Device;
+import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
+import org.wso2.carbon.device.mgt.common.DeviceManagementException;
+import org.wso2.carbon.device.mgt.common.InvalidDeviceException;
+import org.wso2.carbon.device.mgt.common.PaginationRequest;
+import org.wso2.carbon.device.mgt.common.operation.mgt.Operation;
+import org.wso2.carbon.device.mgt.common.operation.mgt.OperationManagementException;
+import org.wso2.carbon.device.mgt.common.operation.mgt.OperationManager;
+import org.wso2.carbon.device.mgt.common.push.notification.NotificationStrategy;
+import org.wso2.carbon.device.mgt.core.DeviceManagementConstants;
+import org.wso2.carbon.device.mgt.core.TestDeviceManagementService;
+import org.wso2.carbon.device.mgt.core.common.BaseDeviceManagementTest;
+import org.wso2.carbon.device.mgt.core.common.TestDataHolder;
+import org.wso2.carbon.device.mgt.core.internal.DeviceManagementDataHolder;
+import org.wso2.carbon.device.mgt.core.operation.mgt.CommandOperation;
+import org.wso2.carbon.device.mgt.core.operation.mgt.OperationManagerImpl;
+import org.wso2.carbon.device.mgt.core.operation.mgt.dao.OperationManagementDAOFactory;
+import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService;
+import org.wso2.carbon.utils.multitenancy.MultitenantConstants;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.sql.DataSource;
+
+/**
+ * This is the testcase which covers the methods from {@link OperationManager}
+ */
+public class OperationManagementNoDBSchemaTests extends BaseDeviceManagementTest {
+
+ private static final String DEVICE_TYPE = "NEG_OP_TEST_TYPE";
+ private static final String DEVICE_ID_PREFIX = "NEG_OP-TEST-DEVICE-ID-";
+ private static final String COMMAND_OPERATON_CODE = "COMMAND-TEST";
+ private static final int NO_OF_DEVICES = 5;
+ private static final String ADMIN_USER = "admin";
+
+ private List deviceIds = new ArrayList<>();
+ private OperationManager operationMgtService;
+
+ @BeforeClass
+ public void init() throws Exception {
+ DataSource datasource = this.getDataSource(this.
+ readDataSourceConfig("src/test/resources/config/datasource/no-table-data-source-config.xml"));
+ OperationManagementDAOFactory.init(datasource);
+ for (int i = 0; i < NO_OF_DEVICES; i++) {
+ deviceIds.add(new DeviceIdentifier(DEVICE_ID_PREFIX + i, DEVICE_TYPE));
+ }
+ List devices = TestDataHolder.generateDummyDeviceData(this.deviceIds);
+ DeviceManagementProviderService deviceMgtService = DeviceManagementDataHolder.getInstance().
+ getDeviceManagementProvider();
+ deviceMgtService.registerDeviceType(new TestDeviceManagementService(DEVICE_TYPE,
+ MultitenantConstants.SUPER_TENANT_DOMAIN_NAME));
+ for (Device device : devices) {
+ deviceMgtService.enrollDevice(device);
+ }
+ List returnedDevices = deviceMgtService.getAllDevices(DEVICE_TYPE);
+ for (Device device : returnedDevices) {
+ if (!device.getDeviceIdentifier().startsWith(DEVICE_ID_PREFIX)) {
+ throw new Exception("Incorrect device with ID - " + device.getDeviceIdentifier() + " returned!");
+ }
+ }
+ NotificationStrategy notificationStrategy = new TestNotificationStrategy();
+ this.operationMgtService = new OperationManagerImpl(DEVICE_TYPE, notificationStrategy);
+ }
+
+ @Test(description = "add operation", expectedExceptions = OperationManagementException.class)
+ public void addCommandOperation() throws DeviceManagementException, OperationManagementException,
+ InvalidDeviceException {
+ this.operationMgtService.addOperation(
+ OperationManagementTests.getOperation(new CommandOperation(),
+ Operation.Type.COMMAND, COMMAND_OPERATON_CODE),
+ this.deviceIds);
+ }
+
+ @Test(description = "Get operations", expectedExceptions = OperationManagementException.class)
+ public void getOperations() throws DeviceManagementException, OperationManagementException,
+ InvalidDeviceException {
+ for (DeviceIdentifier deviceIdentifier : deviceIds) {
+ this.operationMgtService.getOperations(deviceIdentifier);
+ }
+ }
+
+
+ @Test(description = "Get Pending operations", expectedExceptions = OperationManagementException.class)
+ public void getPendingOperations() throws DeviceManagementException, OperationManagementException,
+ InvalidDeviceException {
+ for (DeviceIdentifier deviceIdentifier : deviceIds) {
+ this.operationMgtService.getPendingOperations(deviceIdentifier);
+ }
+ }
+
+ @Test(description = "Get paginated request", expectedExceptions = OperationManagementException.class)
+ public void getPaginatedRequestAsAdmin() throws OperationManagementException {
+ PrivilegedCarbonContext.startTenantFlow();
+ PrivilegedCarbonContext.getThreadLocalCarbonContext().setTenantId(MultitenantConstants.SUPER_TENANT_ID, true);
+ PrivilegedCarbonContext.getThreadLocalCarbonContext().setUsername(ADMIN_USER);
+ PaginationRequest request = new PaginationRequest(1, 2);
+ request.setDeviceType(DEVICE_TYPE);
+ request.setOwner(ADMIN_USER);
+ for (DeviceIdentifier deviceIdentifier : deviceIds) {
+ this.operationMgtService.getOperations(deviceIdentifier, request);
+ }
+ PrivilegedCarbonContext.endTenantFlow();
+ }
+
+ @Test(description = "Update operation", expectedExceptions = OperationManagementException.class)
+ public void updateOperation() throws OperationManagementException {
+ DeviceIdentifier deviceIdentifier = this.deviceIds.get(0);
+ Operation operation = OperationManagementTests.getOperation(new CommandOperation(), Operation.Type.COMMAND,
+ COMMAND_OPERATON_CODE);
+ operation.setStatus(Operation.Status.COMPLETED);
+ operation.setOperationResponse("The operation is successfully completed");
+ this.operationMgtService.updateOperation(deviceIdentifier, operation);
+ }
+
+ @Test(description = "Get next pending operation", expectedExceptions = OperationManagementException.class)
+ public void getNextPendingOperation() throws OperationManagementException {
+ DeviceIdentifier deviceIdentifier = this.deviceIds.get(0);
+ this.operationMgtService.getNextPendingOperation(deviceIdentifier);
+ }
+
+
+ @Test(description = "get operation by device and operation id",
+ expectedExceptions = OperationManagementException.class)
+ public void getOperationByDeviceAndOperationId() throws OperationManagementException {
+ DeviceIdentifier deviceIdentifier = this.deviceIds.get(0);
+ this.operationMgtService.getOperationByDeviceAndOperationId(deviceIdentifier, 1);
+ }
+
+ @Test(description = "Get operation by device and status",
+ expectedExceptions = OperationManagementException.class)
+ public void getOperationsByDeviceAndStatus() throws OperationManagementException, DeviceManagementException {
+ DeviceIdentifier deviceIdentifier = this.deviceIds.get(0);
+ this.operationMgtService.getOperationsByDeviceAndStatus(deviceIdentifier,
+ Operation.Status.PENDING);
+ }
+
+ @Test(description = "Get operation by operation id", expectedExceptions = OperationManagementException.class)
+ public void getOperation() throws OperationManagementException, DeviceManagementException {
+ this.operationMgtService.getOperation(1);
+ }
+
+ @Test(description = "Get operation activity", expectedExceptions = OperationManagementException.class)
+ public void getOperationActivity() throws OperationManagementException {
+ this.operationMgtService.getOperationByActivityId
+ (DeviceManagementConstants.OperationAttributes.ACTIVITY + "1");
+ }
+
+ @Test(description = "Get operation by activity id and device",
+ expectedExceptions = OperationManagementException.class)
+ public void getOperationByActivityIdAndDevice() throws OperationManagementException {
+ this.operationMgtService.getOperationByActivityIdAndDevice(
+ DeviceManagementConstants.OperationAttributes.ACTIVITY + "1", this.deviceIds.get(0));
+ }
+
+ @Test(description = "Get activities updated after some time",
+ expectedExceptions = OperationManagementException.class)
+ public void getOperationUpdatedAfterWithLimitAndOffset() throws OperationManagementException {
+ this.operationMgtService.getActivitiesUpdatedAfter(System.currentTimeMillis() / 1000, 10, 0);
+ }
+
+ @Test(description = "Get activity count updated after",
+ expectedExceptions = OperationManagementException.class)
+ public void getActivityCountUpdatedAfter() throws OperationManagementException {
+ this.operationMgtService.getActivityCountUpdatedAfter(System.currentTimeMillis() / 1000);
+ }
+
+ @AfterClass
+ public void resetDatabase() throws DeviceManagementException {
+ OperationManagementDAOFactory.init(this.getDataSource(this.
+ readDataSourceConfig("src/test/resources/config/datasource/data-source-config.xml")));
+ }
+}
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/search/ProcessorImplTest.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/search/ProcessorImplTest.java
new file mode 100644
index 0000000000..4e5f26a548
--- /dev/null
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/search/ProcessorImplTest.java
@@ -0,0 +1,174 @@
+/*
+ * Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * WSO2 Inc. licenses this file to you under the Apache License,
+ * Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.wso2.carbon.device.mgt.core.search;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.powermock.api.mockito.PowerMockito;
+import org.testng.Assert;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
+import org.wso2.carbon.device.mgt.common.Device;
+import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
+import org.wso2.carbon.device.mgt.common.authorization.DeviceAccessAuthorizationService;
+import org.wso2.carbon.device.mgt.common.search.Condition;
+import org.wso2.carbon.device.mgt.common.search.SearchContext;
+import org.wso2.carbon.device.mgt.core.TestDeviceManagementService;
+import org.wso2.carbon.device.mgt.core.common.BaseDeviceManagementTest;
+import org.wso2.carbon.device.mgt.core.common.TestDataHolder;
+import org.wso2.carbon.device.mgt.core.dao.DeviceManagementDAOFactory;
+import org.wso2.carbon.device.mgt.core.internal.DeviceManagementDataHolder;
+import org.wso2.carbon.device.mgt.core.internal.DeviceManagementServiceComponent;
+import org.wso2.carbon.device.mgt.core.search.mgt.InvalidOperatorException;
+import org.wso2.carbon.device.mgt.core.search.mgt.SearchMgtException;
+import org.wso2.carbon.device.mgt.core.search.mgt.impl.ProcessorImpl;
+import org.wso2.carbon.device.mgt.core.search.util.ChangeEnumValues;
+import org.wso2.carbon.device.mgt.core.search.util.Utils;
+import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService;
+import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderServiceImpl;
+import org.wso2.carbon.utils.multitenancy.MultitenantConstants;
+
+import javax.sql.DataSource;
+import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * This class holds unit test cases for org.wso2.carbon.device.mgt.core.search.mgt.impl.ProcessorImpl
+ * */
+public class ProcessorImplTest extends BaseDeviceManagementTest{
+
+ private DeviceAccessAuthorizationService deviceAccessAuthorizationService;
+ private static final Log log = LogFactory.getLog(SearchManagementServiceTest.class);
+ private static List deviceIdentifiers = new ArrayList<>();
+ private static final String DEVICE_ID_PREFIX = "SEARCH-DEVICE-ID-";
+ private static final String DEVICE_TYPE = "SEARCH_TYPE";
+
+ @BeforeClass
+ public void init() throws Exception {
+ deviceAccessAuthorizationService = DeviceManagementDataHolder.getInstance()
+ .getDeviceAccessAuthorizationService();
+
+ for (int i = 0; i < 5; i++) {
+ deviceIdentifiers.add(new DeviceIdentifier(DEVICE_ID_PREFIX + i, DEVICE_TYPE));
+ }
+ DeviceManagementProviderService deviceMgtService = new DeviceManagementProviderServiceImpl();
+ DeviceManagementServiceComponent.notifyStartupListeners();
+ DeviceManagementDataHolder.getInstance().setDeviceManagementProvider(deviceMgtService);
+ deviceMgtService.registerDeviceType(new TestDeviceManagementService(DEVICE_TYPE,
+ MultitenantConstants.SUPER_TENANT_DOMAIN_NAME));
+
+ List devices = TestDataHolder.generateDummyDeviceData(deviceIdentifiers);
+ for (Device device : devices) {
+ device.setDeviceInfo(Utils.getDeviceInfo());
+ deviceMgtService.enrollDevice(device);
+ }
+ List returnedDevices = deviceMgtService.getAllDevices(DEVICE_TYPE, true);
+ for (Device device : returnedDevices) {
+ if (!device.getDeviceIdentifier().startsWith(DEVICE_ID_PREFIX)) {
+ throw new Exception("Incorrect device with ID - " + device.getDeviceIdentifier() + " returned!");
+ }
+ }
+ }
+
+ @Test(description = "Test the Search Processor")
+ public void testWithNoDeviceAccessAuthorization() throws Exception {
+ SearchContext context = new SearchContext();
+ List conditions = new ArrayList<>();
+
+ Condition cond = new Condition();
+ cond.setKey("batteryLevel");
+ cond.setOperator("=");
+ cond.setValue("40");
+ cond.setState(Condition.State.AND);
+ conditions.add(cond);
+
+ context.setConditions(conditions);
+
+ ProcessorImpl processor = new ProcessorImpl();
+ Field deviceAccessAuthorizationServiceField = ProcessorImpl.class.getDeclaredField
+ ("deviceAccessAuthorizationService");
+ deviceAccessAuthorizationServiceField.setAccessible(true);
+ deviceAccessAuthorizationServiceField.set(processor, null);
+
+ List searchedDevices = processor.execute(context);
+
+ Assert.assertEquals(0, searchedDevices.size());
+ }
+
+
+ @Test(description = "Test for invalid state")
+ public void testInvalidState() throws SearchMgtException {
+ SearchContext context = new SearchContext();
+ List conditions = new ArrayList<>();
+
+ ChangeEnumValues.addEnum(Condition.State.class, "BLA");
+
+ Condition.State state = Condition.State.valueOf("BLA");
+
+ Condition cond = new Condition();
+ cond.setKey("batteryLevel");
+ cond.setOperator("=");
+ cond.setValue("40");
+ cond.setState(Condition.State.AND);
+ conditions.add(cond);
+
+ Condition cond2 = new Condition();
+ cond2.setKey("LOCATION");
+ cond2.setOperator("=");
+ cond2.setValue("Karandeniya");
+ cond2.setState(Condition.State.AND);
+ conditions.add(cond2);
+
+ Condition cond3 = new Condition();
+ cond3.setKey("batteryLevel");
+ cond3.setOperator("=");
+ cond3.setValue("23.0");
+ cond3.setState(state);
+ conditions.add(cond3);
+
+ context.setConditions(conditions);
+
+ ProcessorImpl processor = new ProcessorImpl();
+ try {
+ processor.execute(context);
+ } catch (SearchMgtException e) {
+ if (!(e.getCause() instanceof InvalidOperatorException)) {
+ throw e;
+ }
+ }
+ }
+
+ @Test(description = "Test when Device Access Authorization is null", expectedExceptions = {IllegalStateException
+ .class}, dependsOnMethods = {"testWithNoDeviceAccessAuthorization", "testInvalidState"})
+ public void testProcessorInitializationError() throws ClassNotFoundException, NoSuchMethodException,
+ NoSuchFieldException,
+ IllegalAccessException, SearchMgtException {
+ DeviceManagementDataHolder deviceManagementDataHolder = DeviceManagementDataHolder.getInstance();
+ Field field = DeviceManagementDataHolder.class.getDeclaredField("deviceAccessAuthorizationService");
+ field.setAccessible(true);
+ field.set(deviceManagementDataHolder, null);
+
+ ProcessorImpl processor = new ProcessorImpl();
+ processor.execute(null);
+ }
+}
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/search/SearchDevice.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/search/SearchDevice.java
deleted file mode 100644
index d624bfa4e6..0000000000
--- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/search/SearchDevice.java
+++ /dev/null
@@ -1,183 +0,0 @@
-/*
- * Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
- *
- * WSO2 Inc. licenses this file to you under the Apache License,
- * Version 2.0 (the "License"); you may not use this file except
- * in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-
-package org.wso2.carbon.device.mgt.core.search;
-
-import com.google.gson.Gson;
-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.device.mgt.common.Device;
-import org.wso2.carbon.device.mgt.common.search.Condition;
-import org.wso2.carbon.device.mgt.common.search.SearchContext;
-import org.wso2.carbon.device.mgt.core.common.BaseDeviceManagementTest;
-import org.wso2.carbon.device.mgt.core.internal.DeviceManagementDataHolder;
-import org.wso2.carbon.device.mgt.core.search.mgt.SearchManagerService;
-import org.wso2.carbon.device.mgt.core.search.mgt.impl.SearchManagerServiceImpl;
-import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService;
-import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderServiceImpl;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class SearchDevice extends BaseDeviceManagementTest {
-
- private static final Log log = LogFactory.getLog(SearchDevice.class);
-
- @BeforeClass
- @Override
- public void init() throws Exception {
- DeviceManagementProviderService deviceManagementProviderService = new DeviceManagementProviderServiceImpl();
- DeviceManagementDataHolder.getInstance().setDeviceManagementProvider(deviceManagementProviderService);
- }
-
- @Test
- public void searchDeviceDetails() throws Exception {
-
- SearchContext context = new SearchContext();
- List conditions = new ArrayList<>();
-
-
- Condition cond = new Condition();
- cond.setKey("BATTERY_VOLTAGE");
- cond.setOperator("=");
- cond.setValue("40");
- cond.setState(Condition.State.AND);
- conditions.add(cond);
-
-// Condition cond2 = new Condition();
-// cond2.setKey("CPU_USAGE");
-// cond2.setOperator(">");
-// cond2.setValue("40");
-// cond2.setState(Condition.State.OR);
-// conditions.add(cond2);
-//
-// Condition cond3 = new Condition();
-// cond3.setKey("LOCATION");
-// cond3.setOperator("=");
-// cond3.setValue("Colombo");
-// cond3.setState(Condition.State.AND);
-// conditions.add(cond3);
-
- context.setConditions(conditions);
-
- SearchManagerService service = new SearchManagerServiceImpl();
- List devices = service.search(context);
-
- Gson gson = new Gson();
- String bbbb = gson.toJson(devices);
- log.info(bbbb);
-
-
- for (Device device : devices) {
- log.debug(device.getDescription());
- log.debug(device.getDeviceIdentifier());
- }
-
- }
-
- @Test
- public void doValidLocationSearch() throws Exception {
-
- SearchContext context = new SearchContext();
- List conditions = new ArrayList<>();
-
- Condition cond = new Condition();
- cond.setKey("LOCATION");
- cond.setOperator("=");
- cond.setValue("Karan");
- cond.setState(Condition.State.AND);
- conditions.add(cond);
-
- context.setConditions(conditions);
-
- SearchManagerService service = new SearchManagerServiceImpl();
- List devices = service.search(context);
-
- Gson gson = new Gson();
- String bbbb = gson.toJson(devices);
- log.info("Valid Search " + bbbb);
-
-
- for (Device device : devices) {
- log.debug(device.getDescription());
- log.debug(device.getDeviceIdentifier());
- }
- }
-
- @Test
- public void doInvalidLocationSearch() throws Exception {
-
- SearchContext context = new SearchContext();
- List conditions = new ArrayList<>();
-
- Condition cond = new Condition();
- cond.setKey("LOCATION");
- cond.setOperator("=");
- cond.setValue("Colombo");
- cond.setState(Condition.State.AND);
- conditions.add(cond);
-
- context.setConditions(conditions);
-
- SearchManagerService service = new SearchManagerServiceImpl();
- List devices = service.search(context);
-
- Gson gson = new Gson();
- String bbbb = gson.toJson(devices);
- log.info("Invalid Search " + bbbb);
-
-
- for (Device device : devices) {
- log.debug(device.getDescription());
- log.debug(device.getDeviceIdentifier());
- }
- }
-
- @Test
- public void doStringSearch() throws Exception {
-
- SearchContext context = new SearchContext();
- List conditions = new ArrayList<>();
-
- Condition cond = new Condition();
- cond.setKey("deviceModel");
- cond.setOperator("=");
- cond.setValue("SM-T520");
- cond.setState(Condition.State.AND);
- conditions.add(cond);
-
- context.setConditions(conditions);
-
- SearchManagerService service = new SearchManagerServiceImpl();
- List devices = service.search(context);
-
- Gson gson = new Gson();
- String bbbb = gson.toJson(devices);
- log.info("Invalid Search " + bbbb);
-
-
- for (Device device : devices) {
- log.debug(device.getDescription());
- log.debug(device.getDeviceIdentifier());
- }
- }
-}
-
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/search/SearchManagementServiceTest.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/search/SearchManagementServiceTest.java
new file mode 100644
index 0000000000..9e13782945
--- /dev/null
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/search/SearchManagementServiceTest.java
@@ -0,0 +1,324 @@
+/*
+ * Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * WSO2 Inc. licenses this file to you under the Apache License,
+ * Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.wso2.carbon.device.mgt.core.search;
+
+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.device.mgt.common.Device;
+import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
+import org.wso2.carbon.device.mgt.common.search.Condition;
+import org.wso2.carbon.device.mgt.common.search.SearchContext;
+import org.wso2.carbon.device.mgt.core.TestDeviceManagementService;
+import org.wso2.carbon.device.mgt.core.common.BaseDeviceManagementTest;
+import org.wso2.carbon.device.mgt.core.common.TestDataHolder;
+import org.wso2.carbon.device.mgt.core.internal.DeviceManagementDataHolder;
+import org.wso2.carbon.device.mgt.core.internal.DeviceManagementServiceComponent;
+import org.wso2.carbon.device.mgt.core.search.mgt.InvalidOperatorException;
+import org.wso2.carbon.device.mgt.core.search.mgt.SearchManagerService;
+import org.wso2.carbon.device.mgt.core.search.mgt.SearchMgtException;
+import org.wso2.carbon.device.mgt.core.search.mgt.impl.SearchManagerServiceImpl;
+import org.wso2.carbon.device.mgt.core.search.util.Utils;
+import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService;
+import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderServiceImpl;
+import org.wso2.carbon.utils.multitenancy.MultitenantConstants;
+
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.List;
+
+/**
+ * This class contains unit tests for the class SearchManagerService
+ * */
+public class SearchManagementServiceTest extends BaseDeviceManagementTest {
+
+ private static final Log log = LogFactory.getLog(SearchManagementServiceTest.class);
+ private static List deviceIdentifiers = new ArrayList<>();
+ private static final String DEVICE_ID_PREFIX = "SEARCH-DEVICE-ID-";
+ private static final String DEVICE_TYPE = "SEARCH_TYPE";
+
+ @BeforeClass
+ public void init() throws Exception {
+ DeviceManagementDataHolder.getInstance().getDeviceAccessAuthorizationService();
+
+ for (int i = 0; i < 5; i++) {
+ deviceIdentifiers.add(new DeviceIdentifier(DEVICE_ID_PREFIX + i, DEVICE_TYPE));
+ }
+ DeviceManagementProviderService deviceMgtService = new DeviceManagementProviderServiceImpl();
+ DeviceManagementServiceComponent.notifyStartupListeners();
+ DeviceManagementDataHolder.getInstance().setDeviceManagementProvider(deviceMgtService);
+ deviceMgtService.registerDeviceType(new TestDeviceManagementService(DEVICE_TYPE,
+ MultitenantConstants.SUPER_TENANT_DOMAIN_NAME));
+
+ List devices = TestDataHolder.generateDummyDeviceData(deviceIdentifiers);
+ for (Device device : devices) {
+ device.setDeviceInfo(Utils.getDeviceInfo());
+ deviceMgtService.enrollDevice(device);
+ }
+ List returnedDevices = deviceMgtService.getAllDevices(DEVICE_TYPE, true);
+ for (Device device : returnedDevices) {
+ if (!device.getDeviceIdentifier().startsWith(DEVICE_ID_PREFIX)) {
+ throw new Exception("Incorrect device with ID - " + device.getDeviceIdentifier() + " returned!");
+ }
+ }
+ }
+
+ @Test(description = "Search for device details.")
+ public void searchDeviceDetails() throws Exception {
+ SearchContext context = new SearchContext();
+ List conditions = new ArrayList<>();
+
+ Condition cond = new Condition();
+ cond.setKey("batteryVoltage");
+ cond.setOperator("=");
+ cond.setValue("40");
+ cond.setState(Condition.State.OR);
+ conditions.add(cond);
+
+ context.setConditions(conditions);
+
+ SearchManagerService service = new SearchManagerServiceImpl();
+ List devices = service.search(context);
+ Assert.assertTrue(devices != null);
+ }
+
+ @Test(description = "Search devices by location")
+ public void doValidLocationSearch() throws Exception {
+ SearchContext context = new SearchContext();
+ List conditions = new ArrayList<>();
+
+ Condition cond = new Condition();
+ cond.setKey("LOCATION");
+ cond.setOperator("=");
+ cond.setValue("Karandeniya");
+ cond.setState(Condition.State.AND);
+ conditions.add(cond);
+
+ context.setConditions(conditions);
+
+ SearchManagerService service = new SearchManagerServiceImpl();
+ List devices = service.search(context);
+ Assert.assertTrue(devices != null);
+ }
+
+ @Test(description = "Search devices by location.")
+ public void doInvalidLocationSearch() throws Exception {
+ SearchContext context = new SearchContext();
+ List conditions = new ArrayList<>();
+
+ Condition cond = new Condition();
+ cond.setKey("LOCATION");
+ cond.setOperator("=");
+ cond.setValue("Colombo");
+ cond.setState(Condition.State.AND);
+ conditions.add(cond);
+
+ context.setConditions(conditions);
+
+ SearchManagerService service = new SearchManagerServiceImpl();
+ List devices = service.search(context);
+ Assert.assertTrue(devices.size() == 0);
+ }
+
+ @Test(description = "Search devices by string parameter.")
+ public void testStringSearch() throws Exception {
+ SearchContext context = new SearchContext();
+ List conditions = new ArrayList<>();
+
+ Condition cond = new Condition();
+ cond.setKey("deviceModel");
+ cond.setOperator("=");
+ cond.setValue("SM-T520");
+ cond.setState(Condition.State.AND);
+ conditions.add(cond);
+
+ context.setConditions(conditions);
+
+ SearchManagerService service = new SearchManagerServiceImpl();
+ List devices = service.search(context);
+
+ Assert.assertTrue(devices != null);
+ }
+
+ @Test(description = "Search devices by Double parameter.")
+ public void testDoubleSearch() throws Exception {
+ SearchContext context = new SearchContext();
+ List conditions = new ArrayList<>();
+
+ Condition cond = new Condition();
+ cond.setKey("internalAvailableMemory");
+ cond.setOperator("=");
+ cond.setValue("3.56");
+ cond.setState(Condition.State.AND);
+ conditions.add(cond);
+
+ context.setConditions(conditions);
+
+ SearchManagerService service = new SearchManagerServiceImpl();
+ List devices = service.search(context);
+
+ Assert.assertTrue(devices != null);
+ }
+
+ @Test(expectedExceptions = {SearchMgtException.class})
+ public void testInvalidOperator() throws SearchMgtException {
+ SearchContext context = new SearchContext();
+ List conditions = new ArrayList<>();
+
+ Condition cond = new Condition();
+ cond.setKey("deviceModel");
+ cond.setOperator("=/");
+ cond.setValue("SM-T520");
+ cond.setState(Condition.State.OR);
+ conditions.add(cond);
+
+ context.setConditions(conditions);
+
+ SearchManagerService service = new SearchManagerServiceImpl();
+ List devices = service.search(context);
+
+ Assert.assertTrue(devices != null);
+ }
+
+ @Test(description = "Test for search updated devices in given time.")
+ public void testGetUpdatedDevices() throws SearchMgtException {
+ SearchManagerService service = new SearchManagerServiceImpl();
+ List updatedDevices = service.getUpdated(Calendar.getInstance().getTimeInMillis());
+ Assert.assertEquals(updatedDevices.size(), 0);
+ }
+
+ @Test(description = "Test for invalid number")
+ public void testInvalidNumber() throws SearchMgtException {
+ SearchContext context = new SearchContext();
+ List conditions = new ArrayList<>();
+
+ Condition cond = new Condition();
+ cond.setKey("batteryLevel");
+ cond.setOperator("=");
+ cond.setValue("bbb");
+ cond.setState(Condition.State.OR);
+ conditions.add(cond);
+
+ context.setConditions(conditions);
+
+ SearchManagerService service = new SearchManagerServiceImpl();
+ try {
+ service.search(context);
+ } catch (SearchMgtException e) {
+ if (!(e.getCause() instanceof InvalidOperatorException)) {
+ throw e;
+ }
+ }
+ }
+
+ @Test(description = "Test multiple search conditions")
+ public void testMultipleConditions() throws SearchMgtException {
+ SearchContext context = new SearchContext();
+ List conditions = new ArrayList<>();
+
+ Condition cond = new Condition();
+ cond.setKey("batteryLevel");
+ cond.setOperator("%");
+ cond.setValue("40");
+ cond.setState(Condition.State.OR);
+ conditions.add(cond);
+
+ Condition cond2 = new Condition();
+ cond2.setKey("availableTotalMemory");
+ cond2.setOperator("=");
+ cond2.setValue("40.0");
+ cond2.setState(Condition.State.OR);
+ conditions.add(cond2);
+
+ Condition cond3 = new Condition();
+ cond3.setKey("LOCATION");
+ cond3.setOperator("=");
+ cond3.setValue("Karandeniya");
+ cond3.setState(Condition.State.OR);
+ conditions.add(cond3);
+
+ Condition cond4 = new Condition();
+ cond4.setKey("deviceModel");
+ cond4.setOperator("=");
+ cond4.setValue("SM-T520");
+ cond4.setState(Condition.State.AND);
+ conditions.add(cond4);
+
+ Condition cond5 = new Condition();
+ cond5.setKey("vendor");
+ cond5.setOperator("=");
+ cond5.setValue("Samsung");
+ cond5.setState(Condition.State.AND);
+ conditions.add(cond5);
+
+ Condition cond6 = new Condition();
+ cond6.setKey("osVersion");
+ cond6.setOperator("=");
+ cond6.setValue("Marshmellow");
+ cond6.setState(Condition.State.OR);
+ conditions.add(cond6);
+
+ context.setConditions(conditions);
+
+ SearchManagerService service = new SearchManagerServiceImpl();
+ List devices = service.search(context);
+ Assert.assertTrue(devices != null);
+ }
+
+ @Test(description = "Test with wildcard operator")
+ public void testWithWildcardOperator() throws SearchMgtException {
+ SearchContext context = new SearchContext();
+ List conditions = new ArrayList<>();
+
+ Condition condition = new Condition();
+ condition.setKey("batteryLevel");
+ condition.setOperator("=");
+ condition.setValue("40");
+ condition.setState(Condition.State.AND);
+ conditions.add(condition);
+
+ Condition condition2 = new Condition();
+ condition2.setKey("LOCATION");
+ condition2.setOperator("%");
+ condition2.setValue("Karandeniya");
+ condition2.setState(Condition.State.OR);
+ conditions.add(condition2);
+
+ Condition condition3 = new Condition();
+ condition3.setKey("internalTotalMemory");
+ condition3.setOperator("%");
+ condition3.setValue("23.2");
+ condition3.setState(Condition.State.OR);
+ conditions.add(condition3);
+
+ Condition condition4 = new Condition();
+ condition4.setKey("connectionType");
+ condition4.setOperator("%");
+ condition4.setValue("DIALOG");
+ condition4.setState(Condition.State.AND);
+ conditions.add(condition4);
+
+ context.setConditions(conditions);
+
+ SearchManagerService service = new SearchManagerServiceImpl();
+ List devices = service.search(context);
+ Assert.assertTrue(devices != null);
+ }
+}
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/search/SearchMgtUtilTest.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/search/SearchMgtUtilTest.java
new file mode 100644
index 0000000000..df99f82bff
--- /dev/null
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/search/SearchMgtUtilTest.java
@@ -0,0 +1,115 @@
+/*
+ * Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * WSO2 Inc. licenses this file to you under the Apache License,
+ * Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.wso2.carbon.device.mgt.core.search;
+
+import org.junit.Assert;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
+import org.wso2.carbon.device.mgt.common.Device;
+import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
+import org.wso2.carbon.device.mgt.core.common.TestDataHolder;
+import org.wso2.carbon.device.mgt.core.search.mgt.impl.Utils;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * This class holds the Unit test cases to test org.wso2.carbon.device.mgt.core.search.mgt.impl.Util
+ * */
+public class SearchMgtUtilTest {
+
+ private static List deviceIdentifiers = new ArrayList<>();
+ private static final String DEVICE_ID_PREFIX = "SEARCH-DEVICE-ID-";
+ private static final String DEVICE_TYPE = "SEARCH_TYPE";
+ private static final String DEVICE_IDS = "0,0,0,0,0";
+ private static final Integer[] DEVICE_IDS_INT = {0,0,0,0,0};
+ private List devices;
+
+ @BeforeClass
+ public void init() throws Exception {
+ for (int i = 0; i < 5; i++) {
+ deviceIdentifiers.add(new DeviceIdentifier(DEVICE_ID_PREFIX + i, DEVICE_TYPE));
+ }
+ devices = TestDataHolder.generateDummyDeviceData(deviceIdentifiers);
+ }
+
+ @Test(description = "Test for converting given devices list to string")
+ public void testConvertDeviceListToString() {
+ String ids = Utils.getDeviceIdsAsString(devices);
+ Assert.assertEquals(ids, DEVICE_IDS);
+ }
+
+ @Test(description = "Test for get all the device ids as an array")
+ public void testGetArrayOfDeviceIds() {
+ Integer[] deviceIds = Utils.getArrayOfDeviceIds(devices);
+ Assert.assertArrayEquals(deviceIds, DEVICE_IDS_INT);
+ }
+
+ @Test(description = "Test to convert given String to a List")
+ public void testConvertStringToList() {
+ List stringList = Utils.convertStringToList("some string");
+ List expected = this.getStringList();
+
+ Assert.assertEquals(stringList, expected);
+ }
+
+ @Test(description = "Test to check what type of data the specified column can hold")
+ public void testColumnTypes() {
+ Map colTypes = this.buildColumnMap();
+
+ for (String key : colTypes.keySet()) {
+ String result = Utils.checkColumnType(key);
+ Assert.assertEquals(result, colTypes.get(key));
+ }
+ }
+
+ /**
+ * Generates a map of columns and particular data type.
+ * @return HashMap of column name and data type.
+ * */
+ private Map buildColumnMap() {
+ Map columnTypes = new HashMap<>();
+
+ columnTypes.put("deviceModel", "String");
+ columnTypes.put("vendor", "String");
+ columnTypes.put("osVersion", "String");
+ columnTypes.put("connectionType", "String");
+ columnTypes.put("ssid", "String");
+ columnTypes.put("imei", "String");
+ columnTypes.put("imsi", "String");
+ columnTypes.put("batteryLevel", "Double");
+ columnTypes.put("externalAvailableMemory", "Double");
+ columnTypes.put("externalTotalMemory", "Double");
+ columnTypes.put("internalAvailableMemory", "Double");
+ columnTypes.put("cpuUsage", "Double");
+ columnTypes.put("someProperty", "String");
+ return columnTypes;
+ }
+
+ /**
+ * Generates a list of Strings.
+ * @return List
+ * */
+ private List getStringList() {
+ List strings = new ArrayList<>();
+ strings.add("some string");
+ return strings;
+ }
+}
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/search/util/ChangeEnumValues.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/search/util/ChangeEnumValues.java
new file mode 100644
index 0000000000..2d0163e7c3
--- /dev/null
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/search/util/ChangeEnumValues.java
@@ -0,0 +1,131 @@
+/*
+ * Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * WSO2 Inc. licenses this file to you under the Apache License,
+ * Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.wso2.carbon.device.mgt.core.search.util;
+
+import org.wso2.carbon.device.mgt.common.search.Condition;
+import sun.reflect.ConstructorAccessor;
+import sun.reflect.FieldAccessor;
+import sun.reflect.ReflectionFactory;
+
+import java.lang.reflect.AccessibleObject;
+import java.lang.reflect.Array;
+import java.lang.reflect.Field;
+import java.lang.reflect.Modifier;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * Changes the Enum values of a given class.
+ */
+public class ChangeEnumValues {
+
+ private static ReflectionFactory reflectionFactory = ReflectionFactory.getReflectionFactory();
+
+ public ChangeEnumValues() {}
+
+ private static void setFailSafeFieldValue(Field field, Object target, Object value) throws NoSuchFieldException,
+ IllegalAccessException {
+
+ field.setAccessible(true);
+
+ Field modifiersField = Field.class.getDeclaredField("modifiers");
+ modifiersField.setAccessible(true);
+ int modifiers = modifiersField.getInt(field);
+
+ modifiers &= ~Modifier.FINAL;
+ modifiersField.setInt(field, modifiers);
+
+ FieldAccessor fa = reflectionFactory.newFieldAccessor(field, false);
+ fa.set(target, value);
+ }
+
+ private static void blankField(Class> enumClass, String fieldName) throws NoSuchFieldException,
+ IllegalAccessException {
+ for (Field field : Class.class.getDeclaredFields()) {
+ if (field.getName().contains(fieldName)) {
+ AccessibleObject.setAccessible(new Field[]{field}, true);
+ setFailSafeFieldValue(field, enumClass, null);
+ break;
+ }
+ }
+ }
+
+ private static void cleanEnumCache(Class> enumClass) throws NoSuchFieldException, IllegalAccessException {
+ blankField(enumClass, "enumConstantDirectory");
+ blankField(enumClass, "enumConstants");
+ }
+
+ private static ConstructorAccessor getConstructorAccessor(Class> enumClass, Class>[] additionalParameterTypes)
+ throws NoSuchMethodException {
+ Class>[] parameterTypes = new Class[additionalParameterTypes.length + 2];
+ parameterTypes[0] = String.class;
+ parameterTypes[1] = int.class;
+ System.arraycopy(additionalParameterTypes, 0, parameterTypes, 2, additionalParameterTypes.length);
+ return reflectionFactory.newConstructorAccessor(enumClass.getDeclaredConstructor(parameterTypes));
+ }
+
+ private static Object makeEnum(Class> enumClass, String value, int ordinal, Class>[] additionalTypes,
+ Object[] additionalValues) throws Exception {
+ Object[] parms = new Object[additionalValues.length + 2];
+ parms[0] = value;
+ parms[1] = ordinal;
+ System.arraycopy(additionalValues, 0, parms, 2, additionalValues.length);
+ return enumClass.cast(getConstructorAccessor(enumClass, additionalTypes).newInstance(parms));
+ }
+
+ /**
+ * Add an enum instance to the enum class given as argument
+ *
+ * @param the type of the enum
+ * @param enumType the class of the enum to be modified
+ * @param enumName the name of the new enum instance to be added to the class.
+ */
+ public static > void addEnum(Class enumType, String enumName) {
+
+ if (!Enum.class.isAssignableFrom(enumType)) {
+ throw new RuntimeException("class " + enumType + " is not an instance of Enum");
+ }
+
+ Field valuesField = null;
+ Field[] fields = Condition.State.class.getDeclaredFields();
+ for (Field field : fields) {
+ if (field.getName().contains("$VALUES")) {
+ valuesField = field;
+ break;
+ }
+ }
+ AccessibleObject.setAccessible(new Field[]{valuesField}, true);
+
+ try {
+ T[] previousValues = (T[]) valuesField.get(enumType);
+ List values = new ArrayList(Arrays.asList(previousValues));
+
+ T newValue = (T) makeEnum(enumType, enumName, values.size(), new Class>[]{}, new Object[]{});
+
+ values.add(newValue);
+
+ setFailSafeFieldValue(valuesField, null, values.toArray((T[]) Array.newInstance(enumType, 0)));
+
+ cleanEnumCache(enumType);
+
+ } catch (Exception e) {
+ throw new RuntimeException(e.getMessage(), e);
+ }
+ }
+}
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/search/util/Utils.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/search/util/Utils.java
index 58c6f621ac..c46844dee4 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/search/util/Utils.java
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/search/util/Utils.java
@@ -15,30 +15,33 @@
* specific language governing permissions and limitations
* under the License.
*/
-
-
package org.wso2.carbon.device.mgt.core.search.util;
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
import org.wso2.carbon.device.mgt.common.device.details.DeviceInfo;
import org.wso2.carbon.device.mgt.common.device.details.DeviceLocation;
+import org.wso2.carbon.device.mgt.common.search.Condition;
+import org.wso2.carbon.device.mgt.common.search.SearchContext;
import org.wso2.carbon.device.mgt.core.common.TestDataHolder;
+import java.util.ArrayList;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
+import static org.wso2.carbon.device.mgt.common.search.Condition.State.AND;
+import static org.wso2.carbon.device.mgt.common.search.Condition.State.OR;
+
public class Utils {
public static DeviceInfo getDeviceInfo() {
-
DeviceInfo deviceInfo = new DeviceInfo();
deviceInfo.setIMSI("e6f236ac82537a8e");
deviceInfo.setSsid("FAFDA");
-
deviceInfo.setAvailableRAMMemory(1.24);
- deviceInfo.setBatteryLevel(27.3);
+ deviceInfo.setBatteryLevel(40.0);
deviceInfo.setConnectionType("GSM");
deviceInfo.setCpuUsage(82.34);
deviceInfo.setDeviceModel("SM-T520");
@@ -56,7 +59,7 @@ public class Utils {
deviceInfo.setSsid("SSSSSS");
deviceInfo.setTotalRAMMemory(4.00);
deviceInfo.setVendor("SAMSUNG");
-
+ deviceInfo.setLocation(getSampleDeviceLocation());
Map propertyMap = new HashMap<>();
@@ -75,8 +78,6 @@ public class Utils {
public static DeviceLocation getSampleDeviceLocation(){
-
-
DeviceLocation deviceLocation = new DeviceLocation();
deviceLocation.setDeviceIdentifier(Utils.getDeviceIdentifier());
deviceLocation.setLatitude(76.2422);
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/resources/config/datasource/mock-data-source-config.xml b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/resources/config/datasource/mock-data-source-config.xml
new file mode 100644
index 0000000000..91d25ac9ad
--- /dev/null
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/resources/config/datasource/mock-data-source-config.xml
@@ -0,0 +1,33 @@
+
+
+
+
+ jdbc:h2:mem:cdm-test-db;DB_CLOSE_ON_EXIT=FALSE;MVCC=true
+ org.wso2.carbon.device.mgt.core.mock.MockJDBCDriver
+ wso2carbon
+ wso2carbon
+
+
+
+
+
+
+
+
+
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/resources/config/datasource/no-table-data-source-config.xml b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/resources/config/datasource/no-table-data-source-config.xml
new file mode 100644
index 0000000000..7781e61ea2
--- /dev/null
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/resources/config/datasource/no-table-data-source-config.xml
@@ -0,0 +1,33 @@
+
+
+
+
+ jdbc:h2:mem:nodb-test-db;DB_CLOSE_ON_EXIT=FALSE;MVCC=true
+ org.h2.Driver
+ wso2carbon
+ wso2carbon
+
+
+
+
+
+
+
+
+
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/resources/testng.xml b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/resources/testng.xml
index 7830b7fbe3..8093861d4c 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/resources/testng.xml
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/resources/testng.xml
@@ -1,4 +1,3 @@
-
-
+
@@ -42,14 +40,19 @@
+
+
-
+
+
+
+
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/pom.xml b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/pom.xml
index 38ac1a6e3c..efd24f7cdb 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/pom.xml
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/pom.xml
@@ -22,7 +22,7 @@
device-mgt
org.wso2.carbon.devicemgt
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../pom.xml
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/pom.xml b/components/device-mgt/org.wso2.carbon.device.mgt.ui/pom.xml
index 9df80bc2b3..6253b7fa1d 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/pom.xml
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/pom.xml
@@ -22,7 +22,7 @@
device-mgt
org.wso2.carbon.devicemgt
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../pom.xml
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.url.printer/pom.xml b/components/device-mgt/org.wso2.carbon.device.mgt.url.printer/pom.xml
index 53e2ea9c9f..d3bc27340e 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.url.printer/pom.xml
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.url.printer/pom.xml
@@ -23,7 +23,7 @@
device-mgt
org.wso2.carbon.devicemgt
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../pom.xml
diff --git a/components/device-mgt/pom.xml b/components/device-mgt/pom.xml
index 2e279f32cd..d2c614a1ee 100644
--- a/components/device-mgt/pom.xml
+++ b/components/device-mgt/pom.xml
@@ -22,7 +22,7 @@
org.wso2.carbon.devicemgt
carbon-devicemgt
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../../pom.xml
diff --git a/components/email-sender/org.wso2.carbon.email.sender.core/pom.xml b/components/email-sender/org.wso2.carbon.email.sender.core/pom.xml
index 0b6d67ddeb..83f9e5c6ae 100644
--- a/components/email-sender/org.wso2.carbon.email.sender.core/pom.xml
+++ b/components/email-sender/org.wso2.carbon.email.sender.core/pom.xml
@@ -22,7 +22,7 @@
org.wso2.carbon.devicemgt
email-sender
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../pom.xml
diff --git a/components/email-sender/pom.xml b/components/email-sender/pom.xml
index 4851cb18ee..37a686fea9 100644
--- a/components/email-sender/pom.xml
+++ b/components/email-sender/pom.xml
@@ -22,7 +22,7 @@
org.wso2.carbon.devicemgt
carbon-devicemgt
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../../pom.xml
diff --git a/components/identity-extensions/org.wso2.carbon.device.mgt.oauth.extensions/pom.xml b/components/identity-extensions/org.wso2.carbon.device.mgt.oauth.extensions/pom.xml
index 94e2986e62..7f1a748795 100644
--- a/components/identity-extensions/org.wso2.carbon.device.mgt.oauth.extensions/pom.xml
+++ b/components/identity-extensions/org.wso2.carbon.device.mgt.oauth.extensions/pom.xml
@@ -22,13 +22,13 @@
org.wso2.carbon.devicemgt
identity-extensions
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../pom.xml
4.0.0
org.wso2.carbon.device.mgt.oauth.extensions
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
bundle
WSO2 Carbon - OAuth Extensions
http://wso2.org
diff --git a/components/identity-extensions/org.wso2.carbon.identity.authenticator.backend.oauth/pom.xml b/components/identity-extensions/org.wso2.carbon.identity.authenticator.backend.oauth/pom.xml
index 7d93021323..a2cd390c43 100644
--- a/components/identity-extensions/org.wso2.carbon.identity.authenticator.backend.oauth/pom.xml
+++ b/components/identity-extensions/org.wso2.carbon.identity.authenticator.backend.oauth/pom.xml
@@ -21,7 +21,7 @@
identity-extensions
org.wso2.carbon.devicemgt
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
4.0.0
diff --git a/components/identity-extensions/org.wso2.carbon.identity.jwt.client.extension/pom.xml b/components/identity-extensions/org.wso2.carbon.identity.jwt.client.extension/pom.xml
index b93a8d6705..b92d48b7da 100644
--- a/components/identity-extensions/org.wso2.carbon.identity.jwt.client.extension/pom.xml
+++ b/components/identity-extensions/org.wso2.carbon.identity.jwt.client.extension/pom.xml
@@ -22,7 +22,7 @@
org.wso2.carbon.devicemgt
identity-extensions
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../pom.xml
diff --git a/components/identity-extensions/pom.xml b/components/identity-extensions/pom.xml
index 1a37b1111b..f08f189435 100644
--- a/components/identity-extensions/pom.xml
+++ b/components/identity-extensions/pom.xml
@@ -22,7 +22,7 @@
org.wso2.carbon.devicemgt
carbon-devicemgt
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../../pom.xml
diff --git a/components/policy-mgt/org.wso2.carbon.complex.policy.decision.point/pom.xml b/components/policy-mgt/org.wso2.carbon.complex.policy.decision.point/pom.xml
index b3821a1a77..9a3f5a5d51 100644
--- a/components/policy-mgt/org.wso2.carbon.complex.policy.decision.point/pom.xml
+++ b/components/policy-mgt/org.wso2.carbon.complex.policy.decision.point/pom.xml
@@ -22,14 +22,14 @@
org.wso2.carbon.devicemgt
policy-mgt
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../pom.xml
4.0.0
org.wso2.carbon.devicemgt
org.wso2.carbon.complex.policy.decision.point
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
bundle
WSO2 Carbon - Policy Decision Point
WSO2 Carbon - Policy Decision Point
diff --git a/components/policy-mgt/org.wso2.carbon.policy.decision.point/pom.xml b/components/policy-mgt/org.wso2.carbon.policy.decision.point/pom.xml
index 3d818e3ddf..ebca807104 100644
--- a/components/policy-mgt/org.wso2.carbon.policy.decision.point/pom.xml
+++ b/components/policy-mgt/org.wso2.carbon.policy.decision.point/pom.xml
@@ -3,14 +3,14 @@
org.wso2.carbon.devicemgt
policy-mgt
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../pom.xml
4.0.0
org.wso2.carbon.devicemgt
org.wso2.carbon.policy.decision.point
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
bundle
WSO2 Carbon - Policy Decision Point
WSO2 Carbon - Policy Decision Point
diff --git a/components/policy-mgt/org.wso2.carbon.policy.information.point/pom.xml b/components/policy-mgt/org.wso2.carbon.policy.information.point/pom.xml
index 23ce16a1f3..0cff6e9942 100644
--- a/components/policy-mgt/org.wso2.carbon.policy.information.point/pom.xml
+++ b/components/policy-mgt/org.wso2.carbon.policy.information.point/pom.xml
@@ -3,7 +3,7 @@
org.wso2.carbon.devicemgt
policy-mgt
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../pom.xml
@@ -11,7 +11,7 @@
4.0.0
org.wso2.carbon.devicemgt
org.wso2.carbon.policy.information.point
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
bundle
WSO2 Carbon - Policy Information Point
WSO2 Carbon - Policy Information Point
diff --git a/components/policy-mgt/org.wso2.carbon.policy.mgt.common/pom.xml b/components/policy-mgt/org.wso2.carbon.policy.mgt.common/pom.xml
index 71f4042212..4cc776ca3b 100644
--- a/components/policy-mgt/org.wso2.carbon.policy.mgt.common/pom.xml
+++ b/components/policy-mgt/org.wso2.carbon.policy.mgt.common/pom.xml
@@ -22,14 +22,14 @@
org.wso2.carbon.devicemgt
policy-mgt
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../pom.xml
4.0.0
org.wso2.carbon.devicemgt
org.wso2.carbon.policy.mgt.common
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
bundle
WSO2 Carbon - Policy Management Common
WSO2 Carbon - Policy Management Common
diff --git a/components/policy-mgt/org.wso2.carbon.policy.mgt.core/pom.xml b/components/policy-mgt/org.wso2.carbon.policy.mgt.core/pom.xml
index 4853254787..54ebef8d77 100644
--- a/components/policy-mgt/org.wso2.carbon.policy.mgt.core/pom.xml
+++ b/components/policy-mgt/org.wso2.carbon.policy.mgt.core/pom.xml
@@ -22,14 +22,14 @@
org.wso2.carbon.devicemgt
policy-mgt
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../pom.xml
4.0.0
org.wso2.carbon.devicemgt
org.wso2.carbon.policy.mgt.core
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
bundle
WSO2 Carbon - Policy Management Core
WSO2 Carbon - Policy Management Core
diff --git a/components/policy-mgt/pom.xml b/components/policy-mgt/pom.xml
index b84a5ae6a2..cff0b23eb6 100644
--- a/components/policy-mgt/pom.xml
+++ b/components/policy-mgt/pom.xml
@@ -23,13 +23,13 @@
org.wso2.carbon.devicemgt
carbon-devicemgt
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../../pom.xml
4.0.0
policy-mgt
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
pom
WSO2 Carbon - Policy Management Component
http://wso2.org
diff --git a/components/test-coverage/pom.xml b/components/test-coverage/pom.xml
index cb02da5e89..c77b6913e2 100644
--- a/components/test-coverage/pom.xml
+++ b/components/test-coverage/pom.xml
@@ -21,7 +21,7 @@
carbon-devicemgt
org.wso2.carbon.devicemgt
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../../pom.xml
4.0.0
@@ -192,7 +192,9 @@
-
+
+
+
diff --git a/components/webapp-authenticator-framework/org.wso2.carbon.webapp.authenticator.framework/pom.xml b/components/webapp-authenticator-framework/org.wso2.carbon.webapp.authenticator.framework/pom.xml
index 628d953fd2..1339cc580e 100644
--- a/components/webapp-authenticator-framework/org.wso2.carbon.webapp.authenticator.framework/pom.xml
+++ b/components/webapp-authenticator-framework/org.wso2.carbon.webapp.authenticator.framework/pom.xml
@@ -21,14 +21,14 @@
org.wso2.carbon.devicemgt
webapp-authenticator-framework
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../pom.xml
4.0.0
org.wso2.carbon.devicemgt
org.wso2.carbon.webapp.authenticator.framework
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
bundle
WSO2 Carbon - Web Application Authenticator Framework Bundle
WSO2 Carbon - Web Application Authenticator Framework Bundle
diff --git a/components/webapp-authenticator-framework/pom.xml b/components/webapp-authenticator-framework/pom.xml
index 61f153ff18..4323463cfb 100644
--- a/components/webapp-authenticator-framework/pom.xml
+++ b/components/webapp-authenticator-framework/pom.xml
@@ -22,14 +22,14 @@
org.wso2.carbon.devicemgt
carbon-devicemgt
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../../pom.xml
4.0.0
org.wso2.carbon.devicemgt
webapp-authenticator-framework
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
pom
WSO2 Carbon - Webapp Authenticator Framework
http://wso2.org
diff --git a/features/apimgt-extensions/org.wso2.carbon.apimgt.application.extension.feature/pom.xml b/features/apimgt-extensions/org.wso2.carbon.apimgt.application.extension.feature/pom.xml
index 515cb622c5..b86fd9f53c 100644
--- a/features/apimgt-extensions/org.wso2.carbon.apimgt.application.extension.feature/pom.xml
+++ b/features/apimgt-extensions/org.wso2.carbon.apimgt.application.extension.feature/pom.xml
@@ -21,14 +21,14 @@
org.wso2.carbon.devicemgt
apimgt-extensions-feature
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../pom.xml
4.0.0
org.wso2.carbon.apimgt.application.extension.feature
pom
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
WSO2 Carbon - API Management Application Extension Feature
http://wso2.org
This feature contains an implementation of a api application registration, which takes care of subscription
diff --git a/features/apimgt-extensions/org.wso2.carbon.apimgt.handler.server.feature/pom.xml b/features/apimgt-extensions/org.wso2.carbon.apimgt.handler.server.feature/pom.xml
index 9bb9c65107..f9089029bb 100644
--- a/features/apimgt-extensions/org.wso2.carbon.apimgt.handler.server.feature/pom.xml
+++ b/features/apimgt-extensions/org.wso2.carbon.apimgt.handler.server.feature/pom.xml
@@ -22,14 +22,14 @@
org.wso2.carbon.devicemgt
apimgt-extensions-feature
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../pom.xml
4.0.0
org.wso2.carbon.apimgt.handler.server.feature
pom
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
WSO2 Carbon - Device Management - APIM handler Server Feature
http://wso2.org
This feature contains the handler for the api authentications
diff --git a/features/apimgt-extensions/org.wso2.carbon.apimgt.integration.client.feature/pom.xml b/features/apimgt-extensions/org.wso2.carbon.apimgt.integration.client.feature/pom.xml
index 45af0e550c..0c38c35448 100644
--- a/features/apimgt-extensions/org.wso2.carbon.apimgt.integration.client.feature/pom.xml
+++ b/features/apimgt-extensions/org.wso2.carbon.apimgt.integration.client.feature/pom.xml
@@ -21,13 +21,13 @@
org.wso2.carbon.devicemgt
apimgt-extensions-feature
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../pom.xml
4.0.0
org.wso2.carbon.apimgt.integration.client.feature
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
pom
WSO2 Carbon - APIM Integration Client Feature
http://wso2.org
diff --git a/features/apimgt-extensions/org.wso2.carbon.apimgt.webapp.publisher.feature/pom.xml b/features/apimgt-extensions/org.wso2.carbon.apimgt.webapp.publisher.feature/pom.xml
index a28967e835..92e0093418 100644
--- a/features/apimgt-extensions/org.wso2.carbon.apimgt.webapp.publisher.feature/pom.xml
+++ b/features/apimgt-extensions/org.wso2.carbon.apimgt.webapp.publisher.feature/pom.xml
@@ -21,14 +21,14 @@
org.wso2.carbon.devicemgt
apimgt-extensions-feature
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../pom.xml
4.0.0
org.wso2.carbon.apimgt.webapp.publisher.feature
pom
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
WSO2 Carbon - API Management Webapp Publisher Feature
http://wso2.org
This feature contains an implementation of a Tomcat lifecycle listener, which takes care of publishing
diff --git a/features/apimgt-extensions/pom.xml b/features/apimgt-extensions/pom.xml
index 52683ed0e4..6ac64aafc9 100644
--- a/features/apimgt-extensions/pom.xml
+++ b/features/apimgt-extensions/pom.xml
@@ -22,14 +22,14 @@
org.wso2.carbon.devicemgt
carbon-devicemgt
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../../pom.xml
4.0.0
org.wso2.carbon.devicemgt
apimgt-extensions-feature
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
pom
WSO2 Carbon - API Management Extensions Feature
http://wso2.org
diff --git a/features/certificate-mgt/org.wso2.carbon.certificate.mgt.api.feature/pom.xml b/features/certificate-mgt/org.wso2.carbon.certificate.mgt.api.feature/pom.xml
index cabf1bedfe..8eed55d213 100644
--- a/features/certificate-mgt/org.wso2.carbon.certificate.mgt.api.feature/pom.xml
+++ b/features/certificate-mgt/org.wso2.carbon.certificate.mgt.api.feature/pom.xml
@@ -22,7 +22,7 @@
org.wso2.carbon.devicemgt
certificate-mgt-feature
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../pom.xml
diff --git a/features/certificate-mgt/org.wso2.carbon.certificate.mgt.cert.admin.api.feature/pom.xml b/features/certificate-mgt/org.wso2.carbon.certificate.mgt.cert.admin.api.feature/pom.xml
index 1ea2000f07..2de30ccfef 100644
--- a/features/certificate-mgt/org.wso2.carbon.certificate.mgt.cert.admin.api.feature/pom.xml
+++ b/features/certificate-mgt/org.wso2.carbon.certificate.mgt.cert.admin.api.feature/pom.xml
@@ -22,7 +22,7 @@
org.wso2.carbon.devicemgt
certificate-mgt-feature
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../pom.xml
diff --git a/features/certificate-mgt/org.wso2.carbon.certificate.mgt.server.feature/pom.xml b/features/certificate-mgt/org.wso2.carbon.certificate.mgt.server.feature/pom.xml
index 0162aa7b2c..b5e340cf28 100644
--- a/features/certificate-mgt/org.wso2.carbon.certificate.mgt.server.feature/pom.xml
+++ b/features/certificate-mgt/org.wso2.carbon.certificate.mgt.server.feature/pom.xml
@@ -22,14 +22,14 @@
org.wso2.carbon.devicemgt
certificate-mgt-feature
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../pom.xml
4.0.0
org.wso2.carbon.certificate.mgt.server.feature
pom
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
WSO2 Carbon - Certificate Management Server Feature
http://wso2.org
This feature contains the core bundles required for back-end Certificate Management functionality
diff --git a/features/certificate-mgt/pom.xml b/features/certificate-mgt/pom.xml
index e8bef3c938..8b1dd4acdc 100644
--- a/features/certificate-mgt/pom.xml
+++ b/features/certificate-mgt/pom.xml
@@ -22,14 +22,14 @@
org.wso2.carbon.devicemgt
carbon-devicemgt
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../../pom.xml
4.0.0
org.wso2.carbon.devicemgt
certificate-mgt-feature
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
pom
WSO2 Carbon - Certificate Management Feature
http://wso2.org
diff --git a/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer.feature/pom.xml b/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer.feature/pom.xml
index 6f69cb3e7e..0678513995 100644
--- a/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer.feature/pom.xml
+++ b/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer.feature/pom.xml
@@ -22,14 +22,14 @@
org.wso2.carbon.devicemgt
device-mgt-extensions-feature
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../pom.xml
4.0.0
org.wso2.carbon.device.mgt.extensions.device.type.deployer.feature
pom
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
WSO2 Carbon - Device Type Deployer Feature
http://wso2.org
WSO2 Carbon - Device Type Deployer Feature
diff --git a/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.fcm.feature/pom.xml b/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.fcm.feature/pom.xml
index 9bf90c182e..287069d5a6 100644
--- a/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.fcm.feature/pom.xml
+++ b/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.fcm.feature/pom.xml
@@ -22,14 +22,14 @@
org.wso2.carbon.devicemgt
device-mgt-extensions-feature
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../pom.xml
4.0.0
org.wso2.carbon.device.mgt.extensions.push.notification.provider.fcm.feature
pom
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
WSO2 Carbon - FCM Based Push Notification Provider Feature
http://wso2.org
WSO2 Carbon - MQTT Based Push Notification Provider Feature
diff --git a/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.http.feature/pom.xml b/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.http.feature/pom.xml
index 15fed87eeb..fbd82e1091 100644
--- a/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.http.feature/pom.xml
+++ b/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.http.feature/pom.xml
@@ -22,14 +22,14 @@
org.wso2.carbon.devicemgt
device-mgt-extensions-feature
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../pom.xml
4.0.0
org.wso2.carbon.device.mgt.extensions.push.notification.provider.http.feature
pom
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
WSO2 Carbon - MQTT Based Push Notification Provider Feature
http://wso2.org
WSO2 Carbon - MQTT Based Push Notification Provider Feature
diff --git a/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.mqtt.feature/pom.xml b/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.mqtt.feature/pom.xml
index afbb218f47..1bdb1a0e3b 100644
--- a/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.mqtt.feature/pom.xml
+++ b/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.mqtt.feature/pom.xml
@@ -22,14 +22,14 @@
org.wso2.carbon.devicemgt
device-mgt-extensions-feature
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../pom.xml
4.0.0
org.wso2.carbon.device.mgt.extensions.push.notification.provider.mqtt.feature
pom
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
WSO2 Carbon - MQTT Based Push Notification Provider Feature
http://wso2.org
WSO2 Carbon - MQTT Based Push Notification Provider Feature
diff --git a/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.xmpp.feature/pom.xml b/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.xmpp.feature/pom.xml
index 44bcee1aac..96953d2079 100644
--- a/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.xmpp.feature/pom.xml
+++ b/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.xmpp.feature/pom.xml
@@ -22,14 +22,14 @@
org.wso2.carbon.devicemgt
device-mgt-extensions-feature
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../pom.xml
4.0.0
org.wso2.carbon.device.mgt.extensions.push.notification.provider.xmpp.feature
pom
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
WSO2 Carbon - XMPP Based Push Notification Provider Feature
http://wso2.org
WSO2 Carbon - XMPP Based Push Notification Provider Feature
diff --git a/features/device-mgt-extensions/pom.xml b/features/device-mgt-extensions/pom.xml
index 02fdec375a..d4a1746b5b 100644
--- a/features/device-mgt-extensions/pom.xml
+++ b/features/device-mgt-extensions/pom.xml
@@ -22,7 +22,7 @@
org.wso2.carbon.devicemgt
carbon-devicemgt
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../../pom.xml
diff --git a/features/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher.feature/pom.xml b/features/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher.feature/pom.xml
index 29aeb87ce4..a0504f521c 100644
--- a/features/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher.feature/pom.xml
+++ b/features/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher.feature/pom.xml
@@ -22,14 +22,14 @@
org.wso2.carbon.devicemgt
device-mgt-feature
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../pom.xml
4.0.0
org.wso2.carbon.device.mgt.analytics.data.publisher.feature
pom
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
WSO2 Carbon - Device Management Server Feature
http://wso2.org
This feature contains bundles related to device analytics data publisher
diff --git a/features/device-mgt/org.wso2.carbon.device.mgt.api.feature/pom.xml b/features/device-mgt/org.wso2.carbon.device.mgt.api.feature/pom.xml
index 4d89a26501..2f8cfc684a 100644
--- a/features/device-mgt/org.wso2.carbon.device.mgt.api.feature/pom.xml
+++ b/features/device-mgt/org.wso2.carbon.device.mgt.api.feature/pom.xml
@@ -22,7 +22,7 @@
org.wso2.carbon.devicemgt
device-mgt-feature
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../pom.xml
diff --git a/features/device-mgt/org.wso2.carbon.device.mgt.extensions.feature/pom.xml b/features/device-mgt/org.wso2.carbon.device.mgt.extensions.feature/pom.xml
index bb58fe4ea7..0c110f61ba 100644
--- a/features/device-mgt/org.wso2.carbon.device.mgt.extensions.feature/pom.xml
+++ b/features/device-mgt/org.wso2.carbon.device.mgt.extensions.feature/pom.xml
@@ -4,14 +4,14 @@
org.wso2.carbon.devicemgt
device-mgt-feature
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../pom.xml
4.0.0
org.wso2.carbon.device.mgt.extensions.feature
pom
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
WSO2 Carbon - Device Management Extensions Feature
http://wso2.org
This feature contains common extensions used by key device management functionalities
diff --git a/features/device-mgt/org.wso2.carbon.device.mgt.feature/pom.xml b/features/device-mgt/org.wso2.carbon.device.mgt.feature/pom.xml
index 0dd438d200..69c5261130 100644
--- a/features/device-mgt/org.wso2.carbon.device.mgt.feature/pom.xml
+++ b/features/device-mgt/org.wso2.carbon.device.mgt.feature/pom.xml
@@ -22,7 +22,7 @@
org.wso2.carbon.devicemgt
device-mgt-feature
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../pom.xml
diff --git a/features/device-mgt/org.wso2.carbon.device.mgt.server.feature/pom.xml b/features/device-mgt/org.wso2.carbon.device.mgt.server.feature/pom.xml
index 7b2780b2b7..c1828e989c 100644
--- a/features/device-mgt/org.wso2.carbon.device.mgt.server.feature/pom.xml
+++ b/features/device-mgt/org.wso2.carbon.device.mgt.server.feature/pom.xml
@@ -22,14 +22,14 @@
org.wso2.carbon.devicemgt
device-mgt-feature
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../pom.xml
4.0.0
org.wso2.carbon.device.mgt.server.feature
pom
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
WSO2 Carbon - Device Management Server Feature
http://wso2.org
This feature contains the core bundles required for Back-end Device Management functionality
diff --git a/features/device-mgt/org.wso2.carbon.device.mgt.ui.feature/pom.xml b/features/device-mgt/org.wso2.carbon.device.mgt.ui.feature/pom.xml
index 661fd66a96..d2d436951e 100644
--- a/features/device-mgt/org.wso2.carbon.device.mgt.ui.feature/pom.xml
+++ b/features/device-mgt/org.wso2.carbon.device.mgt.ui.feature/pom.xml
@@ -22,7 +22,7 @@
org.wso2.carbon.devicemgt
device-mgt-feature
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../pom.xml
diff --git a/features/device-mgt/pom.xml b/features/device-mgt/pom.xml
index 52e196bea5..b9ed80e22d 100644
--- a/features/device-mgt/pom.xml
+++ b/features/device-mgt/pom.xml
@@ -22,7 +22,7 @@
org.wso2.carbon.devicemgt
carbon-devicemgt
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../../pom.xml
diff --git a/features/email-sender/org.wso2.carbon.email.sender.feature/pom.xml b/features/email-sender/org.wso2.carbon.email.sender.feature/pom.xml
index c2b6e47d57..4477de2855 100644
--- a/features/email-sender/org.wso2.carbon.email.sender.feature/pom.xml
+++ b/features/email-sender/org.wso2.carbon.email.sender.feature/pom.xml
@@ -22,14 +22,14 @@
org.wso2.carbon.devicemgt
email-sender-feature
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../pom.xml
4.0.0
org.wso2.carbon.email.sender.feature
pom
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
WSO2 Carbon - Email Sender Feature
http://wso2.org
This feature contains the core bundles required for email sender related functionality
diff --git a/features/email-sender/pom.xml b/features/email-sender/pom.xml
index ca6357a730..34c0e72cd4 100644
--- a/features/email-sender/pom.xml
+++ b/features/email-sender/pom.xml
@@ -22,14 +22,14 @@
org.wso2.carbon.devicemgt
carbon-devicemgt
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../../pom.xml
4.0.0
org.wso2.carbon.devicemgt
email-sender-feature
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
pom
WSO2 Carbon - Email Sender Feature
http://wso2.org
diff --git a/features/jwt-client/org.wso2.carbon.identity.jwt.client.extension.feature/pom.xml b/features/jwt-client/org.wso2.carbon.identity.jwt.client.extension.feature/pom.xml
index e19c3f09d9..d28225dec7 100644
--- a/features/jwt-client/org.wso2.carbon.identity.jwt.client.extension.feature/pom.xml
+++ b/features/jwt-client/org.wso2.carbon.identity.jwt.client.extension.feature/pom.xml
@@ -23,14 +23,14 @@
org.wso2.carbon.devicemgt
jwt-client-feature
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../pom.xml
4.0.0
org.wso2.carbon.identity.jwt.client.extension.feature
pom
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
WSO2 Carbon - JWT Client Feature
http://wso2.org
This feature contains jwt client implementation from which we can get a access token using the jwt
diff --git a/features/jwt-client/pom.xml b/features/jwt-client/pom.xml
index a8e4065dcc..4d6ba5fe14 100644
--- a/features/jwt-client/pom.xml
+++ b/features/jwt-client/pom.xml
@@ -23,13 +23,13 @@
org.wso2.carbon.devicemgt
carbon-devicemgt
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../../pom.xml
4.0.0
jwt-client-feature
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
pom
WSO2 Carbon - JWT Client Extension Feature
http://wso2.org
diff --git a/features/oauth-extensions/org.wso2.carbon.device.mgt.oauth.extensions.feature/pom.xml b/features/oauth-extensions/org.wso2.carbon.device.mgt.oauth.extensions.feature/pom.xml
index 55c92cbdd2..de5396c967 100644
--- a/features/oauth-extensions/org.wso2.carbon.device.mgt.oauth.extensions.feature/pom.xml
+++ b/features/oauth-extensions/org.wso2.carbon.device.mgt.oauth.extensions.feature/pom.xml
@@ -23,14 +23,14 @@
org.wso2.carbon.devicemgt
oauth-extensions-feature
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../pom.xml
4.0.0
org.wso2.carbon.device.mgt.oauth.extensions.feature
pom
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
WSO2 Carbon - Device Mgt OAuth Extensions Feature
http://wso2.org
This feature contains devicemgt related OAuth extensions
diff --git a/features/oauth-extensions/pom.xml b/features/oauth-extensions/pom.xml
index 2f28bc923c..66fdeb0f43 100644
--- a/features/oauth-extensions/pom.xml
+++ b/features/oauth-extensions/pom.xml
@@ -22,14 +22,14 @@
org.wso2.carbon.devicemgt
carbon-devicemgt
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../../pom.xml
4.0.0
org.wso2.carbon.devicemgt
oauth-extensions-feature
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
pom
WSO2 Carbon - Device Management OAuth Extensions Feature
http://wso2.org
diff --git a/features/policy-mgt/org.wso2.carbon.policy.mgt.server.feature/pom.xml b/features/policy-mgt/org.wso2.carbon.policy.mgt.server.feature/pom.xml
index b56adb1dc7..f0ad1d2895 100644
--- a/features/policy-mgt/org.wso2.carbon.policy.mgt.server.feature/pom.xml
+++ b/features/policy-mgt/org.wso2.carbon.policy.mgt.server.feature/pom.xml
@@ -23,14 +23,14 @@
org.wso2.carbon.devicemgt
policy-mgt-feature
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../pom.xml
4.0.0
org.wso2.carbon.policy.mgt.server.feature
pom
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
WSO2 Carbon - Policy Management Server Feature
http://wso2.org
This feature contains the core bundles required for Back-end Device Management functionality
diff --git a/features/policy-mgt/pom.xml b/features/policy-mgt/pom.xml
index 149795038a..071cb50c44 100644
--- a/features/policy-mgt/pom.xml
+++ b/features/policy-mgt/pom.xml
@@ -23,14 +23,14 @@
org.wso2.carbon.devicemgt
carbon-devicemgt
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../../pom.xml
4.0.0
org.wso2.carbon.devicemgt
policy-mgt-feature
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
pom
WSO2 Carbon - Policy Management Feature
http://wso2.org
diff --git a/features/webapp-authenticator-framework/org.wso2.carbon.webapp.authenticator.framework.server.feature/pom.xml b/features/webapp-authenticator-framework/org.wso2.carbon.webapp.authenticator.framework.server.feature/pom.xml
index 1f5420dbf1..0f4b33997f 100644
--- a/features/webapp-authenticator-framework/org.wso2.carbon.webapp.authenticator.framework.server.feature/pom.xml
+++ b/features/webapp-authenticator-framework/org.wso2.carbon.webapp.authenticator.framework.server.feature/pom.xml
@@ -22,14 +22,14 @@
org.wso2.carbon.devicemgt
webapp-authenticator-framework-feature
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../pom.xml
4.0.0
org.wso2.carbon.webapp.authenticator.framework.server.feature
pom
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
WSO2 Carbon - Webapp Authenticator Framework Server Feature
http://wso2.org
This feature contains the core bundles required for Back-end Device Management functionality
diff --git a/features/webapp-authenticator-framework/pom.xml b/features/webapp-authenticator-framework/pom.xml
index 314a194c44..60a4d59f14 100644
--- a/features/webapp-authenticator-framework/pom.xml
+++ b/features/webapp-authenticator-framework/pom.xml
@@ -22,14 +22,14 @@
org.wso2.carbon.devicemgt
carbon-devicemgt
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
../../pom.xml
4.0.0
org.wso2.carbon.devicemgt
webapp-authenticator-framework-feature
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
pom
WSO2 Carbon - Webapp Authenticator Framework Feature
http://wso2.org
diff --git a/pom.xml b/pom.xml
index 240fb9a0a6..7d474b6231 100644
--- a/pom.xml
+++ b/pom.xml
@@ -23,7 +23,7 @@
org.wso2.carbon.devicemgt
carbon-devicemgt
pom
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
WSO2 Carbon - Device Management - Parent
http://wso2.org
WSO2 Connected Device Manager Components
@@ -1863,7 +1863,7 @@
1.2.11.wso2v10
- 3.0.145-SNAPSHOT
+ 3.0.147-SNAPSHOT
4.4.8