diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/beans/RemoteSessionInfo.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/beans/RemoteSessionInfo.java
new file mode 100644
index 0000000000..34883532f1
--- /dev/null
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/beans/RemoteSessionInfo.java
@@ -0,0 +1,52 @@
+/*
+ * 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.jaxrs.beans;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import org.wso2.carbon.device.mgt.common.operation.mgt.Operation;
+
+import java.util.List;
+
+@ApiModel(value = "RemoteSessionInfo", description = "Template of the remote session")
+public class RemoteSessionInfo {
+
+ @ApiModelProperty(name = "Server Url", value = "Url of the remote session server.", required = true)
+ private String serverUrl;
+
+ @ApiModelProperty(name = "isEnabled", value = "Is remote session functionality enabled", required = true)
+ private Boolean isEnabled;
+
+ public String getServerUrl() {
+ return serverUrl;
+ }
+
+ public void setServerUrl(String serverUrl) {
+ this.serverUrl = serverUrl;
+ }
+
+ public Boolean getEnabled() {
+ return isEnabled;
+ }
+
+ public void setEnabled(Boolean enabled) {
+ isEnabled = enabled;
+ }
+}
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/RemoteSessionService.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/RemoteSessionService.java
new file mode 100644
index 0000000000..52c0eaf7f2
--- /dev/null
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/RemoteSessionService.java
@@ -0,0 +1,130 @@
+/*
+ * 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.jaxrs.service.api;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
+import io.swagger.annotations.Extension;
+import io.swagger.annotations.ExtensionProperty;
+import io.swagger.annotations.Info;
+import io.swagger.annotations.ResponseHeader;
+import io.swagger.annotations.SwaggerDefinition;
+import io.swagger.annotations.Tag;
+import org.wso2.carbon.apimgt.annotations.api.Scope;
+import org.wso2.carbon.apimgt.annotations.api.Scopes;
+import org.wso2.carbon.device.mgt.jaxrs.util.Constants;
+
+import javax.validation.constraints.Size;
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.core.Response;
+
+@SwaggerDefinition(
+ info = @Info(
+ version = "1.0.0",
+ title = "",
+ extensions = {
+ @Extension(properties = {
+ @ExtensionProperty(name = "name", value = "remote_session_services"),
+ @ExtensionProperty(name = "context", value = "/api/device-mgt/v1.0/remote-session-services"),
+ })
+ }
+ ),
+ tags = {
+ @Tag(name = "device_management", description = "")
+ }
+)
+@Scopes(
+ scopes = {
+ @Scope(
+ name = "Remote Session Connection",
+ description = "",
+ key = "perm:remote-session-service:connect",
+ permissions = {"/device-mgt/devices/owning-device/remote-session"}
+ )
+ }
+)
+@Path("/remote-session-services")
+@Api(value = "Remote Session Service",
+ description = "This carries all the resources related to the remote session service functionality.")
+public interface RemoteSessionService {
+ /**
+ * Retrieve Analytics for the device type
+ */
+ @GET
+ @Path("connection/{deviceType}/{deviceId}")
+ @ApiOperation(
+ consumes = "application/json",
+ produces = "application/json",
+ httpMethod = "GET",
+ value = "Retrieve Connection Information for the device type",
+ notes = "",
+ response = Response.class,
+ tags = "Remote Session Service Management",
+ extensions = {
+ @Extension(properties = {
+ @ExtensionProperty(name = Constants.SCOPE, value = "perm:remote-session-service:connect")
+ })
+ }
+ )
+ @ApiResponses(value = {
+ @ApiResponse(
+ code = 200,
+ message = "OK.",
+ response = Response.class,
+ responseHeaders = {
+ @ResponseHeader(
+ name = "Content-Type",
+ description = "The content type of the body"),
+ @ResponseHeader(
+ name = "Last-Modified",
+ description = "Date and time the resource was last modified.\n" +
+ "Used by caches, or in conditional requests."),
+ }),
+ @ApiResponse(
+ code = 400,
+ message = "Bad Request. \n Invalid Device Identifiers found.",
+ response = Response.class),
+ @ApiResponse(
+ code = 401,
+ message = "Unauthorized. \n Unauthorized request."),
+ @ApiResponse(
+ code = 500,
+ message = "Internal Server Error. \n Error on retrieving stats",
+ response = Response.class)
+ })
+ Response getRemoteSessionDeviceConnect(
+ @ApiParam(
+ name = "deviceId",
+ value = "The registered device Id.",
+ required = true)
+ @PathParam("deviceId") String deviceId,
+ @ApiParam(
+ name = "device-type",
+ value = "The device type, such as ios, android or windows.",
+ required = true)
+ @PathParam("deviceType")
+ @Size(max = 45)
+ String deviceType);
+}
\ No newline at end of file
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/RemoteSessionServiceImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/RemoteSessionServiceImpl.java
new file mode 100644
index 0000000000..a972df9826
--- /dev/null
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/RemoteSessionServiceImpl.java
@@ -0,0 +1,68 @@
+/*
+ * 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.jaxrs.service.impl;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.wso2.carbon.device.mgt.core.config.DeviceConfigurationManager;
+import org.wso2.carbon.device.mgt.core.config.DeviceManagementConfig;
+import org.wso2.carbon.device.mgt.core.config.remote.session.RemoteSessionConfiguration;
+import org.wso2.carbon.device.mgt.jaxrs.beans.RemoteSessionInfo;
+import org.wso2.carbon.device.mgt.jaxrs.service.api.RemoteSessionService;
+
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Response;
+
+/**
+ * The api for
+ */
+public class RemoteSessionServiceImpl implements RemoteSessionService {
+
+ private static Log log = LogFactory.getLog(RemoteSessionServiceImpl.class);
+
+ @Path("connect/{deviceType}/{deviceId}")
+ @GET
+ @Consumes("application/json")
+ @Produces("application/json")
+ public Response getRemoteSessionDeviceConnect(@PathParam("deviceId") String deviceId,
+ @PathParam("deviceType") String deviceType) {
+ //First, check whether the remote session is enabled.
+ RemoteSessionInfo sessionInfo = new RemoteSessionInfo();
+ sessionInfo.setEnabled(false);
+ DeviceManagementConfig deviceManagementConfig = DeviceConfigurationManager.getInstance()
+ .getDeviceManagementConfig();
+ if (deviceManagementConfig != null) {
+ RemoteSessionConfiguration remoteSessionConfiguration = deviceManagementConfig.getRemoteSessionConfiguration();
+ if (remoteSessionConfiguration != null) {
+ boolean isEnabled = remoteSessionConfiguration.isEnabled();
+ sessionInfo.setEnabled(isEnabled);
+ if (isEnabled) {
+ sessionInfo.setServerUrl(remoteSessionConfiguration.getRemoteSessionServerUrl());
+ }
+ return Response.ok().entity(sessionInfo).build();
+ }
+ }
+
+ return Response.ok().entity(sessionInfo).build();
+ }
+}
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/webapp/WEB-INF/cxf-servlet.xml b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/webapp/WEB-INF/cxf-servlet.xml
index 572b64922b..e1e2c46e8c 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/webapp/WEB-INF/cxf-servlet.xml
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/webapp/WEB-INF/cxf-servlet.xml
@@ -38,6 +38,7 @@
+
@@ -81,6 +82,7 @@
+
@@ -99,4 +101,4 @@
-
+
\ 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/config/DeviceManagementConfig.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/config/DeviceManagementConfig.java
index 2c039b0bef..cebde45226 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/config/DeviceManagementConfig.java
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/config/DeviceManagementConfig.java
@@ -21,10 +21,12 @@ import org.wso2.carbon.device.mgt.core.config.cache.CertificateCacheConfiguratio
import org.wso2.carbon.device.mgt.core.config.geo.location.OperationAnalyticsConfiguration;
import org.wso2.carbon.device.mgt.core.config.cache.DeviceCacheConfiguration;
import org.wso2.carbon.device.mgt.core.config.identity.IdentityConfigurations;
+import org.wso2.carbon.device.mgt.core.config.keymanager.KeyManagerConfigurations;
import org.wso2.carbon.device.mgt.core.config.pagination.PaginationConfiguration;
import org.wso2.carbon.device.mgt.core.config.policy.PolicyConfiguration;
import org.wso2.carbon.device.mgt.core.config.pull.notification.PullNotificationConfiguration;
import org.wso2.carbon.device.mgt.core.config.push.notification.PushNotificationConfiguration;
+import org.wso2.carbon.device.mgt.core.config.remote.session.RemoteSessionConfiguration;
import org.wso2.carbon.device.mgt.core.config.status.task.DeviceStatusTaskConfig;
import org.wso2.carbon.device.mgt.core.config.task.TaskConfiguration;
@@ -41,6 +43,7 @@ public final class DeviceManagementConfig {
private DeviceManagementConfigRepository deviceManagementConfigRepository;
private TaskConfiguration taskConfiguration;
private IdentityConfigurations identityConfigurations;
+ private KeyManagerConfigurations keyManagerConfigurations;
private PolicyConfiguration policyConfiguration;
private PaginationConfiguration paginationConfiguration;
private PushNotificationConfiguration pushNotificationConfiguration;
@@ -50,6 +53,8 @@ public final class DeviceManagementConfig {
private CertificateCacheConfiguration certificateCacheConfiguration;
private OperationAnalyticsConfiguration operationAnalyticsConfiguration;
private String defaultGroupsConfiguration;
+ private RemoteSessionConfiguration remoteSessionConfiguration;
+
@XmlElement(name = "ManagementRepository", required = true)
public DeviceManagementConfigRepository getDeviceManagementConfigRepository() {
@@ -70,6 +75,15 @@ public final class DeviceManagementConfig {
this.identityConfigurations = identityConfigurations;
}
+ @XmlElement(name = "KeyManagerConfiguration", required = true)
+ public KeyManagerConfigurations getKeyManagerConfigurations() {
+ return keyManagerConfigurations;
+ }
+
+ public void setKeyManagerConfigurations(KeyManagerConfigurations keyManagerConfigurations) {
+ this.keyManagerConfigurations = keyManagerConfigurations;
+ }
+
@XmlElement(name = "PolicyConfiguration", required = true)
public PolicyConfiguration getPolicyConfiguration() {
return policyConfiguration;
@@ -159,5 +173,13 @@ public final class DeviceManagementConfig {
public void setDefaultGroupsConfiguration(String defaultGroupsConfiguration) {
this.defaultGroupsConfiguration = defaultGroupsConfiguration;
}
+ @XmlElement(name = "RemoteSessionConfiguration", required = true)
+ public RemoteSessionConfiguration getRemoteSessionConfiguration() {
+ return remoteSessionConfiguration;
+ }
+
+ public void setRemoteSessionConfiguration(RemoteSessionConfiguration remoteSessionConfiguration) {
+ this.remoteSessionConfiguration = remoteSessionConfiguration;
+ }
}
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/config/keymanager/KeyManagerConfigurations.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/config/keymanager/KeyManagerConfigurations.java
new file mode 100644
index 0000000000..b76f932e5b
--- /dev/null
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/config/keymanager/KeyManagerConfigurations.java
@@ -0,0 +1,59 @@
+/*
+ * 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.config.keymanager;
+
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+
+/**
+ * Configurations related to key management.
+ */
+@XmlRootElement(name = "KeyManagerConfiguration")
+public class KeyManagerConfigurations {
+ private String serverUrl;
+ private String adminUsername;
+ private String adminPassword;
+
+ @XmlElement(name = "AdminUsername", required = true)
+ public String getAdminUsername() {
+ return adminUsername;
+ }
+
+ public void setAdminUsername(String adminUsername) {
+ this.adminUsername = adminUsername;
+ }
+
+ @XmlElement(name = "AdminPassword", required = true)
+ public String getAdminPassword() {
+ return adminPassword;
+ }
+
+ public void setAdminPassword(String adminPassword) {
+ this.adminPassword = adminPassword;
+ }
+
+ @XmlElement(name = "ServerUrl", required = true)
+ public String getServerUrl() {
+ return serverUrl;
+ }
+
+ public void setServerUrl(String serverUrl) {
+ this.serverUrl = serverUrl;
+ }
+
+}
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/config/remote/session/RemoteSessionConfiguration.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/config/remote/session/RemoteSessionConfiguration.java
new file mode 100644
index 0000000000..426e2db308
--- /dev/null
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/config/remote/session/RemoteSessionConfiguration.java
@@ -0,0 +1,143 @@
+/*
+ * 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.config.remote.session;
+
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+
+/**
+ * This class represents the information related to Remote Session configuration.
+ */
+@XmlRootElement(name = "RemoteSessionConfiguration")
+public class RemoteSessionConfiguration {
+
+ private String remoteSessionServerUrl;
+ private boolean enabled;
+ private int maxHTTPConnectionPerHost;
+ private int maxTotalHTTPConnections;
+ private int maxMessagesPerSecond;
+ private int sessionIdleTimeOut;
+ private int maxSessionDuration;
+ private int sessionBufferSize;
+
+ public void setRemoteSessionServerUrl(String remoteSessionServerUrl) {
+ this.remoteSessionServerUrl = remoteSessionServerUrl;
+ }
+
+ /**
+ * Remote session server url
+ * @return
+ */
+ @XmlElement(name = "RemoteSessionServerUrl", required = true)
+ public String getRemoteSessionServerUrl() {
+ return remoteSessionServerUrl;
+ }
+
+ /**
+ * Remote session enabled
+ * @return
+ */
+ @XmlElement(name = "Enabled", required = true)
+ public boolean isEnabled() {
+ return enabled;
+ }
+
+ public void setEnabled(boolean enabled) {
+ this.enabled = enabled;
+ }
+
+ /**
+ * Maximum connections per host for external http invocations
+ * @return
+ */
+ @XmlElement(name = "MaximumHTTPConnectionPerHost", required = true, defaultValue = "2")
+ public int getMaxHTTPConnectionPerHost() {
+ return maxHTTPConnectionPerHost;
+ }
+
+ public void setMaxHTTPConnectionPerHost(int maxHTTPConnectionPerHost) {
+ this.maxHTTPConnectionPerHost = maxHTTPConnectionPerHost;
+ }
+
+ /**
+ * Maximum total connections for external http invocation
+ */
+ @XmlElement(name = "MaximumTotalHTTPConnections", required = true, defaultValue = "100")
+ public int getMaxTotalHTTPConnections() {
+ return maxTotalHTTPConnections;
+ }
+
+ public void setMaxTotalHTTPConnections(int maxTotalHTTPConnections) {
+ this.maxTotalHTTPConnections = maxTotalHTTPConnections;
+ }
+
+ /**
+ * This is for protect device from message spamming. Throttling limit in term of messages for device
+ * @return
+ */
+ @XmlElement(name = "MaximumMessagesPerSecond", required = true, defaultValue = "10")
+ public int getMaxMessagesPerSession() {
+ return maxMessagesPerSecond;
+ }
+
+ public void setMaxMessagesPerSession(int maxMessagesPerSession) {
+ this.maxMessagesPerSecond = maxMessagesPerSession;
+ }
+
+ /**
+ * Maximum idle timeout in minutes
+ * @return
+ */
+ @XmlElement(name = "SessionIdleTimeOut", required = true, defaultValue = "5")
+ public int getSessionIdleTimeOut() {
+ return sessionIdleTimeOut;
+ }
+
+ public void setSessionIdleTimeOut(int sessionIdleTimeOut) {
+ this.sessionIdleTimeOut = sessionIdleTimeOut;
+ }
+
+ /**
+ * Maximum session duration in minutes
+ * @return
+ */
+ @XmlElement(name = "MaximumSessionDuration", required = true, defaultValue = "15")
+ public int getMaxSessionDuration() {
+ return maxSessionDuration;
+ }
+
+ public void setMaxSessionDuration(int maxSessionDuration) {
+ this.maxSessionDuration = maxSessionDuration;
+ }
+
+ /**
+ * Maximum session buffer size in kilo bytes
+ * @return
+ */
+ @XmlElement(name = "SessionBufferSize", required = true, defaultValue = "640")
+ public int getSessionBufferSize() {
+ return sessionBufferSize;
+ }
+
+ public void setSessionBufferSize(int sessionBufferSize) {
+ this.sessionBufferSize = sessionBufferSize;
+ }
+}
+
+
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/ConfigOperationDAOImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/impl/ConfigOperationDAOImpl.java
index 632d3dec99..6b08254c4d 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/impl/ConfigOperationDAOImpl.java
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/impl/ConfigOperationDAOImpl.java
@@ -32,6 +32,7 @@ import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
+import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;
@@ -45,6 +46,7 @@ public class ConfigOperationDAOImpl extends GenericOperationDAOImpl {
PreparedStatement stmt = null;
try {
operationId = super.addOperation(operation);
+ operation.setCreatedTimeStamp(new Timestamp(new java.util.Date().getTime()).toString());
Connection conn = OperationManagementDAOFactory.getConnection();
stmt = conn.prepareStatement("INSERT INTO DM_CONFIG_OPERATION(OPERATION_ID, OPERATION_CONFIG) VALUES(?, ?)");
stmt.setInt(1, operationId);
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/util/OperationDAOUtil.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/util/OperationDAOUtil.java
index 5262fe2e2b..ff402f7e97 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/util/OperationDAOUtil.java
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/util/OperationDAOUtil.java
@@ -22,7 +22,11 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.wso2.carbon.device.mgt.common.operation.mgt.OperationResponse;
import org.wso2.carbon.device.mgt.core.DeviceManagementConstants;
-import org.wso2.carbon.device.mgt.core.dto.operation.mgt.*;
+import org.wso2.carbon.device.mgt.core.dto.operation.mgt.CommandOperation;
+import org.wso2.carbon.device.mgt.core.dto.operation.mgt.ConfigOperation;
+import org.wso2.carbon.device.mgt.core.dto.operation.mgt.Operation;
+import org.wso2.carbon.device.mgt.core.dto.operation.mgt.PolicyOperation;
+import org.wso2.carbon.device.mgt.core.dto.operation.mgt.ProfileOperation;
import java.io.ByteArrayInputStream;
import java.io.IOException;
@@ -32,6 +36,7 @@ import java.sql.SQLException;
public class OperationDAOUtil {
private static final Log log = LogFactory.getLog(OperationDAOUtil.class);
+
public static Operation convertOperation(org.wso2.carbon.device.mgt.common.operation.mgt.Operation operation) {
Operation dtoOperation = null;
@@ -40,28 +45,28 @@ public class OperationDAOUtil {
dtoOperation = new CommandOperation();
} else if (operation.getType().equals(org.wso2.carbon.device.mgt.common.operation.mgt.Operation.Type.PROFILE)) {
dtoOperation = new ProfileOperation();
- }else if(operation.getType().equals(org.wso2.carbon.device.mgt.common.operation.mgt.Operation.Type.POLICY)){
+ } else if (operation.getType().equals(org.wso2.carbon.device.mgt.common.operation.mgt.Operation.Type.POLICY)) {
dtoOperation = new PolicyOperation();
- }else if(operation.getType().equals(org.wso2.carbon.device.mgt.common.operation.mgt.Operation.Type.CONFIG)) {
+ } else if (operation.getType().equals(org.wso2.carbon.device.mgt.common.operation.mgt.Operation.Type.CONFIG)) {
dtoOperation = new ConfigOperation();
- }else{
+ } else {
dtoOperation = new Operation();
}
dtoOperation.setEnabled(operation.isEnabled());
dtoOperation.setCode(operation.getCode());
- if (operation.getType() != null){
+ if (operation.getType() != null) {
dtoOperation.setType(Operation.Type.valueOf(operation.getType().toString()));
- }else{
+ } else {
dtoOperation.setType(null);
}
dtoOperation.setCreatedTimeStamp(operation.getCreatedTimeStamp());
- if (operation.getStatus() != null){
+ if (operation.getStatus() != null) {
dtoOperation.setStatus(Operation.Status.valueOf(operation.getStatus().toString()));
- }else{
+ } else {
dtoOperation.setStatus(null);
}
@@ -70,31 +75,35 @@ public class OperationDAOUtil {
dtoOperation.setReceivedTimeStamp(operation.getReceivedTimeStamp());
dtoOperation.setProperties(operation.getProperties());
+ if (operation.getControl() != null) {
+ dtoOperation.setControl(Operation.Control.valueOf(operation.getControl().toString()));
+ }
+
return dtoOperation;
}
- public static org.wso2.carbon.device.mgt.common.operation.mgt.Operation convertOperation(Operation dtoOperation){
+ public static org.wso2.carbon.device.mgt.common.operation.mgt.Operation convertOperation(Operation dtoOperation) {
org.wso2.carbon.device.mgt.common.operation.mgt.Operation operation = null;
-
- if (dtoOperation.getType().equals(Operation.Type.COMMAND)){
+
+ if (dtoOperation.getType().equals(Operation.Type.COMMAND)) {
operation = new org.wso2.carbon.device.mgt.core.operation.mgt.CommandOperation();
- }else if(dtoOperation.getType().equals(Operation.Type.PROFILE)){
+ } else if (dtoOperation.getType().equals(Operation.Type.PROFILE)) {
operation = new org.wso2.carbon.device.mgt.core.operation.mgt.ProfileOperation();
- }else{
+ } else {
operation = new org.wso2.carbon.device.mgt.common.operation.mgt.Operation();
}
operation.setEnabled(dtoOperation.isEnabled());
operation.setCode(dtoOperation.getCode());
- if(dtoOperation.getType() != null) {
+ if (dtoOperation.getType() != null) {
operation.setType(org.wso2.carbon.device.mgt.common.operation.mgt.Operation.Type.valueOf(dtoOperation
.getType().toString()));
}
operation.setCreatedTimeStamp(dtoOperation.getCreatedTimeStamp());
- if(dtoOperation.getStatus() != null) {
+ if (dtoOperation.getStatus() != null) {
operation.setStatus(org.wso2.carbon.device.mgt.common.operation.mgt.Operation.Status.valueOf(dtoOperation
.getStatus().toString()));
}
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/conf/config.json b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/conf/config.json
index 171e5a7046..8c132ecbde 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/conf/config.json
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/conf/config.json
@@ -6,6 +6,7 @@
"httpsURL": "https://%iot.gateway.host%:%iot.gateway.https.port%",
"httpURL": "http://%iot.gateway.host%:%iot.gateway.http.port%",
"wssURL": "https://%iot.analytics.host%:%iot.analytics.https.port%",
+ "remoteSessionWSURL": "https://%iot.core.host%:%iot.core.https.port%",
"portalURL": "https://%iot.analytics.host%:%iot.analytics.https.port%",
"dashboardServerURL": "%https.ip%",
"androidEnrollmentDir": "/android-web-agent/enrollment",
diff --git a/components/identity-extensions/org.wso2.carbon.identity.jwt.client.extension/src/test/resources/carbon-home/repository/conf/cdm-config.xml b/components/identity-extensions/org.wso2.carbon.identity.jwt.client.extension/src/test/resources/carbon-home/repository/conf/cdm-config.xml
index 9097a645cb..18f2ad56ba 100644
--- a/components/identity-extensions/org.wso2.carbon.identity.jwt.client.extension/src/test/resources/carbon-home/repository/conf/cdm-config.xml
+++ b/components/identity-extensions/org.wso2.carbon.identity.jwt.client.extension/src/test/resources/carbon-home/repository/conf/cdm-config.xml
@@ -46,6 +46,11 @@
admin
admin
+
+ https://localhost:9443
+ admin
+ admin
+
org.wso2.carbon.policy.mgt
true
@@ -91,6 +96,16 @@
false
false
+
+ true
+ wss://localhost:9443
+ 2
+ 100
+ 20
+ 15
+ 60
+ 640
+
BYOD,COPE