mirror of
https://repository.entgra.net/community/device-mgt-core.git
synced 2025-10-06 02:01:45 +00:00
Merge branch 'master' of https://github.com/wso2/carbon-device-mgt
This commit is contained in:
commit
61e7324f41
@ -18,27 +18,44 @@
|
||||
|
||||
package org.wso2.carbon.apimgt.webapp.publisher;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.wso2.carbon.apimgt.api.APIManagementException;
|
||||
import org.wso2.carbon.apimgt.api.APIProvider;
|
||||
import org.wso2.carbon.apimgt.api.model.*;
|
||||
import org.wso2.carbon.apimgt.impl.APIConstants;
|
||||
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.internal.APIPublisherDataHolder;
|
||||
import org.wso2.carbon.base.MultitenantConstants;
|
||||
import org.wso2.carbon.user.api.TenantManager;
|
||||
import org.wso2.carbon.user.api.UserStoreException;
|
||||
import org.wso2.carbon.utils.CarbonUtils;
|
||||
import org.wso2.carbon.utils.ConfigurationContextService;
|
||||
import org.wso2.carbon.utils.NetworkUtils;
|
||||
import org.wso2.carbon.utils.multitenancy.MultitenantUtils;
|
||||
|
||||
import javax.servlet.ServletContext;
|
||||
import java.util.*;
|
||||
|
||||
public class APIPublisherUtil {
|
||||
|
||||
private static final Log log = LogFactory.getLog(APIPublisherUtil.class);
|
||||
|
||||
private static final String DEFAULT_API_VERSION = "1.0.0";
|
||||
public static final String API_VERSION_PARAM="{version}";
|
||||
public static final String API_VERSION_PARAM = "{version}";
|
||||
public static final String API_PUBLISH_ENVIRONEMENT = "Production and Sandbox";
|
||||
|
||||
private static final String API_CONFIG_DEFAULT_VERSION = "1.0.0";
|
||||
|
||||
private static final String PARAM_MANAGED_API_NAME = "managed-api-name";
|
||||
private static final String PARAM_MANAGED_API_VERSION = "managed-api-version";
|
||||
private static final String PARAM_MANAGED_API_CONTEXT = "managed-api-context";
|
||||
private static final String PARAM_MANAGED_API_ENDPOINT = "managed-api-endpoint";
|
||||
private static final String PARAM_MANAGED_API_OWNER = "managed-api-owner";
|
||||
private static final String PARAM_MANAGED_API_TRANSPORTS = "managed-api-transports";
|
||||
private static final String PARAM_MANAGED_API_IS_SECURED = "managed-api-isSecured";
|
||||
private static final String PARAM_MANAGED_API_APPLICATION = "managed-api-application";
|
||||
private static final String PARAM_SHARED_WITH_ALL_TENANTS = "isSharedWithAllTenants";
|
||||
private static final String PARAM_PROVIDER_TENANT_DOMAIN = "providerTenantDomain";
|
||||
|
||||
enum HTTPMethod {
|
||||
GET, POST, DELETE, PUT, OPTIONS
|
||||
}
|
||||
@ -55,10 +72,12 @@ public class APIPublisherUtil {
|
||||
}
|
||||
|
||||
public static API getAPI(APIConfig config) throws APIManagementException {
|
||||
|
||||
APIProvider provider = config.getProvider();
|
||||
String apiVersion = config.getVersion();
|
||||
APIIdentifier id = new APIIdentifier(replaceEmailDomain(config.getOwner()), config.getName(), apiVersion);
|
||||
API api = new API(id);
|
||||
|
||||
api.setApiOwner(config.getOwner());
|
||||
String context = config.getContext();
|
||||
context = context.startsWith("/") ? context : ("/" + context);
|
||||
@ -67,12 +86,14 @@ public class APIPublisherUtil {
|
||||
//Create tenant aware context for API
|
||||
context = "/t/" + providerDomain + context;
|
||||
}
|
||||
|
||||
// This is to support the new Pluggable version strategy
|
||||
// if the context does not contain any {version} segment, we use the default version strategy.
|
||||
context = checkAndSetVersionParam(context);
|
||||
api.setContextTemplate(context);
|
||||
context = updateContextWithVersion(config.getVersion(), context);
|
||||
api.setContext(context);
|
||||
|
||||
api.setUrl(config.getEndpoint());
|
||||
api.addAvailableTiers(provider.getTiers());
|
||||
api.setEndpointSecured(true);
|
||||
@ -80,12 +101,15 @@ public class APIPublisherUtil {
|
||||
api.setTransports(config.getTransports());
|
||||
api.setContextTemplate(config.getContextTemplate());
|
||||
api.setUriTemplates(config.getUriTemplates());
|
||||
Set<String> environements = new HashSet<>();
|
||||
environements.add(API_PUBLISH_ENVIRONEMENT);
|
||||
api.setEnvironments(environements);
|
||||
|
||||
Set<String> environments = new HashSet<>();
|
||||
environments.add(API_PUBLISH_ENVIRONEMENT);
|
||||
api.setEnvironments(environments);
|
||||
|
||||
Set<Tier> tiers = new HashSet<Tier>();
|
||||
tiers.add(new Tier(APIConstants.UNLIMITED_TIER));
|
||||
api.addAvailableTiers(tiers);
|
||||
|
||||
if (config.isSharedWithAllTenants()) {
|
||||
api.setSubscriptionAvailability(APIConstants.SUBSCRIPTION_TO_ALL_TENANTS);
|
||||
api.setVisibility(APIConstants.API_GLOBAL_VISIBILITY);
|
||||
@ -95,7 +119,9 @@ public class APIPublisherUtil {
|
||||
}
|
||||
api.setResponseCache(APIConstants.DISABLED);
|
||||
|
||||
String endpointConfig = "{\"production_endpoints\":{\"url\":\" " + config.getEndpoint() + "\",\"config\":null},\"implementation_status\":\"managed\",\"endpoint_type\":\"http\"}";
|
||||
String endpointConfig = "{\"production_endpoints\":{\"url\":\" " + config.getEndpoint() +
|
||||
"\",\"config\":null},\"implementation_status\":\"managed\",\"endpoint_type\":\"http\"}";
|
||||
|
||||
api.setEndpointConfig(endpointConfig);
|
||||
|
||||
if ("".equals(id.getVersion()) || (DEFAULT_API_VERSION.equals(id.getVersion()))) {
|
||||
@ -163,13 +189,15 @@ public class APIPublisherUtil {
|
||||
}
|
||||
|
||||
/**
|
||||
* When an input is having '@',replace it with '-AT-' [This is required to persist API data in registry,as registry paths don't allow '@' sign.]
|
||||
* When an input is having '@',replace it with '-AT-'
|
||||
* [This is required to persist API data in registry,as registry paths don't allow '@' sign.]
|
||||
*
|
||||
* @param input inputString
|
||||
* @return String modifiedString
|
||||
*/
|
||||
private static String replaceEmailDomain(String input){
|
||||
if(input!=null&& input.contains(APIConstants.EMAIL_DOMAIN_SEPARATOR) ){
|
||||
input=input.replace(APIConstants.EMAIL_DOMAIN_SEPARATOR,APIConstants.EMAIL_DOMAIN_SEPARATOR_REPLACEMENT);
|
||||
private static String replaceEmailDomain(String input) {
|
||||
if (input != null && input.contains(APIConstants.EMAIL_DOMAIN_SEPARATOR)) {
|
||||
input = input.replace(APIConstants.EMAIL_DOMAIN_SEPARATOR, APIConstants.EMAIL_DOMAIN_SEPARATOR_REPLACEMENT);
|
||||
}
|
||||
return input;
|
||||
}
|
||||
@ -184,13 +212,129 @@ public class APIPublisherUtil {
|
||||
private static String checkAndSetVersionParam(String context) {
|
||||
// This is to support the new Pluggable version strategy
|
||||
// if the context does not contain any {version} segment, we use the default version strategy.
|
||||
if(!context.contains(API_VERSION_PARAM)){
|
||||
if(!context.endsWith("/")){
|
||||
if (!context.contains(API_VERSION_PARAM)) {
|
||||
if (!context.endsWith("/")) {
|
||||
context = context + "/";
|
||||
}
|
||||
context = context +API_VERSION_PARAM;
|
||||
context = context + API_VERSION_PARAM;
|
||||
}
|
||||
return context;
|
||||
}
|
||||
|
||||
/**
|
||||
* Build the API Configuration to be passed to APIM, from a given list of URL templates
|
||||
*
|
||||
* @param servletContext
|
||||
* @return
|
||||
*/
|
||||
public static APIConfig buildApiConfig(ServletContext servletContext, APIResourceConfiguration apidef) {
|
||||
APIConfig apiConfig = new APIConfig();
|
||||
|
||||
String name = apidef.getName();
|
||||
if (name == null || name.isEmpty()) {
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("API Name not set in @API Annotation");
|
||||
}
|
||||
name = servletContext.getServletContextName();
|
||||
}
|
||||
apiConfig.setName(name);
|
||||
|
||||
String version = apidef.getVersion();
|
||||
if (version == null || version.isEmpty()) {
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("'API Version not set in @API Annotation'");
|
||||
}
|
||||
version = API_CONFIG_DEFAULT_VERSION;
|
||||
}
|
||||
apiConfig.setVersion(version);
|
||||
|
||||
|
||||
String context = apidef.getContext();
|
||||
if (context == null || context.isEmpty()) {
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("'API Context not set in @API Annotation'");
|
||||
}
|
||||
context = servletContext.getContextPath();
|
||||
}
|
||||
apiConfig.setContext(context);
|
||||
|
||||
String[] tags = apidef.getTags();
|
||||
if (tags == null || tags.length == 0) {
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("'API tag not set in @API Annotation'");
|
||||
}
|
||||
} else {
|
||||
apiConfig.setTags(tags);
|
||||
}
|
||||
|
||||
String tenantDomain = servletContext.getInitParameter(PARAM_PROVIDER_TENANT_DOMAIN);
|
||||
tenantDomain = (tenantDomain != null && !tenantDomain.isEmpty()) ? tenantDomain :
|
||||
MultitenantConstants.SUPER_TENANT_DOMAIN_NAME;
|
||||
apiConfig.setTenantDomain(tenantDomain);
|
||||
String contextTemplate = context + "/" + APIConstants.VERSION_PLACEHOLDER;
|
||||
if (!tenantDomain.equals(MultitenantConstants.SUPER_TENANT_DOMAIN_NAME)) {
|
||||
contextTemplate = context + "/t/" + tenantDomain + "/" + APIConstants.VERSION_PLACEHOLDER;
|
||||
}
|
||||
apiConfig.setContextTemplate(contextTemplate);
|
||||
|
||||
String endpoint = servletContext.getInitParameter(PARAM_MANAGED_API_ENDPOINT);
|
||||
if (endpoint == null || endpoint.isEmpty()) {
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("'managed-api-endpoint' attribute is not configured");
|
||||
}
|
||||
String endpointContext = servletContext.getContextPath();
|
||||
endpoint = APIPublisherUtil.getApiEndpointUrl(endpointContext);
|
||||
}
|
||||
apiConfig.setEndpoint(endpoint);
|
||||
|
||||
String owner = servletContext.getInitParameter(PARAM_MANAGED_API_OWNER);
|
||||
if (owner == null || owner.isEmpty()) {
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("'managed-api-owner' attribute is not configured");
|
||||
}
|
||||
}
|
||||
apiConfig.setOwner(owner);
|
||||
|
||||
String isSecuredParam = servletContext.getInitParameter(PARAM_MANAGED_API_IS_SECURED);
|
||||
boolean isSecured;
|
||||
if (isSecuredParam == null || isSecuredParam.isEmpty()) {
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("'managed-api-isSecured' attribute is not configured. Therefore, using the default, " +
|
||||
"which is 'true'");
|
||||
}
|
||||
isSecured = false;
|
||||
} else {
|
||||
isSecured = Boolean.parseBoolean(isSecuredParam);
|
||||
}
|
||||
apiConfig.setSecured(isSecured);
|
||||
|
||||
String transports = servletContext.getInitParameter(PARAM_MANAGED_API_TRANSPORTS);
|
||||
if (transports == null || transports.isEmpty()) {
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("'managed-api-transports' attribute is not configured. Therefore using the default, " +
|
||||
"which is 'https'");
|
||||
}
|
||||
transports = "https";
|
||||
}
|
||||
apiConfig.setTransports(transports);
|
||||
|
||||
String sharingValueParam = servletContext.getInitParameter(PARAM_SHARED_WITH_ALL_TENANTS);
|
||||
boolean isSharedWithAllTenants = (sharingValueParam == null || (!sharingValueParam.isEmpty())
|
||||
&& Boolean.parseBoolean(sharingValueParam));
|
||||
apiConfig.setSharedWithAllTenants(isSharedWithAllTenants);
|
||||
|
||||
Set<URITemplate> uriTemplates = new LinkedHashSet<URITemplate>();
|
||||
for (APIResource apiResource : apidef.getResources()) {
|
||||
URITemplate template = new URITemplate();
|
||||
template.setAuthType(apiResource.getAuthType());
|
||||
template.setHTTPVerb(apiResource.getHttpVerb());
|
||||
template.setResourceURI(apiResource.getUri());
|
||||
template.setUriTemplate(apiResource.getUriTemplate());
|
||||
uriTemplates.add(template);
|
||||
}
|
||||
apiConfig.setUriTemplates(uriTemplates);
|
||||
|
||||
return apiConfig;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -25,205 +25,82 @@ import org.apache.catalina.core.StandardContext;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.wso2.carbon.apimgt.api.model.*;
|
||||
import org.wso2.carbon.apimgt.impl.APIConstants;
|
||||
import org.wso2.carbon.apimgt.webapp.publisher.*;
|
||||
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.internal.APIPublisherDataHolder;
|
||||
import org.wso2.carbon.apimgt.webapp.publisher.lifecycle.util.AnnotationUtil;
|
||||
import org.wso2.carbon.base.MultitenantConstants;
|
||||
|
||||
import javax.servlet.ServletContext;
|
||||
import java.io.IOException;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
public class APIPublisherLifecycleListener implements LifecycleListener {
|
||||
|
||||
private static final String API_CONFIG_DEFAULT_VERSION = "1.0.0";
|
||||
private static final Log log = LogFactory.getLog(APIPublisherLifecycleListener.class);
|
||||
|
||||
private static final String PARAM_MANAGED_API_ENABLED = "managed-api-enabled";
|
||||
private static final String PARAM_MANAGED_API_NAME = "managed-api-name";
|
||||
private static final String PARAM_MANAGED_API_VERSION = "managed-api-version";
|
||||
private static final String PARAM_MANAGED_API_CONTEXT = "managed-api-context";
|
||||
private static final String PARAM_MANAGED_API_ENDPOINT = "managed-api-endpoint";
|
||||
private static final String PARAM_MANAGED_API_OWNER = "managed-api-owner";
|
||||
private static final String PARAM_MANAGED_API_TRANSPORTS = "managed-api-transports";
|
||||
private static final String PARAM_MANAGED_API_IS_SECURED = "managed-api-isSecured";
|
||||
private static final String PARAM_MANAGED_API_APPLICATION = "managed-api-application";
|
||||
private static final String PARAM_SHARED_WITH_ALL_TENANTS = "isSharedWithAllTenants";
|
||||
private static final String PARAM_PROVIDER_TENANT_DOMAIN = "providerTenantDomain";
|
||||
private static final Log log = LogFactory.getLog(APIPublisherLifecycleListener.class);
|
||||
private static final String PARAM_MANAGED_API_ENABLED = "managed-api-enabled";
|
||||
|
||||
@Override
|
||||
public void lifecycleEvent(LifecycleEvent lifecycleEvent) {
|
||||
if (Lifecycle.AFTER_START_EVENT.equals(lifecycleEvent.getType())) {
|
||||
StandardContext context = (StandardContext) lifecycleEvent.getLifecycle();
|
||||
ServletContext servletContext = context.getServletContext();
|
||||
String param = servletContext.getInitParameter(PARAM_MANAGED_API_ENABLED);
|
||||
boolean isManagedApi = (param != null && !param.isEmpty()) && Boolean.parseBoolean(param);
|
||||
@Override
|
||||
public void lifecycleEvent(LifecycleEvent lifecycleEvent) {
|
||||
if (Lifecycle.AFTER_START_EVENT.equals(lifecycleEvent.getType())) {
|
||||
StandardContext context = (StandardContext) lifecycleEvent.getLifecycle();
|
||||
ServletContext servletContext = context.getServletContext();
|
||||
String param = servletContext.getInitParameter(PARAM_MANAGED_API_ENABLED);
|
||||
boolean isManagedApi = (param != null && !param.isEmpty()) && Boolean.parseBoolean(param);
|
||||
|
||||
if (isManagedApi) {
|
||||
try {
|
||||
AnnotationUtil annotationUtil = new AnnotationUtil(context);
|
||||
Set<String> annotatedAPIClasses = annotationUtil.
|
||||
scanStandardContext(org.wso2.carbon.apimgt.annotations.api.API.class.getName());
|
||||
List<APIResourceConfiguration> apiDefinitions = annotationUtil.extractAPIInfo(servletContext, annotatedAPIClasses);
|
||||
if (isManagedApi) {
|
||||
try {
|
||||
AnnotationUtil annotationUtil = new AnnotationUtil(context);
|
||||
Set<String> annotatedAPIClasses = annotationUtil.
|
||||
scanStandardContext(org.wso2.carbon.apimgt.annotations.api.API.class.getName());
|
||||
List<APIResourceConfiguration> apiDefinitions = annotationUtil.extractAPIInfo(servletContext,
|
||||
annotatedAPIClasses);
|
||||
|
||||
for (APIResourceConfiguration apiDefinition : apiDefinitions) {
|
||||
APIConfig apiConfig = this.buildApiConfig(servletContext, apiDefinition);
|
||||
try {
|
||||
int tenantId = APIPublisherDataHolder.getInstance().getTenantManager().getTenantId(apiConfig.getTenantDomain());
|
||||
boolean isTenantActive = APIPublisherDataHolder.getInstance().getTenantManager().isTenantActive(tenantId);
|
||||
if (isTenantActive) {
|
||||
apiConfig.init();
|
||||
API api = APIPublisherUtil.getAPI(apiConfig);
|
||||
APIPublisherService apiPublisherService =
|
||||
APIPublisherDataHolder.getInstance().getApiPublisherService();
|
||||
if (apiPublisherService == null) {
|
||||
throw new IllegalStateException(
|
||||
"API Publisher service is not initialized properly");
|
||||
}
|
||||
apiPublisherService.publishAPI(api);
|
||||
} else {
|
||||
log.error("No tenant [" + apiConfig.getTenantDomain() + "] found when publishing the webapp");
|
||||
}
|
||||
} catch (Throwable e) {
|
||||
log.error("Error occurred while publishing API '" + apiConfig.getName() +
|
||||
"' with the context '" + apiConfig.getContext() +
|
||||
"' and version '" + apiConfig.getVersion() + "'", e);
|
||||
}
|
||||
}
|
||||
} catch (IOException e) {
|
||||
log.error("Error enconterd while discovering annotated classes", e);
|
||||
} catch (ClassNotFoundException e) {
|
||||
log.error("Error while scanning class for annotations", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
for (APIResourceConfiguration apiDefinition : apiDefinitions) {
|
||||
|
||||
private List<APIResourceConfiguration> mergeAPIDefinitions(List<APIResourceConfiguration> inputList) {
|
||||
//TODO : Need to implemented, to merge API Definitions in cases where implementation of an API Lies in two
|
||||
// classes
|
||||
return null;
|
||||
}
|
||||
APIConfig apiConfig = APIPublisherUtil.buildApiConfig(servletContext, apiDefinition);
|
||||
|
||||
/**
|
||||
* Build the API Configuration to be passed to APIM, from a given list of URL templates
|
||||
*
|
||||
* @param servletContext
|
||||
* @return
|
||||
*/
|
||||
private APIConfig buildApiConfig(ServletContext servletContext, APIResourceConfiguration apidef) {
|
||||
APIConfig apiConfig = new APIConfig();
|
||||
try {
|
||||
int tenantId = APIPublisherDataHolder.getInstance().getTenantManager().
|
||||
getTenantId(apiConfig.getTenantDomain());
|
||||
|
||||
String name = apidef.getName();
|
||||
if (name == null || name.isEmpty()) {
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("API Name not set in @API Annotation");
|
||||
}
|
||||
name = servletContext.getServletContextName();
|
||||
}
|
||||
apiConfig.setName(name);
|
||||
boolean isTenantActive = APIPublisherDataHolder.getInstance().
|
||||
getTenantManager().isTenantActive(tenantId);
|
||||
|
||||
String version = apidef.getVersion();
|
||||
if (version == null || version.isEmpty()) {
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("'API Version not set in @API Annotation'");
|
||||
}
|
||||
version = API_CONFIG_DEFAULT_VERSION;
|
||||
}
|
||||
apiConfig.setVersion(version);
|
||||
if (isTenantActive) {
|
||||
apiConfig.init();
|
||||
API api = APIPublisherUtil.getAPI(apiConfig);
|
||||
APIPublisherService apiPublisherService =
|
||||
APIPublisherDataHolder.getInstance().getApiPublisherService();
|
||||
if (apiPublisherService == null) {
|
||||
throw new IllegalStateException(
|
||||
"API Publisher service is not initialized properly");
|
||||
}
|
||||
apiPublisherService.publishAPI(api);
|
||||
} else {
|
||||
log.error("No tenant [" + apiConfig.getTenantDomain() + "] " +
|
||||
"found when publishing the Web app");
|
||||
}
|
||||
} catch (Throwable e) {
|
||||
log.error("Error occurred while publishing API '" + apiConfig.getName() +
|
||||
"' with the context '" + apiConfig.getContext() +
|
||||
"' and version '" + apiConfig.getVersion() + "'", e);
|
||||
}
|
||||
}
|
||||
} catch (IOException e) {
|
||||
log.error("Error encountered while discovering annotated classes", e);
|
||||
} catch (ClassNotFoundException e) {
|
||||
log.error("Error while scanning class for annotations", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
String context = apidef.getContext();
|
||||
if (context == null || context.isEmpty()) {
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("'API Context not set in @API Annotation'");
|
||||
}
|
||||
context = servletContext.getContextPath();
|
||||
}
|
||||
apiConfig.setContext(context);
|
||||
|
||||
String[] tags = apidef.getTags();
|
||||
if (tags == null || tags.length == 0) {
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("'API tag not set in @API Annotation'");
|
||||
}
|
||||
} else {
|
||||
apiConfig.setTags(tags);
|
||||
}
|
||||
|
||||
String tenantDomain = servletContext.getInitParameter(PARAM_PROVIDER_TENANT_DOMAIN);
|
||||
tenantDomain = (tenantDomain != null && !tenantDomain.isEmpty()) ? tenantDomain :
|
||||
MultitenantConstants.SUPER_TENANT_DOMAIN_NAME;
|
||||
apiConfig.setTenantDomain(tenantDomain);
|
||||
String contextTemplate = context + "/" + APIConstants.VERSION_PLACEHOLDER;
|
||||
if (!tenantDomain.equals(MultitenantConstants.SUPER_TENANT_DOMAIN_NAME)) {
|
||||
contextTemplate = context + "/t/" + tenantDomain + "/" + APIConstants.VERSION_PLACEHOLDER;
|
||||
}
|
||||
apiConfig.setContextTemplate(contextTemplate);
|
||||
|
||||
String endpoint = servletContext.getInitParameter(PARAM_MANAGED_API_ENDPOINT);
|
||||
if (endpoint == null || endpoint.isEmpty()) {
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("'managed-api-endpoint' attribute is not configured");
|
||||
}
|
||||
String endpointContext = servletContext.getContextPath();
|
||||
endpoint = APIPublisherUtil.getApiEndpointUrl(endpointContext);
|
||||
}
|
||||
apiConfig.setEndpoint(endpoint);
|
||||
|
||||
String owner = servletContext.getInitParameter(PARAM_MANAGED_API_OWNER);
|
||||
if (owner == null || owner.isEmpty()) {
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("'managed-api-owner' attribute is not configured");
|
||||
}
|
||||
}
|
||||
apiConfig.setOwner(owner);
|
||||
|
||||
String isSecuredParam = servletContext.getInitParameter(PARAM_MANAGED_API_IS_SECURED);
|
||||
boolean isSecured;
|
||||
if (isSecuredParam == null || isSecuredParam.isEmpty()) {
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("'managed-api-isSecured' attribute is not configured. Therefore, using the default, " +
|
||||
"which is 'true'");
|
||||
}
|
||||
isSecured = false;
|
||||
} else {
|
||||
isSecured = Boolean.parseBoolean(isSecuredParam);
|
||||
}
|
||||
apiConfig.setSecured(isSecured);
|
||||
|
||||
String transports = servletContext.getInitParameter(PARAM_MANAGED_API_TRANSPORTS);
|
||||
if (transports == null || transports.isEmpty()) {
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("'managed-api-transports' attribute is not configured. Therefore using the default, " +
|
||||
"which is 'https'");
|
||||
}
|
||||
transports = "https";
|
||||
}
|
||||
apiConfig.setTransports(transports);
|
||||
|
||||
String sharingValueParam = servletContext.getInitParameter(PARAM_SHARED_WITH_ALL_TENANTS);
|
||||
boolean isSharedWithAllTenants = (sharingValueParam == null || (!sharingValueParam.isEmpty()) && Boolean.parseBoolean(
|
||||
sharingValueParam));
|
||||
apiConfig.setSharedWithAllTenants(isSharedWithAllTenants);
|
||||
|
||||
Set<URITemplate> uriTemplates = new LinkedHashSet<URITemplate>();
|
||||
for (APIResource apiResource : apidef.getResources()) {
|
||||
URITemplate template = new URITemplate();
|
||||
template.setAuthType(apiResource.getAuthType());
|
||||
template.setHTTPVerb(apiResource.getHttpVerb());
|
||||
template.setResourceURI(apiResource.getUri());
|
||||
template.setUriTemplate(apiResource.getUriTemplate());
|
||||
uriTemplates.add(template);
|
||||
}
|
||||
apiConfig.setUriTemplates(uriTemplates);
|
||||
|
||||
return apiConfig;
|
||||
}
|
||||
//TODO : Need to implemented, to merge API Definitions in cases where implementation of an API Lies in two classes
|
||||
private List<APIResourceConfiguration> mergeAPIDefinitions(List<APIResourceConfiguration> inputList) {
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -24,8 +24,10 @@ import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.scannotation.AnnotationDB;
|
||||
import org.scannotation.WarUrlFinder;
|
||||
import org.wso2.carbon.apimgt.annotations.api.API;
|
||||
import org.wso2.carbon.apimgt.webapp.publisher.config.APIResource;
|
||||
import org.wso2.carbon.apimgt.webapp.publisher.config.APIResourceConfiguration;
|
||||
|
||||
import javax.servlet.ServletContext;
|
||||
import javax.ws.rs.*;
|
||||
import java.io.IOException;
|
||||
@ -45,17 +47,18 @@ public class AnnotationUtil {
|
||||
private static final String PACKAGE_ORG_APACHE = "org.apache";
|
||||
private static final String PACKAGE_ORG_CODEHAUS = "org.codehaus";
|
||||
private static final String PACKAGE_ORG_SPRINGFRAMEWORK = "org.springframework";
|
||||
|
||||
private static final String AUTH_TYPE = "Any";
|
||||
private static final String PROTOCOL_HTTP = "http";
|
||||
private static final String SERVER_HOST = "carbon.local.ip";
|
||||
private static final String HTTP_PORT = "httpPort";
|
||||
public static final String DIR_WEB_INF_LIB = "/WEB-INF/lib";
|
||||
public static final String STRING_ARR = "string_arr";
|
||||
public static final String STRING = "string";
|
||||
private static final String STRING_ARR = "string_arr";
|
||||
private static final String STRING = "string";
|
||||
|
||||
private StandardContext context;
|
||||
private Method[] pathClazzMethods;
|
||||
private Class<Path> pathClazz;
|
||||
Class<API> apiClazz;
|
||||
private ClassLoader classLoader;
|
||||
private ServletContext servletContext;
|
||||
|
||||
@ -68,6 +71,7 @@ public class AnnotationUtil {
|
||||
|
||||
/**
|
||||
* Scan the context for classes with annotations
|
||||
*
|
||||
* @return
|
||||
* @throws IOException
|
||||
*/
|
||||
@ -89,6 +93,7 @@ public class AnnotationUtil {
|
||||
|
||||
/**
|
||||
* Method identifies the URL templates and context by reading the annotations of a class
|
||||
*
|
||||
* @param entityClasses
|
||||
* @return
|
||||
*/
|
||||
@ -107,38 +112,23 @@ public class AnnotationUtil {
|
||||
APIResourceConfiguration apiResourceConfig = null;
|
||||
try {
|
||||
clazz = classLoader.loadClass(className);
|
||||
Class<Path> apiClazz = (Class<Path>)
|
||||
classLoader.loadClass(org.wso2.carbon.apimgt.annotations.api.API.class.getName());
|
||||
|
||||
apiClazz = (Class<API>)
|
||||
classLoader.loadClass(org.wso2.carbon.apimgt.annotations.api.API
|
||||
.class.getName());
|
||||
|
||||
Annotation apiAnno = clazz.getAnnotation(apiClazz);
|
||||
|
||||
List<APIResource> resourceList;
|
||||
apiResourceConfig = new APIResourceConfiguration();
|
||||
|
||||
if (apiAnno != null) {
|
||||
|
||||
Method[] apiClazzMethods = apiClazz.getMethods();
|
||||
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("Application Context root = " + servletContext.getContextPath());
|
||||
}
|
||||
|
||||
try {
|
||||
for(int k=0;k<apiClazzMethods.length;k++){
|
||||
switch (apiClazzMethods[k].getName()){
|
||||
case "name" :
|
||||
apiResourceConfig.setName(invokeMethod(apiClazzMethods[k], apiAnno, STRING));
|
||||
break;
|
||||
case "version" :
|
||||
apiResourceConfig.setVersion(invokeMethod(apiClazzMethods[k], apiAnno, STRING));
|
||||
break;
|
||||
case "context" :
|
||||
apiResourceConfig.setContext(invokeMethod(apiClazzMethods[k], apiAnno, STRING));
|
||||
break;
|
||||
case "tags" :
|
||||
apiResourceConfig.setTags(invokeMethod(apiClazzMethods[k], apiAnno));
|
||||
break;
|
||||
}
|
||||
}
|
||||
apiResourceConfig = processAPIAnnotation(apiAnno);
|
||||
// All the apis should map to same root "/"
|
||||
String rootContext = servletContext.getContextPath();
|
||||
pathClazz = (Class<Path>) classLoader.loadClass(Path.class.getName());
|
||||
@ -177,7 +167,45 @@ public class AnnotationUtil {
|
||||
return apiResourceConfigs;
|
||||
}
|
||||
|
||||
private List<APIResource> getApiResources(String resourceRootContext, String apiRootContext, Method[] annotatedMethods) throws Throwable {
|
||||
/**
|
||||
* Iterate API annotation and build API Configuration
|
||||
* @param apiAnno
|
||||
* @return
|
||||
* @throws Throwable
|
||||
*/
|
||||
private APIResourceConfiguration processAPIAnnotation(Annotation apiAnno) throws Throwable {
|
||||
Method[] apiClazzMethods = apiClazz.getMethods();
|
||||
APIResourceConfiguration apiResourceConfig = new APIResourceConfiguration();
|
||||
for (int k = 0; k < apiClazzMethods.length; k++) {
|
||||
switch (apiClazzMethods[k].getName()) {
|
||||
case "name":
|
||||
apiResourceConfig.setName(invokeMethod(apiClazzMethods[k], apiAnno, STRING));
|
||||
break;
|
||||
case "version":
|
||||
apiResourceConfig.setVersion(invokeMethod(apiClazzMethods[k], apiAnno, STRING));
|
||||
break;
|
||||
case "context":
|
||||
apiResourceConfig.setContext(invokeMethod(apiClazzMethods[k], apiAnno, STRING));
|
||||
break;
|
||||
case "tags":
|
||||
apiResourceConfig.setTags(invokeMethod(apiClazzMethods[k], apiAnno));
|
||||
break;
|
||||
}
|
||||
}
|
||||
return apiResourceConfig;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get Resources for each API
|
||||
* @param resourceRootContext
|
||||
* @param apiRootContext
|
||||
* @param annotatedMethods
|
||||
* @return
|
||||
* @throws Throwable
|
||||
*/
|
||||
private List<APIResource> getApiResources(String resourceRootContext, String apiRootContext,
|
||||
Method[] annotatedMethods) throws Throwable {
|
||||
List<APIResource> resourceList;
|
||||
resourceList = new ArrayList<APIResource>();
|
||||
for (Method method : annotatedMethods) {
|
||||
@ -195,31 +223,19 @@ public class AnnotationUtil {
|
||||
resource.setAuthType(AUTH_TYPE);
|
||||
|
||||
Annotation[] annotations = method.getDeclaredAnnotations();
|
||||
for(int i=0; i<annotations.length; i++){
|
||||
for (int i = 0; i < annotations.length; i++) {
|
||||
|
||||
if(annotations[i].annotationType().getName().equals(GET.class.getName())){
|
||||
resource.setHttpVerb(HttpMethod.GET);
|
||||
}
|
||||
if(annotations[i].annotationType().getName().equals(POST.class.getName())){
|
||||
resource.setHttpVerb(HttpMethod.POST);
|
||||
}
|
||||
if(annotations[i].annotationType().getName().equals(OPTIONS.class.getName())){
|
||||
resource.setHttpVerb(HttpMethod.OPTIONS);
|
||||
}
|
||||
if(annotations[i].annotationType().getName().equals(DELETE.class.getName())){
|
||||
resource.setHttpVerb(HttpMethod.DELETE);
|
||||
}
|
||||
if(annotations[i].annotationType().getName().equals(PUT.class.getName())){
|
||||
resource.setHttpVerb(HttpMethod.PUT);
|
||||
}
|
||||
if(annotations[i].annotationType().getName().equals(Consumes.class.getName())){
|
||||
Class<Consumes> consumesClass = (Class<Consumes>) classLoader.loadClass(Consumes.class.getName());
|
||||
processHTTPMethodAnnotation(resource, annotations[i]);
|
||||
if (annotations[i].annotationType().getName().equals(Consumes.class.getName())) {
|
||||
Class<Consumes> consumesClass = (Class<Consumes>) classLoader.loadClass(
|
||||
Consumes.class.getName());
|
||||
Method[] consumesClassMethods = consumesClass.getMethods();
|
||||
Annotation consumesAnno = method.getAnnotation(consumesClass);
|
||||
resource.setConsumes(invokeMethod(consumesClassMethods[0], consumesAnno, STRING_ARR));
|
||||
}
|
||||
if(annotations[i].annotationType().getName().equals(Produces.class.getName())){
|
||||
Class<Produces> producesClass = (Class<Produces>) classLoader.loadClass(Produces.class.getName());
|
||||
if (annotations[i].annotationType().getName().equals(Produces.class.getName())) {
|
||||
Class<Produces> producesClass = (Class<Produces>) classLoader.loadClass(
|
||||
Produces.class.getName());
|
||||
Method[] producesClassMethods = producesClass.getMethods();
|
||||
Annotation producesAnno = method.getAnnotation(producesClass);
|
||||
resource.setProduces(invokeMethod(producesClassMethods[0], producesAnno, STRING_ARR));
|
||||
@ -231,12 +247,40 @@ public class AnnotationUtil {
|
||||
return resourceList;
|
||||
}
|
||||
|
||||
private String makeContextURLReady(String context){
|
||||
if(context != null && !context.equalsIgnoreCase("")){
|
||||
if(context.startsWith("/")){
|
||||
/**
|
||||
* Read Method annotations indicating HTTP Methods
|
||||
* @param resource
|
||||
* @param annotation
|
||||
*/
|
||||
private void processHTTPMethodAnnotation(APIResource resource, Annotation annotation) {
|
||||
if (annotation.annotationType().getName().equals(GET.class.getName())) {
|
||||
resource.setHttpVerb(HttpMethod.GET);
|
||||
}
|
||||
if (annotation.annotationType().getName().equals(POST.class.getName())) {
|
||||
resource.setHttpVerb(HttpMethod.POST);
|
||||
}
|
||||
if (annotation.annotationType().getName().equals(OPTIONS.class.getName())) {
|
||||
resource.setHttpVerb(HttpMethod.OPTIONS);
|
||||
}
|
||||
if (annotation.annotationType().getName().equals(DELETE.class.getName())) {
|
||||
resource.setHttpVerb(HttpMethod.DELETE);
|
||||
}
|
||||
if (annotation.annotationType().getName().equals(PUT.class.getName())) {
|
||||
resource.setHttpVerb(HttpMethod.PUT);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Append '/' to the context and make it URL ready
|
||||
* @param context
|
||||
* @return
|
||||
*/
|
||||
private String makeContextURLReady(String context) {
|
||||
if (context != null && !context.equalsIgnoreCase("")) {
|
||||
if (context.startsWith("/")) {
|
||||
return context;
|
||||
}else{
|
||||
return "/"+context;
|
||||
} else {
|
||||
return "/" + context;
|
||||
}
|
||||
}
|
||||
return "";
|
||||
@ -244,6 +288,7 @@ public class AnnotationUtil {
|
||||
|
||||
/**
|
||||
* When an annotation and method is passed, this method invokes that executes said method against the annotation
|
||||
*
|
||||
* @param method
|
||||
* @param annotation
|
||||
* @param returnType
|
||||
@ -252,11 +297,11 @@ public class AnnotationUtil {
|
||||
*/
|
||||
private String invokeMethod(Method method, Annotation annotation, String returnType) throws Throwable {
|
||||
InvocationHandler methodHandler = Proxy.getInvocationHandler(annotation);
|
||||
switch (returnType){
|
||||
switch (returnType) {
|
||||
case STRING:
|
||||
return (String) methodHandler.invoke(annotation, method, null);
|
||||
case STRING_ARR:
|
||||
return ((String[])methodHandler.invoke(annotation, method, null))[0];
|
||||
return ((String[]) methodHandler.invoke(annotation, method, null))[0];
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
@ -267,6 +312,6 @@ public class AnnotationUtil {
|
||||
*/
|
||||
private String[] invokeMethod(Method method, Annotation annotation) throws Throwable {
|
||||
InvocationHandler methodHandler = Proxy.getInvocationHandler(annotation);
|
||||
return ((String[])methodHandler.invoke(annotation, method, null));
|
||||
return ((String[]) methodHandler.invoke(annotation, method, null));
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1,82 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<parent>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<artifactId>device-mgt</artifactId>
|
||||
<version>1.1.0-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<artifactId>org.wso2.carbon.device.mgt.analytics.dashboard</artifactId>
|
||||
<packaging>bundle</packaging>
|
||||
<name>WSO2 Carbon - Device Management Dashboard Analytics</name>
|
||||
<description>WSO2 Carbon - Device Management Dashboard Analytics</description>
|
||||
<url>http://wso2.org</url>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.eclipse.osgi</groupId>
|
||||
<artifactId>org.eclipse.osgi.services</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.wso2.carbon</groupId>
|
||||
<artifactId>org.wso2.carbon.logging</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<artifactId>org.wso2.carbon.device.mgt.common</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<artifactId>org.wso2.carbon.device.mgt.core</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.wso2.carbon</groupId>
|
||||
<artifactId>org.wso2.carbon.ndatasource.core</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.felix</groupId>
|
||||
<artifactId>maven-scr-plugin</artifactId>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.felix</groupId>
|
||||
<artifactId>maven-bundle-plugin</artifactId>
|
||||
<version>1.4.0</version>
|
||||
<extensions>true</extensions>
|
||||
<configuration>
|
||||
<instructions>
|
||||
<Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
|
||||
<Bundle-Name>${project.artifactId}</Bundle-Name>
|
||||
<Bundle-Version>${carbon.device.mgt.version}</Bundle-Version>
|
||||
<Bundle-Description>Device Management Dashboard Analytics Bundle</Bundle-Description>
|
||||
<Private-Package>
|
||||
org.wso2.carbon.device.mgt.analytics.dashboard.dao,
|
||||
org.wso2.carbon.device.mgt.analytics.dashboard.internal
|
||||
</Private-Package>
|
||||
<Export-Package>
|
||||
org.wso2.carbon.device.mgt.analytics.dashboard
|
||||
</Export-Package>
|
||||
<Import-Package>
|
||||
org.osgi.framework,
|
||||
org.osgi.service.component,
|
||||
org.apache.commons.logging.*,
|
||||
javax.sql,
|
||||
org.wso2.carbon.context,
|
||||
org.wso2.carbon.device.mgt.common.*,
|
||||
org.wso2.carbon.device.mgt.core.*,
|
||||
org.wso2.carbon.ndatasource.core.*;
|
||||
</Import-Package>
|
||||
</instructions>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
</project>
|
||||
@ -0,0 +1,72 @@
|
||||
/*
|
||||
* 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.analytics.dashboard;
|
||||
|
||||
import org.wso2.carbon.device.mgt.common.PaginationRequest;
|
||||
import org.wso2.carbon.device.mgt.common.PaginationResult;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* To be updated...
|
||||
*/
|
||||
public interface GadgetDataService {
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
int getTotalDeviceCount();
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
int getActiveDeviceCount();
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
int getInactiveDeviceCount();
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
int getRemovedDeviceCount();
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
int getNonCompliantDeviceCount();
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
int getUnmonitoredDeviceCount();
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
PaginationResult getNonCompliantDeviceCountsByFeatures(PaginationRequest paginationRequest);
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
int getDeviceCount(Map<String, Object> filters);
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
int getFeatureNonCompliantDeviceCount(String nonCompliantFeatureCode, Map<String, Object> filters);
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
Map<String, Integer> getDeviceCountsByPlatforms(Map<String, Object> filters);
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
Map<String, Integer> getFeatureNonCompliantDeviceCountsByPlatforms(String nonCompliantFeatureCode,
|
||||
Map<String, Object> filters);
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
Map<String, Integer> getDeviceCountsByOwnershipTypes(Map<String, Object> filters);
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
Map<String, Integer> getFeatureNonCompliantDeviceCountsByOwnershipTypes(String nonCompliantFeatureCode,
|
||||
Map<String, Object> filters);
|
||||
|
||||
}
|
||||
@ -0,0 +1,90 @@
|
||||
/*
|
||||
* 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.analytics.dashboard.dao;
|
||||
|
||||
import org.wso2.carbon.device.mgt.common.PaginationRequest;
|
||||
import org.wso2.carbon.device.mgt.common.PaginationResult;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public interface GadgetDataServiceDAO {
|
||||
|
||||
/**
|
||||
* Method to get total filtered device count from a particular tenant.
|
||||
*
|
||||
* @return Total filtered device count.
|
||||
*/
|
||||
int getTotalDeviceCount() throws GadgetDataServiceDAOException;
|
||||
|
||||
int getActiveDeviceCount() throws GadgetDataServiceDAOException;
|
||||
|
||||
int getInactiveDeviceCount() throws GadgetDataServiceDAOException;
|
||||
|
||||
int getRemovedDeviceCount() throws GadgetDataServiceDAOException;
|
||||
|
||||
/**
|
||||
* Method to get non-compliant device count.
|
||||
*
|
||||
* @return Non-compliant device count.
|
||||
*/
|
||||
@SuppressWarnings("unused")
|
||||
int getNonCompliantDeviceCount() throws GadgetDataServiceDAOException;
|
||||
|
||||
/**
|
||||
* Method to get unmonitored device count.
|
||||
*
|
||||
* @return Unmonitored device count.
|
||||
*/
|
||||
@SuppressWarnings("unused")
|
||||
int getUnmonitoredDeviceCount() throws GadgetDataServiceDAOException;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
PaginationResult getNonCompliantDeviceCountsByFeatures(PaginationRequest paginationRequest) throws GadgetDataServiceDAOException;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
int getDeviceCount(Map<String, Object> filters) throws GadgetDataServiceDAOException;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
int getFeatureNonCompliantDeviceCount(String nonCompliantFeatureCode,
|
||||
Map<String, Object> filters) throws GadgetDataServiceDAOException;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
Map<String, Integer> getDeviceCountsByPlatforms(Map<String, Object> filters) throws GadgetDataServiceDAOException;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
Map<String, Integer> getFeatureNonCompliantDeviceCountsByPlatforms(String nonCompliantFeatureCode,
|
||||
Map<String, Object> filters) throws GadgetDataServiceDAOException;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
Map<String, Integer> getDeviceCountsByOwnershipTypes(Map<String, Object> filters)
|
||||
throws GadgetDataServiceDAOException;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
Map<String, Integer> getFeatureNonCompliantDeviceCountsByOwnershipTypes(String nonCompliantFeatureCode,
|
||||
Map<String, Object> filters) throws GadgetDataServiceDAOException;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
List<Map<String, Object>> getDevicesWithDetails(Map<String, Object> filters) throws GadgetDataServiceDAOException;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
List<Map<String, Object>> getFeatureNonCompliantDevicesWithDetails(String nonCompliantFeatureCode,
|
||||
Map<String, Object> filters) throws GadgetDataServiceDAOException;
|
||||
|
||||
}
|
||||
@ -0,0 +1,77 @@
|
||||
/*
|
||||
* 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.analytics.dashboard.dao;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
/**
|
||||
* Custom exception class for data access related exceptions.
|
||||
*/
|
||||
public class GadgetDataServiceDAOException extends Exception {
|
||||
private String errorMessage;
|
||||
private static final long serialVersionUID = 2021891706072918864L;
|
||||
|
||||
/**
|
||||
* Constructs a new exception with the specific error message and nested exception.
|
||||
*
|
||||
* @param errorMessage specific error message.
|
||||
* @param nestedException Nested exception.
|
||||
*/
|
||||
public GadgetDataServiceDAOException(String errorMessage, Exception nestedException) {
|
||||
super(errorMessage, nestedException);
|
||||
setErrorMessage(errorMessage);
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructs a new exception with the specific error message and cause.
|
||||
*
|
||||
* @param errorMessage Specific error message.
|
||||
* @param cause Cause of this exception.
|
||||
*/
|
||||
public GadgetDataServiceDAOException(String errorMessage, Throwable cause) {
|
||||
super(errorMessage, cause);
|
||||
setErrorMessage(errorMessage);
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructs a new exception with the specific error message.
|
||||
*
|
||||
* @param errorMessage Specific error message.
|
||||
*/
|
||||
public GadgetDataServiceDAOException(String errorMessage) {
|
||||
super(errorMessage);
|
||||
setErrorMessage(errorMessage);
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructs a new exception with the specific error message and cause.
|
||||
*
|
||||
* @param cause Cause of this exception.
|
||||
*/
|
||||
public GadgetDataServiceDAOException(Throwable cause) {
|
||||
super(cause);
|
||||
}
|
||||
|
||||
public String getErrorMessage() {
|
||||
return errorMessage;
|
||||
}
|
||||
|
||||
public void setErrorMessage(String errorMessage) {
|
||||
this.errorMessage = errorMessage;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,133 @@
|
||||
/*
|
||||
* 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.analytics.dashboard.dao;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.wso2.carbon.device.mgt.common.IllegalTransactionStateException;
|
||||
import org.wso2.carbon.device.mgt.core.config.datasource.DataSourceConfig;
|
||||
import org.wso2.carbon.device.mgt.core.config.datasource.JNDILookupDefinition;
|
||||
import org.wso2.carbon.device.mgt.core.dao.util.DeviceManagementDAOUtil;
|
||||
|
||||
import javax.sql.DataSource;
|
||||
import java.sql.Connection;
|
||||
import java.sql.SQLException;
|
||||
import java.util.Hashtable;
|
||||
import java.util.List;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
public class GadgetDataServiceDAOFactory {
|
||||
private static final Log log = LogFactory.getLog(GadgetDataServiceDAOFactory.class);
|
||||
private static DataSource dataSource;
|
||||
private static String databaseEngine;
|
||||
private static ThreadLocal<Connection> currentConnection = new ThreadLocal<>();
|
||||
|
||||
public static GadgetDataServiceDAO getGadgetDataServiceDAO() {
|
||||
return new GadgetDataServiceDAOImpl();
|
||||
}
|
||||
|
||||
public static void init(DataSourceConfig config) {
|
||||
dataSource = resolveDataSource(config);
|
||||
try {
|
||||
databaseEngine = dataSource.getConnection().getMetaData().getDatabaseProductName();
|
||||
} catch (SQLException e) {
|
||||
log.error("Error occurred while retrieving config.datasource connection", e);
|
||||
}
|
||||
}
|
||||
|
||||
public static void init(DataSource dtSource) {
|
||||
dataSource = dtSource;
|
||||
try {
|
||||
databaseEngine = dataSource.getConnection().getMetaData().getDatabaseProductName();
|
||||
} catch (SQLException e) {
|
||||
log.error("Error occurred while retrieving config.datasource connection", e);
|
||||
}
|
||||
}
|
||||
|
||||
public static void openConnection() throws SQLException {
|
||||
Connection conn = currentConnection.get();
|
||||
if (conn != null) {
|
||||
throw new IllegalTransactionStateException("A transaction is already active within the context of " +
|
||||
"this particular thread. Therefore, calling 'beginTransaction/openConnection' while another " +
|
||||
"transaction is already active is a sign of improper transaction handling");
|
||||
}
|
||||
conn = dataSource.getConnection();
|
||||
currentConnection.set(conn);
|
||||
}
|
||||
|
||||
public static Connection getConnection() throws SQLException {
|
||||
Connection conn = currentConnection.get();
|
||||
if (conn == null) {
|
||||
throw new IllegalTransactionStateException("No connection is associated with the current transaction. " +
|
||||
"This might have ideally been caused by not properly initiating the transaction via " +
|
||||
"'beginTransaction'/'openConnection' methods");
|
||||
}
|
||||
return conn;
|
||||
}
|
||||
|
||||
public static void closeConnection() {
|
||||
Connection conn = currentConnection.get();
|
||||
if (conn == null) {
|
||||
throw new IllegalTransactionStateException("No connection is associated with the current transaction. " +
|
||||
"This might have ideally been caused by not properly initiating the transaction via " +
|
||||
"'beginTransaction'/'openConnection' methods");
|
||||
}
|
||||
try {
|
||||
conn.close();
|
||||
} catch (SQLException e) {
|
||||
log.warn("Error occurred while close the connection");
|
||||
}
|
||||
currentConnection.remove();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Resolve data source from the data source definition
|
||||
*
|
||||
* @param config data source configuration
|
||||
* @return data source resolved from the data source definition
|
||||
*/
|
||||
private static DataSource resolveDataSource(DataSourceConfig config) {
|
||||
DataSource dataSource = null;
|
||||
if (config == null) {
|
||||
throw new RuntimeException(
|
||||
"Device Management Repository data source configuration " + "is null and " +
|
||||
"thus, is not initialized");
|
||||
}
|
||||
JNDILookupDefinition jndiConfig = config.getJndiLookupDefinition();
|
||||
if (jndiConfig != null) {
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("Initializing Device Management Repository data source using the JNDI " +
|
||||
"Lookup Definition");
|
||||
}
|
||||
List<JNDILookupDefinition.JNDIProperty> jndiPropertyList = jndiConfig.getJndiProperties();
|
||||
if (jndiPropertyList != null) {
|
||||
Hashtable<Object, Object> jndiProperties = new Hashtable<>();
|
||||
for (JNDILookupDefinition.JNDIProperty prop : jndiPropertyList) {
|
||||
jndiProperties.put(prop.getName(), prop.getValue());
|
||||
}
|
||||
dataSource = DeviceManagementDAOUtil.lookupDataSource(jndiConfig.getJndiName(), jndiProperties);
|
||||
} else {
|
||||
dataSource = DeviceManagementDAOUtil.lookupDataSource(jndiConfig.getJndiName(), null);
|
||||
}
|
||||
}
|
||||
return dataSource;
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,513 @@
|
||||
/*
|
||||
* 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.analytics.dashboard.dao;
|
||||
|
||||
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.PaginationRequest;
|
||||
import org.wso2.carbon.device.mgt.common.PaginationResult;
|
||||
import org.wso2.carbon.device.mgt.core.dao.util.DeviceManagementDAOUtil;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
class GadgetDataServiceDAOImpl implements GadgetDataServiceDAO {
|
||||
@SuppressWarnings("unused")
|
||||
private static final Log log = LogFactory.getLog(GadgetDataServiceDAOImpl.class);
|
||||
|
||||
@Override
|
||||
public int getTotalDeviceCount() throws GadgetDataServiceDAOException {
|
||||
return this.getDeviceCount(null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getActiveDeviceCount() throws GadgetDataServiceDAOException {
|
||||
Map<String, Object> filters = new HashMap<>();
|
||||
filters.put("CONNECTIVITY_STATUS", "ACTIVE");
|
||||
return this.getDeviceCount(filters);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getInactiveDeviceCount() throws GadgetDataServiceDAOException {
|
||||
Map<String, Object> filters = new HashMap<>();
|
||||
filters.put("CONNECTIVITY_STATUS", "INACTIVE");
|
||||
return this.getDeviceCount(filters);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getRemovedDeviceCount() throws GadgetDataServiceDAOException {
|
||||
Map<String, Object> filters = new HashMap<>();
|
||||
filters.put("CONNECTIVITY_STATUS", "REMOVED");
|
||||
return this.getDeviceCount(filters);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getNonCompliantDeviceCount() throws GadgetDataServiceDAOException {
|
||||
Map<String, Object> filters = new HashMap<>();
|
||||
filters.put("IS_COMPLIANT", 0);
|
||||
return this.getDeviceCount(filters);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PaginationResult getNonCompliantDeviceCountsByFeatures(PaginationRequest paginationRequest) throws GadgetDataServiceDAOException {
|
||||
Connection con;
|
||||
PreparedStatement stmt = null;
|
||||
ResultSet rs = null;
|
||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
|
||||
List<Map<String, Object>> filteredNonCompliantDeviceCountsByFeatures = new ArrayList<>();
|
||||
int totalRecordsCount = 0;
|
||||
try {
|
||||
con = this.getConnection();
|
||||
String sql = "SELECT FEATURE_CODE, COUNT(DEVICE_ID) AS DEVICE_COUNT FROM DEVICES_VIEW_2 " +
|
||||
"WHERE TENANT_ID = ? GROUP BY FEATURE_CODE ORDER BY DEVICE_COUNT DESC LIMIT ?, ?";
|
||||
stmt = con.prepareStatement(sql);
|
||||
stmt.setInt(1, tenantId);
|
||||
stmt.setInt(2, paginationRequest.getStartIndex());
|
||||
stmt.setInt(3, paginationRequest.getRowCount());
|
||||
|
||||
// executing query
|
||||
rs = stmt.executeQuery();
|
||||
// fetching query results
|
||||
Map<String, Object> filteredNonCompliantDeviceCountByFeature;
|
||||
while (rs.next()) {
|
||||
filteredNonCompliantDeviceCountByFeature = new HashMap<>();
|
||||
filteredNonCompliantDeviceCountByFeature.put("FEATURE_CODE", rs.getString("FEATURE_CODE"));
|
||||
filteredNonCompliantDeviceCountByFeature.put("DEVICE_COUNT", rs.getInt("DEVICE_COUNT"));
|
||||
filteredNonCompliantDeviceCountsByFeatures.add(filteredNonCompliantDeviceCountByFeature);
|
||||
}
|
||||
// fetching total records count
|
||||
sql = "SELECT COUNT(FEATURE_CODE) AS NON_COMPLIANT_FEATURE_COUNT FROM " +
|
||||
"(SELECT DISTINCT FEATURE_CODE FROM DEVICES_VIEW_2 WHERE TENANT_ID = ?)";
|
||||
|
||||
stmt = con.prepareStatement(sql);
|
||||
stmt.setInt(1, tenantId);
|
||||
|
||||
// executing query
|
||||
rs = stmt.executeQuery();
|
||||
// fetching query results
|
||||
while (rs.next()) {
|
||||
totalRecordsCount = rs.getInt("NON_COMPLIANT_FEATURE_COUNT");
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
throw new GadgetDataServiceDAOException("Error occurred while executing a selection query to the database", e);
|
||||
} finally {
|
||||
DeviceManagementDAOUtil.cleanupResources(stmt, rs);
|
||||
}
|
||||
PaginationResult paginationResult = new PaginationResult();
|
||||
paginationResult.setData(filteredNonCompliantDeviceCountsByFeatures);
|
||||
paginationResult.setRecordsTotal(totalRecordsCount);
|
||||
return paginationResult;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getUnmonitoredDeviceCount() throws GadgetDataServiceDAOException {
|
||||
Map<String, Object> filters = new HashMap<>();
|
||||
filters.put("POLICY_ID", -1);
|
||||
return this.getDeviceCount(filters);
|
||||
}
|
||||
|
||||
public int getDeviceCount(Map<String, Object> filters) throws GadgetDataServiceDAOException {
|
||||
Connection con;
|
||||
PreparedStatement stmt = null;
|
||||
ResultSet rs = null;
|
||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
|
||||
int filteredDeviceCount = 0;
|
||||
try {
|
||||
con = this.getConnection();
|
||||
String sql = "SELECT COUNT(DEVICE_ID) AS DEVICE_COUNT FROM DEVICES_VIEW_1 WHERE TENANT_ID = ?";
|
||||
// appending filters to support advanced filtering options
|
||||
// [1] appending filter columns
|
||||
if (filters != null && filters.size() > 0) {
|
||||
for (String column : filters.keySet()) {
|
||||
sql = sql + " AND " + column + " = ?";
|
||||
}
|
||||
}
|
||||
stmt = con.prepareStatement(sql);
|
||||
// [2] appending filter column values, if exist
|
||||
stmt.setInt(1, tenantId);
|
||||
if (filters != null && filters.values().size() > 0) {
|
||||
int i = 2;
|
||||
for (Object value : filters.values()) {
|
||||
if (value instanceof Integer) {
|
||||
stmt.setInt(i, (Integer) value);
|
||||
} else if (value instanceof String) {
|
||||
stmt.setString(i, (String) value);
|
||||
}
|
||||
i++;
|
||||
}
|
||||
}
|
||||
// executing query
|
||||
rs = stmt.executeQuery();
|
||||
// fetching query results
|
||||
while (rs.next()) {
|
||||
filteredDeviceCount = rs.getInt("DEVICE_COUNT");
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
throw new GadgetDataServiceDAOException("Error occurred while executing a selection query to the database", e);
|
||||
} finally {
|
||||
DeviceManagementDAOUtil.cleanupResources(stmt, rs);
|
||||
}
|
||||
return filteredDeviceCount;
|
||||
}
|
||||
|
||||
public int getFeatureNonCompliantDeviceCount(String nonCompliantFeatureCode, Map<String, Object> filters) throws GadgetDataServiceDAOException {
|
||||
Connection con;
|
||||
PreparedStatement stmt = null;
|
||||
ResultSet rs = null;
|
||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
|
||||
int filteredDeviceCount = 0;
|
||||
try {
|
||||
con = this.getConnection();
|
||||
String sql = "SELECT COUNT(DEVICE_ID) AS DEVICE_COUNT FROM DEVICES_VIEW_2 WHERE TENANT_ID = ? AND FEATURE_CODE = ?";
|
||||
// appending filters to support advanced filtering options
|
||||
// [1] appending filter columns
|
||||
if (filters != null && filters.size() > 0) {
|
||||
for (String column : filters.keySet()) {
|
||||
sql = sql + " AND " + column + " = ?";
|
||||
}
|
||||
}
|
||||
stmt = con.prepareStatement(sql);
|
||||
// [2] appending filter column values, if exist
|
||||
stmt.setInt(1, tenantId);
|
||||
stmt.setString(2, nonCompliantFeatureCode);
|
||||
if (filters != null && filters.values().size() > 0) {
|
||||
int i = 3;
|
||||
for (Object value : filters.values()) {
|
||||
if (value instanceof Integer) {
|
||||
stmt.setInt(i, (Integer) value);
|
||||
} else if (value instanceof String) {
|
||||
stmt.setString(i, (String) value);
|
||||
}
|
||||
i++;
|
||||
}
|
||||
}
|
||||
// executing query
|
||||
rs = stmt.executeQuery();
|
||||
// fetching query results
|
||||
while (rs.next()) {
|
||||
filteredDeviceCount = rs.getInt("DEVICE_COUNT");
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
throw new GadgetDataServiceDAOException("Error occurred while executing a selection query to the database", e);
|
||||
} finally {
|
||||
DeviceManagementDAOUtil.cleanupResources(stmt, rs);
|
||||
}
|
||||
return filteredDeviceCount;
|
||||
}
|
||||
|
||||
public Map<String, Integer> getDeviceCountsByPlatforms(Map<String, Object> filters) throws GadgetDataServiceDAOException {
|
||||
Connection con;
|
||||
PreparedStatement stmt = null;
|
||||
ResultSet rs = null;
|
||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
|
||||
Map<String, Integer> filteredDeviceCountsByPlatforms = new HashMap<>();
|
||||
try {
|
||||
con = this.getConnection();
|
||||
String sql, advancedSqlFiltering = "";
|
||||
// appending filters if exist, to support advanced filtering options
|
||||
// [1] appending filter columns, if exist
|
||||
if (filters != null && filters.size() > 0) {
|
||||
for (String column : filters.keySet()) {
|
||||
advancedSqlFiltering = advancedSqlFiltering + "AND " + column + " = ? ";
|
||||
}
|
||||
}
|
||||
sql = "SELECT PLATFORM, COUNT(DEVICE_ID) AS DEVICE_COUNT FROM DEVICES_VIEW_1 WHERE TENANT_ID = ? " +
|
||||
advancedSqlFiltering + "GROUP BY PLATFORM";
|
||||
stmt = con.prepareStatement(sql);
|
||||
// [2] appending filter column values, if exist
|
||||
stmt.setInt(1, tenantId);
|
||||
if (filters != null && filters.values().size() > 0) {
|
||||
int i = 2;
|
||||
for (Object value : filters.values()) {
|
||||
if (value instanceof Integer) {
|
||||
stmt.setInt(i, (Integer) value);
|
||||
} else if (value instanceof String) {
|
||||
stmt.setString(i, (String) value);
|
||||
}
|
||||
i++;
|
||||
}
|
||||
}
|
||||
// executing query
|
||||
rs = stmt.executeQuery();
|
||||
// fetching query results
|
||||
while (rs.next()) {
|
||||
filteredDeviceCountsByPlatforms.put(rs.getString("PLATFORM"), rs.getInt("DEVICE_COUNT"));
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
throw new GadgetDataServiceDAOException("Error occurred while executing a selection query to the database", e);
|
||||
} finally {
|
||||
DeviceManagementDAOUtil.cleanupResources(stmt, rs);
|
||||
}
|
||||
return filteredDeviceCountsByPlatforms;
|
||||
}
|
||||
|
||||
public Map<String, Integer> getFeatureNonCompliantDeviceCountsByPlatforms(String nonCompliantFeatureCode, Map<String, Object> filters) throws GadgetDataServiceDAOException {
|
||||
Connection con;
|
||||
PreparedStatement stmt = null;
|
||||
ResultSet rs = null;
|
||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
|
||||
Map<String, Integer> filteredDeviceCountsByPlatforms = new HashMap<>();
|
||||
try {
|
||||
con = this.getConnection();
|
||||
String sql, advancedSqlFiltering = "";
|
||||
// appending filters if exist, to support advanced filtering options
|
||||
// [1] appending filter columns, if exist
|
||||
if (filters != null && filters.size() > 0) {
|
||||
for (String column : filters.keySet()) {
|
||||
advancedSqlFiltering = advancedSqlFiltering + "AND " + column + " = ? ";
|
||||
}
|
||||
}
|
||||
sql = "SELECT PLATFORM, COUNT(DEVICE_ID) AS DEVICE_COUNT FROM DEVICES_VIEW_2 WHERE TENANT_ID = ? " +
|
||||
"AND FEATURE_CODE = ? " + advancedSqlFiltering + "GROUP BY PLATFORM";
|
||||
stmt = con.prepareStatement(sql);
|
||||
// [2] appending filter column values, if exist
|
||||
stmt.setInt(1, tenantId);
|
||||
stmt.setString(2, nonCompliantFeatureCode);
|
||||
if (filters != null && filters.values().size() > 0) {
|
||||
int i = 3;
|
||||
for (Object value : filters.values()) {
|
||||
if (value instanceof Integer) {
|
||||
stmt.setInt(i, (Integer) value);
|
||||
} else if (value instanceof String) {
|
||||
stmt.setString(i, (String) value);
|
||||
}
|
||||
i++;
|
||||
}
|
||||
}
|
||||
// executing query
|
||||
rs = stmt.executeQuery();
|
||||
// fetching query results
|
||||
while (rs.next()) {
|
||||
filteredDeviceCountsByPlatforms.put(rs.getString("PLATFORM"), rs.getInt("DEVICE_COUNT"));
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
throw new GadgetDataServiceDAOException("Error occurred while executing a selection query to the database", e);
|
||||
} finally {
|
||||
DeviceManagementDAOUtil.cleanupResources(stmt, rs);
|
||||
}
|
||||
return filteredDeviceCountsByPlatforms;
|
||||
}
|
||||
|
||||
public Map<String, Integer> getDeviceCountsByOwnershipTypes(Map<String, Object> filters) throws GadgetDataServiceDAOException {
|
||||
Connection con;
|
||||
PreparedStatement stmt = null;
|
||||
ResultSet rs = null;
|
||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
|
||||
Map<String, Integer> filteredDeviceCountsByOwnershipTypes = new HashMap<>();
|
||||
try {
|
||||
con = this.getConnection();
|
||||
String sql, advancedSqlFiltering = "";
|
||||
// appending filters if exist, to support advanced filtering options
|
||||
// [1] appending filter columns, if exist
|
||||
if (filters != null && filters.size() > 0) {
|
||||
for (String column : filters.keySet()) {
|
||||
advancedSqlFiltering = advancedSqlFiltering + "AND " + column + " = ? ";
|
||||
}
|
||||
}
|
||||
sql = "SELECT OWNERSHIP, COUNT(DEVICE_ID) AS DEVICE_COUNT FROM DEVICES_VIEW_1 WHERE TENANT_ID = ? " +
|
||||
advancedSqlFiltering + "GROUP BY OWNERSHIP";
|
||||
stmt = con.prepareStatement(sql);
|
||||
// [2] appending filter column values, if exist
|
||||
stmt.setInt(1, tenantId);
|
||||
if (filters != null && filters.values().size() > 0) {
|
||||
int i = 2;
|
||||
for (Object value : filters.values()) {
|
||||
if (value instanceof Integer) {
|
||||
stmt.setInt(i, (Integer) value);
|
||||
} else if (value instanceof String) {
|
||||
stmt.setString(i, (String) value);
|
||||
}
|
||||
i++;
|
||||
}
|
||||
}
|
||||
// executing query
|
||||
rs = stmt.executeQuery();
|
||||
// fetching query results
|
||||
while (rs.next()) {
|
||||
filteredDeviceCountsByOwnershipTypes.put(rs.getString("OWNERSHIP"), rs.getInt("DEVICE_COUNT"));
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
throw new GadgetDataServiceDAOException("Error occurred while executing a selection query to the database", e);
|
||||
} finally {
|
||||
DeviceManagementDAOUtil.cleanupResources(stmt, rs);
|
||||
}
|
||||
return filteredDeviceCountsByOwnershipTypes;
|
||||
}
|
||||
|
||||
public Map<String, Integer> getFeatureNonCompliantDeviceCountsByOwnershipTypes(String nonCompliantFeatureCode, Map<String, Object> filters) throws GadgetDataServiceDAOException {
|
||||
Connection con;
|
||||
PreparedStatement stmt = null;
|
||||
ResultSet rs = null;
|
||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
|
||||
Map<String, Integer> filteredDeviceCountsByOwnershipTypes = new HashMap<>();
|
||||
try {
|
||||
con = this.getConnection();
|
||||
String sql, advancedSqlFiltering = "";
|
||||
// appending filters if exist, to support advanced filtering options
|
||||
// [1] appending filter columns, if exist
|
||||
if (filters != null && filters.size() > 0) {
|
||||
for (String column : filters.keySet()) {
|
||||
advancedSqlFiltering = advancedSqlFiltering + "AND " + column + " = ? ";
|
||||
}
|
||||
}
|
||||
sql = "SELECT OWNERSHIP, COUNT(DEVICE_ID) AS DEVICE_COUNT FROM DEVICES_VIEW_2 WHERE TENANT_ID = ? " +
|
||||
"AND FEATURE_CODE = ? " + advancedSqlFiltering + "GROUP BY OWNERSHIP";
|
||||
stmt = con.prepareStatement(sql);
|
||||
// [2] appending filter column values, if exist
|
||||
stmt.setInt(1, tenantId);
|
||||
stmt.setString(2, nonCompliantFeatureCode);
|
||||
if (filters != null && filters.values().size() > 0) {
|
||||
int i = 3;
|
||||
for (Object value : filters.values()) {
|
||||
if (value instanceof Integer) {
|
||||
stmt.setInt(i, (Integer) value);
|
||||
} else if (value instanceof String) {
|
||||
stmt.setString(i, (String) value);
|
||||
}
|
||||
i++;
|
||||
}
|
||||
}
|
||||
// executing query
|
||||
rs = stmt.executeQuery();
|
||||
// fetching query results
|
||||
while (rs.next()) {
|
||||
filteredDeviceCountsByOwnershipTypes.put(rs.getString("OWNERSHIP"), rs.getInt("DEVICE_COUNT"));
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
throw new GadgetDataServiceDAOException("Error occurred while executing a selection query to the database", e);
|
||||
} finally {
|
||||
DeviceManagementDAOUtil.cleanupResources(stmt, rs);
|
||||
}
|
||||
return filteredDeviceCountsByOwnershipTypes;
|
||||
}
|
||||
|
||||
public List<Map<String, Object>> getDevicesWithDetails(Map<String, Object> filters) throws GadgetDataServiceDAOException {
|
||||
Connection con;
|
||||
PreparedStatement stmt = null;
|
||||
ResultSet rs = null;
|
||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
|
||||
Map<String, Object> filteredDeviceWithDetails = new HashMap<>();
|
||||
List<Map<String, Object>> filteredDevicesWithDetails = new ArrayList<>();
|
||||
try {
|
||||
con = this.getConnection();
|
||||
String sql;
|
||||
sql = "SELECT DEVICE_ID, PLATFORM, OWNERSHIP, CONNECTIVITY_STATUS FROM DEVICES_VIEW_1 WHERE TENANT_ID = ?";
|
||||
// appending filters to support advanced filtering options
|
||||
// [1] appending filter columns, if exist
|
||||
if (filters != null && filters.size() > 0) {
|
||||
for (String column : filters.keySet()) {
|
||||
sql = sql + " AND " + column + " = ?";
|
||||
}
|
||||
}
|
||||
stmt = con.prepareStatement(sql);
|
||||
// [2] appending filter column values, if exist
|
||||
stmt.setInt(1, tenantId);
|
||||
if (filters != null && filters.values().size() > 0) {
|
||||
int i = 2;
|
||||
for (Object value : filters.values()) {
|
||||
if (value instanceof Integer) {
|
||||
stmt.setInt(i, (Integer) value);
|
||||
} else if (value instanceof String) {
|
||||
stmt.setString(i, (String) value);
|
||||
}
|
||||
i++;
|
||||
}
|
||||
}
|
||||
// executing query
|
||||
rs = stmt.executeQuery();
|
||||
// fetching query results
|
||||
while (rs.next()) {
|
||||
filteredDeviceWithDetails.put("device-id", rs.getInt("DEVICE_ID"));
|
||||
filteredDeviceWithDetails.put("platform", rs.getString("PLATFORM"));
|
||||
filteredDeviceWithDetails.put("ownership", rs.getString("OWNERSHIP"));
|
||||
filteredDeviceWithDetails.put("connectivity-details", rs.getString("CONNECTIVITY_STATUS"));
|
||||
filteredDevicesWithDetails.add(filteredDeviceWithDetails);
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
throw new GadgetDataServiceDAOException("Error occurred while executing a selection query to the database", e);
|
||||
} finally {
|
||||
DeviceManagementDAOUtil.cleanupResources(stmt, rs);
|
||||
}
|
||||
return filteredDevicesWithDetails;
|
||||
}
|
||||
|
||||
public List<Map<String, Object>> getFeatureNonCompliantDevicesWithDetails(String nonCompliantFeatureCode, Map<String, Object> filters) throws GadgetDataServiceDAOException {
|
||||
Connection con;
|
||||
PreparedStatement stmt = null;
|
||||
ResultSet rs = null;
|
||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
|
||||
Map<String, Object> filteredDeviceWithDetails = new HashMap<>();
|
||||
List<Map<String, Object>> filteredDevicesWithDetails = new ArrayList<>();
|
||||
try {
|
||||
con = this.getConnection();
|
||||
String sql;
|
||||
sql = "SELECT DEVICE_ID, PLATFORM, OWNERSHIP, CONNECTIVITY_STATUS FROM DEVICES_VIEW_2 " +
|
||||
"WHERE TENANT_ID = ? AND FEATURE_CODE = ?";
|
||||
// appending filters to support advanced filtering options
|
||||
// [1] appending filter columns, if exist
|
||||
if (filters != null && filters.size() > 0) {
|
||||
for (String column : filters.keySet()) {
|
||||
sql = sql + " AND " + column + " = ?";
|
||||
}
|
||||
}
|
||||
stmt = con.prepareStatement(sql);
|
||||
// [2] appending filter column values, if exist
|
||||
stmt.setInt(1, tenantId);
|
||||
stmt.setString(2, nonCompliantFeatureCode);
|
||||
if (filters != null && filters.values().size() > 0) {
|
||||
int i = 3;
|
||||
for (Object value : filters.values()) {
|
||||
if (value instanceof Integer) {
|
||||
stmt.setInt(i, (Integer) value);
|
||||
} else if (value instanceof String) {
|
||||
stmt.setString(i, (String) value);
|
||||
}
|
||||
i++;
|
||||
}
|
||||
}
|
||||
// executing query
|
||||
rs = stmt.executeQuery();
|
||||
// fetching query results
|
||||
while (rs.next()) {
|
||||
filteredDeviceWithDetails.put("device-id", rs.getInt("DEVICE_ID"));
|
||||
filteredDeviceWithDetails.put("platform", rs.getString("PLATFORM"));
|
||||
filteredDeviceWithDetails.put("ownership", rs.getString("OWNERSHIP"));
|
||||
filteredDeviceWithDetails.put("connectivity-details", rs.getString("CONNECTIVITY_STATUS"));
|
||||
filteredDevicesWithDetails.add(filteredDeviceWithDetails);
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
throw new GadgetDataServiceDAOException("Error occurred while executing a selection query to the database", e);
|
||||
} finally {
|
||||
DeviceManagementDAOUtil.cleanupResources(stmt, rs);
|
||||
}
|
||||
return filteredDevicesWithDetails;
|
||||
}
|
||||
|
||||
private Connection getConnection() throws SQLException {
|
||||
return GadgetDataServiceDAOFactory.getConnection();
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,80 @@
|
||||
/*
|
||||
* 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.analytics.dashboard.internal;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.osgi.service.component.ComponentContext;
|
||||
import org.wso2.carbon.device.mgt.analytics.dashboard.GadgetDataService;
|
||||
import org.wso2.carbon.device.mgt.analytics.dashboard.dao.GadgetDataServiceDAOFactory;
|
||||
import org.wso2.carbon.device.mgt.core.config.DeviceConfigurationManager;
|
||||
import org.wso2.carbon.device.mgt.core.config.DeviceManagementConfig;
|
||||
import org.wso2.carbon.device.mgt.core.config.datasource.DataSourceConfig;
|
||||
import org.wso2.carbon.ndatasource.core.DataSourceService;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
/**
|
||||
* @scr.component name="org.wso2.carbon.device.mgt.analytics.dashboard.GadgetDataService" immediate="true"
|
||||
* @scr.reference name="org.wso2.carbon.ndatasource"
|
||||
* interface="org.wso2.carbon.ndatasource.core.DataSourceService"
|
||||
* cardinality="1..1"
|
||||
* policy="dynamic"
|
||||
* bind="setDataSourceService"
|
||||
* unbind="unsetDataSourceService"
|
||||
*/
|
||||
public class GadgetDataServiceComponent {
|
||||
private static final Log log = LogFactory.getLog(GadgetDataServiceComponent.class);
|
||||
|
||||
protected void activate(ComponentContext componentContext) {
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("Starting Device Management Dashboard Analytics Bundle...");
|
||||
}
|
||||
try {
|
||||
DeviceConfigurationManager.getInstance().initConfig();
|
||||
DeviceManagementConfig config =
|
||||
DeviceConfigurationManager.getInstance().getDeviceManagementConfig();
|
||||
|
||||
DataSourceConfig dsConfig = config.getDeviceManagementConfigRepository().getDataSourceConfig();
|
||||
GadgetDataServiceDAOFactory.init(dsConfig);
|
||||
//Register GadgetDataService to expose corresponding data to external parties.
|
||||
componentContext.getBundleContext().
|
||||
registerService(GadgetDataService.class.getName(), new GadgetDataServiceImpl(), null);
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("Device Management Dashboard Analytics Bundle has been started successfully");
|
||||
}
|
||||
} catch (Throwable e) {
|
||||
log.error("Error occurred while initializing the bundle", e);
|
||||
}
|
||||
}
|
||||
|
||||
protected void deactivate(ComponentContext componentContext) {
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("Deactivating Device Management Dashboard Analytics Bundle...");
|
||||
}
|
||||
//do nothing
|
||||
}
|
||||
|
||||
public void setDataSourceService(DataSourceService dataSourceService){
|
||||
|
||||
}
|
||||
|
||||
public void unsetDataSourceService(DataSourceService dataSourceService){
|
||||
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,239 @@
|
||||
/*
|
||||
* 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.analytics.dashboard.internal;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.wso2.carbon.device.mgt.analytics.dashboard.GadgetDataService;
|
||||
import org.wso2.carbon.device.mgt.analytics.dashboard.dao.GadgetDataServiceDAOException;
|
||||
import org.wso2.carbon.device.mgt.analytics.dashboard.dao.GadgetDataServiceDAOFactory;
|
||||
import org.wso2.carbon.device.mgt.common.PaginationRequest;
|
||||
import org.wso2.carbon.device.mgt.common.PaginationResult;
|
||||
|
||||
import java.sql.SQLException;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* To be updated...
|
||||
*/
|
||||
class GadgetDataServiceImpl implements GadgetDataService {
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
private static final Log log = LogFactory.getLog(GadgetDataServiceImpl.class);
|
||||
|
||||
@Override
|
||||
public int getTotalDeviceCount() {
|
||||
int totalDeviceCount;
|
||||
try {
|
||||
GadgetDataServiceDAOFactory.openConnection();
|
||||
totalDeviceCount = GadgetDataServiceDAOFactory.getGadgetDataServiceDAO().getTotalDeviceCount();
|
||||
} catch (GadgetDataServiceDAOException | SQLException e) {
|
||||
totalDeviceCount = -1;
|
||||
return totalDeviceCount;
|
||||
} finally {
|
||||
GadgetDataServiceDAOFactory.closeConnection();
|
||||
}
|
||||
return totalDeviceCount;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getActiveDeviceCount() {
|
||||
int activeDeviceCount;
|
||||
try {
|
||||
GadgetDataServiceDAOFactory.openConnection();
|
||||
activeDeviceCount = GadgetDataServiceDAOFactory.getGadgetDataServiceDAO().getActiveDeviceCount();
|
||||
} catch (GadgetDataServiceDAOException | SQLException e) {
|
||||
activeDeviceCount = -1;
|
||||
return activeDeviceCount;
|
||||
} finally {
|
||||
GadgetDataServiceDAOFactory.closeConnection();
|
||||
}
|
||||
return activeDeviceCount;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getInactiveDeviceCount() {
|
||||
int inactiveDeviceCount;
|
||||
try {
|
||||
GadgetDataServiceDAOFactory.openConnection();
|
||||
inactiveDeviceCount = GadgetDataServiceDAOFactory.getGadgetDataServiceDAO().getInactiveDeviceCount();
|
||||
} catch (GadgetDataServiceDAOException | SQLException e) {
|
||||
inactiveDeviceCount = -1;
|
||||
return inactiveDeviceCount;
|
||||
} finally {
|
||||
GadgetDataServiceDAOFactory.closeConnection();
|
||||
}
|
||||
return inactiveDeviceCount;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getRemovedDeviceCount() {
|
||||
int removedDeviceCount;
|
||||
try {
|
||||
GadgetDataServiceDAOFactory.openConnection();
|
||||
removedDeviceCount = GadgetDataServiceDAOFactory.getGadgetDataServiceDAO().getRemovedDeviceCount();
|
||||
} catch (GadgetDataServiceDAOException | SQLException e) {
|
||||
removedDeviceCount = -1;
|
||||
return removedDeviceCount;
|
||||
} finally {
|
||||
GadgetDataServiceDAOFactory.closeConnection();
|
||||
}
|
||||
return removedDeviceCount;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getNonCompliantDeviceCount() {
|
||||
int nonCompliantDeviceCount;
|
||||
try {
|
||||
GadgetDataServiceDAOFactory.openConnection();
|
||||
nonCompliantDeviceCount = GadgetDataServiceDAOFactory.getGadgetDataServiceDAO().getNonCompliantDeviceCount();
|
||||
} catch (GadgetDataServiceDAOException | SQLException e) {
|
||||
nonCompliantDeviceCount = -1;
|
||||
return nonCompliantDeviceCount;
|
||||
} finally {
|
||||
GadgetDataServiceDAOFactory.closeConnection();
|
||||
}
|
||||
return nonCompliantDeviceCount;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getUnmonitoredDeviceCount() {
|
||||
int unmonitoredDeviceCount;
|
||||
try {
|
||||
GadgetDataServiceDAOFactory.openConnection();
|
||||
unmonitoredDeviceCount = GadgetDataServiceDAOFactory.getGadgetDataServiceDAO().getUnmonitoredDeviceCount();
|
||||
} catch (GadgetDataServiceDAOException | SQLException e) {
|
||||
unmonitoredDeviceCount = -1;
|
||||
return unmonitoredDeviceCount;
|
||||
} finally {
|
||||
GadgetDataServiceDAOFactory.closeConnection();
|
||||
}
|
||||
return unmonitoredDeviceCount;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PaginationResult getNonCompliantDeviceCountsByFeatures(PaginationRequest paginationRequest) {
|
||||
PaginationResult paginationResult = null;
|
||||
try {
|
||||
GadgetDataServiceDAOFactory.openConnection();
|
||||
paginationResult = GadgetDataServiceDAOFactory.getGadgetDataServiceDAO().
|
||||
getNonCompliantDeviceCountsByFeatures(paginationRequest);
|
||||
} catch (GadgetDataServiceDAOException | SQLException e) {
|
||||
return null;
|
||||
} finally {
|
||||
GadgetDataServiceDAOFactory.closeConnection();
|
||||
}
|
||||
return paginationResult;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getDeviceCount(Map<String, Object> filters) {
|
||||
int deviceCount;
|
||||
try {
|
||||
GadgetDataServiceDAOFactory.openConnection();
|
||||
deviceCount = GadgetDataServiceDAOFactory.getGadgetDataServiceDAO().getDeviceCount(filters);
|
||||
} catch (GadgetDataServiceDAOException | SQLException e) {
|
||||
deviceCount = -1;
|
||||
return deviceCount;
|
||||
} finally {
|
||||
GadgetDataServiceDAOFactory.closeConnection();
|
||||
}
|
||||
return deviceCount;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getFeatureNonCompliantDeviceCount(String nonCompliantFeatureCode, Map<String, Object> filters) {
|
||||
int featureNonCompliantDeviceCount;
|
||||
try {
|
||||
GadgetDataServiceDAOFactory.openConnection();
|
||||
featureNonCompliantDeviceCount = GadgetDataServiceDAOFactory.
|
||||
getGadgetDataServiceDAO().getFeatureNonCompliantDeviceCount(nonCompliantFeatureCode, filters);
|
||||
} catch (GadgetDataServiceDAOException | SQLException e) {
|
||||
featureNonCompliantDeviceCount = -1;
|
||||
return featureNonCompliantDeviceCount;
|
||||
} finally {
|
||||
GadgetDataServiceDAOFactory.closeConnection();
|
||||
}
|
||||
return featureNonCompliantDeviceCount;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Integer> getDeviceCountsByPlatforms(Map<String, Object> filters) {
|
||||
Map<String, Integer> deviceCountsByPlatforms = null;
|
||||
try {
|
||||
GadgetDataServiceDAOFactory.openConnection();
|
||||
deviceCountsByPlatforms = GadgetDataServiceDAOFactory.getGadgetDataServiceDAO().
|
||||
getDeviceCountsByPlatforms(filters);
|
||||
} catch (GadgetDataServiceDAOException | SQLException e) {
|
||||
return null;
|
||||
} finally {
|
||||
GadgetDataServiceDAOFactory.closeConnection();
|
||||
}
|
||||
return deviceCountsByPlatforms;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Integer> getFeatureNonCompliantDeviceCountsByPlatforms(String nonCompliantFeatureCode,
|
||||
Map<String, Object> filters) {
|
||||
Map<String, Integer> featureNonCompliantDeviceCountsByPlatforms = null;
|
||||
try {
|
||||
GadgetDataServiceDAOFactory.openConnection();
|
||||
featureNonCompliantDeviceCountsByPlatforms = GadgetDataServiceDAOFactory.
|
||||
getGadgetDataServiceDAO().getFeatureNonCompliantDeviceCountsByPlatforms(nonCompliantFeatureCode, filters);
|
||||
} catch (GadgetDataServiceDAOException | SQLException e) {
|
||||
return null;
|
||||
} finally {
|
||||
GadgetDataServiceDAOFactory.closeConnection();
|
||||
}
|
||||
return featureNonCompliantDeviceCountsByPlatforms;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Integer> getDeviceCountsByOwnershipTypes(Map<String, Object> filters) {
|
||||
Map<String, Integer> deviceCountsByOwnershipTypes = null;
|
||||
try {
|
||||
GadgetDataServiceDAOFactory.openConnection();
|
||||
deviceCountsByOwnershipTypes = GadgetDataServiceDAOFactory.getGadgetDataServiceDAO().
|
||||
getDeviceCountsByOwnershipTypes(filters);
|
||||
} catch (GadgetDataServiceDAOException | SQLException e) {
|
||||
return null;
|
||||
} finally {
|
||||
GadgetDataServiceDAOFactory.closeConnection();
|
||||
}
|
||||
return deviceCountsByOwnershipTypes;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Integer> getFeatureNonCompliantDeviceCountsByOwnershipTypes(String nonCompliantFeatureCode,
|
||||
Map<String, Object> filters) {
|
||||
Map<String, Integer> featureNonCompliantDeviceCountsByOwnershipTypes = null;
|
||||
try {
|
||||
GadgetDataServiceDAOFactory.openConnection();
|
||||
featureNonCompliantDeviceCountsByOwnershipTypes =
|
||||
GadgetDataServiceDAOFactory.getGadgetDataServiceDAO().
|
||||
getFeatureNonCompliantDeviceCountsByOwnershipTypes(nonCompliantFeatureCode, filters);
|
||||
} catch (GadgetDataServiceDAOException | SQLException e) {
|
||||
return null;
|
||||
} finally {
|
||||
GadgetDataServiceDAOFactory.closeConnection();
|
||||
}
|
||||
return featureNonCompliantDeviceCountsByOwnershipTypes;
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
* 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
|
||||
@ -11,12 +11,12 @@
|
||||
* 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
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package org.wso2.carbon.mdm.api;
|
||||
package org.wso2.carbon.device.mgt.jaxrs.api;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
@ -16,7 +16,7 @@
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package org.wso2.carbon.mdm.api;
|
||||
package org.wso2.carbon.device.mgt.jaxrs.api;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
@ -25,12 +25,12 @@ import org.wso2.carbon.certificate.mgt.core.dto.CertificateResponse;
|
||||
import org.wso2.carbon.certificate.mgt.core.exception.KeystoreException;
|
||||
import org.wso2.carbon.certificate.mgt.core.service.CertificateManagementService;
|
||||
import org.wso2.carbon.context.PrivilegedCarbonContext;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.api.common.MDMAPIException;
|
||||
import org.wso2.carbon.device.mgt.common.PaginationRequest;
|
||||
import org.wso2.carbon.device.mgt.common.PaginationResult;
|
||||
import org.wso2.carbon.mdm.api.common.MDMAPIException;
|
||||
import org.wso2.carbon.mdm.api.util.DeviceMgtAPIUtils;
|
||||
import org.wso2.carbon.mdm.beans.EnrollmentCertificate;
|
||||
import org.wso2.carbon.mdm.exception.Message;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.api.util.DeviceMgtAPIUtils;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.beans.EnrollmentCertificate;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.exception.Message;
|
||||
|
||||
import javax.ws.rs.Consumes;
|
||||
import javax.ws.rs.DELETE;
|
||||
@ -16,7 +16,7 @@
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package org.wso2.carbon.mdm.api;
|
||||
package org.wso2.carbon.device.mgt.jaxrs.api;
|
||||
|
||||
import org.apache.commons.httpclient.HttpStatus;
|
||||
import org.apache.commons.logging.Log;
|
||||
@ -24,9 +24,9 @@ import org.apache.commons.logging.LogFactory;
|
||||
import org.wso2.carbon.device.mgt.common.configuration.mgt.ConfigurationEntry;
|
||||
import org.wso2.carbon.device.mgt.common.configuration.mgt.ConfigurationManagementException;
|
||||
import org.wso2.carbon.device.mgt.common.configuration.mgt.TenantConfiguration;
|
||||
import org.wso2.carbon.mdm.api.util.DeviceMgtAPIUtils;
|
||||
import org.wso2.carbon.mdm.api.util.MDMAppConstants;
|
||||
import org.wso2.carbon.mdm.api.util.ResponsePayload;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.api.util.DeviceMgtAPIUtils;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.api.util.MDMAppConstants;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.api.util.ResponsePayload;
|
||||
import org.wso2.carbon.policy.mgt.core.util.PolicyManagerUtil;
|
||||
|
||||
import javax.ws.rs.Consumes;
|
||||
@ -16,21 +16,24 @@
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package org.wso2.carbon.mdm.api;
|
||||
package org.wso2.carbon.device.mgt.jaxrs.api;
|
||||
|
||||
import org.apache.commons.httpclient.HttpStatus;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.wso2.carbon.device.mgt.core.service.DeviceManagementAdminService;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.api.util.DeviceMgtAPIUtils;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.api.util.ResponsePayload;
|
||||
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
|
||||
import org.wso2.carbon.device.mgt.common.DeviceManagementException;
|
||||
import org.wso2.carbon.device.mgt.common.EnrolmentInfo;
|
||||
import org.wso2.carbon.device.mgt.common.PaginationRequest;
|
||||
import org.wso2.carbon.device.mgt.core.dto.DeviceType;
|
||||
import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService;
|
||||
import org.wso2.carbon.mdm.api.util.DeviceMgtAPIUtils;
|
||||
import org.wso2.carbon.mdm.api.util.ResponsePayload;
|
||||
|
||||
import javax.ws.rs.DELETE;
|
||||
import javax.ws.rs.GET;
|
||||
import javax.ws.rs.PUT;
|
||||
import javax.ws.rs.Path;
|
||||
import javax.ws.rs.PathParam;
|
||||
import javax.ws.rs.Produces;
|
||||
@ -231,4 +234,52 @@ public class Device {
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Update device.
|
||||
*
|
||||
* @return update status.
|
||||
*/
|
||||
@PUT
|
||||
@Path("type/{type}/id/{deviceId}")
|
||||
public Response updateDevice(@PathParam("type") String deviceType, @PathParam("deviceId") String deviceId,
|
||||
org.wso2.carbon.device.mgt.common.Device updatedDevice) {
|
||||
try {
|
||||
DeviceManagementProviderService deviceManagementService = DeviceMgtAPIUtils.getDeviceManagementService();
|
||||
DeviceIdentifier deviceIdentifier = new DeviceIdentifier();
|
||||
deviceIdentifier.setType(deviceType);
|
||||
deviceIdentifier.setId(deviceId);
|
||||
org.wso2.carbon.device.mgt.common.Device device = deviceManagementService.getDevice(deviceIdentifier);
|
||||
device.setName(updatedDevice.getName());
|
||||
device.setDescription(updatedDevice.getDescription());
|
||||
Boolean response = deviceManagementService.modifyEnrollment(device);
|
||||
return Response.status(Response.Status.OK).entity(response).build();
|
||||
} catch (DeviceManagementException e) {
|
||||
String msg = "Error occurred while fetching the list of device types.";
|
||||
log.error(msg, e);
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* disenroll device.
|
||||
*
|
||||
* @return disenrollment status.
|
||||
*/
|
||||
@DELETE
|
||||
@Path("type/{type}/id/{deviceId}")
|
||||
public Response disenrollDevice(@PathParam("type") String deviceType, @PathParam("deviceId") String deviceId) {
|
||||
try {
|
||||
DeviceManagementProviderService deviceManagementService = DeviceMgtAPIUtils.getDeviceManagementService();
|
||||
DeviceIdentifier deviceIdentifier = new DeviceIdentifier();
|
||||
deviceIdentifier.setType(deviceType);
|
||||
deviceIdentifier.setId(deviceId);
|
||||
Boolean response = deviceManagementService.disenrollDevice(deviceIdentifier);
|
||||
return Response.status(Response.Status.OK).entity(response).build();
|
||||
} catch (DeviceManagementException e) {
|
||||
String msg = "Error occurred while fetching the list of device types.";
|
||||
log.error(msg, e);
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -17,7 +17,7 @@
|
||||
*/
|
||||
|
||||
|
||||
package org.wso2.carbon.mdm.api;
|
||||
package org.wso2.carbon.device.mgt.jaxrs.api;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
@ -26,7 +26,7 @@ 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.core.device.details.mgt.DeviceDetailsMgtException;
|
||||
import org.wso2.carbon.device.mgt.core.device.details.mgt.DeviceInformationManager;
|
||||
import org.wso2.carbon.mdm.api.util.DeviceMgtAPIUtils;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.api.util.DeviceMgtAPIUtils;
|
||||
|
||||
import javax.ws.rs.GET;
|
||||
import javax.ws.rs.Path;
|
||||
@ -16,15 +16,15 @@
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package org.wso2.carbon.mdm.api;
|
||||
package org.wso2.carbon.device.mgt.jaxrs.api;
|
||||
|
||||
import org.apache.commons.httpclient.HttpStatus;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.api.util.DeviceMgtAPIUtils;
|
||||
import org.wso2.carbon.device.mgt.common.notification.mgt.Notification;
|
||||
import org.wso2.carbon.device.mgt.common.notification.mgt.NotificationManagementException;
|
||||
import org.wso2.carbon.mdm.api.util.DeviceMgtAPIUtils;
|
||||
import org.wso2.carbon.mdm.api.util.ResponsePayload;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.api.util.ResponsePayload;
|
||||
|
||||
import javax.ws.rs.Consumes;
|
||||
import javax.ws.rs.GET;
|
||||
@ -17,7 +17,7 @@
|
||||
*/
|
||||
|
||||
|
||||
package org.wso2.carbon.mdm.api;
|
||||
package org.wso2.carbon.device.mgt.jaxrs.api;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
@ -25,7 +25,7 @@ import org.wso2.carbon.device.mgt.common.device.details.DeviceWrapper;
|
||||
import org.wso2.carbon.device.mgt.common.search.SearchContext;
|
||||
import org.wso2.carbon.device.mgt.core.search.mgt.SearchManagerService;
|
||||
import org.wso2.carbon.device.mgt.core.search.mgt.SearchMgtException;
|
||||
import org.wso2.carbon.mdm.api.util.DeviceMgtAPIUtils;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.api.util.DeviceMgtAPIUtils;
|
||||
|
||||
import javax.ws.rs.GET;
|
||||
import javax.ws.rs.core.Response;
|
||||
@ -16,13 +16,13 @@
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package org.wso2.carbon.mdm.api;
|
||||
package org.wso2.carbon.device.mgt.jaxrs.api;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.api.util.DeviceMgtAPIUtils;
|
||||
import org.wso2.carbon.device.mgt.common.DeviceManagementException;
|
||||
import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService;
|
||||
import org.wso2.carbon.mdm.api.util.DeviceMgtAPIUtils;
|
||||
|
||||
import javax.ws.rs.Consumes;
|
||||
import javax.ws.rs.GET;
|
||||
@ -16,11 +16,12 @@
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package org.wso2.carbon.mdm.api;
|
||||
package org.wso2.carbon.device.mgt.jaxrs.api;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.wso2.carbon.context.PrivilegedCarbonContext;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.api.util.DeviceMgtAPIUtils;
|
||||
import org.wso2.carbon.device.mgt.common.Device;
|
||||
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
|
||||
import org.wso2.carbon.device.mgt.common.PaginationResult;
|
||||
@ -29,7 +30,6 @@ import org.wso2.carbon.device.mgt.common.group.mgt.GroupAlreadyEixistException;
|
||||
import org.wso2.carbon.device.mgt.common.group.mgt.GroupManagementException;
|
||||
import org.wso2.carbon.device.mgt.common.group.mgt.GroupUser;
|
||||
import org.wso2.carbon.device.mgt.core.service.GroupManagementProviderService;
|
||||
import org.wso2.carbon.mdm.api.util.DeviceMgtAPIUtils;
|
||||
|
||||
import javax.ws.rs.Consumes;
|
||||
import javax.ws.rs.DELETE;
|
||||
@ -97,7 +97,7 @@ public class Group {
|
||||
}
|
||||
}
|
||||
|
||||
@Path("/{owner}/{groupName}")
|
||||
@Path("/owner/{owner}/name/{groupName}")
|
||||
@PUT
|
||||
@Consumes("application/json")
|
||||
@Produces("application/json")
|
||||
@ -112,7 +112,7 @@ public class Group {
|
||||
}
|
||||
}
|
||||
|
||||
@Path("/{owner}/{groupName}")
|
||||
@Path("/owner/{owner}/name/{groupName}")
|
||||
@DELETE
|
||||
public Response deleteGroup(@PathParam("groupName") String groupName, @PathParam("owner") String owner) {
|
||||
try {
|
||||
@ -160,7 +160,7 @@ public class Group {
|
||||
}
|
||||
}
|
||||
|
||||
@Path("/{owner}/{groupName}")
|
||||
@Path("/owner/{owner}/name/{groupName}")
|
||||
@GET
|
||||
@Produces("application/json")
|
||||
public Response getGroup(@PathParam("groupName") String groupName, @PathParam("owner") String owner) {
|
||||
@ -177,14 +177,14 @@ public class Group {
|
||||
}
|
||||
}
|
||||
|
||||
@Path("/search")
|
||||
@Path("/user/{user}/search")
|
||||
@GET
|
||||
@Produces("application/json")
|
||||
public Response findGroups(@QueryParam("groupName") String groupName,
|
||||
@QueryParam("userName") String userName) {
|
||||
@PathParam("user") String user) {
|
||||
try {
|
||||
List<DeviceGroup> groups = DeviceMgtAPIUtils.getGroupManagementProviderService()
|
||||
.findInGroups(groupName, userName);
|
||||
.findInGroups(groupName, user);
|
||||
DeviceGroup[] deviceGroups = new DeviceGroup[groups.size()];
|
||||
groups.toArray(deviceGroups);
|
||||
return Response.status(Response.Status.OK).entity(deviceGroups).build();
|
||||
@ -216,6 +216,19 @@ public class Group {
|
||||
}
|
||||
}
|
||||
|
||||
@Path("/count")
|
||||
@GET
|
||||
@Produces("application/json")
|
||||
public Response getAllGroupCount() {
|
||||
try {
|
||||
int count = DeviceMgtAPIUtils.getGroupManagementProviderService().getGroupCount();
|
||||
return Response.status(Response.Status.OK).entity(count).build();
|
||||
} catch (GroupManagementException e) {
|
||||
log.error(e.getMessage(), e);
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(e.getMessage()).build();
|
||||
}
|
||||
}
|
||||
|
||||
@Path("/user/{user}/count")
|
||||
@GET
|
||||
@Produces("application/json")
|
||||
@ -229,7 +242,7 @@ public class Group {
|
||||
}
|
||||
}
|
||||
|
||||
@Path("/{owner}/{groupName}/share")
|
||||
@Path("/owner/{owner}/name/{groupName}/share")
|
||||
@PUT
|
||||
@Produces("application/json")
|
||||
public Response shareGroup(@PathParam("groupName") String groupName, @PathParam("owner") String owner,
|
||||
@ -250,7 +263,7 @@ public class Group {
|
||||
}
|
||||
}
|
||||
|
||||
@Path("/{owner}/{groupName}/unshare")
|
||||
@Path("/owner/{owner}/name/{groupName}/unshare")
|
||||
@PUT
|
||||
@Produces("application/json")
|
||||
public Response unShareGroup(@PathParam("groupName") String groupName, @PathParam("owner") String owner,
|
||||
@ -270,7 +283,7 @@ public class Group {
|
||||
}
|
||||
}
|
||||
|
||||
@Path("/{owner}/{groupName}/share/roles/{roleName}/permissions")
|
||||
@Path("/owner/{owner}/name/{groupName}/share/roles/{roleName}/permissions")
|
||||
@PUT
|
||||
@Produces("application/json")
|
||||
public Response addSharing(@QueryParam("shareUser") String shareUser, @PathParam("groupName") String groupName,
|
||||
@ -293,7 +306,7 @@ public class Group {
|
||||
}
|
||||
|
||||
@DELETE
|
||||
@Path("/{owner}/{groupName}/share/roles/{roleName}/permissions")
|
||||
@Path("/owner/{owner}/name/{groupName}/share/roles/{roleName}/permissions")
|
||||
@Produces("application/json")
|
||||
public Response removeSharing(@QueryParam("userName") String userName, @PathParam("groupName") String groupName,
|
||||
@PathParam("owner") String owner,
|
||||
@ -313,7 +326,7 @@ public class Group {
|
||||
}
|
||||
|
||||
@GET
|
||||
@Path("/{owner}/{groupName}/share/roles")
|
||||
@Path("/owner/{owner}/name/{groupName}/share/roles")
|
||||
@Produces("application/json")
|
||||
public Response getRoles(@PathParam("groupName") String groupName,
|
||||
@PathParam("owner") String owner, @QueryParam("userName") String userName) {
|
||||
@ -334,7 +347,7 @@ public class Group {
|
||||
}
|
||||
|
||||
@GET
|
||||
@Path("/{owner}/{groupName}/users")
|
||||
@Path("/owner/{owner}/name/{groupName}/users")
|
||||
@Produces("application/json")
|
||||
public Response getUsers(@PathParam("groupName") String groupName,
|
||||
@PathParam("owner") String owner) {
|
||||
@ -351,7 +364,7 @@ public class Group {
|
||||
}
|
||||
|
||||
@GET
|
||||
@Path("/{owner}/{groupName}/devices/all")
|
||||
@Path("/owner/{owner}/name/{groupName}/devices/all")
|
||||
@Produces("application/json")
|
||||
public Response getDevices(@PathParam("groupName") String groupName,
|
||||
@PathParam("owner") String owner) {
|
||||
@ -368,7 +381,7 @@ public class Group {
|
||||
}
|
||||
|
||||
@GET
|
||||
@Path("/{owner}/{groupName}/devices/count")
|
||||
@Path("/owner/{owner}/name/{groupName}/devices/count")
|
||||
@Produces("application/json")
|
||||
public Response getDeviceCount(@PathParam("groupName") String groupName,
|
||||
@PathParam("owner") String owner) {
|
||||
@ -382,7 +395,7 @@ public class Group {
|
||||
}
|
||||
|
||||
@PUT
|
||||
@Path("/{owner}/{groupName}/devices/{deviceType}/{deviceId}")
|
||||
@Path("/owner/{owner}/name/{groupName}/devices/{deviceType}/{deviceId}")
|
||||
@Produces("application/json")
|
||||
public Response addDevice(@PathParam("groupName") String groupName,
|
||||
@PathParam("owner") String owner, @PathParam("deviceId") String deviceId,
|
||||
@ -404,7 +417,7 @@ public class Group {
|
||||
}
|
||||
|
||||
@DELETE
|
||||
@Path("/{owner}/{groupName}/devices/{deviceType}/{deviceId}")
|
||||
@Path("/owner/{owner}/name/{groupName}/devices/{deviceType}/{deviceId}")
|
||||
@Produces("application/json")
|
||||
public Response removeDevice(@PathParam("groupName") String groupName,
|
||||
@PathParam("owner") String owner, @PathParam("deviceId") String deviceId,
|
||||
@ -425,7 +438,7 @@ public class Group {
|
||||
}
|
||||
|
||||
@GET
|
||||
@Path("/{owner}/{groupName}/users/{userName}/permissions")
|
||||
@Path("/owner/{owner}/name/{groupName}/users/{userName}/permissions")
|
||||
@Produces("application/json")
|
||||
public Response getPermissions(@PathParam("userName") String userName,
|
||||
@PathParam("groupName") String groupName,
|
||||
@ -16,14 +16,14 @@
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package org.wso2.carbon.mdm.api;
|
||||
package org.wso2.carbon.device.mgt.jaxrs.api;
|
||||
|
||||
import org.apache.commons.httpclient.HttpStatus;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.api.util.DeviceMgtAPIUtils;
|
||||
import org.wso2.carbon.device.mgt.common.DeviceManagementException;
|
||||
import org.wso2.carbon.mdm.api.util.DeviceMgtAPIUtils;
|
||||
import org.wso2.carbon.mdm.api.util.ResponsePayload;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.api.util.ResponsePayload;
|
||||
|
||||
import javax.ws.rs.GET;
|
||||
import javax.ws.rs.POST;
|
||||
@ -16,11 +16,16 @@
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package org.wso2.carbon.mdm.api;
|
||||
package org.wso2.carbon.device.mgt.jaxrs.api;
|
||||
|
||||
import org.apache.commons.httpclient.HttpStatus;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.api.common.MDMAPIException;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.api.context.DeviceOperationContext;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.api.util.MDMIOSOperationUtil;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.beans.ApplicationWrapper;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.beans.MobileApp;
|
||||
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
|
||||
import org.wso2.carbon.device.mgt.common.PaginationRequest;
|
||||
import org.wso2.carbon.device.mgt.common.PaginationResult;
|
||||
@ -31,14 +36,9 @@ import org.wso2.carbon.device.mgt.common.app.mgt.ApplicationManager;
|
||||
import org.wso2.carbon.device.mgt.common.operation.mgt.OperationManagementException;
|
||||
import org.wso2.carbon.device.mgt.core.app.mgt.ApplicationManagementProviderService;
|
||||
import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService;
|
||||
import org.wso2.carbon.mdm.api.common.MDMAPIException;
|
||||
import org.wso2.carbon.mdm.api.context.DeviceOperationContext;
|
||||
import org.wso2.carbon.mdm.api.util.DeviceMgtAPIUtils;
|
||||
import org.wso2.carbon.mdm.api.util.MDMAndroidOperationUtil;
|
||||
import org.wso2.carbon.mdm.api.util.MDMIOSOperationUtil;
|
||||
import org.wso2.carbon.mdm.api.util.ResponsePayload;
|
||||
import org.wso2.carbon.mdm.beans.ApplicationWrapper;
|
||||
import org.wso2.carbon.mdm.beans.MobileApp;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.api.util.DeviceMgtAPIUtils;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.api.util.MDMAndroidOperationUtil;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.api.util.ResponsePayload;
|
||||
|
||||
import javax.ws.rs.Consumes;
|
||||
import javax.ws.rs.GET;
|
||||
@ -16,18 +16,18 @@
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package org.wso2.carbon.mdm.api;
|
||||
package org.wso2.carbon.device.mgt.jaxrs.api;
|
||||
|
||||
import org.apache.commons.httpclient.HttpStatus;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.api.common.MDMAPIException;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.api.util.DeviceMgtAPIUtils;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.beans.PriorityUpdatedPolicyWrapper;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.util.DeviceMgtUtil;
|
||||
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
|
||||
import org.wso2.carbon.mdm.api.common.MDMAPIException;
|
||||
import org.wso2.carbon.mdm.api.util.DeviceMgtAPIUtils;
|
||||
import org.wso2.carbon.mdm.api.util.ResponsePayload;
|
||||
import org.wso2.carbon.mdm.beans.PolicyWrapper;
|
||||
import org.wso2.carbon.mdm.beans.PriorityUpdatedPolicyWrapper;
|
||||
import org.wso2.carbon.mdm.util.MDMUtil;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.api.util.ResponsePayload;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.beans.PolicyWrapper;
|
||||
import org.wso2.carbon.policy.mgt.common.PolicyAdministratorPoint;
|
||||
import org.wso2.carbon.policy.mgt.common.PolicyManagementException;
|
||||
import org.wso2.carbon.policy.mgt.common.PolicyMonitoringTaskException;
|
||||
@ -62,7 +62,7 @@ public class Policy {
|
||||
policy.setPolicyName(policyWrapper.getPolicyName());
|
||||
policy.setProfileId(policyWrapper.getProfileId());
|
||||
policy.setDescription(policyWrapper.getDescription());
|
||||
policy.setProfile(MDMUtil.convertProfile(policyWrapper.getProfile()));
|
||||
policy.setProfile(DeviceMgtUtil.convertProfile(policyWrapper.getProfile()));
|
||||
policy.setOwnershipType(policyWrapper.getOwnershipType());
|
||||
policy.setRoles(policyWrapper.getRoles());
|
||||
policy.setUsers(policyWrapper.getUsers());
|
||||
@ -82,7 +82,7 @@ public class Policy {
|
||||
policy.setPolicyName(policyWrapper.getPolicyName());
|
||||
policy.setProfileId(policyWrapper.getProfileId());
|
||||
policy.setDescription(policyWrapper.getDescription());
|
||||
policy.setProfile(MDMUtil.convertProfile(policyWrapper.getProfile()));
|
||||
policy.setProfile(DeviceMgtUtil.convertProfile(policyWrapper.getProfile()));
|
||||
policy.setOwnershipType(policyWrapper.getOwnershipType());
|
||||
policy.setRoles(policyWrapper.getRoles());
|
||||
policy.setUsers(policyWrapper.getUsers());
|
||||
@ -181,7 +181,7 @@ public class Policy {
|
||||
policy.setId(policyId);
|
||||
policy.setProfileId(policyWrapper.getProfileId());
|
||||
policy.setDescription(policyWrapper.getDescription());
|
||||
policy.setProfile(MDMUtil.convertProfile(policyWrapper.getProfile()));
|
||||
policy.setProfile(DeviceMgtUtil.convertProfile(policyWrapper.getProfile()));
|
||||
policy.setOwnershipType(policyWrapper.getOwnershipType());
|
||||
policy.setRoles(policyWrapper.getRoles());
|
||||
policy.setUsers(policyWrapper.getUsers());
|
||||
@ -16,12 +16,12 @@
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package org.wso2.carbon.mdm.api;
|
||||
package org.wso2.carbon.device.mgt.jaxrs.api;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.wso2.carbon.mdm.api.util.DeviceMgtAPIUtils;
|
||||
import org.wso2.carbon.mdm.api.util.ResponsePayload;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.api.util.DeviceMgtAPIUtils;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.api.util.ResponsePayload;
|
||||
import org.wso2.carbon.policy.mgt.common.PolicyAdministratorPoint;
|
||||
import org.wso2.carbon.policy.mgt.common.PolicyManagementException;
|
||||
import org.wso2.carbon.policy.mgt.core.PolicyManagerService;
|
||||
@ -16,18 +16,18 @@
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package org.wso2.carbon.mdm.api;
|
||||
package org.wso2.carbon.device.mgt.jaxrs.api;
|
||||
|
||||
import org.apache.commons.httpclient.HttpStatus;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.wso2.carbon.CarbonConstants;
|
||||
import org.wso2.carbon.base.MultitenantConstants;
|
||||
import org.wso2.carbon.mdm.api.common.MDMAPIException;
|
||||
import org.wso2.carbon.mdm.api.util.DeviceMgtAPIUtils;
|
||||
import org.wso2.carbon.mdm.api.util.ResponsePayload;
|
||||
import org.wso2.carbon.mdm.beans.RoleWrapper;
|
||||
import org.wso2.carbon.mdm.util.SetReferenceTransformer;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.api.common.MDMAPIException;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.api.util.DeviceMgtAPIUtils;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.api.util.ResponsePayload;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.beans.RoleWrapper;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.util.SetReferenceTransformer;
|
||||
import org.wso2.carbon.user.api.AuthorizationManager;
|
||||
import org.wso2.carbon.user.api.Permission;
|
||||
import org.wso2.carbon.user.api.UserRealm;
|
||||
@ -16,7 +16,7 @@
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package org.wso2.carbon.mdm.api;
|
||||
package org.wso2.carbon.device.mgt.jaxrs.api;
|
||||
|
||||
import org.apache.commons.codec.binary.Base64;
|
||||
import org.apache.commons.httpclient.HttpStatus;
|
||||
@ -24,18 +24,18 @@ import org.apache.commons.lang.StringUtils;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.wso2.carbon.context.CarbonContext;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.api.common.MDMAPIException;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.beans.UserCredentialWrapper;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.beans.UserWrapper;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.util.Constants;
|
||||
import org.wso2.carbon.device.mgt.common.DeviceManagementException;
|
||||
import org.wso2.carbon.device.mgt.common.PaginationRequest;
|
||||
import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService;
|
||||
import org.wso2.carbon.device.mgt.core.service.EmailMetaInfo;
|
||||
import org.wso2.carbon.mdm.api.common.MDMAPIException;
|
||||
import org.wso2.carbon.mdm.api.util.CredentialManagementResponseBuilder;
|
||||
import org.wso2.carbon.mdm.api.util.DeviceMgtAPIUtils;
|
||||
import org.wso2.carbon.mdm.api.util.ResponsePayload;
|
||||
import org.wso2.carbon.mdm.beans.UserCredentialWrapper;
|
||||
import org.wso2.carbon.mdm.beans.UserWrapper;
|
||||
import org.wso2.carbon.mdm.util.Constants;
|
||||
import org.wso2.carbon.mdm.util.SetReferenceTransformer;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.api.util.CredentialManagementResponseBuilder;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.api.util.DeviceMgtAPIUtils;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.api.util.ResponsePayload;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.util.SetReferenceTransformer;
|
||||
import org.wso2.carbon.user.api.UserStoreException;
|
||||
import org.wso2.carbon.user.api.UserStoreManager;
|
||||
import org.wso2.carbon.utils.multitenancy.MultitenantConstants;
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
* 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
|
||||
@ -11,11 +11,12 @@
|
||||
* 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
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
package org.wso2.carbon.mdm.api.common;
|
||||
|
||||
package org.wso2.carbon.device.mgt.jaxrs.api.common;
|
||||
|
||||
import javax.ws.rs.Produces;
|
||||
import javax.ws.rs.core.Response;
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
* 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
|
||||
@ -11,11 +11,12 @@
|
||||
* 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
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
package org.wso2.carbon.mdm.api.common;
|
||||
|
||||
package org.wso2.carbon.device.mgt.jaxrs.api.common;
|
||||
|
||||
|
||||
public class ErrorMessage {
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
* 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
|
||||
@ -11,12 +11,12 @@
|
||||
* 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
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package org.wso2.carbon.mdm.api.common;
|
||||
package org.wso2.carbon.device.mgt.jaxrs.api.common;
|
||||
|
||||
/**
|
||||
* Custom exception class for handling CDM API related exceptions.
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
* 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
|
||||
@ -11,12 +11,12 @@
|
||||
* 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
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package org.wso2.carbon.mdm.api.context;
|
||||
package org.wso2.carbon.device.mgt.jaxrs.api.context;
|
||||
|
||||
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
|
||||
import org.wso2.carbon.device.mgt.common.operation.mgt.Operation;
|
||||
@ -16,14 +16,14 @@
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package org.wso2.carbon.mdm.api.util;
|
||||
package org.wso2.carbon.device.mgt.jaxrs.api.util;
|
||||
|
||||
import org.apache.commons.codec.binary.Base64;
|
||||
import org.apache.commons.httpclient.HttpStatus;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.wso2.carbon.mdm.api.common.MDMAPIException;
|
||||
import org.wso2.carbon.mdm.beans.UserCredentialWrapper;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.api.common.MDMAPIException;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.beans.UserCredentialWrapper;
|
||||
import org.wso2.carbon.user.api.UserStoreException;
|
||||
import org.wso2.carbon.user.api.UserStoreManager;
|
||||
|
||||
@ -16,13 +16,14 @@
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package org.wso2.carbon.mdm.api.util;
|
||||
package org.wso2.carbon.device.mgt.jaxrs.api.util;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.wso2.carbon.certificate.mgt.core.service.CertificateManagementService;
|
||||
import org.wso2.carbon.context.CarbonContext;
|
||||
import org.wso2.carbon.context.PrivilegedCarbonContext;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.api.common.MDMAPIException;
|
||||
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
|
||||
import org.wso2.carbon.device.mgt.common.PaginationResult;
|
||||
import org.wso2.carbon.device.mgt.common.configuration.mgt.ConfigurationEntry;
|
||||
@ -34,7 +35,6 @@ import org.wso2.carbon.device.mgt.core.device.details.mgt.DeviceInformationManag
|
||||
import org.wso2.carbon.device.mgt.core.search.mgt.SearchManagerService;
|
||||
import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService;
|
||||
import org.wso2.carbon.device.mgt.core.service.GroupManagementProviderService;
|
||||
import org.wso2.carbon.mdm.api.common.MDMAPIException;
|
||||
import org.wso2.carbon.policy.mgt.common.PolicyMonitoringTaskException;
|
||||
import org.wso2.carbon.policy.mgt.core.PolicyManagerService;
|
||||
import org.wso2.carbon.policy.mgt.core.task.TaskScheduleService;
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
* 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
|
||||
@ -11,17 +11,20 @@
|
||||
* 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
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
package org.wso2.carbon.mdm.api.util;
|
||||
|
||||
package org.wso2.carbon.device.mgt.jaxrs.api.util;
|
||||
|
||||
import org.wso2.carbon.device.mgt.jaxrs.api.common.MDMAPIException;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.beans.MobileApp;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.beans.android.AppStoreApplication;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.beans.android.EnterpriseApplication;
|
||||
import org.wso2.carbon.device.mgt.common.operation.mgt.Operation;
|
||||
import org.wso2.carbon.device.mgt.core.operation.mgt.ProfileOperation;
|
||||
import org.wso2.carbon.mdm.api.common.MDMAPIException;
|
||||
import org.wso2.carbon.mdm.beans.MobileApp;
|
||||
import org.wso2.carbon.mdm.beans.android.WebApplication;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.beans.android.WebApplication;
|
||||
|
||||
/**
|
||||
*
|
||||
@ -45,15 +48,15 @@ public class MDMAndroidOperationUtil {
|
||||
|
||||
switch (application.getType()) {
|
||||
case ENTERPRISE:
|
||||
org.wso2.carbon.mdm.beans.android.EnterpriseApplication enterpriseApplication =
|
||||
new org.wso2.carbon.mdm.beans.android.EnterpriseApplication();
|
||||
EnterpriseApplication enterpriseApplication =
|
||||
new EnterpriseApplication();
|
||||
enterpriseApplication.setType(application.getType().toString());
|
||||
enterpriseApplication.setUrl(application.getLocation());
|
||||
operation.setPayLoad(enterpriseApplication.toJSON());
|
||||
break;
|
||||
case PUBLIC:
|
||||
org.wso2.carbon.mdm.beans.android.AppStoreApplication appStoreApplication =
|
||||
new org.wso2.carbon.mdm.beans.android.AppStoreApplication();
|
||||
AppStoreApplication appStoreApplication =
|
||||
new AppStoreApplication();
|
||||
appStoreApplication.setType(application.getType().toString());
|
||||
appStoreApplication.setAppIdentifier(application.getIdentifier());
|
||||
operation.setPayLoad(appStoreApplication.toJSON());
|
||||
@ -86,15 +89,15 @@ public class MDMAndroidOperationUtil {
|
||||
|
||||
switch (application.getType()) {
|
||||
case ENTERPRISE:
|
||||
org.wso2.carbon.mdm.beans.android.EnterpriseApplication enterpriseApplication =
|
||||
new org.wso2.carbon.mdm.beans.android.EnterpriseApplication();
|
||||
EnterpriseApplication enterpriseApplication =
|
||||
new EnterpriseApplication();
|
||||
enterpriseApplication.setType(application.getType().toString());
|
||||
enterpriseApplication.setAppIdentifier(application.getAppIdentifier());
|
||||
operation.setPayLoad(enterpriseApplication.toJSON());
|
||||
break;
|
||||
case PUBLIC:
|
||||
org.wso2.carbon.mdm.beans.android.AppStoreApplication appStoreApplication =
|
||||
new org.wso2.carbon.mdm.beans.android.AppStoreApplication();
|
||||
AppStoreApplication appStoreApplication =
|
||||
new AppStoreApplication();
|
||||
appStoreApplication.setType(application.getType().toString());
|
||||
appStoreApplication.setAppIdentifier(application.getAppIdentifier());
|
||||
operation.setPayLoad(appStoreApplication.toJSON());
|
||||
@ -1,20 +1,22 @@
|
||||
/*
|
||||
* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
*
|
||||
* Copyright (c) 2015, 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
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* 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.
|
||||
* 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.mdm.api.util;
|
||||
|
||||
package org.wso2.carbon.device.mgt.jaxrs.api.util;
|
||||
|
||||
/**
|
||||
* This class holds all the constants used for IOS and Android.
|
||||
@ -1,26 +1,31 @@
|
||||
/*
|
||||
* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
*
|
||||
* Copyright (c) 2015, 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
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* 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.
|
||||
* 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.mdm.api.util;
|
||||
|
||||
package org.wso2.carbon.device.mgt.jaxrs.api.util;
|
||||
|
||||
import org.wso2.carbon.device.mgt.jaxrs.api.common.MDMAPIException;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.beans.MobileApp;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.beans.ios.AppStoreApplication;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.beans.ios.EnterpriseApplication;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.beans.ios.RemoveApplication;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.beans.ios.WebClip;
|
||||
import org.wso2.carbon.device.mgt.common.operation.mgt.Operation;
|
||||
import org.wso2.carbon.device.mgt.core.operation.mgt.ProfileOperation;
|
||||
import org.wso2.carbon.mdm.api.common.MDMAPIException;
|
||||
import org.wso2.carbon.mdm.beans.MobileApp;
|
||||
import org.wso2.carbon.mdm.beans.ios.WebClip;
|
||||
|
||||
import java.util.Properties;
|
||||
|
||||
@ -43,8 +48,8 @@ public class MDMIOSOperationUtil {
|
||||
|
||||
switch (application.getType()) {
|
||||
case ENTERPRISE:
|
||||
org.wso2.carbon.mdm.beans.ios.EnterpriseApplication enterpriseApplication =
|
||||
new org.wso2.carbon.mdm.beans.ios.EnterpriseApplication();
|
||||
EnterpriseApplication enterpriseApplication =
|
||||
new EnterpriseApplication();
|
||||
enterpriseApplication.setBundleId(application.getId());
|
||||
enterpriseApplication.setIdentifier(application.getIdentifier());
|
||||
enterpriseApplication.setManifestURL(application.getLocation());
|
||||
@ -59,8 +64,8 @@ public class MDMIOSOperationUtil {
|
||||
operation.setType(Operation.Type.COMMAND);
|
||||
break;
|
||||
case PUBLIC:
|
||||
org.wso2.carbon.mdm.beans.ios.AppStoreApplication appStoreApplication =
|
||||
new org.wso2.carbon.mdm.beans.ios.AppStoreApplication();
|
||||
AppStoreApplication appStoreApplication =
|
||||
new AppStoreApplication();
|
||||
appStoreApplication.setRemoveAppUponMDMProfileRemoval((Boolean) application.getProperties().
|
||||
get(MDMAppConstants.IOSConstants.IS_REMOVE_APP));
|
||||
appStoreApplication.setIdentifier(application.getIdentifier());
|
||||
@ -96,8 +101,8 @@ public class MDMIOSOperationUtil {
|
||||
operation.setCode(MDMAppConstants.IOSConstants.OPCODE_REMOVE_APPLICATION);
|
||||
operation.setType(Operation.Type.PROFILE);
|
||||
|
||||
org.wso2.carbon.mdm.beans.ios.RemoveApplication removeApplication =
|
||||
new org.wso2.carbon.mdm.beans.ios.RemoveApplication();
|
||||
RemoveApplication removeApplication =
|
||||
new RemoveApplication();
|
||||
removeApplication.setBundleId(application.getIdentifier());
|
||||
operation.setPayLoad(removeApplication.toJSON());
|
||||
|
||||
@ -16,7 +16,7 @@
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package org.wso2.carbon.mdm.api.util;
|
||||
package org.wso2.carbon.device.mgt.jaxrs.api.util;
|
||||
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
import javax.xml.bind.annotation.XmlRootElement;
|
||||
@ -1,23 +1,22 @@
|
||||
/*
|
||||
* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
*
|
||||
* Copyright (c) 2015, 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
|
||||
*
|
||||
* 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
|
||||
*
|
||||
* 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.
|
||||
* 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.mdm.beans;
|
||||
package org.wso2.carbon.device.mgt.jaxrs.beans;
|
||||
|
||||
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
|
||||
import java.util.List;
|
||||
@ -16,7 +16,7 @@
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package org.wso2.carbon.mdm.beans;
|
||||
package org.wso2.carbon.device.mgt.jaxrs.beans;
|
||||
|
||||
public class EnrollmentCertificate {
|
||||
String serial;
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
* 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
|
||||
@ -11,14 +11,13 @@
|
||||
* 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
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
package org.wso2.carbon.mdm.beans;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
package org.wso2.carbon.device.mgt.jaxrs.beans;
|
||||
|
||||
import java.util.Properties;
|
||||
|
||||
/**
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
* 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
|
||||
@ -11,11 +11,12 @@
|
||||
* 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
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
package org.wso2.carbon.mdm.beans;
|
||||
|
||||
package org.wso2.carbon.device.mgt.jaxrs.beans;
|
||||
|
||||
public enum MobileAppTypes {
|
||||
ENTERPRISE,WEBAPP,PUBLIC
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
* 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
|
||||
@ -11,12 +11,12 @@
|
||||
* 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
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package org.wso2.carbon.mdm.beans;
|
||||
package org.wso2.carbon.device.mgt.jaxrs.beans;
|
||||
|
||||
import org.wso2.carbon.device.mgt.common.Device;
|
||||
import java.util.List;
|
||||
@ -1,22 +1,22 @@
|
||||
/*
|
||||
* Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
* 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
|
||||
* 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
|
||||
* "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.mdm.beans;
|
||||
package org.wso2.carbon.device.mgt.jaxrs.beans;
|
||||
|
||||
public class PriorityUpdatedPolicyWrapper {
|
||||
|
||||
@ -1,22 +1,22 @@
|
||||
/*
|
||||
* Copyright (c) 2015 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.
|
||||
*/
|
||||
* 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.mdm.beans;
|
||||
package org.wso2.carbon.device.mgt.jaxrs.beans;
|
||||
|
||||
|
||||
|
||||
@ -1,26 +1,25 @@
|
||||
/*
|
||||
* Copyright (c) 2015 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.
|
||||
*/
|
||||
* 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.mdm.beans;
|
||||
package org.wso2.carbon.device.mgt.jaxrs.beans;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import java.io.Serializable;
|
||||
import java.util.LinkedHashMap;
|
||||
|
||||
public class ProfileFeature implements Serializable {
|
||||
|
||||
@ -1,24 +1,25 @@
|
||||
package org.wso2.carbon.mdm.beans;
|
||||
|
||||
import org.wso2.carbon.user.mgt.common.UIPermissionNode;
|
||||
|
||||
/*
|
||||
* Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
* 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
|
||||
* 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
|
||||
* "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 org.wso2.carbon.user.mgt.common.UIPermissionNode;
|
||||
|
||||
public class RoleWrapper {
|
||||
private String roleName;
|
||||
private String[] permissions;
|
||||
@ -1,22 +1,22 @@
|
||||
/*
|
||||
* Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
* 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
|
||||
* 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
|
||||
* "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.mdm.beans;
|
||||
package org.wso2.carbon.device.mgt.jaxrs.beans;
|
||||
|
||||
public class UserCredentialWrapper {
|
||||
|
||||
@ -16,7 +16,7 @@
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package org.wso2.carbon.mdm.beans;
|
||||
package org.wso2.carbon.device.mgt.jaxrs.beans;
|
||||
|
||||
public class UserWrapper {
|
||||
|
||||
@ -0,0 +1,54 @@
|
||||
/*
|
||||
* 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.beans.android;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.api.common.MDMAPIException;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* This class represents the Appstore Application information.
|
||||
*/
|
||||
public class AppStoreApplication implements Serializable {
|
||||
|
||||
private String type;
|
||||
private String appIdentifier;
|
||||
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public void setType(String type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public String getAppIdentifier() {
|
||||
return appIdentifier;
|
||||
}
|
||||
|
||||
public void setAppIdentifier(String appIdentifier) {
|
||||
this.appIdentifier = appIdentifier;
|
||||
}
|
||||
|
||||
public String toJSON() throws MDMAPIException {
|
||||
Gson gson = new Gson();
|
||||
return gson.toJson(this);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,63 @@
|
||||
/*
|
||||
* 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.beans.android;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.api.common.MDMAPIException;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* This class represents the Enterprise Application information.
|
||||
*/
|
||||
public class EnterpriseApplication implements Serializable {
|
||||
|
||||
private String type;
|
||||
private String url;
|
||||
private String appIdentifier;
|
||||
|
||||
public String getAppIdentifier() {
|
||||
return appIdentifier;
|
||||
}
|
||||
|
||||
public void setAppIdentifier(String appIdentifier) {
|
||||
this.appIdentifier = appIdentifier;
|
||||
}
|
||||
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public void setType(String type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public String getUrl() {
|
||||
return url;
|
||||
}
|
||||
|
||||
public void setUrl(String url) {
|
||||
this.url = url;
|
||||
}
|
||||
|
||||
public String toJSON() throws MDMAPIException {
|
||||
Gson gson = new Gson();
|
||||
return gson.toJson(this);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,63 @@
|
||||
/*
|
||||
* 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.beans.android;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.api.common.MDMAPIException;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* This class represents the Web Application information.
|
||||
*/
|
||||
public class WebApplication implements Serializable {
|
||||
|
||||
private String name;
|
||||
private String url;
|
||||
private String type;
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getUrl() {
|
||||
return url;
|
||||
}
|
||||
|
||||
public void setUrl(String url) {
|
||||
this.url = url;
|
||||
}
|
||||
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public void setType(String type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public String toJSON() throws MDMAPIException {
|
||||
Gson gson = new Gson();
|
||||
return gson.toJson(this);
|
||||
}
|
||||
}
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
* 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
|
||||
@ -11,15 +11,16 @@
|
||||
* 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
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
package org.wso2.carbon.mdm.beans.ios;
|
||||
|
||||
package org.wso2.carbon.device.mgt.jaxrs.beans.ios;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import org.wso2.carbon.mdm.api.common.MDMAPIException;
|
||||
import java.io.IOException;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.api.common.MDMAPIException;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
public class AppStoreApplication implements Serializable {
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
* 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
|
||||
@ -11,16 +11,16 @@
|
||||
* 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
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
package org.wso2.carbon.mdm.beans.ios;
|
||||
|
||||
package org.wso2.carbon.device.mgt.jaxrs.beans.ios;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import org.wso2.carbon.mdm.api.common.MDMAPIException;
|
||||
import java.io.IOException;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.api.common.MDMAPIException;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
public class EnterpriseApplication implements Serializable {
|
||||
@ -16,20 +16,27 @@
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
function onRequest(context) {
|
||||
var groupId = request.getParameter("groupId");
|
||||
var title;
|
||||
if (groupId) {
|
||||
title = request.getParameter("groupName") + " Group";
|
||||
} else {
|
||||
groupId = 0;
|
||||
var deviceId = request.getParameter("deviceId");
|
||||
var deviceType = request.getParameter("deviceType");
|
||||
var deviceName = request.getParameter("deviceName");
|
||||
package org.wso2.carbon.device.mgt.jaxrs.beans.ios;
|
||||
|
||||
//title = deviceModule.getDevice(deviceType, deviceId).name;
|
||||
title = deviceName;
|
||||
import com.google.gson.Gson;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.api.common.MDMAPIException;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
public class RemoveApplication implements Serializable {
|
||||
|
||||
private String bundleId;
|
||||
|
||||
public String getBundleId() {
|
||||
return bundleId;
|
||||
}
|
||||
|
||||
return {"title": title, "groupId": groupId};
|
||||
public void setBundleId(String bundleId) {
|
||||
this.bundleId = bundleId;
|
||||
}
|
||||
|
||||
public String toJSON() throws MDMAPIException {
|
||||
Gson gson = new Gson();
|
||||
return gson.toJson(this);
|
||||
}
|
||||
}
|
||||
@ -1,8 +1,25 @@
|
||||
package org.wso2.carbon.mdm.beans.ios;
|
||||
/*
|
||||
* 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.beans.ios;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import org.wso2.carbon.mdm.api.common.MDMAPIException;
|
||||
import java.io.IOException;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.api.common.MDMAPIException;
|
||||
|
||||
public class WebClip {
|
||||
|
||||
@ -1,23 +1,22 @@
|
||||
/*
|
||||
* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
*
|
||||
* Copyright (c) 2015, 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
|
||||
*
|
||||
* 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
|
||||
*
|
||||
* 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.
|
||||
* 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.mdm.common;
|
||||
package org.wso2.carbon.device.mgt.jaxrs.common;
|
||||
|
||||
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2014, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
* 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
|
||||
@ -11,12 +11,12 @@
|
||||
* 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
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package org.wso2.mdm.common;
|
||||
package org.wso2.carbon.device.mgt.jaxrs.common;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.GsonBuilder;
|
||||
@ -16,7 +16,7 @@
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package org.wso2.carbon.mdm.exception;
|
||||
package org.wso2.carbon.device.mgt.jaxrs.exception;
|
||||
|
||||
import javax.ws.rs.WebApplicationException;
|
||||
import javax.ws.rs.core.MediaType;
|
||||
@ -16,7 +16,7 @@
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package org.wso2.carbon.mdm.exception;
|
||||
package org.wso2.carbon.device.mgt.jaxrs.exception;
|
||||
|
||||
public class Message {
|
||||
|
||||
@ -16,7 +16,7 @@
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package org.wso2.carbon.mdm.util;
|
||||
package org.wso2.carbon.device.mgt.jaxrs.util;
|
||||
|
||||
/**
|
||||
* Holds the constants used by Device Management Admin web application.
|
||||
@ -15,17 +15,18 @@
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
package org.wso2.carbon.mdm.util;
|
||||
|
||||
import org.wso2.carbon.mdm.beans.ProfileFeature;
|
||||
package org.wso2.carbon.device.mgt.jaxrs.util;
|
||||
|
||||
import org.wso2.carbon.device.mgt.jaxrs.beans.ProfileFeature;
|
||||
import org.wso2.carbon.policy.mgt.common.Profile;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class MDMUtil {
|
||||
public class DeviceMgtUtil {
|
||||
|
||||
public static Profile convertProfile(org.wso2.carbon.mdm.beans.Profile mdmProfile) {
|
||||
public static Profile convertProfile(org.wso2.carbon.device.mgt.jaxrs.beans.Profile mdmProfile) {
|
||||
Profile profile = new Profile();
|
||||
profile.setTenantId(mdmProfile.getTenantId());
|
||||
profile.setCreatedDate(mdmProfile.getCreatedDate());
|
||||
@ -16,7 +16,7 @@
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package org.wso2.carbon.mdm.util;
|
||||
package org.wso2.carbon.device.mgt.jaxrs.util;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@ -1,52 +0,0 @@
|
||||
/*
|
||||
*
|
||||
* Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.wso2.carbon.mdm.beans.android;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import org.wso2.carbon.mdm.api.common.MDMAPIException;
|
||||
import java.io.IOException;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* This class represents the Appstore Application information.
|
||||
*/
|
||||
public class AppStoreApplication implements Serializable {
|
||||
|
||||
private String type;
|
||||
private String appIdentifier;
|
||||
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public void setType(String type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public String getAppIdentifier() {
|
||||
return appIdentifier;
|
||||
}
|
||||
|
||||
public void setAppIdentifier(String appIdentifier) {
|
||||
this.appIdentifier = appIdentifier;
|
||||
}
|
||||
|
||||
public String toJSON() throws MDMAPIException {
|
||||
Gson gson = new Gson();
|
||||
return gson.toJson(this);
|
||||
}
|
||||
}
|
||||
@ -1,61 +0,0 @@
|
||||
/*
|
||||
*
|
||||
* Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.wso2.carbon.mdm.beans.android;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import org.wso2.carbon.mdm.api.common.MDMAPIException;
|
||||
import java.io.IOException;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* This class represents the Enterprise Application information.
|
||||
*/
|
||||
public class EnterpriseApplication implements Serializable {
|
||||
|
||||
private String type;
|
||||
private String url;
|
||||
private String appIdentifier;
|
||||
|
||||
public String getAppIdentifier() {
|
||||
return appIdentifier;
|
||||
}
|
||||
|
||||
public void setAppIdentifier(String appIdentifier) {
|
||||
this.appIdentifier = appIdentifier;
|
||||
}
|
||||
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public void setType(String type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public String getUrl() {
|
||||
return url;
|
||||
}
|
||||
|
||||
public void setUrl(String url) {
|
||||
this.url = url;
|
||||
}
|
||||
|
||||
public String toJSON() throws MDMAPIException {
|
||||
Gson gson = new Gson();
|
||||
return gson.toJson(this);
|
||||
}
|
||||
}
|
||||
@ -1,61 +0,0 @@
|
||||
/*
|
||||
*
|
||||
* Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.wso2.carbon.mdm.beans.android;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import org.wso2.carbon.mdm.api.common.MDMAPIException;
|
||||
import java.io.IOException;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* This class represents the Web Application information.
|
||||
*/
|
||||
public class WebApplication implements Serializable {
|
||||
|
||||
private String name;
|
||||
private String url;
|
||||
private String type;
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getUrl() {
|
||||
return url;
|
||||
}
|
||||
|
||||
public void setUrl(String url) {
|
||||
this.url = url;
|
||||
}
|
||||
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public void setType(String type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public String toJSON() throws MDMAPIException {
|
||||
Gson gson = new Gson();
|
||||
return gson.toJson(this);
|
||||
}
|
||||
}
|
||||
@ -1,24 +0,0 @@
|
||||
package org.wso2.carbon.mdm.beans.ios;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import org.wso2.carbon.mdm.api.common.MDMAPIException;
|
||||
import java.io.IOException;
|
||||
import java.io.Serializable;
|
||||
|
||||
public class RemoveApplication implements Serializable {
|
||||
|
||||
private String bundleId;
|
||||
|
||||
public String getBundleId() {
|
||||
return bundleId;
|
||||
}
|
||||
|
||||
public void setBundleId(String bundleId) {
|
||||
this.bundleId = bundleId;
|
||||
}
|
||||
|
||||
public String toJSON() throws MDMAPIException {
|
||||
Gson gson = new Gson();
|
||||
return gson.toJson(this);
|
||||
}
|
||||
}
|
||||
@ -59,6 +59,13 @@
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
|
||||
<Permission>
|
||||
<name>User Devices</name>
|
||||
<path>/device-mgt/user/devices</path>
|
||||
<url>/</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
|
||||
<Permission>
|
||||
<name>Policies</name>
|
||||
<path>/device-mgt/admin/policies</path>
|
||||
@ -66,6 +73,13 @@
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
|
||||
<Permission>
|
||||
<name>User Policies</name>
|
||||
<path>/device-mgt/user/policies</path>
|
||||
<url>/</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
|
||||
<Permission>
|
||||
<name>Notifications</name>
|
||||
<path>/device-mgt/admin/notifications</path>
|
||||
@ -73,6 +87,13 @@
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
|
||||
<Permission>
|
||||
<name>User Notifications</name>
|
||||
<path>/device-mgt/user/notifications</path>
|
||||
<url>/</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
|
||||
<Permission>
|
||||
<name>Users</name>
|
||||
<path>/device-mgt/admin/users</path>
|
||||
@ -87,6 +108,13 @@
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
|
||||
<Permission>
|
||||
<name>User Operations</name>
|
||||
<path>/device-mgt/user/operations</path>
|
||||
<url>/</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
|
||||
<Permission>
|
||||
<name>Applications</name>
|
||||
<path>/device-mgt/admin/operations/applications</path>
|
||||
@ -123,12 +151,19 @@
|
||||
</Permission>
|
||||
|
||||
<Permission>
|
||||
<name>List devices</name>
|
||||
<name>List device types</name>
|
||||
<path>/device-mgt/admin/devices/list</path>
|
||||
<url>/devices/types</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
|
||||
<Permission>
|
||||
<name>List device types</name>
|
||||
<path>/device-mgt/user/devices/list</path>
|
||||
<url>/devices/types</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
|
||||
<Permission>
|
||||
<name>Add policy</name>
|
||||
<path>/device-mgt/admin/policies/add</path>
|
||||
@ -136,6 +171,13 @@
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
|
||||
<Permission>
|
||||
<name>Add User policy</name>
|
||||
<path>/device-mgt/user/policies/add</path>
|
||||
<url>/devices/types</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
|
||||
<Permission>
|
||||
<name>Edit policy</name>
|
||||
<path>/device-mgt/admin/policies/update</path>
|
||||
@ -143,6 +185,13 @@
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
|
||||
<Permission>
|
||||
<name>Edit User policy</name>
|
||||
<path>/device-mgt/user/policies/update</path>
|
||||
<url>/devices/types</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
|
||||
<Permission>
|
||||
<name>View device</name>
|
||||
<path>/device-mgt/admin/devices/view</path>
|
||||
@ -151,12 +200,26 @@
|
||||
</Permission>
|
||||
|
||||
<Permission>
|
||||
<name>View device</name>
|
||||
<name>View user device</name>
|
||||
<path>/device-mgt/user/devices/view</path>
|
||||
<url>/devices/view</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
|
||||
<Permission>
|
||||
<name>Modify user device</name>
|
||||
<path>/device-mgt/user/devices/update</path>
|
||||
<url>/devices/type/*/id/*</url>
|
||||
<method>PUT</method>
|
||||
</Permission>
|
||||
|
||||
<Permission>
|
||||
<name>Remove user device</name>
|
||||
<path>/device-mgt/user/devices/remove</path>
|
||||
<url>/devices/type/*/id/*</url>
|
||||
<method>DELETE</method>
|
||||
</Permission>
|
||||
|
||||
<!--<Permission>-->
|
||||
<!--<name>Get device</name>-->
|
||||
<!--<path>/device-mgt/devices/view</path>-->
|
||||
@ -173,18 +236,32 @@
|
||||
</Permission>
|
||||
|
||||
<Permission>
|
||||
<name>List devices</name>
|
||||
<name>Devices Count All</name>
|
||||
<path>/device-mgt/admin/devices/list</path>
|
||||
<url>/devices/count</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
|
||||
<Permission>
|
||||
<name>Device Count</name>
|
||||
<path>/device-mgt/user/devices/list</path>
|
||||
<url>/devices/user/*/count</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
|
||||
<Permission>
|
||||
<name>List devices</name>
|
||||
<path>/device-mgt/admin/devices/list</path>
|
||||
<url>/devices/name/*/*</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
|
||||
<Permission>
|
||||
<name>List All Own Devices</name>
|
||||
<path>/device-mgt/user/devices/list</path>
|
||||
<url>/devices/user/*</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<!-- End of Device related APIs -->
|
||||
|
||||
<!-- Notification related APIs -->
|
||||
@ -501,19 +578,12 @@
|
||||
</Permission>
|
||||
|
||||
<Permission>
|
||||
<name>List devices</name>
|
||||
<name>List user devices</name>
|
||||
<path>/device-mgt/user/devices/list</path>
|
||||
<url>/users/devices</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
|
||||
<Permission>
|
||||
<name>List devices</name>
|
||||
<path>/device-mgt/admin/devices/list</path>
|
||||
<url>/users/devices</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
|
||||
<Permission>
|
||||
<name>View user</name>
|
||||
<path>/device-mgt/admin/users/view</path>
|
||||
@ -854,144 +924,186 @@
|
||||
|
||||
<!-- Group related APIs -->
|
||||
<Permission>
|
||||
<name>Group Management</name>
|
||||
<name>Group Management Admin</name>
|
||||
<path>/device-mgt/admin/groups</path>
|
||||
<url>/</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
|
||||
<Permission>
|
||||
<name>Group Management User</name>
|
||||
<path>/device-mgt/user/groups</path>
|
||||
<url>/</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
|
||||
<Permission>
|
||||
<name>Add Group</name>
|
||||
<path>/device-mgt/user/groups/add</path>
|
||||
<url>/groups</url>
|
||||
<method>POST</method>
|
||||
</Permission>
|
||||
|
||||
<Permission>
|
||||
<name>Group Management</name>
|
||||
<path>/device-mgt/admin/groups</path>
|
||||
<url>/groups/*/*</url>
|
||||
<name>Group update</name>
|
||||
<path>/device-mgt/user/groups/update</path>
|
||||
<url>/groups/owner/*/name/*</url>
|
||||
<method>PUT</method>
|
||||
</Permission>
|
||||
|
||||
<Permission>
|
||||
<name>Group Management</name>
|
||||
<path>/device-mgt/admin/groups</path>
|
||||
<url>/groups/*/*</url>
|
||||
<name>Group Delete</name>
|
||||
<path>/device-mgt/user/groups/delete</path>
|
||||
<url>/groups/owner/*/name/*</url>
|
||||
<method>DELETE</method>
|
||||
</Permission>
|
||||
|
||||
<Permission>
|
||||
<name>Group Management</name>
|
||||
<path>/device-mgt/admin/groups</path>
|
||||
<name>List All Groups</name>
|
||||
<path>/device-mgt/admin/groups/list</path>
|
||||
<url>/groups</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
|
||||
<Permission>
|
||||
<name>Group Management</name>
|
||||
<path>/device-mgt/admin/groups</path>
|
||||
<name>List Groups</name>
|
||||
<path>/device-mgt/user/groups/list</path>
|
||||
<url>/groups/user/*</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
|
||||
<Permission>
|
||||
<name>Group Management</name>
|
||||
<path>/device-mgt/admin/groups</path>
|
||||
<url>/groups/*/*</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
|
||||
<Permission>
|
||||
<name>Group Management</name>
|
||||
<path>/device-mgt/admin/groups</path>
|
||||
<url>/groups/search</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
|
||||
<Permission>
|
||||
<name>Group Management</name>
|
||||
<path>/device-mgt/admin/groups</path>
|
||||
<name>List Groups</name>
|
||||
<path>/device-mgt/user/groups/list</path>
|
||||
<url>/groups/user/*/all</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
|
||||
<Permission>
|
||||
<name>Group Management</name>
|
||||
<path>/device-mgt/admin/groups</path>
|
||||
<name>View Group</name>
|
||||
<path>/device-mgt/user/groups/view</path>
|
||||
<url>/groups/owner/*/name/*</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
|
||||
<Permission>
|
||||
<name>Search Group User</name>
|
||||
<path>/device-mgt/user/groups/list</path>
|
||||
<url>/groups/user/*/search</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
|
||||
<Permission>
|
||||
<name>All Group Count</name>
|
||||
<path>/device-mgt/admin/groups/list</path>
|
||||
<url>/groups/count</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
|
||||
<Permission>
|
||||
<name>Group Count</name>
|
||||
<path>/device-mgt/user/groups/list</path>
|
||||
<url>/groups/user/*/count</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
|
||||
<Permission>
|
||||
<name>Group Management</name>
|
||||
<path>/device-mgt/admin/groups</path>
|
||||
<url>/groups/*/*/share</url>
|
||||
<name>Group Share</name>
|
||||
<path>/device-mgt/user/groups/share</path>
|
||||
<url>/groups/owner/*/name/*/share</url>
|
||||
<method>PUT</method>
|
||||
</Permission>
|
||||
|
||||
<Permission>
|
||||
<name>Group Management</name>
|
||||
<path>/device-mgt/admin/groups</path>
|
||||
<url>/groups/*/*/unshare</url>
|
||||
<name>Group Unshare</name>
|
||||
<path>/device-mgt/user/groups/unshare</path>
|
||||
<url>/groups/owner/*/name/*/unshare</url>
|
||||
<method>PUT</method>
|
||||
</Permission>
|
||||
|
||||
<Permission>
|
||||
<name>Group Management</name>
|
||||
<path>/device-mgt/admin/groups</path>
|
||||
<url>/groups/*/*/share/roles/*/permissions</url>
|
||||
<name>Group Roles</name>
|
||||
<path>/device-mgt/user/groups/roles</path>
|
||||
<url>/groups/owner/*/name/*/share/roles</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
|
||||
<Permission>
|
||||
<name>Group Permissions</name>
|
||||
<path>/device-mgt/admin/groups/roles/permissions</path>
|
||||
<url>/groups/owner/*/name/*/share/roles/*/permissions</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
|
||||
<Permission>
|
||||
<name>Group Add Permissions</name>
|
||||
<path>/device-mgt/admin/groups/roles/permissions/add</path>
|
||||
<url>/groups/owner/*/name/*/share/roles/*/permissions</url>
|
||||
<method>PUT</method>
|
||||
</Permission>
|
||||
|
||||
<Permission>
|
||||
<name>Group Management</name>
|
||||
<path>/device-mgt/admin/groups</path>
|
||||
<url>/groups/*/*/share/roles/*/permissions</url>
|
||||
<name>Group Delete Permissions</name>
|
||||
<path>/device-mgt/admin/groups/roles/permissions/delete</path>
|
||||
<url>/groups/owner/*/name/*/share/roles/*/permissions</url>
|
||||
<method>DELETE</method>
|
||||
</Permission>
|
||||
|
||||
<Permission>
|
||||
<name>Group Management</name>
|
||||
<path>/device-mgt/admin/groups</path>
|
||||
<url>/groups/*/*/share/roles</url>
|
||||
<name>Group Users</name>
|
||||
<path>/device-mgt/user/groups/users</path>
|
||||
<url>/</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
|
||||
<Permission>
|
||||
<name>Group Management</name>
|
||||
<path>/device-mgt/admin/groups</path>
|
||||
<url>/groups/*/*/users</url>
|
||||
<name>List Group Users</name>
|
||||
<path>/device-mgt/user/groups/users/list</path>
|
||||
<url>/groups/owner/*/name/*/users</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
|
||||
<Permission>
|
||||
<name>Group Management</name>
|
||||
<path>/device-mgt/admin/groups</path>
|
||||
<url>/groups/*/*/devices/all</url>
|
||||
<name>Get Permissions for Group</name>
|
||||
<path>/device-mgt/user/groups/users/permissions</path>
|
||||
<url>/groups/owner/*/name/*/users/*/permissions</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
|
||||
<Permission>
|
||||
<name>Group Management</name>
|
||||
<path>/device-mgt/admin/groups</path>
|
||||
<url>/groups/*/*/devices/count</url>
|
||||
<name>Group Devices</name>
|
||||
<path>/device-mgt/user/groups/devices</path>
|
||||
<url>/</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
|
||||
<Permission>
|
||||
<name>Group Management</name>
|
||||
<path>/device-mgt/admin/groups</path>
|
||||
<url>/groups/*/*/devices/*/*</url>
|
||||
<name>List Group Devices</name>
|
||||
<path>/device-mgt/user/groups/devices/list</path>
|
||||
<url>/groups/owner/*/name/*/devices/all</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
|
||||
<Permission>
|
||||
<name>Group Devices Count</name>
|
||||
<path>/device-mgt/user/groups/devices/count</path>
|
||||
<url>/groups/owner/*/name/*/devices/count</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
|
||||
<Permission>
|
||||
<name>Add Device to Group</name>
|
||||
<path>/device-mgt/user/groups/devices/add</path>
|
||||
<url>/groups/owner/*/name/*/devices/*/*</url>
|
||||
<method>PUT</method>
|
||||
</Permission>
|
||||
|
||||
<Permission>
|
||||
<name>Group Management</name>
|
||||
<path>/device-mgt/admin/groups</path>
|
||||
<url>/groups/*/*/devices/*/*</url>
|
||||
<name>Remove Device from Group</name>
|
||||
<path>/device-mgt/user/groups/devices/remove</path>
|
||||
<url>/groups/owner/*/name/*/devices/*/*</url>
|
||||
<method>DELETE</method>
|
||||
</Permission>
|
||||
|
||||
<Permission>
|
||||
<name>Group Management</name>
|
||||
<path>/device-mgt/admin/groups</path>
|
||||
<url>/groups/*/*/users/*/permissions</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<!-- End of Group related APIs -->
|
||||
|
||||
</PermissionConfiguration>
|
||||
|
||||
@ -163,26 +163,24 @@
|
||||
</jaxrs:providers>
|
||||
</jaxrs:server>
|
||||
-->
|
||||
<bean id="operationServiceBean" class="org.wso2.carbon.mdm.api.Operation"/>
|
||||
<bean id="deviceServiceBean" class="org.wso2.carbon.mdm.api.Device"/>
|
||||
<bean id="groupServiceBean" class="org.wso2.carbon.mdm.api.Group"/>
|
||||
<bean id="userServiceBean" class="org.wso2.carbon.mdm.api.User"/>
|
||||
<bean id="roleServiceBean" class="org.wso2.carbon.mdm.api.Role"/>
|
||||
<bean id="featureServiceBean" class="org.wso2.carbon.mdm.api.Feature"/>
|
||||
<bean id="configurationServiceBean" class="org.wso2.carbon.mdm.api.Configuration"/>
|
||||
<bean id="notificationServiceBean" class="org.wso2.carbon.mdm.api.DeviceNotification"/>
|
||||
<bean id="licenseServiceBean" class="org.wso2.carbon.mdm.api.License"/>
|
||||
<bean id="certificateServiceBean" class="org.wso2.carbon.mdm.api.Certificate"/>
|
||||
|
||||
|
||||
<bean id="informationServiceBean" class="org.wso2.carbon.mdm.api.DeviceInformation"/>
|
||||
<bean id="searchingServiceBean" class="org.wso2.carbon.mdm.api.DeviceSearch"/>
|
||||
<bean id="operationServiceBean" class="org.wso2.carbon.device.mgt.jaxrs.api.Operation"/>
|
||||
<bean id="deviceServiceBean" class="org.wso2.carbon.device.mgt.jaxrs.api.Device"/>
|
||||
<bean id="groupServiceBean" class="org.wso2.carbon.device.mgt.jaxrs.api.Group"/>
|
||||
<bean id="userServiceBean" class="org.wso2.carbon.device.mgt.jaxrs.api.User"/>
|
||||
<bean id="roleServiceBean" class="org.wso2.carbon.device.mgt.jaxrs.api.Role"/>
|
||||
<bean id="featureServiceBean" class="org.wso2.carbon.device.mgt.jaxrs.api.Feature"/>
|
||||
<bean id="configurationServiceBean" class="org.wso2.carbon.device.mgt.jaxrs.api.Configuration"/>
|
||||
<bean id="notificationServiceBean" class="org.wso2.carbon.device.mgt.jaxrs.api.DeviceNotification"/>
|
||||
<bean id="licenseServiceBean" class="org.wso2.carbon.device.mgt.jaxrs.api.License"/>
|
||||
<bean id="certificateServiceBean" class="org.wso2.carbon.device.mgt.jaxrs.api.Certificate"/>
|
||||
<bean id="informationServiceBean" class="org.wso2.carbon.device.mgt.jaxrs.api.DeviceInformation"/>
|
||||
<bean id="searchingServiceBean" class="org.wso2.carbon.device.mgt.jaxrs.api.DeviceSearch"/>
|
||||
<!--
|
||||
<bean id="authenticationServiceBean" class="org.wso2.carbon.mdm.api.Authentication"/>
|
||||
<bean id="authenticationServiceBean" class="Authentication"/>
|
||||
-->
|
||||
<bean id="policyServiceBean" class="org.wso2.carbon.mdm.api.Policy"/>
|
||||
<bean id="profileServiceBean" class="org.wso2.carbon.mdm.api.Profile"/>
|
||||
<bean id="jsonProvider" class="org.wso2.mdm.common.GsonMessageBodyHandler"/>
|
||||
<bean id="errorHandler" class="org.wso2.carbon.mdm.api.common.ErrorHandler"/>
|
||||
<bean id="policyServiceBean" class="org.wso2.carbon.device.mgt.jaxrs.api.Policy"/>
|
||||
<bean id="profileServiceBean" class="org.wso2.carbon.device.mgt.jaxrs.api.Profile"/>
|
||||
<bean id="jsonProvider" class="org.wso2.carbon.device.mgt.jaxrs.common.GsonMessageBodyHandler"/>
|
||||
<bean id="errorHandler" class="org.wso2.carbon.device.mgt.jaxrs.api.common.ErrorHandler"/>
|
||||
|
||||
</beans>
|
||||
|
||||
@ -118,4 +118,10 @@ public class EnrolmentInfo implements Serializable {
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return owner.hashCode() ^ ownership.hashCode();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -0,0 +1,39 @@
|
||||
/*
|
||||
* 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.common;
|
||||
|
||||
public class ProvisioningConfig {
|
||||
|
||||
private String providerTenantDomain;
|
||||
private boolean isSharedWithAllTenants;
|
||||
|
||||
public ProvisioningConfig(String providerTenantDomain, boolean sharedWithAllTenants) {
|
||||
this.providerTenantDomain = providerTenantDomain;
|
||||
isSharedWithAllTenants = sharedWithAllTenants;
|
||||
}
|
||||
|
||||
public String getProviderTenantDomain() {
|
||||
return providerTenantDomain;
|
||||
}
|
||||
|
||||
public boolean isSharedWithAllTenants() {
|
||||
return isSharedWithAllTenants;
|
||||
}
|
||||
|
||||
}
|
||||
@ -28,29 +28,29 @@ import java.util.List;
|
||||
/**
|
||||
* Represents the tenant configuration for a device platform.
|
||||
*/
|
||||
@XmlRootElement(name="tenantConfiguration")
|
||||
@XmlRootElement(name = "tenantConfiguration")
|
||||
@XmlAccessorType(XmlAccessType.NONE)
|
||||
public class TenantConfiguration implements Serializable{
|
||||
public class TenantConfiguration implements Serializable {
|
||||
|
||||
@XmlElement(name="type")
|
||||
private String type;
|
||||
@XmlElement(name="configuration")
|
||||
private List<ConfigurationEntry> configuration;
|
||||
@XmlElement(name = "type")
|
||||
private String type;
|
||||
@XmlElement(name = "configuration")
|
||||
private List<ConfigurationEntry> configuration;
|
||||
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public void setType(String type) {
|
||||
this.type = type;
|
||||
}
|
||||
public void setType(String type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public List<ConfigurationEntry> getConfiguration() {
|
||||
return configuration;
|
||||
}
|
||||
public List<ConfigurationEntry> getConfiguration() {
|
||||
return configuration;
|
||||
}
|
||||
|
||||
public void setConfiguration(List<ConfigurationEntry> configuration) {
|
||||
this.configuration = configuration;
|
||||
}
|
||||
public void setConfiguration(List<ConfigurationEntry> configuration) {
|
||||
this.configuration = configuration;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -28,6 +28,7 @@ import java.util.List;
|
||||
@XmlRootElement
|
||||
public class DeviceGroup implements Serializable {
|
||||
|
||||
private int id;
|
||||
private String description;
|
||||
private String name;
|
||||
private Long dateOfCreation;
|
||||
@ -36,6 +37,15 @@ public class DeviceGroup implements Serializable {
|
||||
private List<GroupUser> users;
|
||||
private List<String> roles;
|
||||
|
||||
@XmlElement
|
||||
public int getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(int id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
@XmlElement
|
||||
public String getDescription() {
|
||||
return description;
|
||||
@ -101,6 +111,7 @@ public class DeviceGroup implements Serializable {
|
||||
|
||||
protected DeviceGroup getGroup() {
|
||||
DeviceGroup deviceGroup = new DeviceGroup();
|
||||
deviceGroup.setId(getId());
|
||||
deviceGroup.setDescription(getDescription());
|
||||
deviceGroup.setName(getName());
|
||||
deviceGroup.setDateOfCreation(getDateOfCreation());
|
||||
|
||||
@ -0,0 +1,41 @@
|
||||
/*
|
||||
* 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.common.push.notification;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
public class PushNotificationConfig {
|
||||
|
||||
private String type;
|
||||
private Set<String> properties;
|
||||
|
||||
public PushNotificationConfig(String type, Set<String> properties) {
|
||||
this.type = type;
|
||||
this.properties = properties;
|
||||
}
|
||||
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public Set<String> getProperties() {
|
||||
return properties;
|
||||
}
|
||||
|
||||
}
|
||||
@ -18,46 +18,28 @@
|
||||
*/
|
||||
package org.wso2.carbon.device.mgt.common.spi;
|
||||
|
||||
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
|
||||
import org.wso2.carbon.device.mgt.common.DeviceManagementException;
|
||||
import org.wso2.carbon.device.mgt.common.DeviceManager;
|
||||
import org.wso2.carbon.device.mgt.common.ProvisioningConfig;
|
||||
import org.wso2.carbon.device.mgt.common.app.mgt.ApplicationManager;
|
||||
import org.wso2.carbon.device.mgt.common.operation.mgt.Operation;
|
||||
|
||||
import java.util.List;
|
||||
import org.wso2.carbon.device.mgt.common.push.notification.PushNotificationConfig;
|
||||
|
||||
/**
|
||||
* Composite interface that acts as the SPI exposing all device management as well as application management
|
||||
* functionalities.
|
||||
*/
|
||||
public interface DeviceManagementService extends ApplicationManager {
|
||||
|
||||
/**
|
||||
* Method to retrieve the provider type that implements DeviceManager interface.
|
||||
*
|
||||
* @return Returns provider type
|
||||
*/
|
||||
String getType();
|
||||
|
||||
/**
|
||||
* This returns the tenant domain of the provider.
|
||||
* @return
|
||||
*/
|
||||
String getProviderTenantDomain();
|
||||
|
||||
/**
|
||||
* returns true if the device type is shared between all tenants and false if its not.
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
boolean isSharedWithAllTenants();
|
||||
public interface DeviceManagementService {
|
||||
|
||||
void init() throws DeviceManagementException;
|
||||
|
||||
String getType();
|
||||
|
||||
DeviceManager getDeviceManager();
|
||||
|
||||
ApplicationManager getApplicationManager();
|
||||
|
||||
void notifyOperationToDevices(Operation operation, List<DeviceIdentifier> deviceIds) throws DeviceManagementException;
|
||||
ProvisioningConfig getProvisioningConfig();
|
||||
|
||||
PushNotificationConfig getPushNotificationConfig();
|
||||
|
||||
}
|
||||
|
||||
@ -21,6 +21,7 @@ import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.wso2.carbon.device.mgt.common.DeviceManagementException;
|
||||
import org.wso2.carbon.device.mgt.common.DeviceTypeIdentifier;
|
||||
import org.wso2.carbon.device.mgt.common.ProvisioningConfig;
|
||||
import org.wso2.carbon.device.mgt.common.spi.DeviceManagementService;
|
||||
import org.wso2.carbon.device.mgt.core.internal.DeviceManagementDataHolder;
|
||||
import org.wso2.carbon.device.mgt.core.internal.DeviceManagementServiceComponent;
|
||||
@ -44,8 +45,10 @@ public class DeviceManagementPluginRepository implements DeviceManagerStartupLis
|
||||
|
||||
public void addDeviceManagementProvider(DeviceManagementService provider) throws DeviceManagementException {
|
||||
String deviceType = provider.getType();
|
||||
String tenantDomain = provider.getProviderTenantDomain();
|
||||
boolean isSharedWithAllTenants = provider.isSharedWithAllTenants();
|
||||
|
||||
ProvisioningConfig provisioningConfig = provider.getProvisioningConfig();
|
||||
String tenantDomain = provisioningConfig.getProviderTenantDomain();
|
||||
boolean isSharedWithAllTenants = provisioningConfig.isSharedWithAllTenants();
|
||||
int tenantId = DeviceManagerUtil.getTenantId(tenantDomain);
|
||||
if (tenantId == -1) {
|
||||
throw new DeviceManagementException("No tenant available for tenant domain " + tenantDomain);
|
||||
@ -57,7 +60,7 @@ public class DeviceManagementPluginRepository implements DeviceManagerStartupLis
|
||||
provider.init();
|
||||
DeviceManagerUtil.registerDeviceType(deviceType, tenantId, isSharedWithAllTenants);
|
||||
DeviceManagementDataHolder.getInstance().setRequireDeviceAuthorization(deviceType,
|
||||
provider.getDeviceManager().requireDeviceAuthorization());
|
||||
provider.getDeviceManager().requireDeviceAuthorization());
|
||||
|
||||
}
|
||||
} catch (DeviceManagementException e) {
|
||||
@ -75,13 +78,15 @@ public class DeviceManagementPluginRepository implements DeviceManagerStartupLis
|
||||
}
|
||||
|
||||
public void removeDeviceManagementProvider(DeviceManagementService provider) throws DeviceManagementException {
|
||||
String deviceTypeName=provider.getType();
|
||||
if(provider.isSharedWithAllTenants()){
|
||||
DeviceTypeIdentifier deviceTypeIdentifier =new DeviceTypeIdentifier(deviceTypeName);
|
||||
String deviceTypeName = provider.getType();
|
||||
|
||||
ProvisioningConfig provisioningConfig = provider.getProvisioningConfig();
|
||||
if (provisioningConfig.isSharedWithAllTenants()) {
|
||||
DeviceTypeIdentifier deviceTypeIdentifier = new DeviceTypeIdentifier(deviceTypeName);
|
||||
providers.remove(deviceTypeIdentifier);
|
||||
}else{
|
||||
int providerTenantId=DeviceManagerUtil.getTenantId(provider.getProviderTenantDomain());
|
||||
DeviceTypeIdentifier deviceTypeIdentifier =new DeviceTypeIdentifier(deviceTypeName, providerTenantId);
|
||||
} else {
|
||||
int providerTenantId = DeviceManagerUtil.getTenantId(provisioningConfig.getProviderTenantDomain());
|
||||
DeviceTypeIdentifier deviceTypeIdentifier = new DeviceTypeIdentifier(deviceTypeName, providerTenantId);
|
||||
providers.remove(deviceTypeIdentifier);
|
||||
}
|
||||
}
|
||||
@ -113,15 +118,17 @@ public class DeviceManagementPluginRepository implements DeviceManagerStartupLis
|
||||
for (DeviceManagementService provider : providers.values()) {
|
||||
try {
|
||||
provider.init();
|
||||
int tenantId=DeviceManagerUtil.getTenantId(provider.getProviderTenantDomain());
|
||||
DeviceManagerUtil.registerDeviceType(provider.getType(), tenantId, provider.isSharedWithAllTenants());
|
||||
|
||||
ProvisioningConfig provisioningConfig = provider.getProvisioningConfig();
|
||||
int tenantId = DeviceManagerUtil.getTenantId(provisioningConfig.getProviderTenantDomain());
|
||||
DeviceManagerUtil.registerDeviceType(provider.getType(), tenantId, provisioningConfig.isSharedWithAllTenants());
|
||||
//TODO:
|
||||
//This is a temporory fix.
|
||||
//windows and IOS cannot resolve user info by extracting certs
|
||||
//until fix that, use following variable to enable and disable of checking user authorization.
|
||||
|
||||
DeviceManagementDataHolder.getInstance().setRequireDeviceAuthorization(provider.getType(),
|
||||
provider.getDeviceManager().requireDeviceAuthorization());
|
||||
provider.getDeviceManager().requireDeviceAuthorization());
|
||||
} catch (Throwable e) {
|
||||
/* Throwable is caught intentionally as failure of one plugin - due to invalid start up parameters,
|
||||
etc - should not block the initialization of other device management providers */
|
||||
|
||||
@ -32,16 +32,13 @@ import org.wso2.carbon.device.mgt.common.app.mgt.Application;
|
||||
import org.wso2.carbon.device.mgt.common.app.mgt.ApplicationManagementException;
|
||||
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.spi.DeviceManagementService;
|
||||
import org.wso2.carbon.device.mgt.core.DeviceManagementConstants;
|
||||
import org.wso2.carbon.device.mgt.core.DeviceManagementPluginRepository;
|
||||
import org.wso2.carbon.device.mgt.core.app.mgt.config.AppManagementConfig;
|
||||
import org.wso2.carbon.device.mgt.core.app.mgt.oauth.ServiceAuthenticator;
|
||||
import org.wso2.carbon.device.mgt.core.config.DeviceConfigurationManager;
|
||||
import org.wso2.carbon.device.mgt.core.config.identity.IdentityConfigurations;
|
||||
import org.wso2.carbon.device.mgt.core.dao.*;
|
||||
import org.wso2.carbon.device.mgt.core.internal.DeviceManagementDataHolder;
|
||||
import org.wso2.carbon.device.mgt.core.internal.PluginInitializationListener;
|
||||
import org.wso2.carbon.identity.oauth.stub.OAuthAdminServiceException;
|
||||
import org.wso2.carbon.identity.oauth.stub.OAuthAdminServiceStub;
|
||||
import org.wso2.carbon.identity.oauth.stub.dto.OAuthConsumerAppDTO;
|
||||
@ -56,9 +53,6 @@ import java.util.List;
|
||||
*/
|
||||
public class ApplicationManagerProviderServiceImpl implements ApplicationManagementProviderService {
|
||||
|
||||
private ConfigurationContext configCtx;
|
||||
private ServiceAuthenticator authenticator;
|
||||
private String oAuthAdminServiceUrl;
|
||||
private DeviceDAO deviceDAO;
|
||||
private ApplicationDAO applicationDAO;
|
||||
private ApplicationMappingDAO applicationMappingDAO;
|
||||
@ -67,19 +61,6 @@ public class ApplicationManagerProviderServiceImpl implements ApplicationManagem
|
||||
private static final Log log = LogFactory.getLog(ApplicationManagerProviderServiceImpl.class);
|
||||
|
||||
public ApplicationManagerProviderServiceImpl(AppManagementConfig appManagementConfig) {
|
||||
|
||||
IdentityConfigurations identityConfig = DeviceConfigurationManager.getInstance().getDeviceManagementConfig().
|
||||
getDeviceManagementConfigRepository().getIdentityConfigurations();
|
||||
this.authenticator =
|
||||
new ServiceAuthenticator(identityConfig.getAdminUsername(), identityConfig.getAdminPassword());
|
||||
this.oAuthAdminServiceUrl =
|
||||
identityConfig.getServerUrl() + DeviceManagementConstants.AppManagement.OAUTH_ADMIN_SERVICE;
|
||||
try {
|
||||
this.configCtx = ConfigurationContextFactory.createConfigurationContextFromFileSystem(null, null);
|
||||
} catch (AxisFault e) {
|
||||
throw new IllegalArgumentException("Error occurred while initializing Axis2 Configuration Context. " +
|
||||
"Please check if an appropriate axis2.xml is provided", e);
|
||||
}
|
||||
this.deviceDAO = DeviceManagementDAOFactory.getDeviceDAO();
|
||||
this.applicationDAO = DeviceManagementDAOFactory.getApplicationDAO();
|
||||
this.applicationMappingDAO = DeviceManagementDAOFactory.getApplicationMappingDAO();
|
||||
@ -112,7 +93,6 @@ public class ApplicationManagerProviderServiceImpl implements ApplicationManagem
|
||||
@Override
|
||||
public void installApplicationForDevices(Operation operation, List<DeviceIdentifier> deviceIds)
|
||||
throws ApplicationManagementException {
|
||||
|
||||
try {
|
||||
DeviceManagementDataHolder.getInstance().getDeviceManagementProvider().addOperation(operation, deviceIds);
|
||||
DeviceManagementDataHolder.getInstance().getDeviceManagementProvider().notifyOperationToDevices
|
||||
@ -207,50 +187,6 @@ public class ApplicationManagerProviderServiceImpl implements ApplicationManagem
|
||||
}
|
||||
}
|
||||
|
||||
public void updateInstalledApplicationListOfDevice(
|
||||
DeviceIdentifier deviceIdentifier, List<Application> applications) throws ApplicationManagementException {
|
||||
}
|
||||
|
||||
private OAuthConsumerAppDTO getAppInfo() throws ApplicationManagementException {
|
||||
OAuthConsumerAppDTO appInfo = null;
|
||||
try {
|
||||
OAuthAdminServiceStub oAuthAdminServiceStub =
|
||||
new OAuthAdminServiceStub(configCtx, oAuthAdminServiceUrl);
|
||||
authenticator.authenticate(oAuthAdminServiceStub._getServiceClient());
|
||||
|
||||
try {
|
||||
appInfo = oAuthAdminServiceStub.getOAuthApplicationDataByAppName(
|
||||
DeviceManagementConstants.AppManagement.OAUTH_APPLICATION_NAME);
|
||||
}
|
||||
//application doesn't exist. Due to the way getOAuthApplicationDataByAppName has been
|
||||
//implemented, it throws an AxisFault if the App doesn't exist. Hence the catch.
|
||||
catch (AxisFault fault) {
|
||||
oAuthAdminServiceStub.registerOAuthApplicationData(this.getRequestDTO());
|
||||
appInfo = oAuthAdminServiceStub.getOAuthApplicationDataByAppName(
|
||||
DeviceManagementConstants.AppManagement.OAUTH_APPLICATION_NAME);
|
||||
}
|
||||
} catch (RemoteException e) {
|
||||
handleException("Error occurred while retrieving app info", e);
|
||||
} catch (OAuthAdminServiceException e) {
|
||||
handleException("Error occurred while invoking OAuth admin service stub", e);
|
||||
}
|
||||
return appInfo;
|
||||
}
|
||||
|
||||
private OAuthConsumerAppDTO getRequestDTO() {
|
||||
OAuthConsumerAppDTO appDTO = new OAuthConsumerAppDTO();
|
||||
appDTO.setApplicationName(DeviceManagementConstants.AppManagement.OAUTH_APPLICATION_NAME);
|
||||
appDTO.setGrantTypes(
|
||||
DeviceManagementConstants.AppManagement.OAUTH2_GRANT_TYPE_CLIENT_CREDENTIALS);
|
||||
appDTO.setOAuthVersion(DeviceManagementConstants.AppManagement.OAUTH_VERSION_2);
|
||||
return appDTO;
|
||||
}
|
||||
|
||||
private void handleException(String msg, Exception e) throws ApplicationManagementException {
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementException(msg, e);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateApplicationListInstalledInDevice(
|
||||
DeviceIdentifier deviceIdentifier, List<Application> applications) throws ApplicationManagementException {
|
||||
|
||||
@ -17,8 +17,14 @@
|
||||
*/
|
||||
package org.wso2.carbon.device.mgt.core.config;
|
||||
|
||||
import org.wso2.carbon.device.mgt.core.config.identity.IdentityConfigurations;
|
||||
import org.wso2.carbon.device.mgt.core.config.policy.PolicyConfiguration;
|
||||
import org.wso2.carbon.device.mgt.core.config.task.TaskConfiguration;
|
||||
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
import javax.xml.bind.annotation.XmlElementWrapper;
|
||||
import javax.xml.bind.annotation.XmlRootElement;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Represents Device Mgt configuration.
|
||||
@ -27,6 +33,10 @@ import javax.xml.bind.annotation.XmlRootElement;
|
||||
public final class DeviceManagementConfig {
|
||||
|
||||
private DeviceManagementConfigRepository deviceManagementConfigRepository;
|
||||
private TaskConfiguration taskConfiguration;
|
||||
private IdentityConfigurations identityConfigurations;
|
||||
private PolicyConfiguration policyConfiguration;
|
||||
//private List<String> pushNotificationProviders;
|
||||
|
||||
@XmlElement(name = "ManagementRepository", required = true)
|
||||
public DeviceManagementConfigRepository getDeviceManagementConfigRepository() {
|
||||
@ -37,4 +47,43 @@ public final class DeviceManagementConfig {
|
||||
this.deviceManagementConfigRepository = deviceManagementConfigRepository;
|
||||
}
|
||||
|
||||
@XmlElement(name = "IdentityConfiguration", required = true)
|
||||
public IdentityConfigurations getIdentityConfigurations() {
|
||||
return identityConfigurations;
|
||||
}
|
||||
|
||||
|
||||
public void setIdentityConfigurations(IdentityConfigurations identityConfigurations) {
|
||||
this.identityConfigurations = identityConfigurations;
|
||||
}
|
||||
|
||||
@XmlElement(name = "PolicyConfiguration", required = true)
|
||||
public PolicyConfiguration getPolicyConfiguration() {
|
||||
return policyConfiguration;
|
||||
}
|
||||
|
||||
public void setPolicyConfiguration(PolicyConfiguration policyConfiguration) {
|
||||
this.policyConfiguration = policyConfiguration;
|
||||
}
|
||||
|
||||
@XmlElement(name = "TaskConfiguration", required = true)
|
||||
public TaskConfiguration getTaskConfiguration() {
|
||||
return taskConfiguration;
|
||||
}
|
||||
|
||||
public void setTaskConfiguration(TaskConfiguration taskConfiguration) {
|
||||
this.taskConfiguration = taskConfiguration;
|
||||
}
|
||||
|
||||
// @XmlElementWrapper(name = "PushNotificationProviders", required = true)
|
||||
// @XmlElement(name = "Provider", required = true)
|
||||
// public List<String> getPushNotificationProviders() {
|
||||
// return pushNotificationProviders;
|
||||
// }
|
||||
//
|
||||
// public void setPushNotificationProviders(List<String> pushNotificationProviders) {
|
||||
// this.pushNotificationProviders = pushNotificationProviders;
|
||||
// }
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -31,12 +31,7 @@ import javax.xml.bind.annotation.XmlRootElement;
|
||||
@XmlRootElement(name = "ManagementRepository")
|
||||
public class DeviceManagementConfigRepository {
|
||||
|
||||
|
||||
// private EmailConfigurations emailConfigurations;
|
||||
private TaskConfiguration taskConfiguration;
|
||||
private DataSourceConfig dataSourceConfig;
|
||||
private IdentityConfigurations identityConfigurations;
|
||||
private PolicyConfiguration policyConfiguration;
|
||||
|
||||
@XmlElement(name = "DataSourceConfiguration", required = true)
|
||||
public DataSourceConfig getDataSourceConfig() {
|
||||
@ -47,40 +42,4 @@ public class DeviceManagementConfigRepository {
|
||||
this.dataSourceConfig = dataSourceConfig;
|
||||
}
|
||||
|
||||
// @XmlElement(name = "EmailClientConfiguration", required = true)
|
||||
// public EmailConfigurations getEmailConfigurations() {
|
||||
// return emailConfigurations;
|
||||
// }
|
||||
//
|
||||
// public void setEmailConfigurations(EmailConfigurations emailConfigurations) {
|
||||
// this.emailConfigurations = emailConfigurations;
|
||||
// }
|
||||
|
||||
@XmlElement(name = "IdentityConfiguration", required = true)
|
||||
public IdentityConfigurations getIdentityConfigurations() {
|
||||
return identityConfigurations;
|
||||
}
|
||||
|
||||
|
||||
public void setIdentityConfigurations(IdentityConfigurations identityConfigurations) {
|
||||
this.identityConfigurations = identityConfigurations;
|
||||
}
|
||||
|
||||
@XmlElement(name = "PolicyConfiguration", required = true)
|
||||
public PolicyConfiguration getPolicyConfiguration() {
|
||||
return policyConfiguration;
|
||||
}
|
||||
|
||||
public void setPolicyConfiguration(PolicyConfiguration policyConfiguration) {
|
||||
this.policyConfiguration = policyConfiguration;
|
||||
}
|
||||
|
||||
@XmlElement(name = "TaskConfiguration", required = true)
|
||||
public TaskConfiguration getTaskConfiguration() {
|
||||
return taskConfiguration;
|
||||
}
|
||||
|
||||
public void setTaskConfiguration(TaskConfiguration taskConfiguration) {
|
||||
this.taskConfiguration = taskConfiguration;
|
||||
}
|
||||
}
|
||||
|
||||
@ -31,7 +31,7 @@ public class PolicyConfiguration {
|
||||
private int minRetriesToMarkUnreachable;
|
||||
private int minRetriesToMarkInactive;
|
||||
|
||||
@XmlElement(name = "monitoringClass", required = true)
|
||||
@XmlElement(name = "MonitoringClass", required = true)
|
||||
public String getMonitoringClass() {
|
||||
return monitoringClass;
|
||||
}
|
||||
@ -40,7 +40,7 @@ public class PolicyConfiguration {
|
||||
this.monitoringClass = monitoringClass;
|
||||
}
|
||||
|
||||
@XmlElement(name = "maxRetries", required = true)
|
||||
@XmlElement(name = "MaxRetries", required = true)
|
||||
public int getMaxRetries() {
|
||||
return maxRetries;
|
||||
}
|
||||
@ -49,7 +49,7 @@ public class PolicyConfiguration {
|
||||
this.maxRetries = maxRetries;
|
||||
}
|
||||
|
||||
@XmlElement(name = "minRetriesToMarkUnreachable", required = true)
|
||||
@XmlElement(name = "MinRetriesToMarkUnreachable", required = true)
|
||||
public int getMinRetriesToMarkUnreachable() {
|
||||
return minRetriesToMarkUnreachable;
|
||||
}
|
||||
@ -58,7 +58,7 @@ public class PolicyConfiguration {
|
||||
this.minRetriesToMarkUnreachable = minRetriesToMarkUnreachable;
|
||||
}
|
||||
|
||||
@XmlElement(name = "monitoringEnable", required = true)
|
||||
@XmlElement(name = "MonitoringEnable", required = true)
|
||||
public boolean getMonitoringEnable() {
|
||||
return monitoringEnable;
|
||||
}
|
||||
@ -67,7 +67,7 @@ public class PolicyConfiguration {
|
||||
this.monitoringEnable = monitoringEnable;
|
||||
}
|
||||
|
||||
@XmlElement(name = "minRetriesToMarkInactive", required = true)
|
||||
@XmlElement(name = "MinRetriesToMarkInactive", required = true)
|
||||
public int getMinRetriesToMarkInactive() {
|
||||
return minRetriesToMarkInactive;
|
||||
}
|
||||
@ -76,7 +76,7 @@ public class PolicyConfiguration {
|
||||
this.minRetriesToMarkInactive = minRetriesToMarkInactive;
|
||||
}
|
||||
|
||||
@XmlElement(name = "monitoringFrequency", required = true)
|
||||
@XmlElement(name = "MonitoringFrequency", required = true)
|
||||
public int getMonitoringFrequency() {
|
||||
return monitoringFrequency;
|
||||
}
|
||||
@ -84,4 +84,5 @@ public class PolicyConfiguration {
|
||||
public void setMonitoringFrequency(int monitoringFrequency) {
|
||||
this.monitoringFrequency = monitoringFrequency;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -83,7 +83,9 @@ public class DeviceDetailsDAOImpl implements DeviceDetailsDAO {
|
||||
public void addDeviceProperties(Map<String, String> propertyMap, int deviceId) throws DeviceDetailsMgtDAOException {
|
||||
|
||||
if (propertyMap.isEmpty()) {
|
||||
log.warn("Property map of device id :" + deviceId + " is empty.");
|
||||
if(log.isDebugEnabled()) {
|
||||
log.debug("Property map of device id :" + deviceId + " is empty.");
|
||||
}
|
||||
return;
|
||||
}
|
||||
Connection conn;
|
||||
|
||||
@ -36,6 +36,7 @@ public class DeviceGroupBuilder extends DeviceGroup {
|
||||
* @param deviceGroup to decorate
|
||||
*/
|
||||
public DeviceGroupBuilder(DeviceGroup deviceGroup) {
|
||||
this.setId(deviceGroup.getId());
|
||||
this.setDescription(deviceGroup.getDescription());
|
||||
this.setName(deviceGroup.getName());
|
||||
this.setDateOfCreation(deviceGroup.getDateOfCreation());
|
||||
|
||||
@ -82,6 +82,14 @@ public interface GroupDAO {
|
||||
*/
|
||||
DeviceGroupBuilder getGroup(String groupName, String owner, int tenantId) throws GroupManagementDAOException;
|
||||
|
||||
/**
|
||||
* Get the groups of device with device id provided
|
||||
* @param deviceId
|
||||
* @return
|
||||
* @throws GroupManagementDAOException
|
||||
*/
|
||||
List<DeviceGroupBuilder> getGroups(int deviceId, int tenantId) throws GroupManagementDAOException;
|
||||
|
||||
/**
|
||||
* Get the list of Device Groups in tenant.
|
||||
*
|
||||
|
||||
@ -178,6 +178,32 @@ public class GroupDAOImpl implements GroupDAO {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<DeviceGroupBuilder> getGroups(int deviceId, int tenantId) throws GroupManagementDAOException {
|
||||
|
||||
PreparedStatement stmt = null;
|
||||
ResultSet resultSet = null;
|
||||
List<DeviceGroupBuilder> deviceGroupBuilders = new ArrayList<>();
|
||||
try {
|
||||
Connection conn = GroupManagementDAOFactory.getConnection();
|
||||
String sql = "SELECT G.ID, G.GROUP_NAME, G.DESCRIPTION, G.DATE_OF_CREATE, G.DATE_OF_LAST_UPDATE, \n" +
|
||||
"G.OWNER FROM DM_GROUP AS G INNER JOIN DM_DEVICE_GROUP_MAP AS GM ON G.ID = GM.GROUP_ID " +
|
||||
"WHERE GM.DEVICE_ID = ? AND GM.TENANT_ID = ?";
|
||||
stmt = conn.prepareStatement(sql);
|
||||
stmt.setInt(1, deviceId);
|
||||
stmt.setInt(2, tenantId);
|
||||
resultSet = stmt.executeQuery();
|
||||
while (resultSet.next()) {
|
||||
deviceGroupBuilders.add(GroupManagementDAOUtil.loadGroup(resultSet));
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
throw new GroupManagementDAOException("Error occurred while obtaining information of Device Groups ", e);
|
||||
} finally {
|
||||
GroupManagementDAOUtil.cleanupResources(stmt, resultSet);
|
||||
}
|
||||
return deviceGroupBuilders;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<DeviceGroupBuilder> getGroups(int startIndex, int rowCount, int tenantId)
|
||||
throws GroupManagementDAOException {
|
||||
|
||||
@ -52,8 +52,9 @@ public class DeviceTaskManagerServiceComponent {
|
||||
log.debug("Initializing device details retrieving task manager bundle.");
|
||||
}
|
||||
// This will start the device details retrieving task.
|
||||
boolean taskEnable = DeviceConfigurationManager.getInstance().getDeviceManagementConfig().
|
||||
getDeviceManagementConfigRepository().getTaskConfiguration().isEnabled();
|
||||
boolean taskEnable =
|
||||
DeviceConfigurationManager.getInstance().getDeviceManagementConfig().getTaskConfiguration().
|
||||
isEnabled();
|
||||
if (taskEnable) {
|
||||
DeviceTaskManagerService taskManagerService = new DeviceTaskManagerServiceImpl();
|
||||
taskManagerService.startTask();
|
||||
@ -70,7 +71,6 @@ public class DeviceTaskManagerServiceComponent {
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
protected void deactivate(ComponentContext componentContext) {
|
||||
|
||||
try {
|
||||
DeviceTaskManagerService taskManagerService = new DeviceTaskManagerServiceImpl();
|
||||
taskManagerService.stopTask();
|
||||
@ -93,6 +93,7 @@ public class DeviceTaskManagerServiceComponent {
|
||||
}
|
||||
DeviceManagementDataHolder.getInstance().setTaskService(null);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -44,14 +44,14 @@ public class QueryBuilderImpl implements QueryBuilder {
|
||||
List<Condition> orColumns = new ArrayList<>();
|
||||
List<Condition> otherANDColumns = new ArrayList<>();
|
||||
List<Condition> otherORColumns = new ArrayList<>();
|
||||
Condition locConditon = new Condition();
|
||||
Condition locCondition = new Condition();
|
||||
|
||||
if (conditions.size() == 1) {
|
||||
|
||||
if (conditions.get(0).getKey().equalsIgnoreCase(Constants.LOCATION)) {
|
||||
locConditon = conditions.get(0);
|
||||
} else if (Utils.getDeviceDetailsColumnNames().containsKey(conditions.get(0).getKey()) ||
|
||||
Utils.getDeviceLocationColumnNames().containsKey(conditions.get(0).getKey())) {
|
||||
locCondition = conditions.get(0);
|
||||
} else if (Utils.checkDeviceDetailsColumns(conditions.get(0).getKey()) ||
|
||||
Utils.checkDeviceLocationColumns(conditions.get(0).getKey())) {
|
||||
andColumns.add(conditions.get(0));
|
||||
} else {
|
||||
otherANDColumns.add(conditions.get(0));
|
||||
@ -59,9 +59,9 @@ public class QueryBuilderImpl implements QueryBuilder {
|
||||
} else {
|
||||
for (Condition con : conditions) {
|
||||
if (con.getKey().equalsIgnoreCase(Constants.LOCATION)) {
|
||||
locConditon = con;
|
||||
} else if (Utils.getDeviceDetailsColumnNames().containsKey(con.getKey()) ||
|
||||
Utils.getDeviceLocationColumnNames().containsKey(con.getKey())) {
|
||||
locCondition = con;
|
||||
} else if (Utils.checkDeviceDetailsColumns(con.getKey()) ||
|
||||
Utils.checkDeviceLocationColumns(con.getKey())) {
|
||||
if (con.getState().equals(Condition.State.AND)) {
|
||||
andColumns.add(con);
|
||||
} else if (con.getState().equals(Condition.State.OR)) {
|
||||
@ -92,8 +92,8 @@ public class QueryBuilderImpl implements QueryBuilder {
|
||||
if (!otherORColumns.isEmpty()) {
|
||||
queries.put(Constants.PROP_OR, this.processORProperties(otherORColumns));
|
||||
}
|
||||
if (locConditon != null && locConditon.getValue() != null) {
|
||||
queries.put(Constants.LOCATION, this.processLocation(locConditon));
|
||||
if (locCondition != null && locCondition.getValue() != null) {
|
||||
queries.put(Constants.LOCATION, this.processLocation(locCondition));
|
||||
}
|
||||
|
||||
if (log.isDebugEnabled()) {
|
||||
@ -112,10 +112,10 @@ public class QueryBuilderImpl implements QueryBuilder {
|
||||
String querySuffix = "";
|
||||
|
||||
for (Condition con : conditions) {
|
||||
if (Utils.getDeviceDetailsColumnNames().containsKey(con.getKey())) {
|
||||
if (Utils.checkDeviceDetailsColumns(con.getKey())) {
|
||||
querySuffix = querySuffix + " AND DD." + Utils.getDeviceDetailsColumnNames().get(con.getKey()) +
|
||||
con.getOperator() + con.getValue();
|
||||
} else if (Utils.getDeviceLocationColumnNames().containsKey(con.getKey())) {
|
||||
} else if (Utils.checkDeviceLocationColumns(con.getKey())) {
|
||||
querySuffix = querySuffix + " AND DL." + Utils.getDeviceLocationColumnNames().get(con.getKey()) +
|
||||
con.getOperator() + con.getValue();
|
||||
}
|
||||
@ -130,10 +130,10 @@ public class QueryBuilderImpl implements QueryBuilder {
|
||||
String querySuffix = "";
|
||||
|
||||
for (Condition con : conditions) {
|
||||
if (Utils.getDeviceDetailsColumnNames().containsKey(con.getKey())) {
|
||||
if (Utils.checkDeviceDetailsColumns(con.getKey())) {
|
||||
querySuffix = querySuffix + " OR DD." + Utils.getDeviceDetailsColumnNames().get(con.getKey()) +
|
||||
con.getOperator() + con.getValue();
|
||||
} else if (Utils.getDeviceLocationColumnNames().containsKey(con.getKey())) {
|
||||
} else if (Utils.checkDeviceLocationColumns(con.getKey())) {
|
||||
querySuffix = querySuffix + " OR DL." + Utils.getDeviceLocationColumnNames().get(con.getKey()) +
|
||||
con.getOperator() + con.getValue();
|
||||
}
|
||||
|
||||
@ -28,43 +28,65 @@ import java.util.Map;
|
||||
|
||||
public class Utils {
|
||||
|
||||
private static Map<String, String> genericColumnsMap = new HashMap<>();
|
||||
private static Map<String, String> locationColumnsMap = new HashMap<>();
|
||||
|
||||
static {
|
||||
|
||||
genericColumnsMap.put("deviceModel", "DEVICE_MODEL");
|
||||
genericColumnsMap.put("vendor", "VENDOR");
|
||||
genericColumnsMap.put("osVersion", "OS_VERSION");
|
||||
genericColumnsMap.put("batteryLevel", "BATTERY_LEVEL");
|
||||
genericColumnsMap.put("internalTotalMemory", "INTERNAL_TOTAL_MEMORY");
|
||||
genericColumnsMap.put("internalAvailableMemory", "INTERNAL_AVAILABLE_MEMORY");
|
||||
genericColumnsMap.put("externalTotalMemory", "EXTERNAL_TOTAL_MEMORY");
|
||||
genericColumnsMap.put("externalAvailableMemory", "EXTERNAL_AVAILABLE_MEMORY");
|
||||
genericColumnsMap.put("connectionType", "CONNECTION_TYPE");
|
||||
genericColumnsMap.put("ssid", "SSID");
|
||||
genericColumnsMap.put("cpuUsage", "CPU_USAGE");
|
||||
genericColumnsMap.put("totalRAMMemory", "TOTAL_RAM_MEMORY");
|
||||
genericColumnsMap.put("availableRAMMemory", "AVAILABLE_RAM_MEMORY");
|
||||
genericColumnsMap.put("pluggedIn", "PLUGGED_IN");
|
||||
|
||||
|
||||
locationColumnsMap.put("latitude", "LATITUDE");
|
||||
locationColumnsMap.put("longitude", "LONGITUDE");
|
||||
locationColumnsMap.put("street1", "STREET1");
|
||||
locationColumnsMap.put("street2", "STREET2");
|
||||
locationColumnsMap.put("city", "CITY");
|
||||
locationColumnsMap.put("state", "ZIP");
|
||||
locationColumnsMap.put("zip", "STATE");
|
||||
locationColumnsMap.put("country", "COUNTRY");
|
||||
|
||||
}
|
||||
|
||||
public static Map<String, String> getDeviceDetailsColumnNames() {
|
||||
|
||||
Map<String, String> colonmsMap = new HashMap<>();
|
||||
|
||||
colonmsMap.put("deviceModel", "DEVICE_MODEL");
|
||||
colonmsMap.put("vendor", "VENDOR");
|
||||
colonmsMap.put("osVersion", "OS_VERSION");
|
||||
colonmsMap.put("batteryLevel", "BATTERY_LEVEL");
|
||||
colonmsMap.put("internalTotalMemory", "INTERNAL_TOTAL_MEMORY");
|
||||
colonmsMap.put("internalAvailableMemory", "INTERNAL_AVAILABLE_MEMORY");
|
||||
colonmsMap.put("externalTotalMemory", "EXTERNAL_TOTAL_MEMORY");
|
||||
colonmsMap.put("externalAvailableMemory", "EXTERNAL_AVAILABLE_MEMORY");
|
||||
colonmsMap.put("connectionType", "CONNECTION_TYPE");
|
||||
colonmsMap.put("ssid", "SSID");
|
||||
colonmsMap.put("cpuUsage", "CPU_USAGE");
|
||||
colonmsMap.put("totalRAMMemory", "TOTAL_RAM_MEMORY");
|
||||
colonmsMap.put("availableRAMMemory", "AVAILABLE_RAM_MEMORY");
|
||||
colonmsMap.put("pluggedIn", "PLUGGED_IN");
|
||||
|
||||
return colonmsMap;
|
||||
return genericColumnsMap;
|
||||
}
|
||||
|
||||
public static Map<String, String> getDeviceLocationColumnNames() {
|
||||
Map<String, String> colonmsMap = new HashMap<>();
|
||||
|
||||
colonmsMap.put("latitude", "LATITUDE");
|
||||
colonmsMap.put("longitude", "LONGITUDE");
|
||||
colonmsMap.put("street1", "STREET1");
|
||||
colonmsMap.put("street2", "STREET2");
|
||||
colonmsMap.put("city", "CITY");
|
||||
colonmsMap.put("state", "ZIP");
|
||||
colonmsMap.put("zip", "STATE");
|
||||
colonmsMap.put("country", "COUNTRY");
|
||||
|
||||
return colonmsMap;
|
||||
return locationColumnsMap;
|
||||
}
|
||||
|
||||
public static boolean checkDeviceDetailsColumns(String str) {
|
||||
if (genericColumnsMap.containsKey(str)) {
|
||||
return true;
|
||||
}
|
||||
if (genericColumnsMap.containsValue(str)) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static boolean checkDeviceLocationColumns(String str) {
|
||||
if (locationColumnsMap.containsKey(str)) {
|
||||
return true;
|
||||
}
|
||||
if (locationColumnsMap.containsValue(str)) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static List<String> convertStringToList(String str) {
|
||||
|
||||
|
||||
@ -753,17 +753,11 @@ public class DeviceManagementProviderServiceImpl implements DeviceManagementProv
|
||||
public void notifyOperationToDevices(Operation operation, List<DeviceIdentifier> deviceIds)
|
||||
throws DeviceManagementException {
|
||||
|
||||
try {
|
||||
for (DeviceIdentifier deviceId : deviceIds) {
|
||||
DeviceManagementService dms =
|
||||
getPluginRepository().getDeviceManagementService(deviceId.getType(), this.getTenantId());
|
||||
dms.notifyOperationToDevices(operation, deviceIds);
|
||||
}
|
||||
} catch (DeviceManagementException deviceMgtEx) {
|
||||
String errorMsg = "Error in notify operations to plugins for app installation:" +
|
||||
deviceMgtEx.getErrorMessage();
|
||||
log.error(errorMsg, deviceMgtEx);
|
||||
throw new DeviceManagementException(errorMsg, deviceMgtEx);
|
||||
for (DeviceIdentifier deviceId : deviceIds) {
|
||||
DeviceManagementService dms =
|
||||
getPluginRepository().getDeviceManagementService(deviceId.getType(), this.getTenantId());
|
||||
//TODO FIX THIS WITH PUSH NOTIFICATIONS
|
||||
//dms.notifyOperationToDevices(operation, deviceIds);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -25,6 +25,7 @@ import org.wso2.carbon.device.mgt.common.group.mgt.DeviceGroup;
|
||||
import org.wso2.carbon.device.mgt.common.group.mgt.GroupAlreadyEixistException;
|
||||
import org.wso2.carbon.device.mgt.common.group.mgt.GroupManagementException;
|
||||
import org.wso2.carbon.device.mgt.common.group.mgt.GroupUser;
|
||||
import org.wso2.carbon.device.mgt.core.group.mgt.DeviceGroupBuilder;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@ -73,6 +74,15 @@ public interface GroupManagementProviderService {
|
||||
*/
|
||||
DeviceGroup getGroup(String groupName, String owner) throws GroupManagementException;
|
||||
|
||||
|
||||
/**
|
||||
* Get the device group provided the device group id.
|
||||
* @param groupId
|
||||
* @return
|
||||
* @throws GroupManagementException
|
||||
*/
|
||||
DeviceGroup getGroup(int groupId) throws GroupManagementException;
|
||||
|
||||
/**
|
||||
* Get list of device groups matched with %groupName%
|
||||
*
|
||||
@ -288,4 +298,12 @@ public interface GroupManagementProviderService {
|
||||
*/
|
||||
List<DeviceGroup> getGroups(String username, String permission) throws GroupManagementException;
|
||||
|
||||
/**
|
||||
* Get the group of device.
|
||||
* @param deviceIdentifier
|
||||
* @return
|
||||
* @throws GroupManagementException
|
||||
*/
|
||||
List<DeviceGroup> getGroups(DeviceIdentifier deviceIdentifier) throws GroupManagementException;
|
||||
|
||||
}
|
||||
|
||||
@ -22,6 +22,7 @@ import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.wso2.carbon.CarbonConstants;
|
||||
import org.wso2.carbon.context.CarbonContext;
|
||||
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;
|
||||
@ -190,7 +191,7 @@ public class GroupManagementProviderServiceImpl implements GroupManagementProvid
|
||||
return deviceGroupBuilder;
|
||||
}
|
||||
|
||||
@SuppressWarnings("Duplicates")
|
||||
|
||||
private DeviceGroupBuilder getGroupBuilder(int groupId) throws GroupManagementException {
|
||||
DeviceGroupBuilder groupBroker;
|
||||
try {
|
||||
@ -210,6 +211,19 @@ public class GroupManagementProviderServiceImpl implements GroupManagementProvid
|
||||
return groupBroker;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public DeviceGroup getGroup(int groupId) throws GroupManagementException {
|
||||
DeviceGroupBuilder groupBroker = this.getGroupBuilder(groupId);
|
||||
if (groupBroker != null) {
|
||||
groupBroker.setUsers(this.getUsers(groupBroker.getGroupId()));
|
||||
groupBroker.setRoles(this.getRoles(groupBroker.getGroupId()));
|
||||
}
|
||||
return groupBroker.getGroup();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@ -763,6 +777,30 @@ public class GroupManagementProviderServiceImpl implements GroupManagementProvid
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<DeviceGroup> getGroups(DeviceIdentifier deviceIdentifier) throws GroupManagementException {
|
||||
DeviceManagementProviderService managementProviderService = new DeviceManagementProviderServiceImpl();
|
||||
List<DeviceGroup> deviceGroups = new ArrayList<>();
|
||||
try {
|
||||
Device device = managementProviderService.getDevice(deviceIdentifier);
|
||||
GroupManagementDAOFactory.openConnection();
|
||||
List<DeviceGroupBuilder> builders = groupDAO.getGroups(device.getId(),
|
||||
PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId());
|
||||
for (DeviceGroupBuilder d : builders){
|
||||
deviceGroups.add(d.getGroup());
|
||||
}
|
||||
} catch (DeviceManagementException e) {
|
||||
throw new GroupManagementException("Error occurred while retrieving the device details.", e);
|
||||
} catch (GroupManagementDAOException e) {
|
||||
throw new GroupManagementException("Error occurred while retrieving device groups.", e);
|
||||
} catch (SQLException e) {
|
||||
throw new GroupManagementException("Error occurred while opening database connection.", e);
|
||||
} finally {
|
||||
GroupManagementDAOFactory.closeConnection();
|
||||
}
|
||||
return deviceGroups;
|
||||
}
|
||||
|
||||
private DeviceGroupBuilder extractNewGroupFromRole(Map<Integer, DeviceGroup> groups, String role)
|
||||
throws GroupManagementException {
|
||||
try {
|
||||
|
||||
@ -22,18 +22,16 @@ package org.wso2.carbon.device.mgt.core.task;
|
||||
import org.wso2.carbon.context.PrivilegedCarbonContext;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class Utils {
|
||||
|
||||
|
||||
public static HashMap<String, Long> getTenantedTaskOperationMap(HashMap<Integer, HashMap<String, Long>> map) {
|
||||
|
||||
public static Map<String, Long> getTenantedTaskOperationMap(Map<Integer, Map<String, Long>> map) {
|
||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
|
||||
|
||||
if (map.containsKey(tenantId)) {
|
||||
return map.get(tenantId);
|
||||
} else {
|
||||
HashMap<String, Long> mp = new HashMap<>();
|
||||
Map<String, Long> mp = new HashMap<>();
|
||||
map.put(tenantId, mp);
|
||||
return mp;
|
||||
}
|
||||
|
||||
@ -36,23 +36,19 @@ import org.wso2.carbon.device.mgt.core.task.TaskOperation;
|
||||
import org.wso2.carbon.device.mgt.core.task.Utils;
|
||||
import org.wso2.carbon.device.mgt.core.util.DeviceManagerUtil;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.*;
|
||||
|
||||
public class DeviceTaskManagerImpl implements DeviceTaskManager {
|
||||
|
||||
private static Log log = LogFactory.getLog(DeviceTaskManagerImpl.class);
|
||||
|
||||
private static HashMap<Integer, HashMap<String, Long>> map = new HashMap<>();
|
||||
private static Map<Integer, Map<String, Long>> map = new HashMap<>();
|
||||
|
||||
|
||||
@Override
|
||||
public List<TaskOperation> getOperationList() throws DeviceMgtTaskException {
|
||||
|
||||
TaskConfiguration taskConfiguration = DeviceConfigurationManager.getInstance().getDeviceManagementConfig().
|
||||
getDeviceManagementConfigRepository().getTaskConfiguration();
|
||||
TaskConfiguration taskConfiguration =
|
||||
DeviceConfigurationManager.getInstance().getDeviceManagementConfig().getTaskConfiguration();
|
||||
|
||||
List<TaskConfiguration.Operation> ops = taskConfiguration.getOperations();
|
||||
List<TaskOperation> taskOperations = new ArrayList<>();
|
||||
@ -68,29 +64,25 @@ public class DeviceTaskManagerImpl implements DeviceTaskManager {
|
||||
|
||||
@Override
|
||||
public int getTaskFrequency() throws DeviceMgtTaskException {
|
||||
|
||||
return DeviceConfigurationManager.getInstance().getDeviceManagementConfig().
|
||||
getDeviceManagementConfigRepository().getTaskConfiguration().getFrequency();
|
||||
return DeviceConfigurationManager.getInstance().getDeviceManagementConfig().getTaskConfiguration().
|
||||
getFrequency();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTaskImplementedClazz() throws DeviceMgtTaskException {
|
||||
|
||||
return DeviceConfigurationManager.getInstance().getDeviceManagementConfig().
|
||||
getDeviceManagementConfigRepository().getTaskConfiguration().getTaskClazz();
|
||||
return DeviceConfigurationManager.getInstance().getDeviceManagementConfig().getTaskConfiguration().
|
||||
getTaskClazz();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isTaskEnabled() throws DeviceMgtTaskException {
|
||||
|
||||
return DeviceConfigurationManager.getInstance().getDeviceManagementConfig().
|
||||
getDeviceManagementConfigRepository().getTaskConfiguration().isEnabled();
|
||||
return DeviceConfigurationManager.getInstance().getDeviceManagementConfig().getTaskConfiguration().
|
||||
isEnabled();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void addOperations() throws DeviceMgtTaskException {
|
||||
|
||||
DeviceManagementProviderService deviceManagementProviderService =
|
||||
DeviceManagementDataHolder.getInstance().getDeviceManagementProvider();
|
||||
try {
|
||||
@ -98,7 +90,6 @@ public class DeviceTaskManagerImpl implements DeviceTaskManager {
|
||||
List<String> operations = this.getValidOperationNames();
|
||||
|
||||
if (!devices.isEmpty()) {
|
||||
|
||||
for (String str : operations) {
|
||||
CommandOperation operation = new CommandOperation();
|
||||
operation.setEnabled(true);
|
||||
@ -116,17 +107,15 @@ public class DeviceTaskManagerImpl implements DeviceTaskManager {
|
||||
} catch (OperationManagementException e) {
|
||||
throw new DeviceMgtTaskException("Error occurred while adding the operations to devices", e);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> getValidOperationNames() throws DeviceMgtTaskException {
|
||||
|
||||
List<TaskOperation> taskOperations = this.getOperationList();
|
||||
List<String> opNames = new ArrayList<>();
|
||||
Long milliseconds = System.currentTimeMillis();
|
||||
int frequency = this.getTaskFrequency();
|
||||
HashMap<String, Long> mp = Utils.getTenantedTaskOperationMap(map);
|
||||
Map<String, Long> mp = Utils.getTenantedTaskOperationMap(map);
|
||||
|
||||
for (TaskOperation top : taskOperations) {
|
||||
if (!mp.containsKey(top.getTaskName())) {
|
||||
@ -163,5 +152,6 @@ public class DeviceTaskManagerImpl implements DeviceTaskManager {
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -17,17 +17,14 @@
|
||||
*/
|
||||
package org.wso2.carbon.device.mgt.core;
|
||||
|
||||
import org.wso2.carbon.device.mgt.common.*;
|
||||
import org.wso2.carbon.device.mgt.common.app.mgt.Application;
|
||||
import org.wso2.carbon.device.mgt.common.app.mgt.ApplicationManagementException;
|
||||
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
|
||||
import org.wso2.carbon.device.mgt.common.DeviceManagementException;
|
||||
import org.wso2.carbon.device.mgt.common.DeviceManager;
|
||||
import org.wso2.carbon.device.mgt.common.ProvisioningConfig;
|
||||
import org.wso2.carbon.device.mgt.common.app.mgt.ApplicationManager;
|
||||
import org.wso2.carbon.device.mgt.common.license.mgt.License;
|
||||
import org.wso2.carbon.device.mgt.common.license.mgt.LicenseManagementException;
|
||||
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.push.notification.PushNotificationConfig;
|
||||
import org.wso2.carbon.device.mgt.common.spi.DeviceManagementService;
|
||||
import org.wso2.carbon.device.mgt.core.common.TestDataHolder;
|
||||
import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@ -45,14 +42,6 @@ public class TestDeviceManagementService implements DeviceManagementService {
|
||||
return providerType;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getProviderTenantDomain() { return tenantDomain;}
|
||||
|
||||
@Override
|
||||
public boolean isSharedWithAllTenants() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init() throws DeviceManagementException {
|
||||
|
||||
@ -69,44 +58,13 @@ public class TestDeviceManagementService implements DeviceManagementService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void notifyOperationToDevices(Operation operation, List<DeviceIdentifier> deviceIds)
|
||||
throws DeviceManagementException {
|
||||
|
||||
public ProvisioningConfig getProvisioningConfig() {
|
||||
return new ProvisioningConfig(tenantDomain, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Application[] getApplications(String domain, int pageNumber, int size)
|
||||
throws ApplicationManagementException {
|
||||
return new Application[0];
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateApplicationStatus(DeviceIdentifier deviceId, Application application, String status)
|
||||
throws ApplicationManagementException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getApplicationStatus(DeviceIdentifier deviceId, Application application)
|
||||
throws ApplicationManagementException {
|
||||
public PushNotificationConfig getPushNotificationConfig() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void installApplicationForDevices(Operation operation, List<DeviceIdentifier> deviceIdentifiers)
|
||||
throws ApplicationManagementException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void installApplicationForUsers(Operation operation, List<String> userNameList)
|
||||
throws ApplicationManagementException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void installApplicationForUserRoles(Operation operation, List<String> userRoleList)
|
||||
throws ApplicationManagementException {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -27,7 +27,6 @@ import org.wso2.carbon.device.mgt.common.app.mgt.Application;
|
||||
import org.wso2.carbon.device.mgt.common.app.mgt.ApplicationManagementException;
|
||||
import org.wso2.carbon.device.mgt.core.DeviceManagementPluginRepository;
|
||||
import org.wso2.carbon.device.mgt.core.TestDeviceManagementService;
|
||||
import org.wso2.carbon.device.mgt.core.app.mgt.config.AppManagementConfig;
|
||||
import org.wso2.carbon.device.mgt.core.common.TestDataHolder;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@ -35,13 +34,11 @@ import java.util.List;
|
||||
|
||||
public class ApplicationManagementProviderServiceTest {
|
||||
|
||||
private ApplicationManagementProviderService appMgtProvider;
|
||||
private static final Log log = LogFactory.getLog(ApplicationManagementProviderServiceTest.class);
|
||||
private DeviceManagementPluginRepository deviceManagementPluginRepository = null;
|
||||
|
||||
@BeforeClass
|
||||
public void init() {
|
||||
deviceManagementPluginRepository = new DeviceManagementPluginRepository();
|
||||
DeviceManagementPluginRepository deviceManagementPluginRepository = new DeviceManagementPluginRepository();
|
||||
TestDeviceManagementService testDeviceManagementService =
|
||||
new TestDeviceManagementService(TestDataHolder.TEST_DEVICE_TYPE, TestDataHolder.SUPER_TENANT_DOMAIN);
|
||||
try {
|
||||
@ -82,8 +79,7 @@ public class ApplicationManagementProviderServiceTest {
|
||||
deviceId.setId(deviceIdentifier);
|
||||
deviceId.setType(device.getType());
|
||||
|
||||
AppManagementConfig appManagementConfig = new AppManagementConfig();
|
||||
appMgtProvider = new ApplicationManagerProviderServiceImpl();
|
||||
ApplicationManagementProviderService appMgtProvider = new ApplicationManagerProviderServiceImpl();
|
||||
|
||||
try {
|
||||
appMgtProvider.updateApplicationListInstalledInDevice(deviceId, applications);
|
||||
|
||||
@ -21,6 +21,7 @@ CREATE TABLE IF NOT EXISTS DM_DEVICE_CERTIFICATE (
|
||||
ID INTEGER auto_increment NOT NULL,
|
||||
SERIAL_NUMBER VARCHAR(500) DEFAULT NULL,
|
||||
CERTIFICATE BLOB DEFAULT NULL,
|
||||
TENANT_ID INTEGER DEFAULT 0,
|
||||
PRIMARY KEY (ID)
|
||||
);
|
||||
|
||||
@ -218,7 +219,7 @@ CREATE TABLE IF NOT EXISTS DM_DEVICE_TYPE_POLICY (
|
||||
CREATE TABLE IF NOT EXISTS DM_PROFILE_FEATURES (
|
||||
ID INT(11) NOT NULL AUTO_INCREMENT,
|
||||
PROFILE_ID INT(11) NOT NULL,
|
||||
FEATURE_CODE VARCHAR(30) NOT NULL,
|
||||
FEATURE_CODE VARCHAR(100) NOT NULL,
|
||||
DEVICE_TYPE_ID INT NOT NULL,
|
||||
TENANT_ID INT(11) NOT NULL ,
|
||||
CONTENT BLOB NULL DEFAULT NULL,
|
||||
@ -350,7 +351,7 @@ CREATE TABLE IF NOT EXISTS DM_POLICY_COMPLIANCE_FEATURES (
|
||||
ID INT NOT NULL AUTO_INCREMENT,
|
||||
COMPLIANCE_STATUS_ID INT NOT NULL,
|
||||
TENANT_ID INT NOT NULL,
|
||||
FEATURE_CODE VARCHAR(15) NOT NULL,
|
||||
FEATURE_CODE VARCHAR(100) NOT NULL,
|
||||
STATUS INT NULL,
|
||||
PRIMARY KEY (ID),
|
||||
CONSTRAINT FK_COMPLIANCE_FEATURES_STATUS
|
||||
@ -385,7 +386,7 @@ CREATE TABLE IF NOT EXISTS DM_APPLICATION (
|
||||
LOCATION_URL VARCHAR(100) DEFAULT NULL,
|
||||
IMAGE_URL VARCHAR(100) DEFAULT NULL,
|
||||
APP_PROPERTIES BLOB NULL,
|
||||
MEMORY_USAGE DECIMAL(5) NULL,
|
||||
MEMORY_USAGE INTEGER(10) NULL,
|
||||
TENANT_ID INTEGER NOT NULL,
|
||||
PRIMARY KEY (ID)
|
||||
);
|
||||
@ -483,3 +484,54 @@ CREATE TABLE IF NOT EXISTS DM_DEVICE_DETAIL (
|
||||
ON DELETE NO ACTION
|
||||
ON UPDATE NO ACTION
|
||||
);
|
||||
|
||||
|
||||
-- POLICY AND DEVICE GROUP MAPPING --
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_DEVICE_GROUP_POLICY (
|
||||
ID INT NOT NULL AUTO_INCREMENT,
|
||||
DEVICE_GROUP_ID INT NOT NULL,
|
||||
POLICY_ID INT NOT NULL,
|
||||
TENANT_ID INT NOT NULL,
|
||||
PRIMARY KEY (ID),
|
||||
CONSTRAINT FK_DM_DEVICE_GROUP_POLICY
|
||||
FOREIGN KEY (DEVICE_GROUP_ID)
|
||||
REFERENCES DM_GROUP (ID)
|
||||
ON DELETE NO ACTION
|
||||
ON UPDATE NO ACTION,
|
||||
CONSTRAINT FK_DM_DEVICE_GROUP_DM_POLICY
|
||||
FOREIGN KEY (POLICY_ID , DEVICE_GROUP_ID)
|
||||
REFERENCES DM_POLICY (ID , ID)
|
||||
ON DELETE NO ACTION
|
||||
ON UPDATE NO ACTION
|
||||
);
|
||||
|
||||
-- END OF POLICY AND DEVICE GROUP MAPPING --
|
||||
|
||||
CREATE VIEW DEVICES_VIEW_1 AS
|
||||
SELECT
|
||||
DEVICE_INFO.DEVICE_ID,
|
||||
DEVICE_INFO.PLATFORM,
|
||||
DEVICE_INFO.OWNERSHIP,
|
||||
DEVICE_INFO.CONNECTIVITY_STATUS,
|
||||
IFNULL(DEVICE_WITH_POLICY_INFO.POLICY_ID, -1) AS POLICY_ID,
|
||||
IFNULL(DEVICE_WITH_POLICY_INFO.IS_COMPLIANT, -1) AS IS_COMPLIANT,
|
||||
DEVICE_INFO.TENANT_ID
|
||||
FROM
|
||||
(SELECT
|
||||
DM_DEVICE.ID AS DEVICE_ID,
|
||||
DM_DEVICE_TYPE.NAME AS PLATFORM,
|
||||
DM_ENROLMENT.OWNERSHIP AS OWNERSHIP,
|
||||
DM_ENROLMENT.STATUS AS CONNECTIVITY_STATUS,
|
||||
DM_DEVICE.TENANT_ID AS TENANT_ID
|
||||
FROM DM_DEVICE, DM_DEVICE_TYPE, DM_ENROLMENT
|
||||
WHERE DM_DEVICE.DEVICE_TYPE_ID = DM_DEVICE_TYPE.ID AND DM_DEVICE.ID = DM_ENROLMENT.DEVICE_ID) DEVICE_INFO
|
||||
LEFT JOIN
|
||||
(SELECT
|
||||
DEVICE_ID,
|
||||
POLICY_ID,
|
||||
STATUS AS IS_COMPLIANT
|
||||
FROM
|
||||
DM_POLICY_COMPLIANCE_STATUS) DEVICE_WITH_POLICY_INFO
|
||||
ON DEVICE_INFO.DEVICE_ID = DEVICE_WITH_POLICY_INFO.DEVICE_ID
|
||||
ORDER BY DEVICE_INFO.DEVICE_ID;
|
||||
|
||||
@ -62,8 +62,8 @@ public class AnnotationUtil {
|
||||
private static final String PACKAGE_ORG_APACHE = "org.apache";
|
||||
private static final String PACKAGE_ORG_CODEHAUS = "org.codehaus";
|
||||
private static final String PACKAGE_ORG_SPRINGFRAMEWORK = "org.springframework";
|
||||
public static final String STRING_ARR = "string_arr";
|
||||
public static final String STRING = "string";
|
||||
private static final String STRING_ARR = "string_arr";
|
||||
private static final String STRING = "string";
|
||||
private Class<org.wso2.carbon.device.mgt.extensions.feature.mgt.annotations.Feature>
|
||||
featureAnnotationClazz;
|
||||
private ClassLoader classLoader;
|
||||
@ -164,7 +164,8 @@ public class AnnotationUtil {
|
||||
return featureList;
|
||||
}
|
||||
|
||||
private Map<String, Object> processParamAnnotations(Map<String, Object> apiParams, Method currentMethod) throws Throwable{
|
||||
private Map<String, Object> processParamAnnotations(Map<String, Object> apiParams, Method currentMethod)
|
||||
throws Throwable{
|
||||
try {
|
||||
apiParams.put("pathParams", processParamAnnotations(currentMethod, PathParam.class));
|
||||
apiParams.put("queryParams", processParamAnnotations(currentMethod, QueryParam.class));
|
||||
@ -196,6 +197,12 @@ public class AnnotationUtil {
|
||||
return params;
|
||||
}
|
||||
|
||||
/**
|
||||
* Read Method annotations indicating HTTP Methods
|
||||
* @param feature
|
||||
* @param currentAnnotation
|
||||
* @return
|
||||
*/
|
||||
private Feature processHttpMethodAnnotation(Feature feature, Annotation currentAnnotation) {
|
||||
//Extracting method with which feature is exposed
|
||||
if (currentAnnotation.annotationType().getName().equals(GET.class.getName())) {
|
||||
@ -212,6 +219,13 @@ public class AnnotationUtil {
|
||||
return feature;
|
||||
}
|
||||
|
||||
/**
|
||||
* Read Feature annotation and Identify Features
|
||||
* @param feature
|
||||
* @param currentMethod
|
||||
* @return
|
||||
* @throws Throwable
|
||||
*/
|
||||
private Feature processFeatureAnnotation(Feature feature, Method currentMethod) throws Throwable{
|
||||
Method[] featureAnnoMethods = featureAnnotationClazz.getMethods();
|
||||
Annotation featureAnno = currentMethod.getAnnotation(featureAnnotationClazz);
|
||||
@ -234,6 +248,12 @@ public class AnnotationUtil {
|
||||
return feature;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get value depicted by Path Annotation
|
||||
* @param currentMethod
|
||||
* @return
|
||||
* @throws Throwable
|
||||
*/
|
||||
public String getPathAnnotationValue(Method currentMethod) throws Throwable{
|
||||
String uri = "";
|
||||
try {
|
||||
|
||||
@ -28,7 +28,6 @@ var devicemgtProps = require('/app/conf/devicemgt-props.js').config();
|
||||
var userModule = require("/app/modules/user.js").userModule;
|
||||
var serviceInvokers = require("/app/modules/backend-service-invoker.js").backendServiceInvoker;
|
||||
|
||||
var CarbonUtils = Packages.org.wso2.carbon.utils.CarbonUtils;
|
||||
var user = session.get(constants.USER_SESSION_KEY);
|
||||
var result;
|
||||
|
||||
@ -38,107 +37,41 @@ if (!user) {
|
||||
response.sendRedirect("/devicemgt/login?#login-required");
|
||||
exit();
|
||||
} else {
|
||||
if (uriMatcher.match("/{context}/api/devices/sketch/download/{downloadId}")) {
|
||||
downloadId = uriMatcher.elements().downloadId;
|
||||
//Just download the already created zip archive
|
||||
var sketchFolder = "repository/resources/sketches";
|
||||
var archivesPath = "file://" + CarbonUtils.getCarbonHome() + "/" + sketchFolder + "/archives/" +
|
||||
downloadId + ".zip";
|
||||
var zipFile = new File(archivesPath);
|
||||
response.addHeader('Content-type', "application/zip, application/octet-stream");
|
||||
response.addHeader('Cache-Control', 'public,max-age=12960000');
|
||||
response.addHeader("Content-Disposition", "attachment; filename=\"" + downloadId + ".zip\"");
|
||||
|
||||
try {
|
||||
zipFile.open('r');
|
||||
var stream = zipFile.getStream();
|
||||
print(stream);
|
||||
} catch (err) {
|
||||
|
||||
} finally {
|
||||
if (zipFile != null) {
|
||||
zipFile.close();
|
||||
}
|
||||
}
|
||||
|
||||
} else if (uriMatcher.match("/{context}/api/devices/sketch/download")) {
|
||||
//Create a new zip archive and register user calling endpoint
|
||||
|
||||
/* This should match with $CARBON_HOME/repository/resources/sketches/{sketchType} */
|
||||
sketchType = request.getParameter("sketchType");
|
||||
/* This should be registered device type of the CDMF(Connected Device Management Framework) */
|
||||
deviceType = request.getParameter("deviceType");
|
||||
deviceName = request.getParameter("deviceName");
|
||||
|
||||
if (!sketchType) {
|
||||
log.error("Sketch Type is empty!");
|
||||
// HTTP status code 400 refers to - Bad request.
|
||||
result = 400;
|
||||
if (uriMatcher.match("/{context}/api/devices/sketch/download")) {
|
||||
// works as a proxy to pass the relavant query string to back end api.
|
||||
var queryString = request.getQueryString();
|
||||
if (!queryString) {
|
||||
queryString = "";
|
||||
} else {
|
||||
/**
|
||||
URL: {serverURL}/{deviceType}/{downloadAgentUri}?owner={username}&deviceName={deviceName}
|
||||
{serverURL} - devicemgt/app/conf/config.json
|
||||
{deviceType} - from the request
|
||||
{downloadAgentUri} - device_type_specific_unit/private/conf/device-type.json
|
||||
{username} - from request
|
||||
{deviceName} - from request
|
||||
**/
|
||||
|
||||
var sketchDownloadEndPoint = devicemgtProps["httpsURL"] + "/" + deviceType + "/devices/download";
|
||||
deviceTypeConfig = utility.getDeviceTypeConfig(deviceType);
|
||||
|
||||
if (deviceTypeConfig && deviceTypeConfig.deviceType.downloadAgentUri) {
|
||||
sketchDownloadEndPoint = deviceTypeConfig.deviceType.downloadAgentUri;
|
||||
}
|
||||
var tokenPair = session.get(constants.ACCESS_TOKEN_PAIR_IDENTIFIER);
|
||||
if (tokenPair) {
|
||||
response.addHeader(constants.AUTHORIZATION_HEADER, constants.BEARER_PREFIX + tokenPair.accessToken);
|
||||
response.sendRedirect(sketchDownloadEndPoint + "?sketchType=" + sketchType + "&deviceName="
|
||||
+ deviceName);
|
||||
} else {
|
||||
response.sendRedirect(devicemgtProps["httpsURL"] + "/devicemgt/login");
|
||||
exit();
|
||||
}
|
||||
queryString = "?" + queryString;
|
||||
}
|
||||
|
||||
} else if (uriMatcher.match("/{context}/api/devices/sketch/generate_link")) {
|
||||
|
||||
var contents = request.getContent();
|
||||
sketchType = contents.sketchType;
|
||||
deviceType = contents.deviceType;
|
||||
deviceName = contents.deviceName;
|
||||
generateLink = contents.generateLink;
|
||||
|
||||
if (!sketchType) {
|
||||
log.error("Sketch Type is empty!");
|
||||
// HTTP status code 400 refers to - Bad request.
|
||||
result = 400;
|
||||
var deviceType = request.getParameter("deviceType"); // need a better solution here
|
||||
deviceTypeConfig = utility.getDeviceTypeConfig(deviceType);
|
||||
if (deviceTypeConfig && deviceTypeConfig.deviceType.downloadAgentUri) {
|
||||
sketchDownloadEndPoint = devicemgtProps["httpsURL"] + "/" + deviceTypeConfig.deviceType.downloadAgentUri;
|
||||
serviceInvokers.HttpClient.get(sketchDownloadEndPoint + queryString, function (responsePayload, responseHeaders) {
|
||||
if (responseHeaders) {
|
||||
for (var i = 0; i < responseHeaders.length; i++) {
|
||||
var header = responseHeaders[i]
|
||||
var headerName = String(header.getName());
|
||||
var headerValue = String(header.getValue());
|
||||
response.addHeader(headerName, headerValue);
|
||||
}
|
||||
var streamObject = new Stream(responsePayload);
|
||||
print(streamObject);
|
||||
} else {
|
||||
return responsePayload;
|
||||
}
|
||||
}, function (responsePayload) {
|
||||
log.error(responsePayload)
|
||||
var response = {};
|
||||
response["status"] = "error";
|
||||
return response;
|
||||
}
|
||||
);
|
||||
} else {
|
||||
|
||||
/**
|
||||
URL: {serverURL}/{deviceType}/{downloadAgentUri}?owner={username}&deviceName={deviceName}
|
||||
{serverURL} - devicemgt/app/conf/config.json
|
||||
{deviceType} - from the request
|
||||
{downloadAgentUri} - device_type_specific_unit/private/conf/device-type.json
|
||||
{username} - from request
|
||||
{deviceName} - from request
|
||||
**/
|
||||
|
||||
deviceManagerService = devicemgtProps["httpsURL"] + "/" + deviceType + "_mgt" + "/manager";
|
||||
sketchGenerateLinkEndPoint = deviceManagerService + "/device/" + sketchType + "/generate_link";
|
||||
var deviceTypeConfig = utility.getDeviceTypeConfig(deviceType);
|
||||
//replace download endpoint
|
||||
if (deviceTypeConfig && deviceTypeConfig.deviceType.downloadAgentLinkGenUri) {
|
||||
sketchGenerateLinkEndPoint = devicemgtProps["httpsURL"] + "/" + deviceType + "_mgt" +
|
||||
"/" + deviceTypeConfig.deviceType.downloadAgentLinkGenUri;
|
||||
}
|
||||
|
||||
var fileId = get(sketchGenerateLinkEndPoint + "?owner=" + user.username + "&deviceName=" +
|
||||
deviceName, null, "text");
|
||||
result = "curl -k " + devicemgtProps["httpsURL"] + constants.WEB_APP_CONTEXT +
|
||||
"/api/devices/sketch/download/" + fileId.data;
|
||||
result = 400;
|
||||
}
|
||||
|
||||
} else if (uriMatcher.match("/{context}/api/devices/all")) {
|
||||
result = deviceModule.getOwnDevices();
|
||||
|
||||
|
||||
@ -1,133 +0,0 @@
|
||||
<%
|
||||
/*
|
||||
* Copyright (c) 2015, 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.
|
||||
*/
|
||||
|
||||
var uri = request.getRequestURI();
|
||||
var uriMatcher = new URIMatcher(String(uri));
|
||||
|
||||
var log = new Log("apis/group-api.jag");
|
||||
|
||||
var constants = require("/app/modules/constants.js");
|
||||
|
||||
var utility = require("/app/modules/utility.js").utility;
|
||||
var devicemgtProps = require('/app/conf/devicemgt-props.js').config();
|
||||
var responseProcessor = require('utils').response;
|
||||
|
||||
var deviceCloudService = devicemgtProps["httpsURL"] + "/common/group_manager";
|
||||
|
||||
var user = session.get(constants.USER_SESSION_KEY);
|
||||
|
||||
var groupModule = require("/app/modules/group.js").groupModule;
|
||||
|
||||
var result, endPoint, data, groupId, group, role;
|
||||
|
||||
if (!user) {
|
||||
response = responseProcessor.buildErrorResponse(response, 401, "Unauthorized");
|
||||
} else {
|
||||
|
||||
if (uriMatcher.match("/{context}/api/group/add")) {
|
||||
group = request.getContent();
|
||||
result = groupModule.addGroup(group);
|
||||
|
||||
} else if (uriMatcher.match("/{context}/api/group/id/{groupId}/update")) {
|
||||
groupId = uriMatcher.elements().groupId;
|
||||
group = request.getContent();
|
||||
result = groupModule.updateGroup(groupId, group);
|
||||
|
||||
} else if (uriMatcher.match("/{context}/api/group/id/{groupId}/remove")) {
|
||||
groupId = uriMatcher.elements().groupId;
|
||||
result = groupModule.removeGroup(groupId);
|
||||
|
||||
} else if (uriMatcher.match("/{context}/api/group/id/{groupId}")) {
|
||||
groupId = uriMatcher.elements().groupId;
|
||||
result = groupModule.getGroup(groupId);
|
||||
|
||||
} else if (uriMatcher.match("/{context}/api/group/name/{groupName}")) {
|
||||
var groupName = uriMatcher.elements().groupName;
|
||||
result = groupModule.findGroups(groupName);
|
||||
|
||||
} else if (uriMatcher.match("/{context}/api/group/all")) {
|
||||
result = groupModule.getGroups();
|
||||
|
||||
} else if (uriMatcher.match("/{context}/api/group/all/count")) {
|
||||
result = groupModule.getGroupCount();
|
||||
|
||||
} else if (uriMatcher.match("/{context}/api/group/id/{groupId}/share")) {
|
||||
groupId = uriMatcher.elements().groupId;
|
||||
var shareUser = request.getContent()["shareUser"];
|
||||
role = request.getContent()["role"];
|
||||
result = groupModule.shareGroup(groupId, shareUser, role);
|
||||
|
||||
} else if (uriMatcher.match("/{context}/api/group/id/{groupId}/unshare")) {
|
||||
groupId = uriMatcher.elements().groupId;
|
||||
var unShareUser = request.getContent()["unShareUser"];
|
||||
role = request.getContent()["role"];
|
||||
result = groupModule.unshareGroup(groupId, unShareUser, role);
|
||||
|
||||
} else if (uriMatcher.match("/{context}/api/group/id/{groupId}/role/add")) {
|
||||
groupId = uriMatcher.elements().groupId;
|
||||
var permissions = request.getContent()["permissions"];
|
||||
role = request.getContent()["role"];
|
||||
result = groupModule.addRole(groupId, role, permissions);
|
||||
|
||||
} else if (uriMatcher.match("/{context}/api/group/id/{groupId}/role/delete")) {
|
||||
groupId = uriMatcher.elements().groupId;
|
||||
role = request.getContent()["role"];
|
||||
endPoint = deviceCloudService + "/group/id/" + groupId + "/role/" + role;
|
||||
result = groupModule.deleteRole(groupId, role);
|
||||
|
||||
} else if (uriMatcher.match("/{context}/api/group/id/{groupId}/role/all")) {
|
||||
groupId = uriMatcher.elements().groupId;
|
||||
result = groupModule.getGroupRoles(groupId);
|
||||
|
||||
} else if (uriMatcher.match("/{context}/api/group/id/{groupId}/{userId}/role/all")) {
|
||||
groupId = uriMatcher.elements().groupId;
|
||||
var userId = uriMatcher.elements().userId;
|
||||
result = groupModule.getUserRoles(groupId, userId);
|
||||
|
||||
} else if (uriMatcher.match("/{context}/api/group/id/{groupId}/{userId}/rolemapping")) {
|
||||
groupId = uriMatcher.elements().groupId;
|
||||
userId = uriMatcher.elements().userId;
|
||||
result = groupModule.getRoleMapping(groupId, userId);
|
||||
|
||||
} else if (uriMatcher.match("/{context}/api/group/id/{groupId}/{userId}/roleupdate")) {
|
||||
groupId = uriMatcher.elements().groupId;
|
||||
userId = uriMatcher.elements().userId;
|
||||
var roleMap = request.getContent();
|
||||
result = groupModule.setRoleMapping(groupId, userId, roleMap);
|
||||
|
||||
} else if (uriMatcher.match("/{context}/api/group/id/{groupId}/user/all")) {
|
||||
groupId = uriMatcher.elements().groupId;
|
||||
result = groupModule.getUsers(groupId);
|
||||
|
||||
} else if (uriMatcher.match("/{context}/api/group/id/{groupId}/device/all")) {
|
||||
groupId = uriMatcher.elements().groupId;
|
||||
result = groupModule.getDevices(groupId);
|
||||
|
||||
} else if (uriMatcher.match("/{context}/api/group/id/{groupId}/assign")) {
|
||||
groupId = uriMatcher.elements().groupId;
|
||||
var deviceId = request.getContent()["deviceId"];
|
||||
var deviceType = request.getContent()["deviceType"];
|
||||
result = groupModule.assignDevice(groupId, deviceId, deviceType);
|
||||
}
|
||||
}
|
||||
// returning the result.
|
||||
if (result) {
|
||||
print(result);
|
||||
}
|
||||
%>
|
||||
@ -38,11 +38,11 @@ if (!user) {
|
||||
if (uriMatcher.match("/{context}/api/operations/{deviceType}/stats")) {
|
||||
var deviceType = uriMatcher.elements().deviceType;
|
||||
var deviceId = request.getParameter("deviceId");
|
||||
var monitor_operations = operationModule.getMonitorOperations(deviceType);
|
||||
var monitorOperations = operationModule.getMonitorOperations(deviceType);
|
||||
var stats = [];
|
||||
result = {};
|
||||
for (var op in monitor_operations) {
|
||||
result = operationModule.handleGETOperation(deviceType, monitor_operations[op].operation, monitor_operations[op].name, deviceId);
|
||||
for (var op in monitorOperations) {
|
||||
result = operationModule.handleGETOperation(deviceType, monitorOperations[op].operation, monitorOperations[op].name, deviceId);
|
||||
stats.push(result.data);
|
||||
}
|
||||
result.data = stats;
|
||||
|
||||
@ -162,21 +162,28 @@ var backendServiceInvoker = function () {
|
||||
}
|
||||
|
||||
}
|
||||
var stringRequestEntity = new StringRequestEntity(stringify(payload));
|
||||
httpMethodObject.setRequestEntity(stringRequestEntity);
|
||||
if (payload) {
|
||||
var stringRequestEntity = new StringRequestEntity(stringify(payload));
|
||||
httpMethodObject.setRequestEntity(stringRequestEntity);
|
||||
}
|
||||
var client = new HttpClient();
|
||||
try {
|
||||
client.executeMethod(httpMethodObject);
|
||||
var status = httpMethodObject.getStatusCode();
|
||||
if (status == 200) {
|
||||
return successCallback(httpMethodObject.getResponseBody());
|
||||
var responseContentTypeHeader = httpMethodObject.getResponseHeader(constants.CONTENT_TYPE_IDENTIFIER);
|
||||
if (responseContentTypeHeader && responseContentTypeHeader.getValue() == constants.APPLICATION_ZIP) {
|
||||
return successCallback(httpMethodObject.getResponseBodyAsStream(), httpMethodObject.getResponseHeaders());
|
||||
} else {
|
||||
return successCallback(httpMethodObject.getResponseBody());
|
||||
}
|
||||
} else {
|
||||
return errorCallback(httpMethodObject.getResponseBody());
|
||||
}
|
||||
} catch (e) {
|
||||
return errorCallback(response);
|
||||
} finally {
|
||||
method.releaseConnection();
|
||||
httpMethodObject.releaseConnection();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@ -62,6 +62,7 @@ var ACCESS_TOKEN_PAIR_IDENTIFIER = "accessTokenPair";
|
||||
var ENCODED_CLIENT_KEYS_IDENTIFIER = "encodedClientKey";
|
||||
var CONTENT_TYPE_IDENTIFIER = "Content-Type";
|
||||
var APPLICATION_JSON = "application/json";
|
||||
var APPLICATION_ZIP = "application/zip";
|
||||
var ACCEPT_IDENTIFIER = "Accept";
|
||||
var AUTHORIZATION_HEADER= "Authorization";
|
||||
var BEARER_PREFIX = "Bearer ";
|
||||
|
||||
@ -97,61 +97,6 @@ deviceModule = function () {
|
||||
}
|
||||
};
|
||||
|
||||
/*
|
||||
@Deprecated
|
||||
*/
|
||||
publicMethods.listDevicesForUser = function (username) {
|
||||
var carbonUser = session.get(constants.USER_SESSION_KEY);
|
||||
var utility = require('/app/modules/utility.js').utility;
|
||||
if (!carbonUser) {
|
||||
log.error("User object was not found in the session");
|
||||
throw constants.ERRORS.USER_NOT_FOUND;
|
||||
}
|
||||
try {
|
||||
utility.startTenantFlow(carbonUser);
|
||||
var deviceManagementService = utility.getDeviceManagementService();
|
||||
var devices = deviceManagementService.getDevicesOfUser(username);
|
||||
var deviceList = [];
|
||||
var i, device, propertiesList, deviceObject;
|
||||
for (i = 0; i < devices.size(); i++) {
|
||||
device = devices.get(i);
|
||||
propertiesList = DeviceManagerUtil.convertDevicePropertiesToMap(device.getProperties());
|
||||
|
||||
deviceObject = {};
|
||||
deviceObject[constants.DEVICE_IDENTIFIER] =
|
||||
privateMethods.validateAndReturn(device.getDeviceIdentifier());
|
||||
deviceObject[constants.DEVICE_NAME] =
|
||||
privateMethods.validateAndReturn(device.getName());
|
||||
deviceObject[constants.DEVICE_OWNERSHIP] =
|
||||
privateMethods.validateAndReturn(device.getEnrolmentInfo().getOwnership());
|
||||
deviceObject[constants.DEVICE_OWNER] =
|
||||
privateMethods.validateAndReturn(device.getEnrolmentInfo().getOwner());
|
||||
deviceObject[constants.DEVICE_TYPE] =
|
||||
privateMethods.validateAndReturn(device.getType());
|
||||
deviceObject[constants.DEVICE_PROPERTIES] = {};
|
||||
if (device.getType() == constants.PLATFORM_IOS) {
|
||||
deviceObject[constants.DEVICE_PROPERTIES][constants.DEVICE_MODEL] =
|
||||
privateMethods.validateAndReturn(propertiesList.get(constants.DEVICE_PRODUCT));
|
||||
deviceObject[constants.DEVICE_PROPERTIES][constants.DEVICE_VENDOR] = constants.VENDOR_APPLE;
|
||||
} else {
|
||||
deviceObject[constants.DEVICE_PROPERTIES][constants.DEVICE_MODEL] =
|
||||
privateMethods.validateAndReturn(propertiesList.get(constants.DEVICE_MODEL));
|
||||
deviceObject[constants.DEVICE_PROPERTIES][constants.DEVICE_VENDOR] =
|
||||
privateMethods.validateAndReturn(propertiesList.get(constants.DEVICE_VENDOR));
|
||||
}
|
||||
deviceObject[constants.DEVICE_PROPERTIES][constants.DEVICE_OS_VERSION] =
|
||||
privateMethods.validateAndReturn(propertiesList.get(constants.DEVICE_OS_VERSION));
|
||||
|
||||
deviceList.push(deviceObject);
|
||||
}
|
||||
return deviceList;
|
||||
} catch (e) {
|
||||
throw e;
|
||||
} finally {
|
||||
utility.endTenantFlow();
|
||||
}
|
||||
};
|
||||
|
||||
/*
|
||||
@Deprecated
|
||||
*/
|
||||
@ -298,8 +243,7 @@ deviceModule = function () {
|
||||
deviceObject[constants["DEVICE_PROPERTIES"]] = properties;
|
||||
return deviceObject;
|
||||
}
|
||||
}
|
||||
,
|
||||
},
|
||||
function (responsePayload) {
|
||||
var response = {};
|
||||
response["status"] = "error";
|
||||
@ -314,44 +258,42 @@ deviceModule = function () {
|
||||
};
|
||||
|
||||
// Refactored methods
|
||||
publicMethods.getOwnDevicesCount = function () {
|
||||
publicMethods.getDevicesCount = function () {
|
||||
var carbonUser = session.get(constants.USER_SESSION_KEY);
|
||||
var url = devicemgtProps["httpsURL"] + constants.ADMIN_SERVICE_CONTEXT + "/devices/user/" + carbonUser.username
|
||||
+ "/count";
|
||||
return serviceInvokers.XMLHttp.get(
|
||||
url, function (responsePayload) {
|
||||
return responsePayload;
|
||||
}
|
||||
,
|
||||
function (responsePayload) {
|
||||
log.error(responsePayload);
|
||||
return -1;
|
||||
}
|
||||
);
|
||||
if (carbonUser) {
|
||||
var userModule = require("/app/modules/user.js").userModule;
|
||||
var uiPermissions = userModule.getUIPermissions();
|
||||
var url;
|
||||
if (uiPermissions.LIST_DEVICES) {
|
||||
url = devicemgtProps["httpsURL"] + constants.ADMIN_SERVICE_CONTEXT + "/devices/count";
|
||||
} else if (uiPermissions.LIST_OWN_DEVICES) {
|
||||
url = devicemgtProps["httpsURL"] + constants.ADMIN_SERVICE_CONTEXT + "/devices/user/" + carbonUser.username
|
||||
+ "/count";
|
||||
} else {
|
||||
log.error("Access denied for user: " + carbonUser.username);
|
||||
return -1;
|
||||
}
|
||||
return serviceInvokers.XMLHttp.get(
|
||||
url, function (responsePayload) {
|
||||
return responsePayload;
|
||||
},
|
||||
function (responsePayload) {
|
||||
log.error(responsePayload);
|
||||
return -1;
|
||||
}
|
||||
);
|
||||
} else {
|
||||
log.error("User object was not found in the session");
|
||||
throw constants["ERRORS"]["USER_NOT_FOUND"];
|
||||
}
|
||||
};
|
||||
|
||||
publicMethods.getAllDevicesCount = function () {
|
||||
var url = devicemgtProps["httpsURL"] + constants.ADMIN_SERVICE_CONTEXT + "/devices/count";
|
||||
return serviceInvokers.XMLHttp.get(
|
||||
url, function (responsePayload) {
|
||||
return responsePayload;
|
||||
}
|
||||
,
|
||||
function (responsePayload) {
|
||||
log.error(responsePayload);
|
||||
return -1;
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
|
||||
publicMethods.getDeviceTypes = function () {
|
||||
var url = devicemgtProps["httpsURL"] + constants.ADMIN_SERVICE_CONTEXT + "/devices/types";
|
||||
return serviceInvokers.XMLHttp.get(
|
||||
url, function (responsePayload) {
|
||||
return responsePayload;
|
||||
}
|
||||
,
|
||||
},
|
||||
function (responsePayload) {
|
||||
log.error(responsePayload);
|
||||
return -1;
|
||||
@ -383,86 +325,20 @@ deviceModule = function () {
|
||||
return license;
|
||||
};
|
||||
|
||||
publicMethods.getOwnDevices = function () {
|
||||
var listAllDevicesEndPoint = deviceCloudService + "/device/user/" + user.username + "/all";
|
||||
var result = get(listAllDevicesEndPoint, {}, "json");
|
||||
var devices = result.data;
|
||||
var device;
|
||||
for (var d in devices){
|
||||
device = devices[d];
|
||||
device.assetId = publicMethods.getAssetId(device.deviceType);
|
||||
}
|
||||
return result;
|
||||
publicMethods.getDevices = function (userName) {
|
||||
var url = devicemgtProps["httpsURL"] + constants.ADMIN_SERVICE_CONTEXT + "/devices/user/" + userName;
|
||||
return serviceInvokers.XMLHttp.get(
|
||||
url, function (responsePayload) {
|
||||
for (var i = 0; i < responsePayload.length; i++) {
|
||||
responsePayload[i].thumb = utility.getDeviceThumb(responsePayload[i].type);
|
||||
}
|
||||
return responsePayload;
|
||||
},
|
||||
function (responsePayload) {
|
||||
log.error(responsePayload);
|
||||
return -1;
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
publicMethods.getAllPermittedDevices = function () {
|
||||
var groupModule = require("/app/modules/group.js").groupModule;
|
||||
|
||||
var result = publicMethods.getUnGroupedDevices();
|
||||
var unGroupedDevices = result.data;
|
||||
var user_groups = groupModule.getGroups().data;
|
||||
var allDevices = [];
|
||||
var deviceCount = unGroupedDevices.length;
|
||||
for (var g in user_groups) {
|
||||
var deviceInGroup = user_groups[g].devices;
|
||||
deviceCount += deviceInGroup.length;
|
||||
if (deviceInGroup && deviceInGroup.length == 0) {
|
||||
delete user_groups[g]["devices"];
|
||||
}
|
||||
var device;
|
||||
for (var d in deviceInGroup){
|
||||
device = deviceInGroup[d];
|
||||
device.assetId = publicMethods.getAssetId(device.type);
|
||||
}
|
||||
allDevices.push(user_groups[g]);
|
||||
}
|
||||
allDevices.push({id: 0, devices: unGroupedDevices});
|
||||
result.data = allDevices;
|
||||
result.device_count = deviceCount;
|
||||
return result;
|
||||
};
|
||||
|
||||
publicMethods.removeDevice = function (deviceType, deviceId) {
|
||||
var carbonUser = session.get(constants.USER_SESSION_KEY);
|
||||
if (!carbonUser) {
|
||||
log.error("User object was not found in the session");
|
||||
throw constants.ERRORS.USER_NOT_FOUND;
|
||||
}
|
||||
try {
|
||||
utility.startTenantFlow(carbonUser);
|
||||
var deviceManagementService = utility.getDeviceManagementService();
|
||||
var deviceIdentifier = new DeviceIdentifier();
|
||||
deviceIdentifier.setType(deviceType);
|
||||
deviceIdentifier.setId(deviceId);
|
||||
return deviceManagementService.disenrollDevice(deviceIdentifier);
|
||||
} catch (e) {
|
||||
throw e;
|
||||
} finally {
|
||||
utility.endTenantFlow();
|
||||
}
|
||||
};
|
||||
|
||||
publicMethods.updateDevice = function (deviceType, deviceId, deviceName) {
|
||||
var carbonUser = session.get(constants.USER_SESSION_KEY);
|
||||
if (!carbonUser) {
|
||||
log.error("User object was not found in the session");
|
||||
throw constants.ERRORS.USER_NOT_FOUND;
|
||||
}
|
||||
try {
|
||||
utility.startTenantFlow(carbonUser);
|
||||
var deviceManagementService = utility.getDeviceManagementService();
|
||||
var deviceIdentifier = new DeviceIdentifier();
|
||||
deviceIdentifier.setType(deviceType);
|
||||
deviceIdentifier.setId(deviceId);
|
||||
var device = deviceManagementService.getDevice(deviceIdentifier);
|
||||
device.setName(deviceName);
|
||||
return deviceManagementService.modifyEnrollment(device);
|
||||
} catch (e) {
|
||||
throw e;
|
||||
} finally {
|
||||
utility.endTenantFlow();
|
||||
}
|
||||
};
|
||||
|
||||
return publicMethods;
|
||||
}();
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user