diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/DeviceManagementService.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/DeviceManagementService.java
index e2d88ea046..02efa62f23 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/DeviceManagementService.java
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/DeviceManagementService.java
@@ -583,6 +583,66 @@ public interface DeviceManagementService {
@QueryParam("limit")
int limit);
+ @GET
+ @Produces(MediaType.APPLICATION_JSON)
+ @ApiOperation(
+ produces = MediaType.APPLICATION_JSON,
+ httpMethod = "GET",
+ value = "Getting Details of Registered Devices Owned by an Authenticated User",
+ notes = "Provides details of devices enrolled by authenticated users.",
+ tags = "Device Management",
+ extensions = {
+ @Extension(properties = {
+ @ExtensionProperty(name = Constants.SCOPE, value = "perm:devices:view")
+ })
+ }
+ )
+ @ApiResponses(value = {
+ @ApiResponse(code = 200, message = "OK. \n Successfully fetched the list of devices.",
+ response = DeviceList.class,
+ responseHeaders = {
+ @ResponseHeader(
+ name = "Content-Type",
+ description = "The content type of the body"),
+ @ResponseHeader(
+ name = "ETag",
+ description = "Entity Tag of the response resource.\n" +
+ "Used by caches, or in conditional requests."),
+ @ResponseHeader(
+ name = "Last-Modified",
+ description = "Date and time the resource was last modified.\n" +
+ "Used by caches, or in conditional requests."),
+ }),
+ @ApiResponse(
+ code = 304,
+ message = "Not Modified. \n Empty body because the client already has the latest version of " +
+ "the requested resource.\n"),
+ @ApiResponse(
+ code = 400,
+ message = "The incoming request has more than one selection criteria defined via the query parameters.",
+ response = ErrorResponse.class),
+ @ApiResponse(
+ code = 404,
+ message = "The search criteria did not match any device registered with the server.",
+ response = ErrorResponse.class),
+ @ApiResponse(
+ code = 406,
+ message = "Not Acceptable.\n The requested media type is not supported."),
+ @ApiResponse(
+ code = 500,
+ message = "Internal Server Error. \n Server error occurred while fetching the device list.",
+ response = ErrorResponse.class)
+ })
+ @Path("/traccar-user-token")
+ Response getTraccarUserToken(
+ @ApiParam(
+ name = "name",
+ value = "Boolean flag indicating whether to include device-info (location, application list etc) \n" +
+ " to the device object.",
+ required = false)
+ @QueryParam("name")
+ String name);
+
@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("/{groupId}/location-history")
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/TraccarService.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/TraccarService.java
deleted file mode 100644
index 33af90ce10..0000000000
--- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/TraccarService.java
+++ /dev/null
@@ -1,141 +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.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.beans.ErrorResponse;
-import org.wso2.carbon.device.mgt.jaxrs.beans.OperationList;
-import org.wso2.carbon.device.mgt.jaxrs.common.ActivityIdList;
-import org.wso2.carbon.device.mgt.jaxrs.util.Constants;
-
-import javax.validation.constraints.Size;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.Produces;
-import javax.ws.rs.QueryParam;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-
-/**
- * traccar related REST-API. This can be used to manipulated traccar related details.
- */
-@SwaggerDefinition(
- info = @Info(
- version = "1.0.0",
- title = "",
- extensions = {
- @Extension(properties = {
- @ExtensionProperty(name = "name", value = "TraccarService"),
- @ExtensionProperty(name = "context", value = "/api/device-mgt/v1.0/traccar"),
- })
- }
- ),
- tags = {
- @Tag(name = "traccar_service", description = "")
- }
-)
-@Scopes(
- scopes = {
- @Scope(
- name = "Return Traccar User token ",
- description = "Enroll a Traccar User if not exist and return the token",
- key = "perm:traccar:user",
- roles = {"Internal/devicemgt-user"},
- permissions = {"/device-mgt/traccar/manage"}
- )
- }
-)
-
-@Path("/traccar")
-@Produces(MediaType.APPLICATION_JSON)
-@Api(value = "Traccar Service", description = "Traccar Service")
-public interface TraccarService {
-
- @GET
- @Produces(MediaType.APPLICATION_JSON)
- @Path("/generate-token")
- @ApiOperation(
- produces = MediaType.APPLICATION_JSON,
- httpMethod = "GET",
- value = "Return Traccar User Token",
- tags = "Traccar Service",
- extensions = {
- @Extension(properties = {
- @ExtensionProperty(name = Constants.SCOPE, value = "perm:traccar:user")
- })
- }
- )
- @ApiResponses(value = {
- @ApiResponse(code = 200, message = "OK. \n Successfully retrieved the operations.",
- response = OperationList.class,
- responseHeaders = {
- @ResponseHeader(
- name = "Content-Type",
- description = "The content type of the body"),
- @ResponseHeader(
- name = "ETag",
- description = "Entity Tag of the response resource.\n" +
- "Used by caches, or in conditional requests."),
- @ResponseHeader(
- name = "Last-Modified",
- description = "Date and time the resource has been modified the last " +
- "time.\n" +
- "Used by caches, or in conditional requests."),
- }),
- @ApiResponse(
- code = 304,
- message = "Not Modified. \n Empty body because the client already has the latest version of " +
- "the requested resource.\n"),
- @ApiResponse(
- code = 400,
- message = "The incoming request has more than one selection criteria defined via the query parameters.",
- response = ErrorResponse.class),
- @ApiResponse(
- code = 404,
- message = "The search criteria did not match any device registered with the server.",
- response = ErrorResponse.class),
- @ApiResponse(
- code = 406,
- message = "Not Acceptable.\n The requested media type is not supported."),
- @ApiResponse(
- code = 500,
- message = "Internal Server Error. \n Server error occurred while fetching the device list.",
- response = ErrorResponse.class)
- })
- Response getUser(
- @ApiParam(
- name = "userName",
- value = "The user name.",
- required = true)
- @QueryParam("userName") String userName);
-}
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/DeviceManagementServiceImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/DeviceManagementServiceImpl.java
index 6e6882cfb8..bebef1bcf0 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/DeviceManagementServiceImpl.java
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/DeviceManagementServiceImpl.java
@@ -42,6 +42,7 @@ import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.json.JSONObject;
import org.wso2.carbon.context.CarbonContext;
import org.wso2.carbon.context.PrivilegedCarbonContext;
import io.entgra.application.mgt.common.ApplicationInstallResponse;
@@ -97,7 +98,9 @@ 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.service.DeviceManagementProviderService;
import org.wso2.carbon.device.mgt.core.service.GroupManagementProviderService;
+import org.wso2.carbon.device.mgt.core.traccar.api.service.impl.DeviceAPIClientServiceImpl;
import org.wso2.carbon.device.mgt.core.util.DeviceManagerUtil;
+import org.wso2.carbon.device.mgt.core.util.HttpReportingUtil;
import org.wso2.carbon.device.mgt.jaxrs.beans.DeviceList;
import org.wso2.carbon.device.mgt.jaxrs.beans.ErrorResponse;
import org.wso2.carbon.device.mgt.jaxrs.beans.DeviceCompliance;
@@ -463,6 +466,27 @@ public class DeviceManagementServiceImpl implements DeviceManagementService {
}
}
+ @GET
+ @Override
+ @Path("/traccar-user-token")
+ public Response getTraccarUserToken(@QueryParam("name") String name) {
+
+ if (HttpReportingUtil.isTrackerEnabled()) {
+ JSONObject obj = new JSONObject(DeviceAPIClientServiceImpl.returnUser(name));
+
+ log.info("=================");
+ log.info(obj.toString());
+ log.info("==================");
+ if(obj.has("error")){
+ return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(obj.getString("error")).build();
+ }else{
+ return Response.status(Response.Status.OK).entity(obj.getString("token")).build();
+ }
+ }else{
+ return Response.status(Response.Status.BAD_REQUEST).entity("Traccar is not enabled").build();
+ }
+ }
+
/**
* Validate group Id and group Id greater than 0 and exist.
*
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/TraccarServiceImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/TraccarServiceImpl.java
deleted file mode 100644
index 718d2a47fc..0000000000
--- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/TraccarServiceImpl.java
+++ /dev/null
@@ -1,59 +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.jaxrs.service.impl;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.json.JSONObject;
-import org.wso2.carbon.device.mgt.core.traccar.api.service.impl.DeviceAPIClientServiceImpl;
-import org.wso2.carbon.device.mgt.core.util.HttpReportingUtil;
-import org.wso2.carbon.device.mgt.jaxrs.service.api.TraccarService;
-
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.Produces;
-import javax.ws.rs.QueryParam;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-
-@Path("/traccar")
-@Produces(MediaType.APPLICATION_JSON)
-public class TraccarServiceImpl implements TraccarService {
- private static final Log log = LogFactory.getLog(TraccarServiceImpl.class);
-
- @GET
- @Path("/generate-token")
- @Override
- public Response getUser(@QueryParam("userName") String userName) {
- if (HttpReportingUtil.isTrackerEnabled()) {
- JSONObject obj = new JSONObject(DeviceAPIClientServiceImpl.returnUser(userName));
-
- log.info("=================");
- log.info(obj.toString());
- log.info("==================");
- if(obj.has("error")){
- return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(obj.getString("error")).build();
- }else{
- return Response.status(Response.Status.OK).entity(obj.getString("token")).build();
- }
- }else{
- return Response.status(Response.Status.BAD_REQUEST).entity("Traccar is not enabled").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 e80349a4b7..efce569c42 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
@@ -49,7 +49,6 @@
-
@@ -100,7 +99,6 @@
-