forked from community/device-mgt-plugins
parent
30a8642931
commit
d6b6da9c14
@ -0,0 +1,185 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
~ Copyright (c) 2017, 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.
|
||||
-->
|
||||
<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-plugins</groupId>
|
||||
<artifactId>appm-connector</artifactId>
|
||||
<version>3.0.9-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<artifactId>org.wso2.carbon.appmgt.mdm.restconnector</artifactId>
|
||||
<packaging>bundle</packaging>
|
||||
<name>WSO2 Carbon - App Manager WSO2 MDM REST Connector Component</name>
|
||||
<url>http://maven.apache.org</url>
|
||||
<repositories>
|
||||
<repository>
|
||||
<id>wso2-maven2-repository</id>
|
||||
<name>WSO2 Maven2 Repository</name>
|
||||
<url>http://dist.wso2.org/maven2/</url>
|
||||
</repository>
|
||||
<repository>
|
||||
<id>wso2-maven2-snapshot-repository</id>
|
||||
<name>WSO2 Maven2 Snapshot Repository</name>
|
||||
<url>http://dist.wso2.org/snapshots/maven2/</url>
|
||||
</repository>
|
||||
<repository>
|
||||
<id>wso2-nexus</id>
|
||||
<name>WSO2 internal Repository</name>
|
||||
<url>http://maven.wso2.org/nexus/content/groups/wso2-public/</url>
|
||||
<releases>
|
||||
<enabled>true</enabled>
|
||||
<updatePolicy>daily</updatePolicy>
|
||||
<checksumPolicy>ignore</checksumPolicy>
|
||||
</releases>
|
||||
</repository>
|
||||
</repositories>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.felix</groupId>
|
||||
<artifactId>maven-scr-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>generate-scr-scrdescriptor</id>
|
||||
<goals>
|
||||
<goal>scr</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.felix</groupId>
|
||||
<artifactId>maven-bundle-plugin</artifactId>
|
||||
<extensions>true</extensions>
|
||||
<configuration>
|
||||
<instructions>
|
||||
<Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
|
||||
<Bundle-Name>${project.artifactId}</Bundle-Name>
|
||||
<Private-Package>org.wso2.carbon.appmgt.mdm.restconnector.internal</Private-Package>
|
||||
<Import-Package>
|
||||
org.wso2.carbon.appmgt.mobile.utils.*,
|
||||
org.wso2.carbon.appmgt.mobile.mdm.*,
|
||||
org.wso2.carbon.appmgt.mobile.interfaces.*,
|
||||
org.apache.commons.*,
|
||||
org.wso2.carbon.user.core.service,
|
||||
org.wso2.carbon.user.core.tenant,
|
||||
org.wso2.carbon.user.api,
|
||||
feign,
|
||||
feign.auth,
|
||||
feign.codec,
|
||||
feign.gson,
|
||||
*;resolution:=optional
|
||||
</Import-Package>
|
||||
<Export-Package>
|
||||
!org.wso2.carbon.appmgt.mdm.restconnector.internal,
|
||||
org.wso2.carbon.appmgt.mdm.restconnector.*
|
||||
</Export-Package>
|
||||
<Embed-Dependency>
|
||||
jsr311-api,
|
||||
feign-jaxrs,
|
||||
org.wso2.carbon.device.mgt.common
|
||||
</Embed-Dependency>
|
||||
</instructions>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>commons-io.wso2</groupId>
|
||||
<artifactId>commons-io</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.googlecode.json-simple.wso2</groupId>
|
||||
<artifactId>json-simple</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.googlecode.plist</groupId>
|
||||
<artifactId>dd-plist</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.wso2.carbon</groupId>
|
||||
<artifactId>org.wso2.carbon.logging</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.felix</groupId>
|
||||
<artifactId>org.apache.felix.scr</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.wso2.carbon</groupId>
|
||||
<artifactId>org.wso2.carbon.ndatasource.core</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.wso2.carbon.governance</groupId>
|
||||
<artifactId>org.wso2.carbon.governance.api</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.wso2.carbon.appmgt</groupId>
|
||||
<artifactId>org.wso2.carbon.appmgt.mobile</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<artifactId>org.wso2.carbon.identity.jwt.client.extension</artifactId>
|
||||
<version>2.0.6-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.github.openfeign</groupId>
|
||||
<artifactId>feign-core</artifactId>
|
||||
<version>9.3.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.github.openfeign</groupId>
|
||||
<artifactId>feign-jaxrs</artifactId>
|
||||
<version>9.3.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.github.openfeign</groupId>
|
||||
<artifactId>feign-gson</artifactId>
|
||||
<version>9.3.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>javax.ws.rs</groupId>
|
||||
<artifactId>jsr311-api</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.swagger</groupId>
|
||||
<artifactId>swagger-jaxrs</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<artifactId>org.wso2.carbon.device.mgt.common</artifactId>
|
||||
<exclusions>
|
||||
<exclusion>
|
||||
<groupId>org.apache.ws.commons.axiom</groupId>
|
||||
<artifactId>axiom-api</artifactId>
|
||||
</exclusion>
|
||||
<exclusion>
|
||||
<groupId>org.apache.ws.commons.axiom</groupId>
|
||||
<artifactId>axiom-impl</artifactId>
|
||||
</exclusion>
|
||||
</exclusions>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
</project>
|
@ -0,0 +1,274 @@
|
||||
/*
|
||||
* Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
*
|
||||
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
package org.wso2.carbon.appmgt.mdm.restconnector;
|
||||
|
||||
import feign.Feign;
|
||||
import feign.gson.GsonDecoder;
|
||||
import feign.gson.GsonEncoder;
|
||||
import feign.jaxrs.JAXRSContract;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.json.simple.JSONObject;
|
||||
import org.json.simple.parser.JSONParser;
|
||||
import org.json.simple.parser.ParseException;
|
||||
import org.wso2.carbon.appmgt.mdm.restconnector.authorization.client.OAuthRequestInterceptor;
|
||||
import org.wso2.carbon.appmgt.mdm.restconnector.authorization.client.dto.ApplicationManagementAdminService;
|
||||
import org.wso2.carbon.appmgt.mdm.restconnector.authorization.client.dto.ApplicationWrapper;
|
||||
import org.wso2.carbon.appmgt.mdm.restconnector.authorization.client.dto.DeviceManagementAdminService;
|
||||
import org.wso2.carbon.appmgt.mdm.restconnector.authorization.client.dto.MobileApp;
|
||||
import org.wso2.carbon.appmgt.mdm.restconnector.authorization.client.dto.MobileAppTypes;
|
||||
import org.wso2.carbon.appmgt.mdm.restconnector.config.AuthorizationConfigurationManager;
|
||||
import org.wso2.carbon.appmgt.mobile.beans.ApplicationOperationAction;
|
||||
import org.wso2.carbon.appmgt.mobile.beans.ApplicationOperationDevice;
|
||||
import org.wso2.carbon.appmgt.mobile.beans.DeviceIdentifier;
|
||||
import org.wso2.carbon.appmgt.mobile.interfaces.ApplicationOperations;
|
||||
import org.wso2.carbon.appmgt.mobile.mdm.App;
|
||||
import org.wso2.carbon.appmgt.mobile.mdm.Device;
|
||||
import org.wso2.carbon.appmgt.mobile.utils.MobileApplicationException;
|
||||
import org.wso2.carbon.appmgt.mobile.utils.MobileConfigurations;
|
||||
import org.wso2.carbon.context.PrivilegedCarbonContext;
|
||||
import org.wso2.carbon.device.mgt.common.operation.mgt.Activity;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Properties;
|
||||
|
||||
public class ApplicationOperationsImpl implements ApplicationOperations {
|
||||
private static final String CDMF_SERVER_BASE_CONTEXT = "/api/device-mgt/v1.0";
|
||||
private static DeviceManagementAdminService deviceManagementAdminService;
|
||||
private static final Log log = LogFactory.getLog(ApplicationOperationsImpl.class);
|
||||
private static ApplicationManagementAdminService applicationManagementAdminService;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*/
|
||||
public ApplicationOperationsImpl() {
|
||||
String authorizationConfigManagerServerURL = AuthorizationConfigurationManager.getInstance().getServerURL();
|
||||
OAuthRequestInterceptor oAuthRequestInterceptor = new OAuthRequestInterceptor();
|
||||
deviceManagementAdminService = Feign.builder()
|
||||
.requestInterceptor(oAuthRequestInterceptor)
|
||||
.contract(new JAXRSContract()).encoder(new GsonEncoder()).decoder(new GsonDecoder())
|
||||
.target(DeviceManagementAdminService.class,
|
||||
authorizationConfigManagerServerURL + CDMF_SERVER_BASE_CONTEXT);
|
||||
applicationManagementAdminService = Feign.builder()
|
||||
.requestInterceptor(oAuthRequestInterceptor)
|
||||
.contract(new JAXRSContract()).encoder(new GsonEncoder()).decoder(new GsonDecoder())
|
||||
.target(ApplicationManagementAdminService.class,
|
||||
authorizationConfigManagerServerURL + CDMF_SERVER_BASE_CONTEXT);
|
||||
}
|
||||
|
||||
/**
|
||||
* Install, uninstall, reinstall application in devices.
|
||||
*
|
||||
* @param applicationOperationAction {@link ApplicationOperationAction} object
|
||||
* @return Activity id
|
||||
* @throws MobileApplicationException on errors while trying to perform action in devices
|
||||
*/
|
||||
@Override
|
||||
public String performAction(ApplicationOperationAction applicationOperationAction)
|
||||
throws MobileApplicationException {
|
||||
ApplicationWrapper applicationWrapper = new ApplicationWrapper();
|
||||
MobileApp mobileApp = new MobileApp();
|
||||
|
||||
String type = applicationOperationAction.getType();
|
||||
String[] params = applicationOperationAction.getParams();
|
||||
int tenantId = applicationOperationAction.getTenantId();
|
||||
|
||||
PrivilegedCarbonContext.getThreadLocalCarbonContext().setTenantId(tenantId);
|
||||
|
||||
List<DeviceIdentifier> deviceIdentifiers = new ArrayList<>();
|
||||
List<org.wso2.carbon.appmgt.mdm.restconnector.authorization.client.dto.Device> deviceList;
|
||||
if (Constants.USER.equals(type)) {
|
||||
String platform = applicationOperationAction.getApp().getPlatform();
|
||||
String userName;
|
||||
for (String param : params) {
|
||||
userName = param;
|
||||
deviceList = deviceManagementAdminService.getDevices(userName, null).getList();
|
||||
|
||||
for (org.wso2.carbon.appmgt.mdm.restconnector.authorization.client.dto.Device device : deviceList) {
|
||||
if (Constants.WEBAPP.equals(platform) || platform.equalsIgnoreCase(device.getType())) {
|
||||
if (Constants.ACTIVE.equalsIgnoreCase(device.getEnrolmentInfo().getStatus().toString())) {
|
||||
deviceIdentifiers.add(getDeviceIdentifierByDevice(device));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (Constants.ROLE.equals(type)) {
|
||||
String userRole;
|
||||
for (String param : applicationOperationAction.getParams()) {
|
||||
userRole = param;
|
||||
deviceList = deviceManagementAdminService.getDevices(null, userRole).getList();
|
||||
for (org.wso2.carbon.appmgt.mdm.restconnector.authorization.client.dto.Device device : deviceList) {
|
||||
if (Constants.ACTIVE.equalsIgnoreCase(device.getEnrolmentInfo().getStatus().toString())) {
|
||||
deviceIdentifiers.add(getDeviceIdentifierByDevice(device));
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (Constants.DEVICE.equals(type)) {
|
||||
DeviceIdentifier deviceIdentifier;
|
||||
for (String param : params) {
|
||||
deviceIdentifier = new DeviceIdentifier();
|
||||
if (isValidJSON(param)) {
|
||||
JSONParser parser = new JSONParser();
|
||||
try {
|
||||
JSONObject parsedObj = (JSONObject) parser.parse(param);
|
||||
deviceIdentifier.setId((String) parsedObj.get(Constants.ID));
|
||||
String deviceType = (String) parsedObj.get(Constants.TYPE);
|
||||
deviceIdentifier.setType(deviceType);
|
||||
deviceIdentifiers.add(deviceIdentifier);
|
||||
} catch (ParseException e) {
|
||||
throw new MobileApplicationException("Device Identifier is not valid json object.", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
throw new IllegalStateException("Invalid type is received from app store.");
|
||||
}
|
||||
|
||||
App app = applicationOperationAction.getApp();
|
||||
mobileApp.setId(app.getId());
|
||||
mobileApp.setType(MobileAppTypes.valueOf(app.getType().toUpperCase()));
|
||||
mobileApp.setAppIdentifier(app.getAppIdentifier());
|
||||
mobileApp.setIconImage(app.getIconImage());
|
||||
mobileApp.setIdentifier(app.getIdentifier());
|
||||
mobileApp.setLocation(app.getLocation());
|
||||
mobileApp.setName(app.getName());
|
||||
mobileApp.setPackageName(app.getPackageName());
|
||||
mobileApp.setPlatform(app.getPlatform());
|
||||
mobileApp.setVersion(app.getVersion());
|
||||
Properties mobileAppProperties = new Properties();
|
||||
|
||||
if (Constants.IOS.equals(app.getPlatform())) {
|
||||
if (Constants.ENTERPRISE.equals(app.getType())) {
|
||||
mobileAppProperties.put(Constants.IOSConstants.IS_REMOVE_APP, true);
|
||||
mobileAppProperties.put(Constants.IOSConstants.IS_PREVENT_BACKUP, true);
|
||||
} else if (Constants.IOSConstants.PUBLIC.equals(app.getType())) {
|
||||
mobileAppProperties.put(Constants.IOSConstants.I_TUNES_ID, app.getIdentifier());
|
||||
mobileAppProperties.put(Constants.IOSConstants.IS_REMOVE_APP, true);
|
||||
mobileAppProperties.put(Constants.IOSConstants.IS_PREVENT_BACKUP, true);
|
||||
} else if (Constants.WEBAPP.equals(app.getType())) {
|
||||
mobileAppProperties.put(Constants.IOSConstants.LABEL, app.getName());
|
||||
mobileAppProperties.put(Constants.IOSConstants.IS_REMOVE_APP, true);
|
||||
}
|
||||
} else if (Constants.WEBAPP.equals(app.getPlatform())) {
|
||||
mobileAppProperties.put(Constants.IOSConstants.LABEL, app.getName());
|
||||
mobileAppProperties.put(Constants.IOSConstants.IS_REMOVE_APP, true);
|
||||
}
|
||||
mobileApp.setProperties(mobileAppProperties);
|
||||
applicationWrapper.setApplication(mobileApp);
|
||||
Activity activity = null;
|
||||
|
||||
if (deviceIdentifiers.size() > 0) {
|
||||
applicationWrapper.setDeviceIdentifiers(deviceIdentifiers);
|
||||
if (Constants.INSTALL.equals(applicationOperationAction.getAction())) {
|
||||
activity = applicationManagementAdminService.installApplication(applicationWrapper);
|
||||
} else if (Constants.UPDATE.equals(applicationOperationAction.getAction())) {
|
||||
activity = applicationManagementAdminService.installApplication(applicationWrapper);
|
||||
} else {
|
||||
activity = applicationManagementAdminService.uninstallApplication(applicationWrapper);
|
||||
}
|
||||
}
|
||||
|
||||
if (activity != null) {
|
||||
return activity.getActivityId();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get devices.
|
||||
*
|
||||
* @param applicationOperationDevice {@link ApplicationOperationAction} object
|
||||
* @return list of {@link Device} objects
|
||||
* @throws MobileApplicationException on errors while trying to get devices list
|
||||
*/
|
||||
@Override
|
||||
public List<Device> getDevices(ApplicationOperationDevice applicationOperationDevice)
|
||||
throws MobileApplicationException {
|
||||
Map<String, String> queryParamsMap = new HashMap<>();
|
||||
String platform = applicationOperationDevice.getPlatform();
|
||||
String platformVersion = applicationOperationDevice.getPlatformVersion();
|
||||
String userName = applicationOperationDevice.getCurrentUser().getUsername();
|
||||
queryParamsMap.put(Constants.PLATFORM, platform);
|
||||
queryParamsMap.put(Constants.PLATFORM_VERSION, platformVersion);
|
||||
queryParamsMap.put(Constants.USER, userName);
|
||||
String type = applicationOperationDevice.getType();
|
||||
queryParamsMap.put(Constants.TYPE, type);
|
||||
List<org.wso2.carbon.appmgt.mdm.restconnector.authorization.client.dto.Device> deviceList =
|
||||
deviceManagementAdminService.getDevices(userName, null).getList();
|
||||
|
||||
List<Device> processedDevices = new ArrayList<>();
|
||||
for (org.wso2.carbon.appmgt.mdm.restconnector.authorization.client.dto.Device device : deviceList) {
|
||||
Device processedDevice = new Device();
|
||||
DeviceIdentifier deviceIdentifier = new DeviceIdentifier();
|
||||
deviceIdentifier.setId(device.getDeviceIdentifier().toString());
|
||||
deviceIdentifier.setType(device.getType().toString());
|
||||
processedDevice.setDeviceIdentifier(deviceIdentifier);
|
||||
processedDevice.setName(device.getName());
|
||||
processedDevice.setModel(device.getName());
|
||||
processedDevice.setType(device.getType());
|
||||
String imgUrl;
|
||||
if (Constants.ANDROID.equalsIgnoreCase((device.getType().toString()))) {
|
||||
imgUrl = String.format(getActiveMDMProperties().get(Constants.PROPERTY_IMAGE_URL), Constants.NEXUS);
|
||||
} else if (Constants.IOS.equalsIgnoreCase((device.getType().toString()))) {
|
||||
imgUrl = String.format(getActiveMDMProperties().get(Constants.PROPERTY_IMAGE_URL), Constants.IPHONE);
|
||||
} else {
|
||||
imgUrl = String.format(getActiveMDMProperties().get(Constants.PROPERTY_IMAGE_URL), Constants.NONE);
|
||||
}
|
||||
processedDevice.setImage(imgUrl);
|
||||
processedDevice.setPlatform(device.getType().toString());
|
||||
processedDevices.add(processedDevice);
|
||||
}
|
||||
return processedDevices;
|
||||
|
||||
}
|
||||
|
||||
private HashMap<String, String> getActiveMDMProperties() {
|
||||
MobileConfigurations configurations = MobileConfigurations.getInstance();
|
||||
return configurations.getActiveMDMProperties();
|
||||
}
|
||||
|
||||
private static DeviceIdentifier getDeviceIdentifierByDevice(
|
||||
org.wso2.carbon.appmgt.mdm.restconnector.authorization.client.dto.Device device) {
|
||||
DeviceIdentifier deviceIdentifier = new DeviceIdentifier();
|
||||
deviceIdentifier.setId(device.getDeviceIdentifier());
|
||||
deviceIdentifier.setType(device.getType());
|
||||
|
||||
return deviceIdentifier;
|
||||
}
|
||||
|
||||
private boolean isValidJSON(String json) {
|
||||
JSONParser parser = new JSONParser();
|
||||
try {
|
||||
parser.parse(json);
|
||||
} catch (ParseException e) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private void logError(String errorMessage, Throwable e) {
|
||||
if (log.isDebugEnabled()) {
|
||||
log.error(errorMessage, e);
|
||||
} else {
|
||||
log.error(errorMessage);
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,108 @@
|
||||
/*
|
||||
* Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
*
|
||||
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
package org.wso2.carbon.appmgt.mdm.restconnector;
|
||||
|
||||
public class Constants {
|
||||
public static final String PROPERTY_SERVER_URL = "ServerURL";
|
||||
public static final String PROPERTY_TOKEN_API_URL = "TokenApiURL";
|
||||
public static final String PROPERTY_IMAGE_URL = "ImageURL";
|
||||
public static final String PROPERTY_TOKEN_REFRESH_TIME_OFFSET = "TokenRefreshTimeOffset";
|
||||
public static final String PROPERTY_USERNAME = "Username";
|
||||
public static final String PROPERTY_PASSWORD = "Password";
|
||||
|
||||
public static final String USER = "user";
|
||||
public static final String ROLE = "role";
|
||||
public static final String USERS = USER + "s";
|
||||
public static final String ROLES = ROLE + "s";
|
||||
public static final String ANDROID = "android";
|
||||
public static final String IOS = "ios";
|
||||
public static final String WEBAPP = "webapp";
|
||||
public static final String PLATFORM = "platform";
|
||||
public static final String PLATFORM_VERSION = "platformVersion";
|
||||
public static final String PROPERTIES = "properties";
|
||||
public static final String TYPE = "type";
|
||||
public static final String TYPES = TYPE + "s";
|
||||
public static final String ID = "id";
|
||||
public static final String NAME = "name";
|
||||
public static final String USER_LIST = "userList";
|
||||
public static final String DEVICE_IDENTIFIER = "deviceIdentifier";
|
||||
public static final String DEVICE_IDENTIFIERS = DEVICE_IDENTIFIER + "s";
|
||||
public static final String DEVICES = "devices";
|
||||
public static final String APPLICATION = "application";
|
||||
public static final String NEXUS = "nexus";
|
||||
public static final String IPHONE = "iphone";
|
||||
public static final String NONE = "none";
|
||||
public static final String INSTALL = "install";
|
||||
public static final String UPDATE = "update";
|
||||
public static final String MOBILE_DEVICE = "mobileDevice";
|
||||
public static final String ENTERPRISE = "enterprise";
|
||||
public static final String ACTIVE = "active";
|
||||
public static final String DEVICE = "device";
|
||||
|
||||
|
||||
public class IOSConstants {
|
||||
|
||||
private IOSConstants() {
|
||||
throw new AssertionError();
|
||||
}
|
||||
|
||||
public static final String IS_REMOVE_APP = "isRemoveApp";
|
||||
public static final String IS_PREVENT_BACKUP = "isPreventBackup";
|
||||
public static final String I_TUNES_ID = "iTunesId";
|
||||
public static final String LABEL = "label";
|
||||
public static final String PUBLIC = "public";
|
||||
public static final String OPCODE_INSTALL_ENTERPRISE_APPLICATION =
|
||||
"INSTALL_ENTERPRISE_APPLICATION";
|
||||
public static final String OPCODE_INSTALL_STORE_APPLICATION = "INSTALL_STORE_APPLICATION";
|
||||
public static final String OPCODE_INSTALL_WEB_APPLICATION = "WEB_CLIP";
|
||||
public static final String OPCODE_REMOVE_APPLICATION = "REMOVE_APPLICATION";
|
||||
}
|
||||
|
||||
public class AndroidConstants {
|
||||
private AndroidConstants() {
|
||||
throw new AssertionError();
|
||||
}
|
||||
|
||||
public static final String OPCODE_INSTALL_APPLICATION = "INSTALL_APPLICATION";
|
||||
public static final String OPCODE_UPDATE_APPLICATION = "UPDATE_APPLICATION";
|
||||
public static final String OPCODE_UNINSTALL_APPLICATION = "UNINSTALL_APPLICATION";
|
||||
}
|
||||
|
||||
public class WebAppConstants {
|
||||
public static final String WEBAPP = "webapp";
|
||||
public static final String LABEL = "label";
|
||||
public static final String IS_REMOVE_APP = "isRemoveApp";
|
||||
public static final String NAME = "name";
|
||||
}
|
||||
|
||||
public class RestConstants {
|
||||
public static final String USERNAME = "username";
|
||||
public static final String PASSWORD = "password";
|
||||
public static final String AUTHORIZATION = "Authorization";
|
||||
public static final String BEARER = "Bearer ";
|
||||
public static final String BASIC = "Basic ";
|
||||
public static final String COLON = ":";
|
||||
public static final String GRANT_TYPE = "grant_type";
|
||||
public static final String CONTENT_TYPE = "Content-Type";
|
||||
public static final String ACCESS_TOKEN = "accessToken";
|
||||
public static final String ACCEPT = "Accept";
|
||||
public static final String APPLICATION_JSON = "application/json";
|
||||
public static final String APPLICATION_FORM_URL_ENCODED = "application/x-www-form-urlencoded";
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,96 @@
|
||||
/*
|
||||
* Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
*
|
||||
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
package org.wso2.carbon.appmgt.mdm.restconnector.authorization.client;
|
||||
|
||||
import feign.Feign;
|
||||
import feign.RequestInterceptor;
|
||||
import feign.RequestTemplate;
|
||||
import feign.auth.BasicAuthRequestInterceptor;
|
||||
import feign.gson.GsonDecoder;
|
||||
import feign.gson.GsonEncoder;
|
||||
import feign.jaxrs.JAXRSContract;
|
||||
import org.wso2.carbon.appmgt.mdm.restconnector.Constants;
|
||||
import org.wso2.carbon.appmgt.mdm.restconnector.authorization.client.dto.AccessTokenInfo;
|
||||
import org.wso2.carbon.appmgt.mdm.restconnector.authorization.client.dto.ApiApplicationKey;
|
||||
import org.wso2.carbon.appmgt.mdm.restconnector.authorization.client.dto.ApiApplicationRegistrationService;
|
||||
import org.wso2.carbon.appmgt.mdm.restconnector.authorization.client.dto.ApiRegistrationProfile;
|
||||
import org.wso2.carbon.appmgt.mdm.restconnector.authorization.client.dto.TokenIssuerService;
|
||||
import org.wso2.carbon.appmgt.mdm.restconnector.config.AuthorizationConfigurationManager;
|
||||
import org.wso2.carbon.appmgt.mdm.restconnector.internal.AuthorizationDataHolder;
|
||||
|
||||
/**
|
||||
* This is a request interceptor to add oauth token header.
|
||||
*/
|
||||
public class OAuthRequestInterceptor implements RequestInterceptor {
|
||||
private AccessTokenInfo tokenInfo;
|
||||
private String refreshTimeOffset;
|
||||
private static final String API_APPLICATION_REGISTRATION_CONTEXT = "/api-application-registration";
|
||||
private static final String DEVICE_MANAGEMENT_SERVICE_TAG[] = {"device_management"};
|
||||
private static final String APPLICATION_NAME = "appm_restconnector_application";
|
||||
private static final String PASSWORD_GRANT_TYPE = "password";
|
||||
private static final String REFRESH_GRANT_TYPE = "refreshToken";
|
||||
private ApiApplicationRegistrationService apiApplicationRegistrationService;
|
||||
private TokenIssuerService tokenIssuerService;
|
||||
|
||||
/**
|
||||
* Creates an interceptor that authenticates all requests.
|
||||
*/
|
||||
public OAuthRequestInterceptor() {
|
||||
refreshTimeOffset = AuthorizationConfigurationManager.getInstance().getTokenRefreshTimeOffset();
|
||||
String username = AuthorizationConfigurationManager.getInstance().getUserName();
|
||||
String password = AuthorizationConfigurationManager.getInstance().getPassword();
|
||||
apiApplicationRegistrationService = Feign.builder().requestInterceptor(
|
||||
new BasicAuthRequestInterceptor(username, password))
|
||||
.contract(new JAXRSContract()).encoder(new GsonEncoder()).decoder(new GsonDecoder())
|
||||
.target(ApiApplicationRegistrationService.class,
|
||||
AuthorizationConfigurationManager.getInstance().getServerURL() +
|
||||
API_APPLICATION_REGISTRATION_CONTEXT);
|
||||
AuthorizationDataHolder.getInstance().setApiApplicationRegistrationService(apiApplicationRegistrationService);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void apply(RequestTemplate template) {
|
||||
if (tokenInfo == null) {
|
||||
ApiRegistrationProfile apiRegistrationProfile = new ApiRegistrationProfile();
|
||||
apiRegistrationProfile.setApplicationName(APPLICATION_NAME);
|
||||
apiRegistrationProfile.setIsAllowedToAllDomains(true);
|
||||
apiRegistrationProfile.setIsMappingAnExistingOAuthApp(false);
|
||||
apiRegistrationProfile.setTags(DEVICE_MANAGEMENT_SERVICE_TAG);
|
||||
ApiApplicationKey apiApplicationKey = apiApplicationRegistrationService.register(apiRegistrationProfile);
|
||||
String consumerKey = apiApplicationKey.getConsumerKey();
|
||||
String consumerSecret = apiApplicationKey.getConsumerSecret();
|
||||
String username = AuthorizationConfigurationManager.getInstance().getUserName();
|
||||
String password = AuthorizationConfigurationManager.getInstance().getPassword();
|
||||
tokenIssuerService = Feign.builder().requestInterceptor(
|
||||
new BasicAuthRequestInterceptor(consumerKey, consumerSecret))
|
||||
.contract(new JAXRSContract()).encoder(new GsonEncoder()).decoder(new GsonDecoder())
|
||||
.target(TokenIssuerService.class, AuthorizationConfigurationManager.getInstance().getTokenApiURL());
|
||||
tokenInfo = tokenIssuerService.getToken(PASSWORD_GRANT_TYPE, username, password);
|
||||
tokenInfo.setExpiresIn(System.currentTimeMillis() + tokenInfo.getExpiresIn());
|
||||
}
|
||||
synchronized (this) {
|
||||
if (System.currentTimeMillis() + Long.parseLong(refreshTimeOffset) > tokenInfo.getExpiresIn()) {
|
||||
tokenInfo = tokenIssuerService.getToken(REFRESH_GRANT_TYPE, tokenInfo.getRefreshToken());
|
||||
tokenInfo.setExpiresIn(System.currentTimeMillis() + tokenInfo.getExpiresIn());
|
||||
}
|
||||
}
|
||||
String headerValue = Constants.RestConstants.BEARER + tokenInfo.getAccessToken();
|
||||
template.header(Constants.RestConstants.AUTHORIZATION, headerValue);
|
||||
}
|
||||
}
|
@ -0,0 +1,60 @@
|
||||
/*
|
||||
* Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
*
|
||||
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
package org.wso2.carbon.appmgt.mdm.restconnector.authorization.client.dto;
|
||||
|
||||
/**
|
||||
* This hold access token info that returned from the api call.
|
||||
*/
|
||||
public class AccessTokenInfo {
|
||||
public String tokenType;
|
||||
public long expiresIn;
|
||||
public String refreshToken;
|
||||
public String accessToken;
|
||||
|
||||
public String getTokenType() {
|
||||
return tokenType;
|
||||
}
|
||||
|
||||
public void setTokenType(String tokenType) {
|
||||
this.tokenType = tokenType;
|
||||
}
|
||||
|
||||
public long getExpiresIn() {
|
||||
return expiresIn;
|
||||
}
|
||||
|
||||
public void setExpiresIn(long expiresIn) {
|
||||
this.expiresIn = expiresIn;
|
||||
}
|
||||
|
||||
public String getRefreshToken() {
|
||||
return refreshToken;
|
||||
}
|
||||
|
||||
public void setRefreshToken(String refreshToken) {
|
||||
this.refreshToken = refreshToken;
|
||||
}
|
||||
|
||||
public String getAccessToken() {
|
||||
return accessToken;
|
||||
}
|
||||
|
||||
public void setAccessToken(String accessToken) {
|
||||
this.accessToken = accessToken;
|
||||
}
|
||||
}
|
@ -0,0 +1,42 @@
|
||||
/*
|
||||
* Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
*
|
||||
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
package org.wso2.carbon.appmgt.mdm.restconnector.authorization.client.dto;
|
||||
|
||||
/**
|
||||
* This holds api application consumer key and secret.
|
||||
*/
|
||||
public class ApiApplicationKey {
|
||||
private String clientId;
|
||||
private String clientSecret;
|
||||
|
||||
public String getConsumerKey() {
|
||||
return this.clientId;
|
||||
}
|
||||
|
||||
public void setClientId(String consumerKey) {
|
||||
this.clientId = consumerKey;
|
||||
}
|
||||
|
||||
public String getConsumerSecret() {
|
||||
return this.clientSecret;
|
||||
}
|
||||
|
||||
public void setClientSecret(String consumerSecret) {
|
||||
this.clientSecret = consumerSecret;
|
||||
}
|
||||
}
|
@ -0,0 +1,42 @@
|
||||
/*
|
||||
* Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
*
|
||||
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
package org.wso2.carbon.appmgt.mdm.restconnector.authorization.client.dto;
|
||||
|
||||
import javax.ws.rs.Consumes;
|
||||
import javax.ws.rs.POST;
|
||||
import javax.ws.rs.Path;
|
||||
import javax.ws.rs.Produces;
|
||||
import javax.ws.rs.core.MediaType;
|
||||
|
||||
/**
|
||||
* This is the application registration service that exposed for apimApplicationRegistration.
|
||||
*/
|
||||
|
||||
@Path("/register")
|
||||
public interface ApiApplicationRegistrationService {
|
||||
|
||||
/**
|
||||
* This method is used to register api application.
|
||||
*
|
||||
* @param registrationProfile contains the necessary attributes that are needed in order to register an app
|
||||
*/
|
||||
@POST
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
@Consumes(MediaType.APPLICATION_JSON)
|
||||
ApiApplicationKey register(ApiRegistrationProfile registrationProfile);
|
||||
}
|
@ -0,0 +1,79 @@
|
||||
/*
|
||||
* Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
*
|
||||
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
package org.wso2.carbon.appmgt.mdm.restconnector.authorization.client.dto;
|
||||
|
||||
|
||||
/**
|
||||
* This class represents the data that are required to register the oauth application.
|
||||
*/
|
||||
public class ApiRegistrationProfile {
|
||||
public String applicationName;
|
||||
public String tags[];
|
||||
public boolean isAllowedToAllDomains;
|
||||
public String consumerKey;
|
||||
public String consumerSecret;
|
||||
public boolean isMappingAnExistingOAuthApp;
|
||||
|
||||
public String getApplicationName() {
|
||||
return applicationName;
|
||||
}
|
||||
|
||||
public void setApplicationName(String applicationName) {
|
||||
this.applicationName = applicationName;
|
||||
}
|
||||
|
||||
public String[] getTags() {
|
||||
return tags;
|
||||
}
|
||||
|
||||
public void setTags(String[] tags) {
|
||||
this.tags = tags;
|
||||
}
|
||||
|
||||
public boolean isAllowedToAllDomains() {
|
||||
return isAllowedToAllDomains;
|
||||
}
|
||||
|
||||
public void setIsAllowedToAllDomains(boolean isAllowedToAllDomains) {
|
||||
this.isAllowedToAllDomains = isAllowedToAllDomains;
|
||||
}
|
||||
|
||||
public boolean isMappingAnExistingOAuthApp() {
|
||||
return isMappingAnExistingOAuthApp;
|
||||
}
|
||||
|
||||
public void setIsMappingAnExistingOAuthApp(boolean isMappingAnExistingOAuthApp) {
|
||||
this.isMappingAnExistingOAuthApp = isMappingAnExistingOAuthApp;
|
||||
}
|
||||
|
||||
public String getConsumerKey() {
|
||||
return consumerKey;
|
||||
}
|
||||
|
||||
public void setConsumerKey(String consumerKey) {
|
||||
this.consumerKey = consumerKey;
|
||||
}
|
||||
|
||||
public String getConsumerSecret() {
|
||||
return consumerSecret;
|
||||
}
|
||||
|
||||
public void setConsumerSecret(String consumerSecret) {
|
||||
this.consumerSecret = consumerSecret;
|
||||
}
|
||||
}
|
@ -0,0 +1,60 @@
|
||||
/*
|
||||
* Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
*
|
||||
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
package org.wso2.carbon.appmgt.mdm.restconnector.authorization.client.dto;
|
||||
|
||||
import org.wso2.carbon.device.mgt.common.operation.mgt.Activity;
|
||||
|
||||
import javax.ws.rs.Consumes;
|
||||
import javax.ws.rs.POST;
|
||||
import javax.ws.rs.Path;
|
||||
import javax.ws.rs.Produces;
|
||||
import javax.ws.rs.core.MediaType;
|
||||
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
@Consumes(MediaType.APPLICATION_JSON)
|
||||
@Path("/admin/applications")
|
||||
|
||||
/**
|
||||
* This interface provided the definition of the application management service.
|
||||
*/
|
||||
public interface ApplicationManagementAdminService {
|
||||
|
||||
/**
|
||||
* Install application.
|
||||
*
|
||||
* @param applicationWrapper {@link ApplicationWrapper} object
|
||||
* @return {@link Activity} object
|
||||
*/
|
||||
@POST
|
||||
@Path("/install-application")
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
@Consumes(MediaType.APPLICATION_JSON)
|
||||
Activity installApplication(ApplicationWrapper applicationWrapper);
|
||||
|
||||
/**
|
||||
* Uninstall application.
|
||||
*
|
||||
* @param applicationWrapper {@link ApplicationWrapper} object
|
||||
* @return {@link Activity} object
|
||||
*/
|
||||
@POST
|
||||
@Path("/uninstall-application")
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
@Consumes(MediaType.APPLICATION_JSON)
|
||||
Activity uninstallApplication(ApplicationWrapper applicationWrapper);
|
||||
}
|
@ -0,0 +1,65 @@
|
||||
/*
|
||||
* Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
*
|
||||
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
package org.wso2.carbon.appmgt.mdm.restconnector.authorization.client.dto;
|
||||
|
||||
import org.wso2.carbon.appmgt.mobile.beans.DeviceIdentifier;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* This DTO class is used to send application details and devices details to installation/uninstallation service.
|
||||
*/
|
||||
public class ApplicationWrapper {
|
||||
private List<String> userNameList;
|
||||
private List<String> roleNameList;
|
||||
private List<DeviceIdentifier> deviceIdentifiers;
|
||||
private MobileApp application;
|
||||
|
||||
public List<String> getUserNameList() {
|
||||
return userNameList;
|
||||
}
|
||||
|
||||
public void setUserNameList(List<String> userNameList) {
|
||||
this.userNameList = userNameList;
|
||||
}
|
||||
|
||||
public List<DeviceIdentifier> getDeviceIdentifiers() {
|
||||
return deviceIdentifiers;
|
||||
}
|
||||
|
||||
public void setDeviceIdentifiers(
|
||||
List<DeviceIdentifier> deviceIdentifiers) {
|
||||
this.deviceIdentifiers = deviceIdentifiers;
|
||||
}
|
||||
|
||||
public List<String> getRoleNameList() {
|
||||
return roleNameList;
|
||||
}
|
||||
|
||||
public void setRoleNameList(List<String> roleNameList) {
|
||||
this.roleNameList = roleNameList;
|
||||
}
|
||||
|
||||
public MobileApp getApplication() {
|
||||
return application;
|
||||
}
|
||||
|
||||
public void setApplication(MobileApp application) {
|
||||
this.application = application;
|
||||
}
|
||||
}
|
@ -0,0 +1,39 @@
|
||||
/*
|
||||
* Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
*
|
||||
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
package org.wso2.carbon.appmgt.mdm.restconnector.authorization.client.dto;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
|
||||
/**
|
||||
* Number of Resources returned.
|
||||
*/
|
||||
public class BasePaginatedResult {
|
||||
@ApiModelProperty(value = "Number of total resources.", example = "2")
|
||||
@JsonProperty("count")
|
||||
private int count;
|
||||
|
||||
public int getCount() {
|
||||
return count;
|
||||
}
|
||||
|
||||
public void setCount(int count) {
|
||||
this.count = count;
|
||||
}
|
||||
}
|
@ -0,0 +1,151 @@
|
||||
/*
|
||||
* Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
*
|
||||
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
package org.wso2.carbon.appmgt.mdm.restconnector.authorization.client.dto;
|
||||
|
||||
import org.wso2.carbon.device.mgt.common.Feature;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* The DTO class of device.
|
||||
*/
|
||||
public class Device implements Serializable {
|
||||
private static final long serialVersionUID = 1998101711L;
|
||||
private int id;
|
||||
private String name;
|
||||
private String type;
|
||||
private String description;
|
||||
private String deviceIdentifier;
|
||||
private EnrolmentInfo enrolmentInfo;
|
||||
|
||||
public Device() {
|
||||
}
|
||||
|
||||
public Device(String name, String type, String description, String deviceId, EnrolmentInfo enrolmentInfo,
|
||||
List<Feature> features, List<Property> properties) {
|
||||
this.name = name;
|
||||
this.type = type;
|
||||
this.description = description;
|
||||
this.deviceIdentifier = deviceId;
|
||||
this.enrolmentInfo = enrolmentInfo;
|
||||
}
|
||||
|
||||
public int getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(int id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public void setType(String type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public String getDescription() {
|
||||
return description;
|
||||
}
|
||||
|
||||
public void setDescription(String description) {
|
||||
this.description = description;
|
||||
}
|
||||
|
||||
public String getDeviceIdentifier() {
|
||||
return deviceIdentifier;
|
||||
}
|
||||
|
||||
public void setDeviceIdentifier(String deviceIdentifier) {
|
||||
this.deviceIdentifier = deviceIdentifier;
|
||||
}
|
||||
|
||||
public EnrolmentInfo getEnrolmentInfo() {
|
||||
return enrolmentInfo;
|
||||
}
|
||||
|
||||
public void setEnrolmentInfo(EnrolmentInfo enrolmentInfo) {
|
||||
this.enrolmentInfo = enrolmentInfo;
|
||||
}
|
||||
|
||||
public static class Property {
|
||||
|
||||
private String name;
|
||||
private String value;
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
public void setValue(String value) {
|
||||
this.value = value;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "device [" +
|
||||
"name=" + name + ";" +
|
||||
"type=" + type + ";" +
|
||||
"description=" + description + ";" +
|
||||
"identifier=" + deviceIdentifier + ";" +
|
||||
"EnrolmentInfo[" +
|
||||
"owner=" + enrolmentInfo.getOwner() + ";" +
|
||||
"ownership=" + enrolmentInfo.getOwnership() + ";" +
|
||||
"status=" + enrolmentInfo.getStatus() + ";" +
|
||||
"]" +
|
||||
"]";
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o)
|
||||
return true;
|
||||
if (!(o instanceof org.wso2.carbon.device.mgt.common.Device))
|
||||
return false;
|
||||
|
||||
org.wso2.carbon.device.mgt.common.Device device = (org.wso2.carbon.device.mgt.common.Device) o;
|
||||
|
||||
return getDeviceIdentifier().equals(device.getDeviceIdentifier());
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return getDeviceIdentifier().hashCode();
|
||||
}
|
||||
}
|
@ -0,0 +1,49 @@
|
||||
/*
|
||||
* Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
*
|
||||
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
package org.wso2.carbon.appmgt.mdm.restconnector.authorization.client.dto;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class DeviceList extends BasePaginatedResult {
|
||||
private List<Device> devices = new ArrayList<>();
|
||||
|
||||
@ApiModelProperty(value = "List of devices returned")
|
||||
@JsonProperty("devices")
|
||||
public List<Device> getList() {
|
||||
return devices;
|
||||
}
|
||||
|
||||
public void setList(List<Device> devices) {
|
||||
this.devices = devices;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append("{\n");
|
||||
|
||||
sb.append(" count: ").append(getCount()).append(",\n");
|
||||
sb.append(" devices: [").append(devices).append("\n");
|
||||
sb.append("]}\n");
|
||||
return sb.toString();
|
||||
}
|
||||
}
|
@ -0,0 +1,47 @@
|
||||
/*
|
||||
* Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
*
|
||||
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
package org.wso2.carbon.appmgt.mdm.restconnector.authorization.client.dto;
|
||||
|
||||
|
||||
import javax.ws.rs.Consumes;
|
||||
import javax.ws.rs.GET;
|
||||
import javax.ws.rs.Path;
|
||||
import javax.ws.rs.Produces;
|
||||
import javax.ws.rs.QueryParam;
|
||||
import javax.ws.rs.core.MediaType;
|
||||
|
||||
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
@Consumes(MediaType.APPLICATION_JSON)
|
||||
@Path("/devices")
|
||||
|
||||
/**
|
||||
* This interface provided the definition of the device management service.
|
||||
*/
|
||||
public interface DeviceManagementAdminService {
|
||||
/**
|
||||
* Get devices.
|
||||
*
|
||||
* @param user Username
|
||||
* @param role Role of the user
|
||||
* @return {@link DeviceList} object
|
||||
*/
|
||||
@GET
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
DeviceList getDevices(@QueryParam("user") String user, @QueryParam("role") String role);
|
||||
}
|
@ -0,0 +1,118 @@
|
||||
/*
|
||||
* Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
*
|
||||
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
package org.wso2.carbon.appmgt.mdm.restconnector.authorization.client.dto;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* The DTO class for enrollment information.
|
||||
*/
|
||||
public class EnrolmentInfo implements Serializable {
|
||||
private static final long serialVersionUID = 1998101712L;
|
||||
|
||||
public enum Status {
|
||||
CREATED, ACTIVE, INACTIVE, UNREACHABLE, UNCLAIMED, SUSPENDED, BLOCKED, REMOVED, DISENROLLMENT_REQUESTED
|
||||
}
|
||||
|
||||
public enum OwnerShip {
|
||||
BYOD, COPE
|
||||
}
|
||||
|
||||
private int id;
|
||||
private OwnerShip ownership;
|
||||
private Status status;
|
||||
private String owner;
|
||||
private Long dateOfEnrolment;
|
||||
private Long dateOfLastUpdate;
|
||||
|
||||
public EnrolmentInfo() {
|
||||
}
|
||||
|
||||
public EnrolmentInfo(String owner, OwnerShip ownership, Status status) {
|
||||
this.owner = owner;
|
||||
this.ownership = ownership;
|
||||
this.status = status;
|
||||
}
|
||||
|
||||
public Long getDateOfEnrolment() {
|
||||
return dateOfEnrolment;
|
||||
}
|
||||
|
||||
public void setDateOfEnrolment(Long dateOfEnrolment) {
|
||||
this.dateOfEnrolment = dateOfEnrolment;
|
||||
}
|
||||
|
||||
public Long getDateOfLastUpdate() {
|
||||
return dateOfLastUpdate;
|
||||
}
|
||||
|
||||
public void setDateOfLastUpdate(Long dateOfLastUpdate) {
|
||||
this.dateOfLastUpdate = dateOfLastUpdate;
|
||||
}
|
||||
|
||||
public int getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(int id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
|
||||
public OwnerShip getOwnership() {
|
||||
return ownership;
|
||||
}
|
||||
|
||||
public void setOwnership(OwnerShip ownership) {
|
||||
this.ownership = ownership;
|
||||
}
|
||||
|
||||
public Status getStatus() {
|
||||
return status;
|
||||
}
|
||||
|
||||
public void setStatus(Status status) {
|
||||
this.status = status;
|
||||
}
|
||||
|
||||
public String getOwner() {
|
||||
return owner;
|
||||
}
|
||||
|
||||
public void setOwner(String owner) {
|
||||
this.owner = owner;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (obj instanceof EnrolmentInfo) {
|
||||
EnrolmentInfo tempInfo = (EnrolmentInfo) obj;
|
||||
if (this.owner != null && this.ownership != null) {
|
||||
if (this.owner.equals(tempInfo.getOwner()) && this.ownership.equals(tempInfo.getOwnership())) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return owner.hashCode() ^ ownership.hashCode();
|
||||
}
|
||||
}
|
@ -0,0 +1,126 @@
|
||||
/*
|
||||
* Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
*
|
||||
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
package org.wso2.carbon.appmgt.mdm.restconnector.authorization.client.dto;
|
||||
|
||||
import java.util.Properties;
|
||||
|
||||
/**
|
||||
* This class represents the generic mobile Application information which is used by AppM.
|
||||
*/
|
||||
public class MobileApp {
|
||||
|
||||
private String id;
|
||||
private String name;
|
||||
private MobileAppTypes type;
|
||||
private String platform;
|
||||
private String version;
|
||||
private String identifier;
|
||||
private String iconImage;
|
||||
private String packageName;
|
||||
private String appIdentifier;
|
||||
private String location;
|
||||
private Properties properties;
|
||||
|
||||
public MobileAppTypes getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public void setType(MobileAppTypes type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(String id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getPlatform() {
|
||||
return platform;
|
||||
}
|
||||
|
||||
public void setPlatform(String platform) {
|
||||
this.platform = platform;
|
||||
}
|
||||
|
||||
public String getVersion() {
|
||||
return version;
|
||||
}
|
||||
|
||||
public void setVersion(String version) {
|
||||
this.version = version;
|
||||
}
|
||||
|
||||
public String getIdentifier() {
|
||||
return identifier;
|
||||
}
|
||||
|
||||
public void setIdentifier(String identifier) {
|
||||
this.identifier = identifier;
|
||||
}
|
||||
|
||||
public String getIconImage() {
|
||||
return iconImage;
|
||||
}
|
||||
|
||||
public void setIconImage(String iconImage) {
|
||||
this.iconImage = iconImage;
|
||||
}
|
||||
|
||||
public String getPackageName() {
|
||||
return packageName;
|
||||
}
|
||||
|
||||
public void setPackageName(String packageName) {
|
||||
this.packageName = packageName;
|
||||
}
|
||||
|
||||
public String getAppIdentifier() {
|
||||
return appIdentifier;
|
||||
}
|
||||
|
||||
public void setAppIdentifier(String appIdentifier) {
|
||||
this.appIdentifier = appIdentifier;
|
||||
}
|
||||
|
||||
public String getLocation() {
|
||||
return location;
|
||||
}
|
||||
|
||||
public void setLocation(String location) {
|
||||
this.location = location;
|
||||
}
|
||||
|
||||
public Properties getProperties() {
|
||||
return properties;
|
||||
}
|
||||
|
||||
public void setProperties(Properties properties) {
|
||||
this.properties = properties;
|
||||
}
|
||||
}
|
@ -0,0 +1,25 @@
|
||||
/*
|
||||
* Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
*
|
||||
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
package org.wso2.carbon.appmgt.mdm.restconnector.authorization.client.dto;
|
||||
|
||||
/**
|
||||
* This enum contains the mobile app types.
|
||||
*/
|
||||
public enum MobileAppTypes {
|
||||
ENTERPRISE, WEBAPP, PUBLIC
|
||||
}
|
@ -0,0 +1,56 @@
|
||||
/*
|
||||
* Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
*
|
||||
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
package org.wso2.carbon.appmgt.mdm.restconnector.authorization.client.dto;
|
||||
|
||||
import javax.ws.rs.Consumes;
|
||||
import javax.ws.rs.POST;
|
||||
import javax.ws.rs.Path;
|
||||
import javax.ws.rs.Produces;
|
||||
import javax.ws.rs.QueryParam;
|
||||
import javax.ws.rs.core.MediaType;
|
||||
|
||||
/**
|
||||
* This hold the api definition that is used as a contract with netflix feign.
|
||||
*/
|
||||
@Path("/token")
|
||||
public interface TokenIssuerService {
|
||||
|
||||
/**
|
||||
* Get a token for password grant type.
|
||||
* @param grant Token grant type
|
||||
* @param username Username
|
||||
* @param password Password
|
||||
* @return {@link AccessTokenInfo} object
|
||||
*/
|
||||
@POST
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
|
||||
AccessTokenInfo getToken(@QueryParam("grant_type") String grant, @QueryParam("username") String username,
|
||||
@QueryParam("password") String password);
|
||||
|
||||
/**
|
||||
* Get a token for refresh grant type.
|
||||
* @param grant Token grant type
|
||||
* @param refreshToken Refresh token
|
||||
* @return {@link AccessTokenInfo} object
|
||||
*/
|
||||
@POST
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
|
||||
AccessTokenInfo getToken(@QueryParam("grant_type") String grant, @QueryParam("refreshToken") String refreshToken);
|
||||
}
|
@ -0,0 +1,108 @@
|
||||
/*
|
||||
* Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
*
|
||||
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
package org.wso2.carbon.appmgt.mdm.restconnector.config;
|
||||
|
||||
import org.wso2.carbon.appmgt.mdm.restconnector.Constants;
|
||||
import org.wso2.carbon.appmgt.mobile.utils.MobileConfigurations;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
public class AuthorizationConfigurationManager {
|
||||
|
||||
private String tokenApiURL;
|
||||
private String imageURL;
|
||||
private String serverURL;
|
||||
private String userName;
|
||||
private String password;
|
||||
private String tokenRefreshTimeOffset;
|
||||
|
||||
private static AuthorizationConfigurationManager authorizationConfigurationManager = new
|
||||
AuthorizationConfigurationManager();
|
||||
|
||||
private AuthorizationConfigurationManager() {
|
||||
MobileConfigurations configurations = MobileConfigurations.getInstance();
|
||||
HashMap<String, String> configProperties = configurations.getActiveMDMProperties();
|
||||
setTokenApiURL(configProperties.get(Constants.PROPERTY_TOKEN_API_URL));
|
||||
setImageURL(configProperties.get(Constants.PROPERTY_IMAGE_URL));
|
||||
setServerURL(configProperties.get(Constants.PROPERTY_SERVER_URL));
|
||||
setUserName(configProperties.get(Constants.PROPERTY_USERNAME));
|
||||
setPassword(configProperties.get(Constants.PROPERTY_PASSWORD));
|
||||
setTokenRefreshTimeOffset(configProperties.get(Constants.PROPERTY_TOKEN_REFRESH_TIME_OFFSET));
|
||||
}
|
||||
|
||||
public static AuthorizationConfigurationManager getInstance() {
|
||||
return authorizationConfigurationManager;
|
||||
}
|
||||
|
||||
public String getTokenApiURL() {
|
||||
return tokenApiURL;
|
||||
}
|
||||
|
||||
public void setTokenApiURL(String tokenApiURL) {
|
||||
this.tokenApiURL = tokenApiURL;
|
||||
}
|
||||
|
||||
public String getImageURL() {
|
||||
return imageURL;
|
||||
}
|
||||
|
||||
public void setImageURL(String imageURL) {
|
||||
this.imageURL = imageURL;
|
||||
}
|
||||
|
||||
public String getUserName() {
|
||||
return userName;
|
||||
}
|
||||
|
||||
public void setUserName(String userName) {
|
||||
this.userName = userName;
|
||||
}
|
||||
|
||||
public String getServerURL() {
|
||||
return serverURL;
|
||||
}
|
||||
|
||||
public void setServerURL(String serverURL) {
|
||||
this.serverURL = serverURL;
|
||||
}
|
||||
|
||||
public String getPassword() {
|
||||
return password;
|
||||
}
|
||||
|
||||
public void setPassword(String password) {
|
||||
this.password = password;
|
||||
}
|
||||
|
||||
public static AuthorizationConfigurationManager getAuthorizationConfigurationManager() {
|
||||
return authorizationConfigurationManager;
|
||||
}
|
||||
|
||||
public static void setAuthorizationConfigurationManager(
|
||||
AuthorizationConfigurationManager authorizationConfigurationManager) {
|
||||
AuthorizationConfigurationManager.authorizationConfigurationManager = authorizationConfigurationManager;
|
||||
}
|
||||
|
||||
public String getTokenRefreshTimeOffset() {
|
||||
return tokenRefreshTimeOffset;
|
||||
}
|
||||
|
||||
public void setTokenRefreshTimeOffset(String tokenRefreshTimeOffset) {
|
||||
this.tokenRefreshTimeOffset = tokenRefreshTimeOffset;
|
||||
}
|
||||
}
|
@ -0,0 +1,43 @@
|
||||
/*
|
||||
* Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
*
|
||||
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package org.wso2.carbon.appmgt.mdm.restconnector.internal;
|
||||
|
||||
import org.wso2.carbon.appmgt.mdm.restconnector.authorization.client.dto.ApiApplicationRegistrationService;
|
||||
|
||||
public class AuthorizationDataHolder {
|
||||
private static AuthorizationDataHolder thisInstance = new AuthorizationDataHolder();
|
||||
|
||||
private ApiApplicationRegistrationService apiApplicationRegistrationService;
|
||||
|
||||
private AuthorizationDataHolder() {
|
||||
}
|
||||
|
||||
public static AuthorizationDataHolder getInstance() {
|
||||
return thisInstance;
|
||||
}
|
||||
|
||||
public ApiApplicationRegistrationService getApiApplicationRegistrationService() {
|
||||
return apiApplicationRegistrationService;
|
||||
}
|
||||
|
||||
public void setApiApplicationRegistrationService(
|
||||
ApiApplicationRegistrationService apiApplicationRegistrationService) {
|
||||
this.apiApplicationRegistrationService = apiApplicationRegistrationService;
|
||||
}
|
||||
}
|
@ -0,0 +1,61 @@
|
||||
/*
|
||||
*
|
||||
* Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
*
|
||||
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
* /
|
||||
*/
|
||||
|
||||
package org.wso2.carbon.appmgt.mdm.restconnector.internal;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.osgi.framework.BundleContext;
|
||||
import org.osgi.framework.ServiceRegistration;
|
||||
import org.osgi.service.component.ComponentContext;
|
||||
import org.wso2.carbon.appmgt.mdm.restconnector.ApplicationOperationsImpl;
|
||||
import org.wso2.carbon.appmgt.mobile.interfaces.ApplicationOperations;
|
||||
|
||||
/**
|
||||
* @scr.component name="org.wso2.carbon.appmgt.mdm.restconnector" immediate="true"
|
||||
*/
|
||||
public class MDMComponent {
|
||||
private static final Log log = LogFactory.getLog(MDMComponent.class);
|
||||
private ServiceRegistration mdmServiceRegistration;
|
||||
|
||||
protected void activate(ComponentContext context) {
|
||||
BundleContext bundleContext = context.getBundleContext();
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("WSO2MDM MDM Component activated");
|
||||
}
|
||||
try {
|
||||
mdmServiceRegistration = bundleContext.registerService(ApplicationOperations.class.getName(), new
|
||||
ApplicationOperationsImpl(), null);
|
||||
} catch (Throwable e) {
|
||||
log.error("Failed to activate org.wso2.carbon.appmgt.mdm.restconnector.internal." +
|
||||
"MDMComponent : " + e);
|
||||
}
|
||||
}
|
||||
|
||||
protected void deactivate(ComponentContext context) {
|
||||
if (mdmServiceRegistration != null) {
|
||||
mdmServiceRegistration.unregister();
|
||||
mdmServiceRegistration = null;
|
||||
}
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("WSO2MDM MDM Component deactivated");
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,97 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
~ Copyright (c) 2017, 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.
|
||||
-->
|
||||
<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">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<parent>
|
||||
<groupId>org.wso2.carbon.devicemgt-plugins</groupId>
|
||||
<artifactId>extensions-feature</artifactId>
|
||||
<version>3.0.9-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
<artifactId>org.wso2.carbon.appmgt.mdm.restconnector.feature</artifactId>
|
||||
<packaging>pom</packaging>
|
||||
<version>3.0.9-SNAPSHOT</version>
|
||||
<name>WSO2 Carbon - App management MDM REST Connector</name>
|
||||
<url>http://wso2.org</url>
|
||||
<description>This feature contains the core bundles required for APP management MDM REST connection
|
||||
</description>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.wso2.carbon.devicemgt-plugins</groupId>
|
||||
<artifactId>org.wso2.carbon.appmgt.mdm.restconnector</artifactId>
|
||||
<version>3.0.9-SNAPSHOT</version>
|
||||
<exclusions>
|
||||
<exclusion>
|
||||
<groupId>org.apache.ws.commons.axiom</groupId>
|
||||
<artifactId>axiom-api</artifactId>
|
||||
</exclusion>
|
||||
<exclusion>
|
||||
<groupId>org.apache.ws.commons.axiom</groupId>
|
||||
<artifactId>axiom-impl</artifactId>
|
||||
</exclusion>
|
||||
</exclusions>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.googlecode.plist</groupId>
|
||||
<artifactId>dd-plist</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.wso2.maven</groupId>
|
||||
<artifactId>carbon-p2-plugin</artifactId>
|
||||
<version>${carbon.p2.plugin.version}</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>4-p2-feature-generation</id>
|
||||
<phase>package</phase>
|
||||
<goals>
|
||||
<goal>p2-feature-gen</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<id>org.wso2.carbon.appmgt.mdm.restconnector</id>
|
||||
<propertiesFile>../etc/feature.properties</propertiesFile>
|
||||
<adviceFile>
|
||||
<properties>
|
||||
<propertyDef>org.wso2.carbon.p2.category.type:server
|
||||
</propertyDef>
|
||||
<propertyDef>org.eclipse.equinox.p2.type.group:false
|
||||
</propertyDef>
|
||||
</properties>
|
||||
</adviceFile>
|
||||
<bundles>
|
||||
<bundleDef>
|
||||
org.wso2.carbon.devicemgt-plugins:org.wso2.carbon.appmgt.mdm.restconnector:${carbon.devicemgt.plugins.version}
|
||||
</bundleDef>
|
||||
<bundleDef>com.googlecode.plist:dd-plist:${googlecode.plist.version}</bundleDef>
|
||||
</bundles>
|
||||
<importFeatures>
|
||||
</importFeatures>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
</project>
|
Loading…
Reference in new issue