forked from community/device-mgt-plugins
Remove wso2 appm connector and add entgra appm feature See merge request entgra/carbon-device-mgt-plugins!54revert-dabc3590
commit
834e18d893
@ -1,175 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<!--
|
|
||||||
~ Copyright (c) 2016, 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>4.2.7-SNAPSHOT</version>
|
|
||||||
<relativePath>../pom.xml</relativePath>
|
|
||||||
</parent>
|
|
||||||
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
|
||||||
<artifactId>org.wso2.carbon.appmgt.mdm.osgiconnector</artifactId>
|
|
||||||
<packaging>bundle</packaging>
|
|
||||||
<name>WSO2 Carbon - App Manager WSO2 MDM OSGI Connector Component</name>
|
|
||||||
<url>http://maven.apache.org</url>
|
|
||||||
|
|
||||||
<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.osgiconnector.internal</Private-Package>
|
|
||||||
<Import-Package>
|
|
||||||
org.wso2.carbon.device.mgt.core.*,
|
|
||||||
org.wso2.carbon.appmgt.mobile.utils.*,
|
|
||||||
org.wso2.carbon.appmgt.mobile.mdm.*,
|
|
||||||
org.wso2.carbon.appmgt.mobile.interfaces.*,
|
|
||||||
*;resolution:=optional
|
|
||||||
</Import-Package>
|
|
||||||
<Export-Package>
|
|
||||||
!org.wso2.carbon.appmgt.mdm.osgiconnector.internal,
|
|
||||||
org.wso2.carbon.appmgt.mdm.osgiconnector.*
|
|
||||||
</Export-Package>
|
|
||||||
</instructions>
|
|
||||||
</configuration>
|
|
||||||
</plugin>
|
|
||||||
<plugin>
|
|
||||||
<groupId>org.jacoco</groupId>
|
|
||||||
<artifactId>jacoco-maven-plugin</artifactId>
|
|
||||||
<configuration>
|
|
||||||
<destFile>${basedir}/target/coverage-reports/jacoco-unit.exec</destFile>
|
|
||||||
</configuration>
|
|
||||||
<executions>
|
|
||||||
<execution>
|
|
||||||
<id>jacoco-initialize</id>
|
|
||||||
<goals>
|
|
||||||
<goal>prepare-agent</goal>
|
|
||||||
</goals>
|
|
||||||
</execution>
|
|
||||||
<execution>
|
|
||||||
<id>jacoco-site</id>
|
|
||||||
<phase>test</phase>
|
|
||||||
<goals>
|
|
||||||
<goal>report</goal>
|
|
||||||
</goals>
|
|
||||||
<configuration>
|
|
||||||
<dataFile>${basedir}/target/coverage-reports/jacoco-unit.exec</dataFile>
|
|
||||||
<outputDirectory>${basedir}/target/coverage-reports/site</outputDirectory>
|
|
||||||
</configuration>
|
|
||||||
</execution>
|
|
||||||
</executions>
|
|
||||||
</plugin>
|
|
||||||
</plugins>
|
|
||||||
</build>
|
|
||||||
<dependencies>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.wso2.carbon.appmgt</groupId>
|
|
||||||
<artifactId>org.wso2.carbon.appmgt.mobile</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>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
|
||||||
<artifactId>org.wso2.carbon.device.mgt.core</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>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
|
||||||
<artifactId>org.wso2.carbon.policy.mgt.core</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>
|
|
||||||
<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>
|
|
||||||
<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.apache.felix</groupId>
|
|
||||||
<artifactId>org.apache.felix.scr</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>com.google.code.gson</groupId>
|
|
||||||
<artifactId>gson</artifactId>
|
|
||||||
</dependency>
|
|
||||||
</dependencies>
|
|
||||||
|
|
||||||
</project>
|
|
@ -1,458 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 2016, 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.appmgt.mdm.osgiconnector;
|
|
||||||
|
|
||||||
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.impl.service.ServiceReferenceHolder;
|
|
||||||
import org.wso2.carbon.appmgt.mdm.osgiconnector.mdmmgt.beans.MobileApp;
|
|
||||||
import org.wso2.carbon.appmgt.mdm.osgiconnector.mdmmgt.beans.MobileAppTypes;
|
|
||||||
import org.wso2.carbon.appmgt.mdm.osgiconnector.mdmmgt.common.DeviceApplicationException;
|
|
||||||
import org.wso2.carbon.appmgt.mdm.osgiconnector.mdmmgt.util.AndroidApplicationOperationUtil;
|
|
||||||
import org.wso2.carbon.appmgt.mdm.osgiconnector.mdmmgt.util.IOSApplicationOperationUtil;
|
|
||||||
import org.wso2.carbon.appmgt.mdm.osgiconnector.mdmmgt.util.MDMAppConstants;
|
|
||||||
import org.wso2.carbon.appmgt.mdm.osgiconnector.mdmmgt.util.MDMServiceAPIUtils;
|
|
||||||
import org.wso2.carbon.appmgt.mobile.beans.ApplicationOperationAction;
|
|
||||||
import org.wso2.carbon.appmgt.mobile.beans.ApplicationOperationDevice;
|
|
||||||
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.store.Generic;
|
|
||||||
import org.wso2.carbon.appmgt.mobile.utils.MobileApplicationException;
|
|
||||||
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
|
|
||||||
import org.wso2.carbon.device.mgt.common.Platform;
|
|
||||||
import org.wso2.carbon.device.mgt.common.app.mgt.ApplicationManagementException;
|
|
||||||
import org.wso2.carbon.device.mgt.common.authorization.DeviceAccessAuthorizationException;
|
|
||||||
import org.wso2.carbon.device.mgt.common.authorization.DeviceAccessAuthorizationService;
|
|
||||||
import org.wso2.carbon.device.mgt.common.exceptions.DeviceManagementException;
|
|
||||||
import org.wso2.carbon.device.mgt.common.operation.mgt.Activity;
|
|
||||||
import org.wso2.carbon.device.mgt.common.operation.mgt.Operation;
|
|
||||||
import org.wso2.carbon.appmgt.mobile.utils.User;
|
|
||||||
|
|
||||||
import org.wso2.carbon.context.PrivilegedCarbonContext;
|
|
||||||
import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService;
|
|
||||||
import org.wso2.carbon.registry.api.Resource;
|
|
||||||
import org.wso2.carbon.registry.core.exceptions.RegistryException;
|
|
||||||
import org.wso2.carbon.registry.core.session.UserRegistry;
|
|
||||||
import org.wso2.carbon.user.api.UserStoreException;
|
|
||||||
import org.wso2.carbon.user.api.UserStoreManager;
|
|
||||||
import org.wso2.carbon.user.core.service.RealmService;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Properties;
|
|
||||||
|
|
||||||
public class ApplicationOperationsImpl implements ApplicationOperations {
|
|
||||||
private static final Log log = LogFactory.getLog(ApplicationOperationsImpl.class);
|
|
||||||
private static final String MEDIA_TYPE_XML = "application/xml";
|
|
||||||
private static final String INSTALL = "install";
|
|
||||||
private static final String UNINSTALL = "uninstall";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param applicationOperationAction holds the information needs to perform an action on mdm.
|
|
||||||
* @throws MobileApplicationException If error occurred while performing the action.
|
|
||||||
*/
|
|
||||||
public String performAction(ApplicationOperationAction applicationOperationAction)
|
|
||||||
throws MobileApplicationException {
|
|
||||||
if (log.isDebugEnabled()) {
|
|
||||||
log.debug(applicationOperationAction.getAction() + " action is triggered for " +
|
|
||||||
applicationOperationAction.getType() + ".");
|
|
||||||
}
|
|
||||||
Operation operation = null;
|
|
||||||
List<DeviceIdentifier> deviceIdentifiers = new ArrayList<>();
|
|
||||||
List<org.wso2.carbon.device.mgt.common.Device> deviceList;
|
|
||||||
if (MDMAppConstants.USER.equals(applicationOperationAction.getType())) {
|
|
||||||
String userName = null;
|
|
||||||
try {
|
|
||||||
for (String param : applicationOperationAction.getParams()) {
|
|
||||||
userName = param;
|
|
||||||
deviceList = MDMServiceAPIUtils
|
|
||||||
.getDeviceManagementService(applicationOperationAction.getTenantId()).
|
|
||||||
getDevicesOfUser(userName);
|
|
||||||
for (org.wso2.carbon.device.mgt.common.Device device : deviceList) {
|
|
||||||
if (MDMAppConstants.WEBAPP.equals(applicationOperationAction.getApp().getPlatform()) ||
|
|
||||||
applicationOperationAction.getApp().getPlatform().equalsIgnoreCase(device.getType())) {
|
|
||||||
if (MDMAppConstants.ACTIVE.equalsIgnoreCase(device.getEnrolmentInfo().
|
|
||||||
getStatus().toString())) {
|
|
||||||
deviceIdentifiers.add(getDeviceIdentifierByDevice(device));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch (DeviceManagementException devEx) {
|
|
||||||
String errorMsg = "Error occurred fetch device for user " + userName + " at app installation";
|
|
||||||
logError(errorMsg, devEx);
|
|
||||||
throw new MobileApplicationException(errorMsg, devEx);
|
|
||||||
}
|
|
||||||
} else if (MDMAppConstants.ROLE.equals(applicationOperationAction.getType())) {
|
|
||||||
String userRole = null;
|
|
||||||
try {
|
|
||||||
for (String param : applicationOperationAction.getParams()) {
|
|
||||||
userRole = param;
|
|
||||||
deviceList = MDMServiceAPIUtils
|
|
||||||
.getDeviceManagementService(applicationOperationAction.getTenantId()).
|
|
||||||
getAllDevicesOfRole(userRole);
|
|
||||||
for (org.wso2.carbon.device.mgt.common.Device device : deviceList) {
|
|
||||||
if (MDMAppConstants.ACTIVE.equalsIgnoreCase(device.getEnrolmentInfo().getStatus().toString())) {
|
|
||||||
deviceIdentifiers.add(getDeviceIdentifierByDevice(device));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch (DeviceManagementException devMgtEx) {
|
|
||||||
String errorMsg = "Error occurred fetch device for user role " + userRole + " at app installation";
|
|
||||||
logError(errorMsg, devMgtEx);
|
|
||||||
throw new MobileApplicationException(errorMsg, devMgtEx);
|
|
||||||
}
|
|
||||||
} else if (MDMAppConstants.DEVICE.equals(applicationOperationAction.getType())) {
|
|
||||||
DeviceIdentifier deviceIdentifier;
|
|
||||||
for (String param : applicationOperationAction.getParams()) {
|
|
||||||
deviceIdentifier = new DeviceIdentifier();
|
|
||||||
if (isValidJSON(param)) {
|
|
||||||
JSONParser parser = new JSONParser();
|
|
||||||
try {
|
|
||||||
JSONObject parsedObj = (JSONObject) parser.parse(param);
|
|
||||||
deviceIdentifier.setId((String) parsedObj.get(MDMAppConstants.ID));
|
|
||||||
deviceIdentifier.setType((String) parsedObj.get(MDMAppConstants.TYPE));
|
|
||||||
deviceIdentifiers.add(deviceIdentifier);
|
|
||||||
} catch (ParseException e) {
|
|
||||||
logError("Device Identifier is not valid json object.", e);
|
|
||||||
throw new MobileApplicationException(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
throw new IllegalStateException("invalid type is received from app store.");
|
|
||||||
}
|
|
||||||
App app = applicationOperationAction.getApp();
|
|
||||||
MobileApp mobileApp = new MobileApp();
|
|
||||||
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 properties = new Properties();
|
|
||||||
|
|
||||||
if (MDMAppConstants.IOS.equals(app.getPlatform())) {
|
|
||||||
if (MDMAppConstants.ENTERPRISE.equals(app.getType())) {
|
|
||||||
properties.put(MDMAppConstants.IOSConstants.IS_REMOVE_APP, true);
|
|
||||||
properties.put(MDMAppConstants.IOSConstants.IS_PREVENT_BACKUP, true);
|
|
||||||
} else if (MDMAppConstants.IOSConstants.PUBLIC.equals(app.getType())) {
|
|
||||||
properties.put(MDMAppConstants.IOSConstants.I_TUNES_ID, app.getIdentifier());
|
|
||||||
properties.put(MDMAppConstants.IOSConstants.IS_REMOVE_APP, true);
|
|
||||||
properties.put(MDMAppConstants.IOSConstants.IS_PREVENT_BACKUP, true);
|
|
||||||
} else if (MDMAppConstants.WEBAPP.equals(app.getType())) {
|
|
||||||
properties.put(MDMAppConstants.IOSConstants.LABEL, app.getName());
|
|
||||||
properties.put(MDMAppConstants.IOSConstants.IS_REMOVE_APP, true);
|
|
||||||
}
|
|
||||||
} else if (MDMAppConstants.WEBAPP.equals(app.getPlatform())) {
|
|
||||||
properties.put(MDMAppConstants.IOSConstants.LABEL, app.getName());
|
|
||||||
properties.put(MDMAppConstants.IOSConstants.IS_REMOVE_APP, true);
|
|
||||||
}
|
|
||||||
mobileApp.setProperties(properties);
|
|
||||||
Activity activity = null;
|
|
||||||
try {
|
|
||||||
if (deviceIdentifiers.size() > 0) {
|
|
||||||
if (deviceIdentifiers.get(0).getType().equalsIgnoreCase(Platform.ANDROID.toString())) {
|
|
||||||
if (MDMAppConstants.INSTALL.equals(applicationOperationAction.getAction())) {
|
|
||||||
operation = AndroidApplicationOperationUtil
|
|
||||||
.createInstallAppOperation(mobileApp, applicationOperationAction.getSchedule());
|
|
||||||
} else if (MDMAppConstants.UPDATE.equals(applicationOperationAction.getAction())) {
|
|
||||||
operation = AndroidApplicationOperationUtil
|
|
||||||
.createUpdateAppOperation(mobileApp, applicationOperationAction.getSchedule());
|
|
||||||
} else {
|
|
||||||
operation = AndroidApplicationOperationUtil
|
|
||||||
.createAppUninstallOperation(mobileApp, applicationOperationAction.getSchedule());
|
|
||||||
}
|
|
||||||
} else if (deviceIdentifiers.get(0).getType().equalsIgnoreCase(Platform.IOS.toString())) {
|
|
||||||
if (MDMAppConstants.INSTALL.equals(applicationOperationAction.getAction())) {
|
|
||||||
operation =
|
|
||||||
IOSApplicationOperationUtil.createInstallAppOperation(mobileApp);
|
|
||||||
} else {
|
|
||||||
if (MDMAppConstants.WEBAPP.equals(app.getPlatform())) {
|
|
||||||
operation = IOSApplicationOperationUtil.createWebClipUninstallOperation(mobileApp);
|
|
||||||
} else {
|
|
||||||
operation = IOSApplicationOperationUtil.createAppUninstallOperation(mobileApp);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
activity = MDMServiceAPIUtils.getAppManagementService(applicationOperationAction.getTenantId())
|
|
||||||
.installApplicationForDevices(operation, deviceIdentifiers);
|
|
||||||
}
|
|
||||||
if (activity != null) {
|
|
||||||
return activity.getActivityId();
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
} catch (DeviceApplicationException mdmExce) {
|
|
||||||
logError("Error in creating operation object using app.", mdmExce);
|
|
||||||
throw new MobileApplicationException(mdmExce.getMessage());
|
|
||||||
} catch (ApplicationManagementException appMgtExce) {
|
|
||||||
logError("Error in app installation.", appMgtExce);
|
|
||||||
throw new MobileApplicationException(appMgtExce.getErrorMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create a new device identifier from Device object.
|
|
||||||
*
|
|
||||||
* @param device device which is to be retrieved type and id
|
|
||||||
* @return created device identifier
|
|
||||||
*/
|
|
||||||
private static DeviceIdentifier getDeviceIdentifierByDevice(org.wso2.carbon.device.mgt.common.Device device) {
|
|
||||||
DeviceIdentifier deviceIdentifier = new DeviceIdentifier();
|
|
||||||
deviceIdentifier.setId(device.getDeviceIdentifier());
|
|
||||||
deviceIdentifier.setType(device.getType());
|
|
||||||
return deviceIdentifier;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param applicationOperationDevice holds the information needs to retrieve device list.
|
|
||||||
* @return List of devices
|
|
||||||
* @throws MobileApplicationException If an error occurred in getting devices or if app platform is not supported.
|
|
||||||
*/
|
|
||||||
public List<Device> getDevices(ApplicationOperationDevice applicationOperationDevice)
|
|
||||||
throws MobileApplicationException {
|
|
||||||
List<Device> devices;
|
|
||||||
List<org.wso2.carbon.device.mgt.common.Device> deviceList;
|
|
||||||
try {
|
|
||||||
final int tenantId = applicationOperationDevice.getTenantId();
|
|
||||||
final String username = applicationOperationDevice.getCurrentUser().getUsername();
|
|
||||||
final String platform = applicationOperationDevice.getPlatform();
|
|
||||||
DeviceAccessAuthorizationService deviceAccessAuthorizationService = MDMServiceAPIUtils
|
|
||||||
.getDeviceAccessAuthorizationService(applicationOperationDevice.getTenantId());
|
|
||||||
DeviceManagementProviderService deviceManagementService = MDMServiceAPIUtils
|
|
||||||
.getDeviceManagementService(tenantId);
|
|
||||||
boolean isAdmin = deviceAccessAuthorizationService.isDeviceAdminUser();
|
|
||||||
|
|
||||||
switch (platform) {
|
|
||||||
case MDMAppConstants.WEBAPP:
|
|
||||||
deviceList = isAdmin ? deviceManagementService.getAllDevices() :
|
|
||||||
deviceManagementService.getDevicesOfUser(username);
|
|
||||||
break;
|
|
||||||
case MDMAppConstants.ANDROID:
|
|
||||||
deviceList = isAdmin ? deviceManagementService.getAllDevices(MDMAppConstants.ANDROID) :
|
|
||||||
deviceManagementService.getDevicesOfUser(username, MDMAppConstants.ANDROID);
|
|
||||||
break;
|
|
||||||
case MDMAppConstants.IOS:
|
|
||||||
deviceList = isAdmin ? deviceManagementService.getAllDevices(MDMAppConstants.IOS) :
|
|
||||||
deviceManagementService.getDevicesOfUser(username, MDMAppConstants.IOS);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
throw new MobileApplicationException("App platform: [" + platform + "] is not supported.");
|
|
||||||
}
|
|
||||||
|
|
||||||
devices = new ArrayList<>(deviceList.size());
|
|
||||||
if (log.isDebugEnabled()) {
|
|
||||||
log.debug("device list got from mdm " + deviceList.toString());
|
|
||||||
}
|
|
||||||
for (org.wso2.carbon.device.mgt.common.Device commonDevice : deviceList) {
|
|
||||||
if (MDMAppConstants.ACTIVE
|
|
||||||
.equals(commonDevice.getEnrolmentInfo().getStatus().toString().
|
|
||||||
toLowerCase())) {
|
|
||||||
Device device = new Device();
|
|
||||||
org.wso2.carbon.appmgt.mobile.beans.DeviceIdentifier deviceIdentifier =
|
|
||||||
new org.wso2.carbon.appmgt.mobile.beans.DeviceIdentifier();
|
|
||||||
deviceIdentifier.setId(commonDevice.getDeviceIdentifier());
|
|
||||||
deviceIdentifier.setType(commonDevice.getType());
|
|
||||||
device.setDeviceIdentifier(deviceIdentifier);
|
|
||||||
device.setName(commonDevice.getName());
|
|
||||||
device.setModel(commonDevice.getName());
|
|
||||||
device.setType(MDMAppConstants.MOBILE_DEVICE);
|
|
||||||
String imgUrl;
|
|
||||||
if (MDMAppConstants.ANDROID.equalsIgnoreCase(commonDevice.getType())) {
|
|
||||||
imgUrl = String.format(applicationOperationDevice.getConfigParams()
|
|
||||||
.get(MDMAppConstants.IMAGE_URL),
|
|
||||||
MDMAppConstants.NEXUS);
|
|
||||||
} else if (MDMAppConstants.IOS.equalsIgnoreCase(commonDevice.getType())) {
|
|
||||||
imgUrl = String.format(applicationOperationDevice.getConfigParams()
|
|
||||||
.get(MDMAppConstants.IMAGE_URL),
|
|
||||||
MDMAppConstants.IPHONE);
|
|
||||||
} else {
|
|
||||||
imgUrl = String.format(applicationOperationDevice.getConfigParams()
|
|
||||||
.get(MDMAppConstants.IMAGE_URL),
|
|
||||||
MDMAppConstants.NONE);
|
|
||||||
}
|
|
||||||
device.setImage(imgUrl);
|
|
||||||
device.setPlatform(commonDevice.getType());
|
|
||||||
devices.add(device);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch (DeviceManagementException e) {
|
|
||||||
logError("Error While retrieving Device List.", e);
|
|
||||||
throw new MobileApplicationException(e.getMessage());
|
|
||||||
} catch (DeviceAccessAuthorizationException e) {
|
|
||||||
throw new MobileApplicationException("Error while checking user permissions", e);
|
|
||||||
}
|
|
||||||
return devices;
|
|
||||||
}
|
|
||||||
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static UserStoreManager getUserStoreManager() throws UserStoreException {
|
|
||||||
RealmService realmService;
|
|
||||||
UserStoreManager userStoreManager;
|
|
||||||
PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext();
|
|
||||||
realmService = (RealmService) ctx.getOSGiService(RealmService.class, null);
|
|
||||||
if (realmService == null) {
|
|
||||||
String msg = "Realm service has not initialized.";
|
|
||||||
log.error(msg);
|
|
||||||
throw new IllegalStateException(msg);
|
|
||||||
}
|
|
||||||
int tenantId = ctx.getTenantId();
|
|
||||||
userStoreManager = realmService.getTenantUserRealm(tenantId).getUserStoreManager();
|
|
||||||
return userStoreManager;
|
|
||||||
}
|
|
||||||
|
|
||||||
class ApplicationSubscription extends Thread {
|
|
||||||
|
|
||||||
User currentUser;
|
|
||||||
String action;
|
|
||||||
App app;
|
|
||||||
int tenantId;
|
|
||||||
String type;
|
|
||||||
String[] params;
|
|
||||||
UserStoreManager userStoreManager;
|
|
||||||
UserRegistry userRegistry;
|
|
||||||
|
|
||||||
public ApplicationSubscription(User currentUser, String action, App app, int tenantId, final String type,
|
|
||||||
final String[] params) {
|
|
||||||
this.currentUser = currentUser;
|
|
||||||
this.action = action;
|
|
||||||
this.app = app;
|
|
||||||
this.tenantId = tenantId;
|
|
||||||
this.type = type;
|
|
||||||
this.params = params;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
try {
|
|
||||||
PrivilegedCarbonContext.startTenantFlow();
|
|
||||||
PrivilegedCarbonContext privilegedCarbonContext = PrivilegedCarbonContext.getThreadLocalCarbonContext();
|
|
||||||
privilegedCarbonContext.setTenantId(tenantId);
|
|
||||||
RealmService realmService = (RealmService) privilegedCarbonContext.getOSGiService(RealmService.class, null);
|
|
||||||
if (realmService == null) {
|
|
||||||
String msg = "RealmService is not initialized";
|
|
||||||
log.error(msg);
|
|
||||||
throw new IllegalStateException(msg);
|
|
||||||
}
|
|
||||||
|
|
||||||
String tenantDomain;
|
|
||||||
try {
|
|
||||||
tenantDomain = realmService.getTenantManager().getDomain(tenantId);
|
|
||||||
privilegedCarbonContext.setTenantDomain(tenantDomain);
|
|
||||||
privilegedCarbonContext.setUsername(currentUser.getUsername());
|
|
||||||
userStoreManager = getUserStoreManager();
|
|
||||||
userRegistry = ServiceReferenceHolder.getInstance().getRegistryService()
|
|
||||||
.getGovernanceUserRegistry(currentUser.getUsername(), tenantId);
|
|
||||||
} catch (UserStoreException e) {
|
|
||||||
log.error("Error occured while fetching user store", e);
|
|
||||||
} catch (RegistryException e) {
|
|
||||||
log.error("Error occured while fetching registry instance", e);
|
|
||||||
}
|
|
||||||
|
|
||||||
String basePath = "/users/";
|
|
||||||
String subscriptionPath = "/subscriptions/mobileapp/";
|
|
||||||
String path;
|
|
||||||
if (type != null && type.equals("role")) {
|
|
||||||
for (String param : params) {
|
|
||||||
String[] users;
|
|
||||||
if (log.isDebugEnabled()) {
|
|
||||||
log.debug("role being added:" + param);
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
users = userStoreManager.getUserListOfRole(param);
|
|
||||||
for (String user : users) {
|
|
||||||
path = basePath + user + subscriptionPath + app.getId();
|
|
||||||
updateSubscription(action, path, user, userRegistry);
|
|
||||||
}
|
|
||||||
} catch (UserStoreException e) {
|
|
||||||
log.error("Error occured while getting user list of role " + param, e);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
} else if (type != null && type.equals("user")) {
|
|
||||||
for (String user : params) {
|
|
||||||
if (log.isDebugEnabled()) {
|
|
||||||
log.debug("user:" + user);
|
|
||||||
}
|
|
||||||
path = basePath + user + subscriptionPath + app.getId();
|
|
||||||
updateSubscription(action, path, user, userRegistry);
|
|
||||||
}
|
|
||||||
} else if (type != null && type.equals("device")) {
|
|
||||||
log.debug("device user:" + currentUser.getUsername());
|
|
||||||
path = basePath + currentUser.getUsername() + subscriptionPath + app.getId();
|
|
||||||
updateSubscription(action, path, currentUser.getUsername(), userRegistry);
|
|
||||||
}
|
|
||||||
log.info("registry subscription complete.");
|
|
||||||
} finally {
|
|
||||||
PrivilegedCarbonContext.endTenantFlow();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void updateSubscription(String action, String path, String username, UserRegistry userRegistry) {
|
|
||||||
if (log.isDebugEnabled()) {
|
|
||||||
log.debug("update subscribe user:" + username + " , action:" + action + " ,path:" + path);
|
|
||||||
}
|
|
||||||
if (action != null && action.equals(INSTALL)) {
|
|
||||||
try {
|
|
||||||
if (!userRegistry.resourceExists(path)) {
|
|
||||||
Resource resource = userRegistry.newResource();
|
|
||||||
resource.setMediaType(MEDIA_TYPE_XML);
|
|
||||||
userRegistry.put(path, resource);
|
|
||||||
Generic generic = new Generic();
|
|
||||||
generic.showAppVisibilityToUser(path, username, "ALLOW");
|
|
||||||
}
|
|
||||||
} catch (RegistryException e) {
|
|
||||||
log.error("Error occured while accessing registry.", e);
|
|
||||||
}
|
|
||||||
} else if (action != null && action.equals(UNINSTALL)) {
|
|
||||||
try {
|
|
||||||
if (userRegistry.resourceExists(path)) {
|
|
||||||
userRegistry.delete(path);
|
|
||||||
Generic generic = new Generic();
|
|
||||||
generic.showAppVisibilityToUser(path, username, "DENY");
|
|
||||||
}
|
|
||||||
} catch (RegistryException e) {
|
|
||||||
log.error("Error occured while accessing registry.", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,60 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 2016, 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.appmgt.mdm.osgiconnector.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.osgiconnector.ApplicationOperationsImpl;
|
|
||||||
import org.wso2.carbon.appmgt.mobile.interfaces.ApplicationOperations;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @scr.component name="org.wso2.carbon.appmgt.mdm.osgiconnector" immediate="true"
|
|
||||||
*/
|
|
||||||
|
|
||||||
public class DeviceApplicationServiceComponent {
|
|
||||||
|
|
||||||
private static final Log log = LogFactory.getLog(DeviceApplicationServiceComponent.class);
|
|
||||||
|
|
||||||
private ServiceRegistration mdmServiceRegistration;
|
|
||||||
|
|
||||||
protected void activate(ComponentContext context) {
|
|
||||||
BundleContext bundleContext = context.getBundleContext();
|
|
||||||
mdmServiceRegistration = bundleContext
|
|
||||||
.registerService(ApplicationOperations.class.getName(), new ApplicationOperationsImpl(), null);
|
|
||||||
if (log.isDebugEnabled()) {
|
|
||||||
log.debug("Device Application Service Component activated.");
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
protected void deactivate(ComponentContext context) {
|
|
||||||
if (mdmServiceRegistration != null) {
|
|
||||||
mdmServiceRegistration.unregister();
|
|
||||||
mdmServiceRegistration = null;
|
|
||||||
}
|
|
||||||
if (log.isDebugEnabled()) {
|
|
||||||
log.debug("Device Application Service Component deactivated.");
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
@ -1,126 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 2016, 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.appmgt.mdm.osgiconnector.mdmmgt.beans;
|
|
||||||
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,21 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 2016, 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.appmgt.mdm.osgiconnector.mdmmgt.beans;
|
|
||||||
|
|
||||||
public enum MobileAppTypes {
|
|
||||||
ENTERPRISE, WEBAPP, PUBLIC
|
|
||||||
|
|
||||||
}
|
|
@ -1,46 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 2016, 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.appmgt.mdm.osgiconnector.mdmmgt.beans.android;
|
|
||||||
|
|
||||||
import com.google.gson.Gson;
|
|
||||||
import org.wso2.carbon.appmgt.mdm.osgiconnector.mdmmgt.common.DeviceApplicationException;
|
|
||||||
|
|
||||||
public class AndroidApplication {
|
|
||||||
private String type;
|
|
||||||
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 toJSON() throws DeviceApplicationException {
|
|
||||||
Gson gson = new Gson();
|
|
||||||
return gson.toJson(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,28 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 2016, 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.appmgt.mdm.osgiconnector.mdmmgt.beans.android;
|
|
||||||
|
|
||||||
import com.google.gson.Gson;
|
|
||||||
import org.wso2.carbon.appmgt.mdm.osgiconnector.mdmmgt.common.DeviceApplicationException;
|
|
||||||
|
|
||||||
import java.io.Serializable;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This class represents the Appstore Application information.
|
|
||||||
*/
|
|
||||||
public class AppStoreApplication extends AndroidApplication implements Serializable {
|
|
||||||
|
|
||||||
}
|
|
@ -1,55 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 2016, 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.appmgt.mdm.osgiconnector.mdmmgt.beans.android;
|
|
||||||
|
|
||||||
import com.google.gson.Gson;
|
|
||||||
import org.wso2.carbon.appmgt.mdm.osgiconnector.mdmmgt.common.DeviceApplicationException;
|
|
||||||
|
|
||||||
import java.io.Serializable;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This class represents the Enterprise Application information.
|
|
||||||
*/
|
|
||||||
public class EnterpriseApplication extends AndroidApplication implements Serializable {
|
|
||||||
|
|
||||||
private String url;
|
|
||||||
private String schedule;
|
|
||||||
private String packageName;
|
|
||||||
|
|
||||||
public String getSchedule() {
|
|
||||||
return schedule;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSchedule(String schedule) {
|
|
||||||
this.schedule = schedule;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getUrl() {
|
|
||||||
return url;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setUrl(String url) {
|
|
||||||
this.url = url;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getPackageName() {
|
|
||||||
return packageName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setPackageName(String packageName) {
|
|
||||||
this.packageName = packageName;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,61 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 2016, 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.appmgt.mdm.osgiconnector.mdmmgt.beans.android;
|
|
||||||
|
|
||||||
import com.google.gson.Gson;
|
|
||||||
import org.wso2.carbon.appmgt.mdm.osgiconnector.mdmmgt.common.DeviceApplicationException;
|
|
||||||
|
|
||||||
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 DeviceApplicationException {
|
|
||||||
Gson gson = new Gson();
|
|
||||||
return gson.toJson(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,34 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
|
||||||
*
|
|
||||||
* WSO2 Inc. licenses this file to you under the Apache License,
|
|
||||||
* Version 2.0 (the "License"); you may not use this file except
|
|
||||||
* in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing,
|
|
||||||
* software distributed under the License is distributed on an
|
|
||||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
||||||
* KIND, either express or implied. See the License for the
|
|
||||||
* specific language governing permissions and limitations
|
|
||||||
* under the License.
|
|
||||||
*/
|
|
||||||
package org.wso2.carbon.appmgt.mdm.osgiconnector.mdmmgt.beans.ios;
|
|
||||||
|
|
||||||
import java.io.Serializable;
|
|
||||||
|
|
||||||
public class AppStoreApplication extends IOSApplication implements Serializable {
|
|
||||||
|
|
||||||
private int iTunesStoreID;
|
|
||||||
|
|
||||||
public int getiTunesStoreID() {
|
|
||||||
return iTunesStoreID;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setiTunesStoreID(int iTunesStoreID) {
|
|
||||||
this.iTunesStoreID = iTunesStoreID;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,35 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
|
||||||
*
|
|
||||||
* WSO2 Inc. licenses this file to you under the Apache License,
|
|
||||||
* Version 2.0 (the "License"); you may not use this file except
|
|
||||||
* in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing,
|
|
||||||
* software distributed under the License is distributed on an
|
|
||||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
||||||
* KIND, either express or implied. See the License for the
|
|
||||||
* specific language governing permissions and limitations
|
|
||||||
* under the License.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
package org.wso2.carbon.appmgt.mdm.osgiconnector.mdmmgt.beans.ios;
|
|
||||||
|
|
||||||
import java.io.Serializable;
|
|
||||||
|
|
||||||
public class EnterpriseApplication extends IOSApplication implements Serializable {
|
|
||||||
|
|
||||||
private String manifestURL;
|
|
||||||
|
|
||||||
public String getManifestURL() {
|
|
||||||
return manifestURL;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setManifestURL(String manifestURL) {
|
|
||||||
this.manifestURL = manifestURL;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,74 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 2016, 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.appmgt.mdm.osgiconnector.mdmmgt.beans.ios;
|
|
||||||
|
|
||||||
import com.google.gson.Gson;
|
|
||||||
import org.wso2.carbon.appmgt.mdm.osgiconnector.mdmmgt.common.DeviceApplicationException;
|
|
||||||
|
|
||||||
public class IOSApplication {
|
|
||||||
|
|
||||||
private String identifier;
|
|
||||||
private boolean removeAppUponMDMProfileRemoval;
|
|
||||||
private boolean preventBackupOfAppData;
|
|
||||||
private String bundleId;
|
|
||||||
private String UUID;
|
|
||||||
|
|
||||||
public String getUUID() {
|
|
||||||
return UUID;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setUUID(String UUID) {
|
|
||||||
this.UUID = UUID;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getIdentifier() {
|
|
||||||
return identifier;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setIdentifier(String identifier) {
|
|
||||||
this.identifier = identifier;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isRemoveAppUponMDMProfileRemoval() {
|
|
||||||
return removeAppUponMDMProfileRemoval;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRemoveAppUponMDMProfileRemoval(boolean removeAppUponMDMProfileRemoval) {
|
|
||||||
this.removeAppUponMDMProfileRemoval = removeAppUponMDMProfileRemoval;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isPreventBackupOfAppData() {
|
|
||||||
return preventBackupOfAppData;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setPreventBackupOfAppData(boolean preventBackupOfAppData) {
|
|
||||||
this.preventBackupOfAppData = preventBackupOfAppData;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getBundleId() {
|
|
||||||
return bundleId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setBundleId(String bundleId) {
|
|
||||||
this.bundleId = bundleId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String toJSON() throws DeviceApplicationException {
|
|
||||||
Gson gson = new Gson();
|
|
||||||
return gson.toJson(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,49 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 2016, 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.appmgt.mdm.osgiconnector.mdmmgt.beans.ios;
|
|
||||||
|
|
||||||
import com.google.gson.Gson;
|
|
||||||
import org.wso2.carbon.appmgt.mdm.osgiconnector.mdmmgt.common.DeviceApplicationException;
|
|
||||||
|
|
||||||
import java.io.Serializable;
|
|
||||||
|
|
||||||
public class RemoveApplication implements Serializable {
|
|
||||||
|
|
||||||
private String bundleId;
|
|
||||||
private String url;
|
|
||||||
|
|
||||||
public String getUrl() {
|
|
||||||
return url;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setUrl(String url) {
|
|
||||||
this.url = url;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getBundleId() {
|
|
||||||
return bundleId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setBundleId(String bundleId) {
|
|
||||||
this.bundleId = bundleId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String toJSON() throws DeviceApplicationException {
|
|
||||||
Gson gson = new Gson();
|
|
||||||
return gson.toJson(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,75 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 2016, 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.appmgt.mdm.osgiconnector.mdmmgt.beans.ios;
|
|
||||||
|
|
||||||
import com.google.gson.Gson;
|
|
||||||
import org.wso2.carbon.appmgt.mdm.osgiconnector.mdmmgt.common.DeviceApplicationException;
|
|
||||||
|
|
||||||
public class WebClip {
|
|
||||||
|
|
||||||
private String URL;
|
|
||||||
private String label;
|
|
||||||
private String icon;
|
|
||||||
private String isRemovable;
|
|
||||||
private String UUID;
|
|
||||||
|
|
||||||
public String getUUID() {
|
|
||||||
return UUID;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setUUID(String UUID) {
|
|
||||||
this.UUID = UUID;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getURL() {
|
|
||||||
return URL;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setURL(String URL) {
|
|
||||||
this.URL = URL;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getLabel() {
|
|
||||||
return label;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setLabel(String label) {
|
|
||||||
this.label = label;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getIcon() {
|
|
||||||
return icon;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setIcon(String icon) {
|
|
||||||
this.icon = icon;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getIsRemovable() {
|
|
||||||
return isRemovable;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setIsRemovable(String isRemovable) {
|
|
||||||
this.isRemovable = isRemovable;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String toJSON() throws DeviceApplicationException {
|
|
||||||
Gson gson = new Gson();
|
|
||||||
return gson.toJson(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,50 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 2016, 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.appmgt.mdm.osgiconnector.mdmmgt.common;
|
|
||||||
|
|
||||||
public class DeviceApplicationException extends Exception {
|
|
||||||
|
|
||||||
private static final long serialVersionUID = 5136875495185597926L;
|
|
||||||
private String errorMessage;
|
|
||||||
|
|
||||||
public DeviceApplicationException(String msg, Exception e) {
|
|
||||||
super(msg, e);
|
|
||||||
setErrorMessage(msg);
|
|
||||||
}
|
|
||||||
|
|
||||||
public DeviceApplicationException(String msg, Throwable cause) {
|
|
||||||
super(msg, cause);
|
|
||||||
setErrorMessage(msg);
|
|
||||||
}
|
|
||||||
|
|
||||||
public DeviceApplicationException(String msg) {
|
|
||||||
super(msg);
|
|
||||||
setErrorMessage(msg);
|
|
||||||
}
|
|
||||||
|
|
||||||
public DeviceApplicationException() {
|
|
||||||
super();
|
|
||||||
}
|
|
||||||
|
|
||||||
public DeviceApplicationException(Throwable cause) {
|
|
||||||
super(cause);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setErrorMessage(String errorMessage) {
|
|
||||||
this.errorMessage = errorMessage;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,152 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 2016, 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.appmgt.mdm.osgiconnector.mdmmgt.util;
|
|
||||||
|
|
||||||
import org.wso2.carbon.appmgt.mdm.osgiconnector.mdmmgt.beans.MobileApp;
|
|
||||||
import org.wso2.carbon.appmgt.mdm.osgiconnector.mdmmgt.beans.android.AppStoreApplication;
|
|
||||||
import org.wso2.carbon.appmgt.mdm.osgiconnector.mdmmgt.beans.android.EnterpriseApplication;
|
|
||||||
import org.wso2.carbon.appmgt.mdm.osgiconnector.mdmmgt.beans.android.WebApplication;
|
|
||||||
import org.wso2.carbon.appmgt.mdm.osgiconnector.mdmmgt.common.DeviceApplicationException;
|
|
||||||
import org.wso2.carbon.device.mgt.common.operation.mgt.Operation;
|
|
||||||
import org.wso2.carbon.device.mgt.core.operation.mgt.ProfileOperation;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This class contains the all the operations related to Android.
|
|
||||||
*/
|
|
||||||
public class AndroidApplicationOperationUtil {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create Install Application operation.
|
|
||||||
*
|
|
||||||
* @param application MobileApp application
|
|
||||||
* @return operation
|
|
||||||
* @throws DeviceApplicationException
|
|
||||||
*/
|
|
||||||
public static Operation createInstallAppOperation(MobileApp application, String schedule) throws
|
|
||||||
DeviceApplicationException {
|
|
||||||
|
|
||||||
ProfileOperation operation = new ProfileOperation();
|
|
||||||
operation.setCode(MDMAppConstants.AndroidConstants.OPCODE_INSTALL_APPLICATION);
|
|
||||||
operation.setType(Operation.Type.PROFILE);
|
|
||||||
switch (application.getType()) {
|
|
||||||
case ENTERPRISE:
|
|
||||||
EnterpriseApplication enterpriseApplication = new EnterpriseApplication();
|
|
||||||
enterpriseApplication.setType(application.getType().toString());
|
|
||||||
enterpriseApplication.setUrl(application.getLocation());
|
|
||||||
enterpriseApplication.setSchedule(schedule);
|
|
||||||
enterpriseApplication.setPackageName(application.getPackageName());
|
|
||||||
operation.setPayLoad(enterpriseApplication.toJSON());
|
|
||||||
break;
|
|
||||||
case PUBLIC:
|
|
||||||
setOperationForPublicApp(operation, application);
|
|
||||||
break;
|
|
||||||
case WEBAPP:
|
|
||||||
setOperationForWebApp(operation, application);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
String errorMessage = "Invalid application type.";
|
|
||||||
throw new DeviceApplicationException(errorMessage);
|
|
||||||
}
|
|
||||||
return operation;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create Update Application operation.
|
|
||||||
*
|
|
||||||
* @param application MobileApp application
|
|
||||||
* @return operation
|
|
||||||
* @throws DeviceApplicationException
|
|
||||||
*/
|
|
||||||
public static Operation createUpdateAppOperation(MobileApp application, String schedule) throws
|
|
||||||
DeviceApplicationException {
|
|
||||||
|
|
||||||
ProfileOperation operation = new ProfileOperation();
|
|
||||||
operation.setCode(MDMAppConstants.AndroidConstants.OPCODE_UPDATE_APPLICATION);
|
|
||||||
operation.setType(Operation.Type.PROFILE);
|
|
||||||
switch (application.getType()) {
|
|
||||||
case ENTERPRISE:
|
|
||||||
EnterpriseApplication enterpriseApplication = new EnterpriseApplication();
|
|
||||||
enterpriseApplication.setType(application.getType().toString());
|
|
||||||
enterpriseApplication.setUrl(application.getLocation());
|
|
||||||
enterpriseApplication.setSchedule(schedule);
|
|
||||||
operation.setPayLoad(enterpriseApplication.toJSON());
|
|
||||||
break;
|
|
||||||
case PUBLIC:
|
|
||||||
setOperationForPublicApp(operation, application);
|
|
||||||
break;
|
|
||||||
case WEBAPP:
|
|
||||||
setOperationForWebApp(operation, application);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
String errorMessage = "Invalid application type.";
|
|
||||||
throw new DeviceApplicationException(errorMessage);
|
|
||||||
}
|
|
||||||
return operation;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create Uninstall Application operation.
|
|
||||||
*
|
|
||||||
* @param application MobileApp application
|
|
||||||
* @return operation
|
|
||||||
* @throws DeviceApplicationException
|
|
||||||
*/
|
|
||||||
public static Operation createAppUninstallOperation(MobileApp application, String schedule) throws
|
|
||||||
DeviceApplicationException {
|
|
||||||
|
|
||||||
ProfileOperation operation = new ProfileOperation();
|
|
||||||
operation.setCode(MDMAppConstants.AndroidConstants.OPCODE_UNINSTALL_APPLICATION);
|
|
||||||
operation.setType(Operation.Type.PROFILE);
|
|
||||||
|
|
||||||
switch (application.getType()) {
|
|
||||||
case ENTERPRISE:
|
|
||||||
EnterpriseApplication enterpriseApplication = new EnterpriseApplication();
|
|
||||||
enterpriseApplication.setType(application.getType().toString());
|
|
||||||
enterpriseApplication.setAppIdentifier(application.getIdentifier());
|
|
||||||
enterpriseApplication.setSchedule(schedule);
|
|
||||||
operation.setPayLoad(enterpriseApplication.toJSON());
|
|
||||||
break;
|
|
||||||
case PUBLIC:
|
|
||||||
setOperationForPublicApp(operation, application);
|
|
||||||
break;
|
|
||||||
case WEBAPP:
|
|
||||||
setOperationForWebApp(operation, application);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
String errorMessage = "Invalid application type.";
|
|
||||||
throw new DeviceApplicationException(errorMessage);
|
|
||||||
}
|
|
||||||
return operation;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void setOperationForPublicApp(Operation operation, MobileApp application)
|
|
||||||
throws DeviceApplicationException {
|
|
||||||
AppStoreApplication appStoreApplication = new AppStoreApplication();
|
|
||||||
appStoreApplication.setType(application.getType().toString());
|
|
||||||
appStoreApplication.setAppIdentifier(application.getIdentifier());
|
|
||||||
operation.setPayLoad(appStoreApplication.toJSON());
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void setOperationForWebApp(Operation operation, MobileApp application)
|
|
||||||
throws DeviceApplicationException {
|
|
||||||
WebApplication webApplication = new WebApplication();
|
|
||||||
webApplication.setUrl(application.getLocation());
|
|
||||||
webApplication.setName(application.getName());
|
|
||||||
webApplication.setType(application.getType().toString());
|
|
||||||
operation.setPayLoad(webApplication.toJSON());
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,131 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 2016, 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.appmgt.mdm.osgiconnector.mdmmgt.util;
|
|
||||||
|
|
||||||
import org.wso2.carbon.appmgt.mdm.osgiconnector.mdmmgt.beans.MobileApp;
|
|
||||||
import org.wso2.carbon.appmgt.mdm.osgiconnector.mdmmgt.beans.ios.AppStoreApplication;
|
|
||||||
import org.wso2.carbon.appmgt.mdm.osgiconnector.mdmmgt.beans.ios.WebClip;
|
|
||||||
import org.wso2.carbon.appmgt.mdm.osgiconnector.mdmmgt.common.DeviceApplicationException;
|
|
||||||
import org.wso2.carbon.device.mgt.common.operation.mgt.Operation;
|
|
||||||
import org.wso2.carbon.device.mgt.core.operation.mgt.ProfileOperation;
|
|
||||||
import org.wso2.carbon.appmgt.mdm.osgiconnector.mdmmgt.beans.ios.EnterpriseApplication;
|
|
||||||
import org.wso2.carbon.appmgt.mdm.osgiconnector.mdmmgt.beans.ios.RemoveApplication;
|
|
||||||
|
|
||||||
import java.util.Properties;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This class contains the all the operations related to IOS.
|
|
||||||
*/
|
|
||||||
public class IOSApplicationOperationUtil {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create Install Application operation.
|
|
||||||
*
|
|
||||||
* @param application MobileApp application
|
|
||||||
* @return operation
|
|
||||||
* @throws DeviceApplicationException
|
|
||||||
*/
|
|
||||||
public static Operation createInstallAppOperation(MobileApp application) throws
|
|
||||||
DeviceApplicationException {
|
|
||||||
|
|
||||||
ProfileOperation operation = new ProfileOperation();
|
|
||||||
switch (application.getType()) {
|
|
||||||
case ENTERPRISE:
|
|
||||||
EnterpriseApplication enterpriseApplication = new EnterpriseApplication();
|
|
||||||
enterpriseApplication.setBundleId(application.getId());
|
|
||||||
enterpriseApplication.setIdentifier(application.getIdentifier());
|
|
||||||
enterpriseApplication.setManifestURL(application.getLocation());
|
|
||||||
|
|
||||||
Properties properties = application.getProperties();
|
|
||||||
enterpriseApplication.setPreventBackupOfAppData(
|
|
||||||
(Boolean) properties.get(MDMAppConstants.IOSConstants.IS_PREVENT_BACKUP));
|
|
||||||
enterpriseApplication.setRemoveAppUponMDMProfileRemoval(
|
|
||||||
(Boolean) properties.get(MDMAppConstants.IOSConstants.IS_REMOVE_APP));
|
|
||||||
operation.setCode(
|
|
||||||
MDMAppConstants.IOSConstants.OPCODE_INSTALL_ENTERPRISE_APPLICATION);
|
|
||||||
operation.setPayLoad(enterpriseApplication.toJSON());
|
|
||||||
operation.setType(Operation.Type.COMMAND);
|
|
||||||
break;
|
|
||||||
case PUBLIC:
|
|
||||||
AppStoreApplication appStoreApplication = new AppStoreApplication();
|
|
||||||
appStoreApplication.setRemoveAppUponMDMProfileRemoval(
|
|
||||||
(Boolean) application.getProperties()
|
|
||||||
.get(MDMAppConstants.IOSConstants.IS_REMOVE_APP));
|
|
||||||
appStoreApplication.setIdentifier(application.getIdentifier());
|
|
||||||
appStoreApplication.setPreventBackupOfAppData((Boolean) application.getProperties().
|
|
||||||
get(MDMAppConstants.IOSConstants.IS_PREVENT_BACKUP));
|
|
||||||
appStoreApplication.setBundleId(application.getId());
|
|
||||||
appStoreApplication.setiTunesStoreID(Integer.parseInt((String)application.getProperties().
|
|
||||||
get(MDMAppConstants.IOSConstants.I_TUNES_ID)));
|
|
||||||
operation.setCode(MDMAppConstants.IOSConstants.OPCODE_INSTALL_STORE_APPLICATION);
|
|
||||||
operation.setType(Operation.Type.COMMAND);
|
|
||||||
operation.setPayLoad(appStoreApplication.toJSON());
|
|
||||||
break;
|
|
||||||
case WEBAPP:
|
|
||||||
WebClip webClip = new WebClip();
|
|
||||||
webClip.setIcon(application.getIconImage());
|
|
||||||
webClip.setIsRemovable(application.getProperties().
|
|
||||||
getProperty(MDMAppConstants.IOSConstants.IS_REMOVE_APP));
|
|
||||||
webClip.setLabel(application.getProperties().
|
|
||||||
getProperty(MDMAppConstants.IOSConstants.LABEL));
|
|
||||||
webClip.setURL(application.getLocation());
|
|
||||||
operation.setCode(MDMAppConstants.IOSConstants.OPCODE_INSTALL_WEB_APPLICATION);
|
|
||||||
operation.setType(Operation.Type.PROFILE);
|
|
||||||
operation.setPayLoad(webClip.toJSON());
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
String errorMessage = "Invalid application type.";
|
|
||||||
throw new DeviceApplicationException(errorMessage);
|
|
||||||
}
|
|
||||||
return operation;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create uninstall operations.
|
|
||||||
*
|
|
||||||
* @param application
|
|
||||||
* @return Uninstall operation
|
|
||||||
* @throws DeviceApplicationException
|
|
||||||
*/
|
|
||||||
public static Operation createAppUninstallOperation(MobileApp application) throws
|
|
||||||
DeviceApplicationException {
|
|
||||||
ProfileOperation operation = new ProfileOperation();
|
|
||||||
operation.setCode(MDMAppConstants.IOSConstants.OPCODE_REMOVE_APPLICATION);
|
|
||||||
operation.setType(Operation.Type.PROFILE);
|
|
||||||
RemoveApplication removeApplication = new RemoveApplication();
|
|
||||||
removeApplication.setBundleId(application.getPackageName());
|
|
||||||
operation.setPayLoad(removeApplication.toJSON());
|
|
||||||
return operation;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create uninstall operations for webclip.
|
|
||||||
*
|
|
||||||
* @param application
|
|
||||||
* @return Uninstall operation
|
|
||||||
* @throws DeviceApplicationException
|
|
||||||
*/
|
|
||||||
public static Operation createWebClipUninstallOperation(MobileApp application) throws
|
|
||||||
DeviceApplicationException {
|
|
||||||
ProfileOperation operation = new ProfileOperation();
|
|
||||||
operation.setCode(MDMAppConstants.IOSConstants.OPCODE_REMOVE_APPLICATION);
|
|
||||||
operation.setType(Operation.Type.PROFILE);
|
|
||||||
RemoveApplication removeApplication = new RemoveApplication();
|
|
||||||
removeApplication.setUrl(application.getIdentifier());
|
|
||||||
operation.setPayLoad(removeApplication.toJSON());
|
|
||||||
return operation;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,82 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 2016, 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.appmgt.mdm.osgiconnector.mdmmgt.util;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This class holds all the constants used for IOS and Android.
|
|
||||||
*/
|
|
||||||
public class MDMAppConstants {
|
|
||||||
|
|
||||||
public static final String USER = "user";
|
|
||||||
public static final String ROLE = "role";
|
|
||||||
public static final String IOS = "ios";
|
|
||||||
public static final String ANDROID = "android";
|
|
||||||
public static final String WEBAPP = "webapp";
|
|
||||||
public static final String INSTALL = "install";
|
|
||||||
public static final String UPDATE = "update";
|
|
||||||
public static final String ACTIVE = "active";
|
|
||||||
public static final String ENTERPRISE = "enterprise";
|
|
||||||
public static final String DEVICE = "device";
|
|
||||||
public static final String MOBILE_DEVICE = "mobileDevice";
|
|
||||||
public static final String NEXUS = "nexus";
|
|
||||||
public static final String IPHONE = "iphone";
|
|
||||||
public static final String NONE = "none";
|
|
||||||
public static final String IMAGE_URL = "ImageURL";
|
|
||||||
public static final String TYPE = "type";
|
|
||||||
public static final String ID = "id";
|
|
||||||
|
|
||||||
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 RegistryConstants {
|
|
||||||
private RegistryConstants() {
|
|
||||||
throw new AssertionError();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static final String GENERAL_CONFIG_RESOURCE_PATH = "general";
|
|
||||||
}
|
|
||||||
|
|
||||||
public class APPManagerConstants {
|
|
||||||
private static final String APP_MANAGER_MDM_SERVICE_NAME =
|
|
||||||
"org.wso2.carbon.appmgt.mobile.interfaces.MDMOperations";
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,95 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 2016, 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.appmgt.mdm.osgiconnector.mdmmgt.util;
|
|
||||||
|
|
||||||
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.authorization.DeviceAccessAuthorizationService;
|
|
||||||
import org.wso2.carbon.device.mgt.core.app.mgt.ApplicationManagementProviderService;
|
|
||||||
import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* MDMServiceAPIUtils class provides utility function.
|
|
||||||
*/
|
|
||||||
public class MDMServiceAPIUtils {
|
|
||||||
|
|
||||||
private static Log log = LogFactory.getLog(MDMServiceAPIUtils.class);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the DeviceManagementProviderService osgi service.
|
|
||||||
*
|
|
||||||
* @param tenantId tenant id
|
|
||||||
* @return DeviceManagementProviderService
|
|
||||||
*/
|
|
||||||
public static DeviceManagementProviderService getDeviceManagementService(int tenantId) {
|
|
||||||
PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext();
|
|
||||||
ctx.setTenantId(tenantId, true);
|
|
||||||
DeviceManagementProviderService deviceManagementProviderService =
|
|
||||||
(DeviceManagementProviderService) ctx
|
|
||||||
.getOSGiService(DeviceManagementProviderService.class, null);
|
|
||||||
if (deviceManagementProviderService == null) {
|
|
||||||
String msg = "Device Management provider service has not initialized.";
|
|
||||||
log.error(msg);
|
|
||||||
throw new IllegalStateException(msg);
|
|
||||||
}
|
|
||||||
return deviceManagementProviderService;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the DeviceAccessAuthorizationService osgi service.
|
|
||||||
*
|
|
||||||
* @param tenantId tenant id
|
|
||||||
* @return {@link DeviceAccessAuthorizationService}
|
|
||||||
*/
|
|
||||||
public static DeviceAccessAuthorizationService getDeviceAccessAuthorizationService(int tenantId) {
|
|
||||||
PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext();
|
|
||||||
ctx.setTenantId(tenantId, true);
|
|
||||||
DeviceAccessAuthorizationService deviceAccessAuthorizationService =
|
|
||||||
(DeviceAccessAuthorizationService) ctx
|
|
||||||
.getOSGiService(DeviceAccessAuthorizationService.class, null);
|
|
||||||
if (deviceAccessAuthorizationService == null) {
|
|
||||||
String msg = "Device Access Authorization service has not initialized.";
|
|
||||||
log.error(msg);
|
|
||||||
throw new IllegalStateException(msg);
|
|
||||||
}
|
|
||||||
return deviceAccessAuthorizationService;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the ApplicationManagementProviderService osgi service.
|
|
||||||
*
|
|
||||||
* @param tenantId tenant id
|
|
||||||
* @return ApplicationManagementProviderService
|
|
||||||
*/
|
|
||||||
public static ApplicationManagementProviderService getAppManagementService(int tenantId) {
|
|
||||||
PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext();
|
|
||||||
ctx.setTenantId(tenantId, true);
|
|
||||||
ApplicationManagementProviderService applicationManagementProviderService =
|
|
||||||
(ApplicationManagementProviderService) ctx.
|
|
||||||
getOSGiService(
|
|
||||||
ApplicationManagementProviderService.class,
|
|
||||||
null);
|
|
||||||
if (applicationManagementProviderService == null) {
|
|
||||||
String msg = "Application management service has not initialized.";
|
|
||||||
log.error(msg);
|
|
||||||
throw new IllegalStateException(msg);
|
|
||||||
}
|
|
||||||
return applicationManagementProviderService;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,158 +0,0 @@
|
|||||||
<?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>4.2.7-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>
|
|
||||||
|
|
||||||
<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.osgi.framework,
|
|
||||||
org.osgi.service.component,
|
|
||||||
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,
|
|
||||||
org.json.simple.*,
|
|
||||||
org.wso2.carbon.appmgt.mobile.beans,
|
|
||||||
org.wso2.carbon.base,
|
|
||||||
org.wso2.carbon.context,
|
|
||||||
javax.net.ssl,
|
|
||||||
feign.slf4j
|
|
||||||
</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
|
|
||||||
</Embed-Dependency>
|
|
||||||
</instructions>
|
|
||||||
</configuration>
|
|
||||||
</plugin>
|
|
||||||
<plugin>
|
|
||||||
<groupId>org.jacoco</groupId>
|
|
||||||
<artifactId>jacoco-maven-plugin</artifactId>
|
|
||||||
<configuration>
|
|
||||||
<destFile>${basedir}/target/coverage-reports/jacoco-unit.exec</destFile>
|
|
||||||
</configuration>
|
|
||||||
<executions>
|
|
||||||
<execution>
|
|
||||||
<id>jacoco-initialize</id>
|
|
||||||
<goals>
|
|
||||||
<goal>prepare-agent</goal>
|
|
||||||
</goals>
|
|
||||||
</execution>
|
|
||||||
<execution>
|
|
||||||
<id>jacoco-site</id>
|
|
||||||
<phase>test</phase>
|
|
||||||
<goals>
|
|
||||||
<goal>report</goal>
|
|
||||||
</goals>
|
|
||||||
<configuration>
|
|
||||||
<dataFile>${basedir}/target/coverage-reports/jacoco-unit.exec</dataFile>
|
|
||||||
<outputDirectory>${basedir}/target/coverage-reports/site</outputDirectory>
|
|
||||||
</configuration>
|
|
||||||
</execution>
|
|
||||||
</executions>
|
|
||||||
</plugin>
|
|
||||||
</plugins>
|
|
||||||
</build>
|
|
||||||
|
|
||||||
<dependencies>
|
|
||||||
<dependency>
|
|
||||||
<groupId>com.googlecode.json-simple.wso2</groupId>
|
|
||||||
<artifactId>json-simple</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.identity.jwt.client.extension</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>io.github.openfeign</groupId>
|
|
||||||
<artifactId>feign-core</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>io.github.openfeign</groupId>
|
|
||||||
<artifactId>feign-jaxrs</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>io.github.openfeign</groupId>
|
|
||||||
<artifactId>feign-gson</artifactId>
|
|
||||||
</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.appmgt</groupId>
|
|
||||||
<artifactId>org.wso2.carbon.appmgt.mobile</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>io.github.openfeign</groupId>
|
|
||||||
<artifactId>feign-slf4j</artifactId>
|
|
||||||
</dependency>
|
|
||||||
</dependencies>
|
|
||||||
|
|
||||||
</project>
|
|
@ -1,383 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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.Client;
|
|
||||||
import feign.Feign;
|
|
||||||
import feign.Logger;
|
|
||||||
import feign.Request;
|
|
||||||
import feign.Response;
|
|
||||||
import feign.gson.GsonDecoder;
|
|
||||||
import feign.gson.GsonEncoder;
|
|
||||||
import feign.jaxrs.JAXRSContract;
|
|
||||||
import feign.slf4j.Slf4jLogger;
|
|
||||||
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.Activity;
|
|
||||||
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.base.ServerConfiguration;
|
|
||||||
import org.wso2.carbon.context.PrivilegedCarbonContext;
|
|
||||||
|
|
||||||
import javax.net.ssl.*;
|
|
||||||
import java.io.FileInputStream;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.InputStream;
|
|
||||||
import java.security.*;
|
|
||||||
import java.security.cert.CertificateException;
|
|
||||||
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().client(getSSLClient()).logger(new Slf4jLogger()).logLevel(
|
|
||||||
Logger.Level.FULL).requestInterceptor(oAuthRequestInterceptor)
|
|
||||||
.contract(new JAXRSContract()).encoder(new GsonEncoder()).decoder(new GsonDecoder())
|
|
||||||
.target(DeviceManagementAdminService.class,
|
|
||||||
authorizationConfigManagerServerURL + CDMF_SERVER_BASE_CONTEXT);
|
|
||||||
applicationManagementAdminService = Feign.builder().client(getSSLClient()).logger(new Slf4jLogger()).logLevel(
|
|
||||||
Logger.Level.FULL).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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Client getSSLClient() {
|
|
||||||
boolean isIgnoreHostnameVerification = Boolean.parseBoolean(System.getProperty("org.wso2.ignoreHostnameVerification"));
|
|
||||||
if(isIgnoreHostnameVerification) {
|
|
||||||
return new Client.Default(getSimpleTrustedSSLSocketFactory(), new HostnameVerifier() {
|
|
||||||
@Override
|
|
||||||
public boolean verify(String s, SSLSession sslSession) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}else {
|
|
||||||
return new Client.Default(getTrustedSSLSocketFactory(), null);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static SSLSocketFactory getSimpleTrustedSSLSocketFactory() {
|
|
||||||
try {
|
|
||||||
TrustManager[] trustAllCerts = new TrustManager[]{
|
|
||||||
new X509TrustManager() {
|
|
||||||
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
public void checkClientTrusted(
|
|
||||||
java.security.cert.X509Certificate[] certs, String authType) {
|
|
||||||
}
|
|
||||||
public void checkServerTrusted(
|
|
||||||
java.security.cert.X509Certificate[] certs, String authType) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
SSLContext sc = SSLContext.getInstance("SSL");
|
|
||||||
sc.init(null, trustAllCerts, new java.security.SecureRandom());
|
|
||||||
return sc.getSocketFactory();
|
|
||||||
} catch (KeyManagementException | NoSuchAlgorithmException e) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//FIXME - I know hard-cording values is a bad practice , this code is repeating in
|
|
||||||
// several class, so this hard-coding strings will be removed once this code block is moved into a central location
|
|
||||||
// this should be done after the 3.1.0 release.
|
|
||||||
private static SSLSocketFactory getTrustedSSLSocketFactory() {
|
|
||||||
try {
|
|
||||||
String keyStorePassword = ServerConfiguration.getInstance().getFirstProperty("Security.KeyStore.Password");
|
|
||||||
String keyStoreLocation = ServerConfiguration.getInstance().getFirstProperty("Security.KeyStore.Location");
|
|
||||||
String trustStorePassword = ServerConfiguration.getInstance().getFirstProperty(
|
|
||||||
"Security.TrustStore.Password");
|
|
||||||
String trustStoreLocation = ServerConfiguration.getInstance().getFirstProperty(
|
|
||||||
"Security.TrustStore.Location");
|
|
||||||
|
|
||||||
KeyStore keyStore = loadKeyStore(keyStoreLocation,keyStorePassword,"JKS");
|
|
||||||
KeyStore trustStore = loadTrustStore(trustStoreLocation,trustStorePassword);
|
|
||||||
return initSSLConnection(keyStore,keyStorePassword,trustStore);
|
|
||||||
} catch (KeyManagementException | NoSuchAlgorithmException | KeyStoreException
|
|
||||||
|CertificateException | IOException | UnrecoverableKeyException e) {
|
|
||||||
log.error("Error while creating the SSL socket factory due to "+e.getMessage(),e);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static SSLSocketFactory initSSLConnection(KeyStore keyStore,String keyStorePassword,KeyStore trustStore) throws NoSuchAlgorithmException, UnrecoverableKeyException,
|
|
||||||
KeyStoreException, KeyManagementException {
|
|
||||||
KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance("SunX509");
|
|
||||||
keyManagerFactory.init(keyStore, keyStorePassword.toCharArray());
|
|
||||||
TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance("SunX509");
|
|
||||||
trustManagerFactory.init(trustStore);
|
|
||||||
|
|
||||||
// Create and initialize SSLContext for HTTPS communication
|
|
||||||
SSLContext sslContext = SSLContext.getInstance("SSLv3");
|
|
||||||
sslContext.init(keyManagerFactory.getKeyManagers(), trustManagerFactory.getTrustManagers(), null);
|
|
||||||
SSLContext.setDefault(sslContext);
|
|
||||||
return sslContext.getSocketFactory();
|
|
||||||
}
|
|
||||||
|
|
||||||
private static KeyStore loadKeyStore(String keyStorePath, String ksPassword, String type)
|
|
||||||
throws KeyStoreException, IOException, CertificateException, NoSuchAlgorithmException {
|
|
||||||
InputStream fileInputStream = null;
|
|
||||||
try {
|
|
||||||
char[] keypassChar = ksPassword.toCharArray();
|
|
||||||
KeyStore keyStore = KeyStore.getInstance(type);
|
|
||||||
fileInputStream = new FileInputStream(keyStorePath);
|
|
||||||
keyStore.load(fileInputStream, keypassChar);
|
|
||||||
return keyStore;
|
|
||||||
} finally {
|
|
||||||
if (fileInputStream != null) {
|
|
||||||
fileInputStream.close();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static KeyStore loadTrustStore(String trustStorePath, String tsPassword)
|
|
||||||
throws KeyStoreException, IOException, CertificateException, NoSuchAlgorithmException {
|
|
||||||
|
|
||||||
return loadKeyStore(trustStorePath,tsPassword,"JKS");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
@ -1,108 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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";
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,227 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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.Client;
|
|
||||||
import feign.Feign;
|
|
||||||
import feign.FeignException;
|
|
||||||
import feign.Logger;
|
|
||||||
import feign.Request;
|
|
||||||
import feign.RequestInterceptor;
|
|
||||||
import feign.RequestTemplate;
|
|
||||||
import feign.Response;
|
|
||||||
import feign.auth.BasicAuthRequestInterceptor;
|
|
||||||
import feign.gson.GsonDecoder;
|
|
||||||
import feign.gson.GsonEncoder;
|
|
||||||
import feign.jaxrs.JAXRSContract;
|
|
||||||
import feign.slf4j.Slf4jLogger;
|
|
||||||
import org.apache.commons.logging.Log;
|
|
||||||
import org.apache.commons.logging.LogFactory;
|
|
||||||
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;
|
|
||||||
import org.wso2.carbon.base.ServerConfiguration;
|
|
||||||
|
|
||||||
import javax.net.ssl.*;
|
|
||||||
import java.io.FileInputStream;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.InputStream;
|
|
||||||
import java.security.*;
|
|
||||||
import java.security.cert.CertificateException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 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 = "refresh_token";
|
|
||||||
private ApiApplicationRegistrationService apiApplicationRegistrationService;
|
|
||||||
private TokenIssuerService tokenIssuerService;
|
|
||||||
private static Log log = LogFactory.getLog(OAuthRequestInterceptor.class);
|
|
||||||
private ApiApplicationKey apiApplicationKey;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 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().client(getSSLClient()).logger(new Slf4jLogger()).logLevel(
|
|
||||||
Logger.Level.FULL).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);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Api create.
|
|
||||||
*
|
|
||||||
* @param template {@link RequestTemplate} object
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public void apply(RequestTemplate template) {
|
|
||||||
if (tokenInfo == null) {
|
|
||||||
if (apiApplicationKey == null) {
|
|
||||||
ApiRegistrationProfile apiRegistrationProfile = new ApiRegistrationProfile();
|
|
||||||
apiRegistrationProfile.setApplicationName(APPLICATION_NAME);
|
|
||||||
apiRegistrationProfile.setIsAllowedToAllDomains(false);
|
|
||||||
apiRegistrationProfile.setIsMappingAnExistingOAuthApp(false);
|
|
||||||
apiRegistrationProfile.setTags(DEVICE_MANAGEMENT_SERVICE_TAG);
|
|
||||||
apiApplicationKey = apiApplicationRegistrationService.register(apiRegistrationProfile);
|
|
||||||
}
|
|
||||||
String consumerKey = apiApplicationKey.getConsumerKey();
|
|
||||||
String consumerSecret = apiApplicationKey.getConsumerSecret();
|
|
||||||
String username = AuthorizationConfigurationManager.getInstance().getUserName();
|
|
||||||
String password = AuthorizationConfigurationManager.getInstance().getPassword();
|
|
||||||
if (tokenIssuerService == null) {
|
|
||||||
tokenIssuerService = Feign.builder().client(getSSLClient()).logger(new Slf4jLogger()).logLevel(
|
|
||||||
Logger.Level.FULL)
|
|
||||||
.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.setExpires_in(System.currentTimeMillis() + tokenInfo.getExpires_in());
|
|
||||||
} else {
|
|
||||||
synchronized (this) {
|
|
||||||
if (System.currentTimeMillis() + Long.parseLong(refreshTimeOffset) > tokenInfo.getExpires_in()) {
|
|
||||||
try {
|
|
||||||
tokenInfo = tokenIssuerService.getToken(REFRESH_GRANT_TYPE, tokenInfo.getRefresh_token());
|
|
||||||
tokenInfo.setExpires_in(System.currentTimeMillis() + tokenInfo.getExpires_in());
|
|
||||||
} catch (FeignException e) {
|
|
||||||
tokenInfo = null;
|
|
||||||
apply(template);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
String headerValue = Constants.RestConstants.BEARER + tokenInfo.getAccess_token();
|
|
||||||
template.header(Constants.RestConstants.AUTHORIZATION, headerValue);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Client getSSLClient() {
|
|
||||||
boolean isIgnoreHostnameVerification = Boolean.parseBoolean(System.getProperty("org.wso2.ignoreHostnameVerification"));
|
|
||||||
if(isIgnoreHostnameVerification) {
|
|
||||||
return new Client.Default(getSimpleTrustedSSLSocketFactory(), new HostnameVerifier() {
|
|
||||||
@Override
|
|
||||||
public boolean verify(String s, SSLSession sslSession) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}else {
|
|
||||||
return new Client.Default(getTrustedSSLSocketFactory(), null);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static SSLSocketFactory getSimpleTrustedSSLSocketFactory() {
|
|
||||||
try {
|
|
||||||
TrustManager[] trustAllCerts = new TrustManager[]{
|
|
||||||
new X509TrustManager() {
|
|
||||||
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
public void checkClientTrusted(
|
|
||||||
java.security.cert.X509Certificate[] certs, String authType) {
|
|
||||||
}
|
|
||||||
public void checkServerTrusted(
|
|
||||||
java.security.cert.X509Certificate[] certs, String authType) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
SSLContext sc = SSLContext.getInstance("SSL");
|
|
||||||
sc.init(null, trustAllCerts, new java.security.SecureRandom());
|
|
||||||
return sc.getSocketFactory();
|
|
||||||
} catch (KeyManagementException | NoSuchAlgorithmException e) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//FIXME - I know hard-cording values is a bad practice , this code is repeating in
|
|
||||||
// several class, so this hard-coding strings will be removed once this code block is moved into a central location
|
|
||||||
// this should be done after the 3.1.0 release.
|
|
||||||
private static SSLSocketFactory getTrustedSSLSocketFactory() {
|
|
||||||
try {
|
|
||||||
String keyStorePassword = ServerConfiguration.getInstance().getFirstProperty("Security.KeyStore.Password");
|
|
||||||
String keyStoreLocation = ServerConfiguration.getInstance().getFirstProperty("Security.KeyStore.Location");
|
|
||||||
String trustStorePassword = ServerConfiguration.getInstance().getFirstProperty(
|
|
||||||
"Security.TrustStore.Password");
|
|
||||||
String trustStoreLocation = ServerConfiguration.getInstance().getFirstProperty(
|
|
||||||
"Security.TrustStore.Location");
|
|
||||||
|
|
||||||
KeyStore keyStore = loadKeyStore(keyStoreLocation,keyStorePassword,"JKS");
|
|
||||||
KeyStore trustStore = loadTrustStore(trustStoreLocation,trustStorePassword);
|
|
||||||
return initSSLConnection(keyStore,keyStorePassword,trustStore);
|
|
||||||
} catch (KeyManagementException | NoSuchAlgorithmException | KeyStoreException
|
|
||||||
|CertificateException | IOException | UnrecoverableKeyException e) {
|
|
||||||
log.error("Error while creating the SSL socket factory due to "+e.getMessage(),e);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static SSLSocketFactory initSSLConnection(KeyStore keyStore,String keyStorePassword,KeyStore trustStore) throws NoSuchAlgorithmException, UnrecoverableKeyException,
|
|
||||||
KeyStoreException, KeyManagementException {
|
|
||||||
KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance("SunX509");
|
|
||||||
keyManagerFactory.init(keyStore, keyStorePassword.toCharArray());
|
|
||||||
TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance("SunX509");
|
|
||||||
trustManagerFactory.init(trustStore);
|
|
||||||
|
|
||||||
// Create and initialize SSLContext for HTTPS communication
|
|
||||||
SSLContext sslContext = SSLContext.getInstance("SSLv3");
|
|
||||||
sslContext.init(keyManagerFactory.getKeyManagers(), trustManagerFactory.getTrustManagers(), null);
|
|
||||||
SSLContext.setDefault(sslContext);
|
|
||||||
return sslContext.getSocketFactory();
|
|
||||||
}
|
|
||||||
|
|
||||||
private static KeyStore loadKeyStore(String keyStorePath, String ksPassword, String type)
|
|
||||||
throws KeyStoreException, IOException, CertificateException, NoSuchAlgorithmException {
|
|
||||||
InputStream fileInputStream = null;
|
|
||||||
try {
|
|
||||||
char[] keypassChar = ksPassword.toCharArray();
|
|
||||||
KeyStore keyStore = KeyStore.getInstance(type);
|
|
||||||
fileInputStream = new FileInputStream(keyStorePath);
|
|
||||||
keyStore.load(fileInputStream, keypassChar);
|
|
||||||
return keyStore;
|
|
||||||
} finally {
|
|
||||||
if (fileInputStream != null) {
|
|
||||||
fileInputStream.close();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static KeyStore loadTrustStore(String trustStorePath, String tsPassword)
|
|
||||||
throws KeyStoreException, IOException, CertificateException, NoSuchAlgorithmException {
|
|
||||||
|
|
||||||
return loadKeyStore(trustStorePath,tsPassword,"JKS");
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,60 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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 token_type;
|
|
||||||
public long expires_in;
|
|
||||||
public String refresh_token;
|
|
||||||
public String access_token;
|
|
||||||
|
|
||||||
public String getToken_type() {
|
|
||||||
return token_type;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setToken_type(String token_type) {
|
|
||||||
this.token_type = token_type;
|
|
||||||
}
|
|
||||||
|
|
||||||
public long getExpires_in() {
|
|
||||||
return expires_in;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setExpires_in(long expires_in) {
|
|
||||||
this.expires_in = expires_in;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getRefresh_token() {
|
|
||||||
return refresh_token;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRefresh_token(String refresh_token) {
|
|
||||||
this.refresh_token = refresh_token;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getAccess_token() {
|
|
||||||
return access_token;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setAccess_token(String access_token) {
|
|
||||||
this.access_token = access_token;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,63 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
|
||||||
*
|
|
||||||
* WSO2 Inc. licenses this file to you under the Apache License,
|
|
||||||
* Version 2.0 (the "License"); you may not use this file except
|
|
||||||
* in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing,
|
|
||||||
* software distributed under the License is distributed on an
|
|
||||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
||||||
* KIND, either express or implied. See the License for the
|
|
||||||
* specific language governing permissions and limitations
|
|
||||||
* under the License.
|
|
||||||
*/
|
|
||||||
package org.wso2.carbon.appmgt.mdm.restconnector.authorization.client.dto;
|
|
||||||
|
|
||||||
|
|
||||||
public class Activity {
|
|
||||||
|
|
||||||
public enum Type {
|
|
||||||
CONFIG, MESSAGE, INFO, COMMAND, PROFILE, POLICY
|
|
||||||
}
|
|
||||||
private String activityId;
|
|
||||||
private String code;
|
|
||||||
private Type type;
|
|
||||||
private String createdTimeStamp;
|
|
||||||
|
|
||||||
public String getActivityId() {
|
|
||||||
return activityId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setActivityId(String activityId) {
|
|
||||||
this.activityId = activityId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getCode() {
|
|
||||||
return code;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setCode(String code) {
|
|
||||||
this.code = code;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Type getType() {
|
|
||||||
return type;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setType(Type type) {
|
|
||||||
this.type = type;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getCreatedTimeStamp() {
|
|
||||||
return createdTimeStamp;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setCreatedTimeStamp(String createdTimeStamp) {
|
|
||||||
this.createdTimeStamp = createdTimeStamp;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,42 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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 client_id;
|
|
||||||
private String client_secret;
|
|
||||||
|
|
||||||
public String getConsumerKey() {
|
|
||||||
return this.client_id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setClient_id(String consumerKey) {
|
|
||||||
this.client_id = consumerKey;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getConsumerSecret() {
|
|
||||||
return this.client_secret;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setClient_secret(String consumerSecret) {
|
|
||||||
this.client_secret = consumerSecret;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,42 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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);
|
|
||||||
}
|
|
@ -1,79 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,59 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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;
|
|
||||||
|
|
||||||
@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);
|
|
||||||
}
|
|
@ -1,65 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,121 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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 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 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() + ";" +
|
|
||||||
"]" +
|
|
||||||
"]";
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,53 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public class DeviceList {
|
|
||||||
private List<Device> devices = new ArrayList<>();
|
|
||||||
private int count;
|
|
||||||
|
|
||||||
public int getCount() {
|
|
||||||
return count;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setCount(int count) {
|
|
||||||
this.count = count;
|
|
||||||
}
|
|
||||||
|
|
||||||
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();
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,47 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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);
|
|
||||||
}
|
|
@ -1,118 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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();
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,126 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,25 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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
|
|
||||||
}
|
|
@ -1,56 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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);
|
|
||||||
}
|
|
@ -1,110 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The DTO class to AuthorizationConfigurationManager.
|
|
||||||
*/
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,43 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,56 +0,0 @@
|
|||||||
/*
|
|
||||||
*
|
|
||||||
* 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();
|
|
||||||
mdmServiceRegistration = bundleContext.registerService(ApplicationOperations.class.getName(), new
|
|
||||||
ApplicationOperationsImpl(), null);
|
|
||||||
if (log.isDebugEnabled()) {
|
|
||||||
log.debug("WSO2MDM MDM Component activated.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
protected void deactivate(ComponentContext context) {
|
|
||||||
if (mdmServiceRegistration != null) {
|
|
||||||
mdmServiceRegistration.unregister();
|
|
||||||
mdmServiceRegistration = null;
|
|
||||||
}
|
|
||||||
if (log.isDebugEnabled()) {
|
|
||||||
log.debug("WSO2MDM MDM Component deactivated");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,60 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<!--
|
|
||||||
~ 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.
|
|
||||||
-->
|
|
||||||
|
|
||||||
<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>extensions</artifactId>
|
|
||||||
<version>4.2.7-SNAPSHOT</version>
|
|
||||||
<relativePath>../pom.xml</relativePath>
|
|
||||||
</parent>
|
|
||||||
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
|
||||||
<artifactId>appm-connector</artifactId>
|
|
||||||
<packaging>pom</packaging>
|
|
||||||
<name>WSO2 Carbon - IoT Base Plugin</name>
|
|
||||||
<url>http://wso2.org</url>
|
|
||||||
|
|
||||||
<modules>
|
|
||||||
<module>org.wso2.carbon.appmgt.mdm.osgiconnector</module>
|
|
||||||
<module>org.wso2.carbon.appmgt.mdm.restconnector</module>
|
|
||||||
</modules>
|
|
||||||
|
|
||||||
<build>
|
|
||||||
<pluginManagement>
|
|
||||||
<plugins>
|
|
||||||
<plugin>
|
|
||||||
<groupId>org.apache.felix</groupId>
|
|
||||||
<artifactId>maven-scr-plugin</artifactId>
|
|
||||||
<version>1.7.2</version>
|
|
||||||
<executions>
|
|
||||||
<execution>
|
|
||||||
<id>generate-scr-scrdescriptor</id>
|
|
||||||
<goals>
|
|
||||||
<goal>scr</goal>
|
|
||||||
</goals>
|
|
||||||
</execution>
|
|
||||||
</executions>
|
|
||||||
</plugin>
|
|
||||||
</plugins>
|
|
||||||
</pluginManagement>
|
|
||||||
</build>
|
|
||||||
|
|
||||||
</project>
|
|
@ -1,94 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<!--
|
|
||||||
~ Copyright (c) 2016, 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>4.2.7-SNAPSHOT</version>
|
|
||||||
<relativePath>../pom.xml</relativePath>
|
|
||||||
</parent>
|
|
||||||
|
|
||||||
<artifactId>org.wso2.carbon.appmgt.mdm.osgiconnector.feature</artifactId>
|
|
||||||
<packaging>pom</packaging>
|
|
||||||
<version>4.2.7-SNAPSHOT</version>
|
|
||||||
<name>WSO2 Carbon - App management MDM OSGI Connector</name>
|
|
||||||
<url>http://wso2.org</url>
|
|
||||||
<description>This feature contains the core bundles required for APP management OSGI MDM connection
|
|
||||||
</description>
|
|
||||||
|
|
||||||
<dependencies>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.wso2.carbon.devicemgt-plugins</groupId>
|
|
||||||
<artifactId>org.wso2.carbon.appmgt.mdm.osgiconnector</artifactId>
|
|
||||||
<version>4.2.7-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.osgiconnector</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.osgiconnector:${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>
|
|
@ -1,96 +0,0 @@
|
|||||||
<?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>4.2.7-SNAPSHOT</version>
|
|
||||||
<relativePath>../pom.xml</relativePath>
|
|
||||||
</parent>
|
|
||||||
|
|
||||||
<artifactId>org.wso2.carbon.appmgt.mdm.restconnector.feature</artifactId>
|
|
||||||
<packaging>pom</packaging>
|
|
||||||
<version>4.2.7-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>4.2.7-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