commit
73a600713c
@ -0,0 +1,149 @@
|
||||
<?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>extensions</artifactId>
|
||||
<version>2.2.3-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<version>2.2.3-SNAPSHOT</version>
|
||||
<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>
|
||||
</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>
|
@ -0,0 +1,296 @@
|
||||
/*
|
||||
* 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.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.utils.MobileApplicationException;
|
||||
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
|
||||
import org.wso2.carbon.device.mgt.common.DeviceManagementException;
|
||||
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.operation.mgt.Activity;
|
||||
import org.wso2.carbon.device.mgt.common.operation.mgt.Operation;
|
||||
|
||||
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);
|
||||
|
||||
/**
|
||||
* @param applicationOperationAction holds the information needs to perform an action on mdm.
|
||||
* @throws MobileApplicationException
|
||||
*/
|
||||
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(applicationOperationAction.getApp().getPlatform().equalsIgnoreCase(device.getType())){
|
||||
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) {
|
||||
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 {
|
||||
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
|
||||
*/
|
||||
public List<Device> getDevices(ApplicationOperationDevice applicationOperationDevice)
|
||||
throws MobileApplicationException {
|
||||
|
||||
List<Device> devices;
|
||||
try {
|
||||
List<org.wso2.carbon.device.mgt.common.Device> deviceList = MDMServiceAPIUtils
|
||||
.getDeviceManagementService(applicationOperationDevice.getTenantId()).
|
||||
getDevicesOfUser(
|
||||
applicationOperationDevice.getCurrentUser().getUsername());
|
||||
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());
|
||||
|
||||
}
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -0,0 +1,60 @@
|
||||
/*
|
||||
* 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.");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
@ -0,0 +1,126 @@
|
||||
/*
|
||||
* 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;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,21 @@
|
||||
/*
|
||||
* 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
|
||||
|
||||
}
|
@ -0,0 +1,46 @@
|
||||
/*
|
||||
* 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);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,28 @@
|
||||
/*
|
||||
* 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 {
|
||||
|
||||
}
|
@ -0,0 +1,55 @@
|
||||
/*
|
||||
* 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;
|
||||
}
|
||||
}
|
@ -0,0 +1,61 @@
|
||||
/*
|
||||
* 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);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,34 @@
|
||||
/*
|
||||
* 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;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,35 @@
|
||||
/*
|
||||
* 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;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,74 @@
|
||||
/*
|
||||
* 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);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,40 @@
|
||||
/*
|
||||
* 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;
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,75 @@
|
||||
/*
|
||||
* 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);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,50 @@
|
||||
/*
|
||||
* 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;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,152 @@
|
||||
/*
|
||||
* 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());
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,114 @@
|
||||
/*
|
||||
* 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) 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.getIdentifier());
|
||||
operation.setPayLoad(removeApplication.toJSON());
|
||||
return operation;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,82 @@
|
||||
/*
|
||||
* 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";
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,74 @@
|
||||
/*
|
||||
* 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.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 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;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,58 @@
|
||||
<?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>carbon-device-mgt-plugins-parent</artifactId>
|
||||
<version>2.2.3-SNAPSHOT</version>
|
||||
<relativePath>../../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<artifactId>extensions</artifactId>
|
||||
<packaging>pom</packaging>
|
||||
<name>WSO2 Carbon - Mobile Plugins Extensions</name>
|
||||
<url>http://wso2.org</url>
|
||||
|
||||
<modules>
|
||||
<module>org.wso2.carbon.appmgt.mdm.osgiconnector</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,124 +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.mdm.services.android.services.event;
|
||||
|
||||
import io.swagger.annotations.*;
|
||||
import org.wso2.carbon.mdm.services.android.bean.DeviceState;
|
||||
import org.wso2.carbon.mdm.services.android.bean.wrapper.EventBeanWrapper;
|
||||
|
||||
import javax.ws.rs.*;
|
||||
import javax.ws.rs.core.MediaType;
|
||||
import javax.ws.rs.core.Response;
|
||||
|
||||
/**
|
||||
* APIs related to events published from Android agent are implemented here.
|
||||
*/
|
||||
@Api(value = "EventService", description = "Android Device Management REST-API implementation.")
|
||||
public interface EventService {
|
||||
String ACCEPT = "Accept";
|
||||
|
||||
@POST
|
||||
@ApiOperation(
|
||||
consumes = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "POST",
|
||||
value = "Event Publishing via REST API.",
|
||||
notes = "Publish events received by the WSO2 EMM Android client to WSO2 DAS using this API."
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 201, message = "Event is published successfully."),
|
||||
@ApiResponse(code = 500, message = "Error occurred while publishing the events from Android agent.")
|
||||
})
|
||||
Response publishEvents(@ApiParam(name = "acceptHeader", value = "Accept Header.")
|
||||
@HeaderParam(ACCEPT) String acceptHeader,
|
||||
@ApiParam(name = "eventBeanWrapper",
|
||||
value = "Information of the agent event to be published on DAS.")
|
||||
EventBeanWrapper eventBeanWrapper);
|
||||
|
||||
@GET
|
||||
@Path("{deviceId}")
|
||||
@Produces("application/json")
|
||||
@ApiOperation(
|
||||
consumes = MediaType.APPLICATION_JSON,
|
||||
produces = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "GET",
|
||||
value = "Getting Event Details of a Device.",
|
||||
notes = "Get the event details received by an Android device using this API.",
|
||||
response = DeviceState.class,
|
||||
responseContainer = "List"
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 200, message = "List of Device statuses."),
|
||||
@ApiResponse(code = 500,
|
||||
message = "Error occurred while getting published events for specific given device.")
|
||||
})
|
||||
Response retrieveAlert(@ApiParam(name = "acceptHeader", value = "Accept Header.")
|
||||
@HeaderParam(ACCEPT) String acceptHeader,
|
||||
@ApiParam(name = "deviceId", value = "DeviceId which need to retrieve published events.")
|
||||
@PathParam("deviceId") String deviceId);
|
||||
|
||||
@GET
|
||||
@Path("{deviceId}/date")
|
||||
@Produces("application/json")
|
||||
@ApiOperation(
|
||||
consumes = MediaType.APPLICATION_JSON,
|
||||
produces = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "GET",
|
||||
value = "Getting Event Details for a Given Time Period.",
|
||||
notes = "Get the event details of a device for a given time duration using this API.",
|
||||
response = DeviceState.class,
|
||||
responseContainer = "List"
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 200, message = "event details of a device for a given time duration"),
|
||||
@ApiResponse(code = 500, message = "Error occurred while getting published events for" +
|
||||
" specific device on given Date.")
|
||||
})
|
||||
Response retrieveAlertFromDate(@ApiParam(name = "acceptHeader", value = "Accept Header.")
|
||||
@HeaderParam(ACCEPT) String acceptHeader,
|
||||
@ApiParam(name = "deviceId",
|
||||
value = "Device Identifier to be need to retrieve events.")
|
||||
@PathParam("deviceId") String deviceId,
|
||||
@ApiParam(name = "from", value = "From Date.")
|
||||
@QueryParam("from") long from,
|
||||
@ApiParam(name = "to", value = "To Date.")
|
||||
@QueryParam("to") long to);
|
||||
|
||||
@GET
|
||||
@Path("{deviceId}/type/{type}")
|
||||
@ApiOperation(
|
||||
consumes = MediaType.APPLICATION_JSON,
|
||||
produces = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "GET",
|
||||
value = "Getting Event Details for a Given Time Period.",
|
||||
notes = "Get the event details of a device for a given time duration using this API.",
|
||||
response = DeviceState.class,
|
||||
responseContainer = "List"
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(code = 200, message = "event details of a device for a given time duration"),
|
||||
@ApiResponse(code = 500, message = "Error occurred while getting published events for" +
|
||||
" specific device on given Date.")
|
||||
})
|
||||
Response retrieveAlertType(@ApiParam(name = "acceptHeader", value = "Accept Header.")
|
||||
@HeaderParam(ACCEPT) String acceptHeader,
|
||||
@ApiParam(name = "deviceId", value = "Device Identifier to be need to retrieve events.")
|
||||
@PathParam("deviceId") String deviceId,
|
||||
@ApiParam(name = "type", value = "Type of the Alert to be need to retrieve events.")
|
||||
@PathParam("type") String type);
|
||||
}
|
@ -1,166 +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.mdm.services.android.services.event.impl;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.wso2.carbon.analytics.datasource.commons.exception.AnalyticsException;
|
||||
import org.wso2.carbon.device.mgt.analytics.data.publisher.exception.DataPublisherConfigurationException;
|
||||
import org.wso2.carbon.mdm.services.android.bean.DeviceState;
|
||||
import org.wso2.carbon.mdm.services.android.bean.wrapper.EventBeanWrapper;
|
||||
import org.wso2.carbon.mdm.services.android.exception.AndroidAgentException;
|
||||
import org.wso2.carbon.mdm.services.android.services.event.EventService;
|
||||
import org.wso2.carbon.mdm.services.android.util.AndroidAPIUtils;
|
||||
import org.wso2.carbon.mdm.services.android.util.Message;
|
||||
|
||||
import javax.ws.rs.*;
|
||||
import javax.ws.rs.core.MediaType;
|
||||
import javax.ws.rs.core.Response;
|
||||
import java.util.List;
|
||||
|
||||
public class EventServiceImpl implements EventService {
|
||||
|
||||
private static final String ACCEPT = "Accept";
|
||||
private static Log log = LogFactory.getLog(EventService.class);
|
||||
private static final String EVENT_STREAM_DEFINITION = "android_agent";
|
||||
|
||||
@POST
|
||||
public Response publishEvents(@HeaderParam(ACCEPT) String acceptHeader,
|
||||
EventBeanWrapper eventBeanWrapper) {
|
||||
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("Invoking Android device even logging.");
|
||||
}
|
||||
Message message = new Message();
|
||||
MediaType responseMediaType = AndroidAPIUtils.getResponseMediaType(acceptHeader);
|
||||
|
||||
Object payload[] = {eventBeanWrapper.getDeviceIdentifier(), eventBeanWrapper.getPayload(),
|
||||
eventBeanWrapper.getType()};
|
||||
try {
|
||||
if (AndroidAPIUtils.getEventPublisherService().publishEvent(
|
||||
EVENT_STREAM_DEFINITION, "1.0.0", new Object[0], new Object[0], payload)) {
|
||||
message.setResponseCode("Event is published successfully.");
|
||||
return Response.status(Response.Status.CREATED).entity(message).type(responseMediaType).build();
|
||||
} else {
|
||||
message.setResponseCode("Error occurred while publishing the event.");
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).
|
||||
entity(message).type(responseMediaType).build();
|
||||
}
|
||||
} catch (DataPublisherConfigurationException e) {
|
||||
String msg = "Error occurred while publishing the events from Android agent.";
|
||||
log.error(msg, e);
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).type(responseMediaType).build();
|
||||
}
|
||||
}
|
||||
|
||||
@Path("{deviceId}")
|
||||
@Produces("application/json")
|
||||
@GET
|
||||
public Response retrieveAlert(@HeaderParam(ACCEPT) String acceptHeader,
|
||||
@PathParam("deviceId") String deviceId) {
|
||||
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("Retrieving events for given device Identifier.");
|
||||
}
|
||||
Message message = new Message();
|
||||
MediaType responseMediaType = AndroidAPIUtils.getResponseMediaType(acceptHeader);
|
||||
String query = "deviceIdentifier:" + deviceId;
|
||||
List<DeviceState> deviceStates;
|
||||
try {
|
||||
deviceStates = AndroidAPIUtils.getAllEventsForDevice(EVENT_STREAM_DEFINITION, query);
|
||||
if (deviceStates == null) {
|
||||
message.setResponseCode("No any alerts are published for Device: " + deviceId + ".");
|
||||
return Response.status(Response.Status.OK).entity(message).type(responseMediaType).build();
|
||||
|
||||
} else {
|
||||
return Response.status(Response.Status.OK).entity(deviceStates).build();
|
||||
}
|
||||
} catch (AnalyticsException e) {
|
||||
String msg = "Error occurred while getting published events for specific " +
|
||||
"Device: " + deviceId + ".";
|
||||
log.error(msg, e);
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).type(responseMediaType).build();
|
||||
}
|
||||
}
|
||||
|
||||
@Path("{deviceId}/date")
|
||||
@Produces("application/json")
|
||||
@GET
|
||||
public Response retrieveAlertFromDate(@HeaderParam(ACCEPT) String acceptHeader,
|
||||
@PathParam("deviceId") String deviceId, @QueryParam("from") long from,
|
||||
@QueryParam("to") long to) {
|
||||
String fromDate = String.valueOf(from);
|
||||
String toDate = String.valueOf(to);
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("Retrieving events for given device Identifier and time period.");
|
||||
}
|
||||
Message message = new Message();
|
||||
MediaType responseMediaType = AndroidAPIUtils.getResponseMediaType(acceptHeader);
|
||||
|
||||
String query = "deviceIdentifier:" + deviceId + " AND _timestamp: [" + fromDate + " TO " + toDate + "]";
|
||||
List<DeviceState> deviceStates;
|
||||
try {
|
||||
deviceStates = AndroidAPIUtils.getAllEventsForDevice(EVENT_STREAM_DEFINITION, query);
|
||||
if (deviceStates == null) {
|
||||
message.
|
||||
setResponseCode("No any alerts are published on given date for given Device: " + deviceId + ".");
|
||||
return Response.status(Response.Status.OK).entity(message).build();
|
||||
|
||||
} else {
|
||||
return Response.status(Response.Status.OK).entity(deviceStates).type(responseMediaType).build();
|
||||
}
|
||||
} catch (AnalyticsException e) {
|
||||
String msg = "Error occurred while getting published events for specific " +
|
||||
"Device: " + deviceId + " on given Date.";
|
||||
log.error(msg, e);
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).type(responseMediaType).build();
|
||||
}
|
||||
}
|
||||
|
||||
@Path("{deviceId}/type/{type}")
|
||||
@GET
|
||||
public Response retrieveAlertType(@HeaderParam(ACCEPT) String acceptHeader,
|
||||
@PathParam("deviceId") String deviceId, @PathParam("type") String type) {
|
||||
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("Retrieving events for given device identifier and type.");
|
||||
}
|
||||
Message message = new Message();
|
||||
MediaType responseMediaType = AndroidAPIUtils.getResponseMediaType(acceptHeader);
|
||||
String query = "deviceIdentifier:" + deviceId + " AND type:" + type;
|
||||
List<DeviceState> deviceStates;
|
||||
try {
|
||||
deviceStates = AndroidAPIUtils.getAllEventsForDevice(EVENT_STREAM_DEFINITION, query);
|
||||
if (deviceStates == null) {
|
||||
message.setResponseCode("No any alerts are published for given Device: "
|
||||
+ deviceId + " on specific date.");
|
||||
return Response.status(Response.Status.OK).entity(message).build();
|
||||
|
||||
} else {
|
||||
return Response.status(Response.Status.OK).entity(deviceStates).type(responseMediaType).build();
|
||||
}
|
||||
} catch (AnalyticsException e) {
|
||||
String msg = "Error occurred while getting published events for specific " +
|
||||
"Device: " + deviceId + "and given device Type.";
|
||||
log.error(msg, e);
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).type(responseMediaType).build();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue