diff --git a/components/extensions/org.wso2.carbon.appmgt.mdm.osgiconnector/pom.xml b/components/extensions/org.wso2.carbon.appmgt.mdm.osgiconnector/pom.xml
new file mode 100644
index 000000000..ae948f1b4
--- /dev/null
+++ b/components/extensions/org.wso2.carbon.appmgt.mdm.osgiconnector/pom.xml
@@ -0,0 +1,149 @@
+
+
+
+
+ org.wso2.carbon.devicemgt-plugins
+ extensions
+ 2.2.2-SNAPSHOT
+ ../pom.xml
+
+ 4.0.0
+ 2.2.2-SNAPSHOT
+ org.wso2.carbon.appmgt.mdm.osgiconnector
+ bundle
+ WSO2 Carbon - App Manager WSO2 MDM OSGI Connector Component
+ http://maven.apache.org
+
+
+
+
+ org.apache.felix
+ maven-scr-plugin
+
+
+ generate-scr-scrdescriptor
+
+ scr
+
+
+
+
+
+ org.apache.felix
+ maven-bundle-plugin
+ true
+
+
+ ${project.artifactId}
+ ${project.artifactId}
+ org.wso2.carbon.appmgt.mdm.osgiconnector.internal
+
+ 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
+
+
+ !org.wso2.carbon.appmgt.mdm.osgiconnector.internal,
+ org.wso2.carbon.appmgt.mdm.osgiconnector.*
+
+
+
+
+
+
+
+
+ org.wso2.carbon.appmgt
+ org.wso2.carbon.appmgt.mobile
+
+
+ org.apache.ws.commons.axiom
+ axiom-api
+
+
+ org.apache.ws.commons.axiom
+ axiom-impl
+
+
+
+
+ org.wso2.carbon.devicemgt
+ org.wso2.carbon.device.mgt.core
+
+
+ org.apache.ws.commons.axiom
+ axiom-api
+
+
+ org.apache.ws.commons.axiom
+ axiom-impl
+
+
+
+
+ org.wso2.carbon.devicemgt
+ org.wso2.carbon.policy.mgt.core
+
+
+ org.apache.ws.commons.axiom
+ axiom-api
+
+
+ org.apache.ws.commons.axiom
+ axiom-impl
+
+
+
+
+ org.wso2.carbon.devicemgt
+ org.wso2.carbon.device.mgt.common
+
+
+ org.apache.ws.commons.axiom
+ axiom-api
+
+
+ org.apache.ws.commons.axiom
+ axiom-impl
+
+
+
+
+ commons-io.wso2
+ commons-io
+
+
+ com.googlecode.json-simple.wso2
+ json-simple
+
+
+ com.googlecode.plist
+ dd-plist
+
+
+ org.apache.felix
+ org.apache.felix.scr
+
+
+ com.google.code.gson
+ gson
+
+
+
+
diff --git a/components/extensions/org.wso2.carbon.appmgt.mdm.osgiconnector/src/main/java/org/wso2/carbon/appmgt/mdm/osgiconnector/ApplicationOperationsImpl.java b/components/extensions/org.wso2.carbon.appmgt.mdm.osgiconnector/src/main/java/org/wso2/carbon/appmgt/mdm/osgiconnector/ApplicationOperationsImpl.java
new file mode 100644
index 000000000..766698c9c
--- /dev/null
+++ b/components/extensions/org.wso2.carbon.appmgt.mdm.osgiconnector/src/main/java/org/wso2/carbon/appmgt/mdm/osgiconnector/ApplicationOperationsImpl.java
@@ -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 deviceIdentifiers = new ArrayList<>();
+ List 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 getDevices(ApplicationOperationDevice applicationOperationDevice)
+ throws MobileApplicationException {
+
+ List devices;
+ try {
+ List 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);
+ }
+ }
+
+}
+
diff --git a/components/extensions/org.wso2.carbon.appmgt.mdm.osgiconnector/src/main/java/org/wso2/carbon/appmgt/mdm/osgiconnector/internal/DeviceApplicationServiceComponent.java b/components/extensions/org.wso2.carbon.appmgt.mdm.osgiconnector/src/main/java/org/wso2/carbon/appmgt/mdm/osgiconnector/internal/DeviceApplicationServiceComponent.java
new file mode 100644
index 000000000..085f3a650
--- /dev/null
+++ b/components/extensions/org.wso2.carbon.appmgt.mdm.osgiconnector/src/main/java/org/wso2/carbon/appmgt/mdm/osgiconnector/internal/DeviceApplicationServiceComponent.java
@@ -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.");
+ }
+
+ }
+
+}
+
+
diff --git a/components/extensions/org.wso2.carbon.appmgt.mdm.osgiconnector/src/main/java/org/wso2/carbon/appmgt/mdm/osgiconnector/mdmmgt/beans/MobileApp.java b/components/extensions/org.wso2.carbon.appmgt.mdm.osgiconnector/src/main/java/org/wso2/carbon/appmgt/mdm/osgiconnector/mdmmgt/beans/MobileApp.java
new file mode 100644
index 000000000..2933669a4
--- /dev/null
+++ b/components/extensions/org.wso2.carbon.appmgt.mdm.osgiconnector/src/main/java/org/wso2/carbon/appmgt/mdm/osgiconnector/mdmmgt/beans/MobileApp.java
@@ -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;
+ }
+
+}
diff --git a/components/extensions/org.wso2.carbon.appmgt.mdm.osgiconnector/src/main/java/org/wso2/carbon/appmgt/mdm/osgiconnector/mdmmgt/beans/MobileAppTypes.java b/components/extensions/org.wso2.carbon.appmgt.mdm.osgiconnector/src/main/java/org/wso2/carbon/appmgt/mdm/osgiconnector/mdmmgt/beans/MobileAppTypes.java
new file mode 100644
index 000000000..9b1b306c0
--- /dev/null
+++ b/components/extensions/org.wso2.carbon.appmgt.mdm.osgiconnector/src/main/java/org/wso2/carbon/appmgt/mdm/osgiconnector/mdmmgt/beans/MobileAppTypes.java
@@ -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
+
+}
diff --git a/components/extensions/org.wso2.carbon.appmgt.mdm.osgiconnector/src/main/java/org/wso2/carbon/appmgt/mdm/osgiconnector/mdmmgt/beans/android/AndroidApplication.java b/components/extensions/org.wso2.carbon.appmgt.mdm.osgiconnector/src/main/java/org/wso2/carbon/appmgt/mdm/osgiconnector/mdmmgt/beans/android/AndroidApplication.java
new file mode 100644
index 000000000..d638d7b11
--- /dev/null
+++ b/components/extensions/org.wso2.carbon.appmgt.mdm.osgiconnector/src/main/java/org/wso2/carbon/appmgt/mdm/osgiconnector/mdmmgt/beans/android/AndroidApplication.java
@@ -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);
+ }
+
+}
diff --git a/components/extensions/org.wso2.carbon.appmgt.mdm.osgiconnector/src/main/java/org/wso2/carbon/appmgt/mdm/osgiconnector/mdmmgt/beans/android/AppStoreApplication.java b/components/extensions/org.wso2.carbon.appmgt.mdm.osgiconnector/src/main/java/org/wso2/carbon/appmgt/mdm/osgiconnector/mdmmgt/beans/android/AppStoreApplication.java
new file mode 100644
index 000000000..6f78eb244
--- /dev/null
+++ b/components/extensions/org.wso2.carbon.appmgt.mdm.osgiconnector/src/main/java/org/wso2/carbon/appmgt/mdm/osgiconnector/mdmmgt/beans/android/AppStoreApplication.java
@@ -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 {
+
+}
diff --git a/components/extensions/org.wso2.carbon.appmgt.mdm.osgiconnector/src/main/java/org/wso2/carbon/appmgt/mdm/osgiconnector/mdmmgt/beans/android/EnterpriseApplication.java b/components/extensions/org.wso2.carbon.appmgt.mdm.osgiconnector/src/main/java/org/wso2/carbon/appmgt/mdm/osgiconnector/mdmmgt/beans/android/EnterpriseApplication.java
new file mode 100644
index 000000000..f8990e585
--- /dev/null
+++ b/components/extensions/org.wso2.carbon.appmgt.mdm.osgiconnector/src/main/java/org/wso2/carbon/appmgt/mdm/osgiconnector/mdmmgt/beans/android/EnterpriseApplication.java
@@ -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;
+ }
+}
diff --git a/components/extensions/org.wso2.carbon.appmgt.mdm.osgiconnector/src/main/java/org/wso2/carbon/appmgt/mdm/osgiconnector/mdmmgt/beans/android/WebApplication.java b/components/extensions/org.wso2.carbon.appmgt.mdm.osgiconnector/src/main/java/org/wso2/carbon/appmgt/mdm/osgiconnector/mdmmgt/beans/android/WebApplication.java
new file mode 100644
index 000000000..08a35e08e
--- /dev/null
+++ b/components/extensions/org.wso2.carbon.appmgt.mdm.osgiconnector/src/main/java/org/wso2/carbon/appmgt/mdm/osgiconnector/mdmmgt/beans/android/WebApplication.java
@@ -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);
+ }
+
+}
diff --git a/components/extensions/org.wso2.carbon.appmgt.mdm.osgiconnector/src/main/java/org/wso2/carbon/appmgt/mdm/osgiconnector/mdmmgt/beans/ios/AppStoreApplication.java b/components/extensions/org.wso2.carbon.appmgt.mdm.osgiconnector/src/main/java/org/wso2/carbon/appmgt/mdm/osgiconnector/mdmmgt/beans/ios/AppStoreApplication.java
new file mode 100644
index 000000000..b8e6a4e09
--- /dev/null
+++ b/components/extensions/org.wso2.carbon.appmgt.mdm.osgiconnector/src/main/java/org/wso2/carbon/appmgt/mdm/osgiconnector/mdmmgt/beans/ios/AppStoreApplication.java
@@ -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;
+ }
+
+}
diff --git a/components/extensions/org.wso2.carbon.appmgt.mdm.osgiconnector/src/main/java/org/wso2/carbon/appmgt/mdm/osgiconnector/mdmmgt/beans/ios/EnterpriseApplication.java b/components/extensions/org.wso2.carbon.appmgt.mdm.osgiconnector/src/main/java/org/wso2/carbon/appmgt/mdm/osgiconnector/mdmmgt/beans/ios/EnterpriseApplication.java
new file mode 100644
index 000000000..3a09b7325
--- /dev/null
+++ b/components/extensions/org.wso2.carbon.appmgt.mdm.osgiconnector/src/main/java/org/wso2/carbon/appmgt/mdm/osgiconnector/mdmmgt/beans/ios/EnterpriseApplication.java
@@ -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;
+ }
+
+}
diff --git a/components/extensions/org.wso2.carbon.appmgt.mdm.osgiconnector/src/main/java/org/wso2/carbon/appmgt/mdm/osgiconnector/mdmmgt/beans/ios/IOSApplication.java b/components/extensions/org.wso2.carbon.appmgt.mdm.osgiconnector/src/main/java/org/wso2/carbon/appmgt/mdm/osgiconnector/mdmmgt/beans/ios/IOSApplication.java
new file mode 100644
index 000000000..12a8db23a
--- /dev/null
+++ b/components/extensions/org.wso2.carbon.appmgt.mdm.osgiconnector/src/main/java/org/wso2/carbon/appmgt/mdm/osgiconnector/mdmmgt/beans/ios/IOSApplication.java
@@ -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);
+ }
+
+}
diff --git a/components/extensions/org.wso2.carbon.appmgt.mdm.osgiconnector/src/main/java/org/wso2/carbon/appmgt/mdm/osgiconnector/mdmmgt/beans/ios/RemoveApplication.java b/components/extensions/org.wso2.carbon.appmgt.mdm.osgiconnector/src/main/java/org/wso2/carbon/appmgt/mdm/osgiconnector/mdmmgt/beans/ios/RemoveApplication.java
new file mode 100644
index 000000000..22c7963de
--- /dev/null
+++ b/components/extensions/org.wso2.carbon.appmgt.mdm.osgiconnector/src/main/java/org/wso2/carbon/appmgt/mdm/osgiconnector/mdmmgt/beans/ios/RemoveApplication.java
@@ -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);
+ }
+
+}
diff --git a/components/extensions/org.wso2.carbon.appmgt.mdm.osgiconnector/src/main/java/org/wso2/carbon/appmgt/mdm/osgiconnector/mdmmgt/beans/ios/WebClip.java b/components/extensions/org.wso2.carbon.appmgt.mdm.osgiconnector/src/main/java/org/wso2/carbon/appmgt/mdm/osgiconnector/mdmmgt/beans/ios/WebClip.java
new file mode 100644
index 000000000..000374c43
--- /dev/null
+++ b/components/extensions/org.wso2.carbon.appmgt.mdm.osgiconnector/src/main/java/org/wso2/carbon/appmgt/mdm/osgiconnector/mdmmgt/beans/ios/WebClip.java
@@ -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);
+ }
+
+}
diff --git a/components/extensions/org.wso2.carbon.appmgt.mdm.osgiconnector/src/main/java/org/wso2/carbon/appmgt/mdm/osgiconnector/mdmmgt/common/DeviceApplicationException.java b/components/extensions/org.wso2.carbon.appmgt.mdm.osgiconnector/src/main/java/org/wso2/carbon/appmgt/mdm/osgiconnector/mdmmgt/common/DeviceApplicationException.java
new file mode 100644
index 000000000..84818e4a0
--- /dev/null
+++ b/components/extensions/org.wso2.carbon.appmgt.mdm.osgiconnector/src/main/java/org/wso2/carbon/appmgt/mdm/osgiconnector/mdmmgt/common/DeviceApplicationException.java
@@ -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;
+ }
+
+}
diff --git a/components/extensions/org.wso2.carbon.appmgt.mdm.osgiconnector/src/main/java/org/wso2/carbon/appmgt/mdm/osgiconnector/mdmmgt/util/AndroidApplicationOperationUtil.java b/components/extensions/org.wso2.carbon.appmgt.mdm.osgiconnector/src/main/java/org/wso2/carbon/appmgt/mdm/osgiconnector/mdmmgt/util/AndroidApplicationOperationUtil.java
new file mode 100644
index 000000000..7c1288b1a
--- /dev/null
+++ b/components/extensions/org.wso2.carbon.appmgt.mdm.osgiconnector/src/main/java/org/wso2/carbon/appmgt/mdm/osgiconnector/mdmmgt/util/AndroidApplicationOperationUtil.java
@@ -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());
+ }
+
+}
diff --git a/components/extensions/org.wso2.carbon.appmgt.mdm.osgiconnector/src/main/java/org/wso2/carbon/appmgt/mdm/osgiconnector/mdmmgt/util/IOSApplicationOperationUtil.java b/components/extensions/org.wso2.carbon.appmgt.mdm.osgiconnector/src/main/java/org/wso2/carbon/appmgt/mdm/osgiconnector/mdmmgt/util/IOSApplicationOperationUtil.java
new file mode 100644
index 000000000..3167ed8d3
--- /dev/null
+++ b/components/extensions/org.wso2.carbon.appmgt.mdm.osgiconnector/src/main/java/org/wso2/carbon/appmgt/mdm/osgiconnector/mdmmgt/util/IOSApplicationOperationUtil.java
@@ -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;
+ }
+
+}
diff --git a/components/extensions/org.wso2.carbon.appmgt.mdm.osgiconnector/src/main/java/org/wso2/carbon/appmgt/mdm/osgiconnector/mdmmgt/util/MDMAppConstants.java b/components/extensions/org.wso2.carbon.appmgt.mdm.osgiconnector/src/main/java/org/wso2/carbon/appmgt/mdm/osgiconnector/mdmmgt/util/MDMAppConstants.java
new file mode 100644
index 000000000..5903b6484
--- /dev/null
+++ b/components/extensions/org.wso2.carbon.appmgt.mdm.osgiconnector/src/main/java/org/wso2/carbon/appmgt/mdm/osgiconnector/mdmmgt/util/MDMAppConstants.java
@@ -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";
+ }
+
+}
diff --git a/components/extensions/org.wso2.carbon.appmgt.mdm.osgiconnector/src/main/java/org/wso2/carbon/appmgt/mdm/osgiconnector/mdmmgt/util/MDMServiceAPIUtils.java b/components/extensions/org.wso2.carbon.appmgt.mdm.osgiconnector/src/main/java/org/wso2/carbon/appmgt/mdm/osgiconnector/mdmmgt/util/MDMServiceAPIUtils.java
new file mode 100644
index 000000000..922f01732
--- /dev/null
+++ b/components/extensions/org.wso2.carbon.appmgt.mdm.osgiconnector/src/main/java/org/wso2/carbon/appmgt/mdm/osgiconnector/mdmmgt/util/MDMServiceAPIUtils.java
@@ -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;
+ }
+
+}
diff --git a/components/extensions/pom.xml b/components/extensions/pom.xml
new file mode 100644
index 000000000..ddd840fb7
--- /dev/null
+++ b/components/extensions/pom.xml
@@ -0,0 +1,58 @@
+
+
+
+
+
+
+ org.wso2.carbon.devicemgt-plugins
+ carbon-device-mgt-plugins-parent
+ 2.2.2-SNAPSHOT
+ ../../pom.xml
+
+
+ 4.0.0
+ extensions
+ pom
+ WSO2 Carbon - Mobile Plugins Extensions
+ http://wso2.org
+
+
+ org.wso2.carbon.appmgt.mdm.osgiconnector
+
+
+
+
+
+
+ org.apache.felix
+ maven-scr-plugin
+ 1.7.2
+
+
+ generate-scr-scrdescriptor
+
+ scr
+
+
+
+
+
+
+
+
diff --git a/features/extensions-feature/org.wso2.carbon.appmgt.mdm.osgiconnector.feature/pom.xml b/features/extensions-feature/org.wso2.carbon.appmgt.mdm.osgiconnector.feature/pom.xml
new file mode 100644
index 000000000..8f8fe607f
--- /dev/null
+++ b/features/extensions-feature/org.wso2.carbon.appmgt.mdm.osgiconnector.feature/pom.xml
@@ -0,0 +1,94 @@
+
+
+
+ 4.0.0
+
+
+ org.wso2.carbon.devicemgt-plugins
+ extensions-feature
+ 2.2.2-SNAPSHOT
+ ../pom.xml
+
+
+ org.wso2.carbon.appmgt.mdm.osgiconnector.feature
+ pom
+ 2.2.2-SNAPSHOT
+ WSO2 Carbon - App management MDM OSGI Connector
+ http://wso2.org
+ This feature contains the core bundles required for APP management OSGI MDM connection
+
+
+
+
+ org.wso2.carbon.devicemgt-plugins
+ org.wso2.carbon.appmgt.mdm.osgiconnector
+ 2.2.2-SNAPSHOT
+
+
+ org.apache.ws.commons.axiom
+ axiom-api
+
+
+ org.apache.ws.commons.axiom
+ axiom-impl
+
+
+
+
+ com.googlecode.plist
+ dd-plist
+
+
+
+
+
+
+ org.wso2.maven
+ carbon-p2-plugin
+ ${carbon.p2.plugin.version}
+
+
+ 4-p2-feature-generation
+ package
+
+ p2-feature-gen
+
+
+ org.wso2.carbon.appmgt.mdm.osgiconnector
+ ../etc/feature.properties
+
+
+ org.wso2.carbon.p2.category.type:server
+
+ org.eclipse.equinox.p2.type.group:false
+
+
+
+
+ org.wso2.carbon.devicemgt-plugins:org.wso2.carbon.appmgt.mdm.osgiconnector:2.2.2-SNAPSHOT
+ com.googlecode.plist:dd-plist:${googlecode.plist.version}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/features/extensions-feature/pom.xml b/features/extensions-feature/pom.xml
new file mode 100644
index 000000000..f394e9ae3
--- /dev/null
+++ b/features/extensions-feature/pom.xml
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+ org.wso2.carbon.devicemgt-plugins
+ carbon-device-mgt-plugins-parent
+ 2.2.2-SNAPSHOT
+ ../../pom.xml
+
+
+ 4.0.0
+ extensions-feature
+ 2.2.2-SNAPSHOT
+ pom
+ WSO2 Carbon - Device Management Extensions
+ http://wso2.org
+
+
+ org.wso2.carbon.appmgt.mdm.osgiconnector.feature
+
+
+
diff --git a/pom.xml b/pom.xml
index 80af5aba4..ef5677db0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -37,8 +37,10 @@
components/mobile-plugins
components/iot-plugins
+ components/extensions
features/mobile-plugins-feature
features/iot-plugins-feature
+ features/extensions-feature
@@ -527,6 +529,13 @@
${carbon.devicemgt.plugins.version}
+
+
+ org.wso2.carbon.appmgt
+ org.wso2.carbon.appmgt.mobile
+ ${carbon.appmgt.version}
+
+
org.eclipse.osgi
@@ -712,6 +721,63 @@
org.wso2.carbon.registry.api
${carbon.kernel.version}
+
+
+ org.wso2.carbon.governance
+ org.wso2.carbon.governance.api
+ ${carbon.governance.version}
+
+
+ org.apache.juddi.wso2
+ juddi
+
+
+ org.wso2.carbon.registry
+ org.wso2.carbon.registry.common
+
+
+ org.wso2.carbon
+ org.wso2.carbon.registry.core
+
+
+ org.wso2.carbon.registry
+ org.wso2.carbon.registry.admin.api
+
+
+ org.wso2.carbon.registry
+ org.wso2.carbon.registry.indexing
+
+
+ com.ibm.icu
+ icu4j
+
+
+ org.eclipse.equinox
+ org.eclipse.equinox.registry
+
+
+ eclipse
+ validateutility
+
+
+ org.apache.ws.commons.axiom
+ axiom-api
+
+
+ org.apache.ws.commons.axiom
+ axiom-impl
+
+
+ org.wso2.carbon.registry
+ org.wso2.carbon.registry.extensions
+
+
+ javax.servlet
+ servlet-api
+
+
+
+
org.wso2.carbon
org.wso2.carbon.registry.core
@@ -917,6 +983,16 @@
axiom-impl
${axiom-api.version}
+
+ commons-io
+ commons-io
+ ${commons-io.version}
+
+
+ commons-io.wso2
+ commons-io
+ ${commons-io-wso2.version}
+
log4j
log4j
@@ -984,15 +1060,20 @@
- commons-io
- commons-io
- ${commons-io.version}
+ org.apache.felix
+ org.apache.felix.scr
+ ${apache-felix.version}
com.googlecode.json-simple.wso2
json-simple
${json-simple.version}
+
+ com.googlecode.plist
+ dd-plist
+ ${googlecode.plist.version}
+
org.wso2.carbon.identity
org.wso2.carbon.identity.oauth.stub
@@ -1124,6 +1205,10 @@
1.2.2-SNAPSHOT
[1.1.1, 2.0.0)
+
+
+ 1.2.3-SNAPSHOT
+
2.2.2-SNAPSHOT
@@ -1175,6 +1260,11 @@
3.0.21
2.2.4
1.0.2
+ 2.4.0.wso2v1
+ 2.4
+ 1.0.8
+ 1.8
+
3.1.0.wso2v2
@@ -1195,7 +1285,6 @@
1.6.17
2.0.0
- 2.4
3.0.0.wso2v1
(3.0.0, 4.0.0]
0.9.1