diff --git a/.gitignore b/.gitignore
index fe21460b43..e00a660c4d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -26,3 +26,17 @@ target
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
+components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/react-app/node_modules/
+components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/react-app/package-lock.json
+components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/react-app/npm-debug.log
+components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/react-app/dist/
+components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/react-app/tmp/
+components/application-mgt/org.wso2.carbon.device.application.mgt.store.ui/react-app/node_modules/
+components/application-mgt/org.wso2.carbon.device.application.mgt.store.ui/react-app/dist/
+components/application-mgt/org.wso2.carbon.device.application.mgt.store.ui/react-app/package-lock.json
+components/application-mgt/org.wso2.carbon.device.application.mgt.store.ui/react-app/tmp/
+components/device-mgt/io.entgra.device.mgt.ui/react-app/node_modules/
+components/device-mgt/io.entgra.device.mgt.ui/react-app/dist/
+components/device-mgt/io.entgra.device.mgt.ui/react-app/package-lock.json
+components/device-mgt/io.entgra.device.mgt.ui/react-app/tmp/
+
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 8c19854ef2..f22bfc39ca 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -24,4 +24,4 @@ deploy:
script:
- mvn $MAVEN_CLI_OPTS deploy -Dmaven.test.skip=true
only:
- - master@entgra/carbon-device-mgt
\ No newline at end of file
+ - master@entgra/carbon-device-mgt
diff --git a/components/apimgt-extensions/org.wso2.carbon.apimgt.application.extension.api/src/main/java/org/wso2/carbon/apimgt/application/extension/api/ApiApplicationRegistrationServiceImpl.java b/components/apimgt-extensions/org.wso2.carbon.apimgt.application.extension.api/src/main/java/org/wso2/carbon/apimgt/application/extension/api/ApiApplicationRegistrationServiceImpl.java
index 2beaff52ab..aec0df4a16 100644
--- a/components/apimgt-extensions/org.wso2.carbon.apimgt.application.extension.api/src/main/java/org/wso2/carbon/apimgt/application/extension/api/ApiApplicationRegistrationServiceImpl.java
+++ b/components/apimgt-extensions/org.wso2.carbon.apimgt.application.extension.api/src/main/java/org/wso2/carbon/apimgt/application/extension/api/ApiApplicationRegistrationServiceImpl.java
@@ -21,7 +21,6 @@ package org.wso2.carbon.apimgt.application.extension.api;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.json.simple.JSONObject;
import org.wso2.carbon.apimgt.application.extension.APIManagementProviderService;
import org.wso2.carbon.apimgt.application.extension.api.util.APIUtil;
import org.wso2.carbon.apimgt.application.extension.api.util.RegistrationProfile;
@@ -32,10 +31,9 @@ import org.wso2.carbon.apimgt.integration.client.OAuthRequestInterceptor;
import org.wso2.carbon.apimgt.integration.client.store.StoreClient;
import org.wso2.carbon.base.MultitenantConstants;
import org.wso2.carbon.context.PrivilegedCarbonContext;
-import org.wso2.carbon.device.mgt.common.DeviceManagementException;
+import org.wso2.carbon.device.mgt.common.exceptions.DeviceManagementException;
import org.wso2.carbon.user.api.UserStoreException;
-import javax.ws.rs.DELETE;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.QueryParam;
diff --git a/components/apimgt-extensions/org.wso2.carbon.apimgt.application.extension.api/src/main/java/org/wso2/carbon/apimgt/application/extension/api/util/APIUtil.java b/components/apimgt-extensions/org.wso2.carbon.apimgt.application.extension.api/src/main/java/org/wso2/carbon/apimgt/application/extension/api/util/APIUtil.java
index cb7183266e..fdd2e5bb2d 100644
--- a/components/apimgt-extensions/org.wso2.carbon.apimgt.application.extension.api/src/main/java/org/wso2/carbon/apimgt/application/extension/api/util/APIUtil.java
+++ b/components/apimgt-extensions/org.wso2.carbon.apimgt.application.extension.api/src/main/java/org/wso2/carbon/apimgt/application/extension/api/util/APIUtil.java
@@ -23,7 +23,7 @@ import org.apache.commons.logging.LogFactory;
import org.wso2.carbon.apimgt.application.extension.APIManagementProviderService;
import org.wso2.carbon.base.MultitenantConstants;
import org.wso2.carbon.context.PrivilegedCarbonContext;
-import org.wso2.carbon.device.mgt.common.DeviceManagementException;
+import org.wso2.carbon.device.mgt.common.exceptions.DeviceManagementException;
import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService;
import org.wso2.carbon.registry.api.Resource;
import org.wso2.carbon.registry.core.Registry;
@@ -31,7 +31,6 @@ import org.wso2.carbon.registry.core.exceptions.RegistryException;
import org.wso2.carbon.registry.core.service.RegistryService;
import org.wso2.carbon.user.core.service.RealmService;
-import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;
@@ -44,9 +43,11 @@ public class APIUtil {
private static final String DEFAULT_CDMF_API_TAG = "device_management";
private static final String DEFAULT_AGENT_API_TAG = "device_agent";
private static final String DEFAULT_CERT_API_TAG = "scep_management";
+ private static final String DEFAULT_APP_MGT_TAG = "application_management";
+ private static final String DEFAULT_APP_MGT_REVIEW_MGT_TAG = "review_management";
+ private static final String DEFAULT_APP_MGT_SUB_MGT_TAG = "subscription_management";
private static final String DEFAULT_ANALYTICS_ARTIFACT_TAG = "analytics_artifacts_management";
-
public static final String PERMISSION_PROPERTY_NAME = "name";
public static String getAuthenticatedUser() {
@@ -111,6 +112,9 @@ public class APIUtil {
allowedApisTags.add(DEFAULT_CDMF_API_TAG);
allowedApisTags.add(DEFAULT_CERT_API_TAG);
allowedApisTags.add(DEFAULT_AGENT_API_TAG);
+ allowedApisTags.add(DEFAULT_APP_MGT_TAG);
+ allowedApisTags.add(DEFAULT_APP_MGT_REVIEW_MGT_TAG);
+ allowedApisTags.add(DEFAULT_APP_MGT_SUB_MGT_TAG);
allowedApisTags.add(DEFAULT_ANALYTICS_ARTIFACT_TAG);
return allowedApisTags;
}
diff --git a/components/apimgt-extensions/org.wso2.carbon.apimgt.integration.generated.client/src/main/resources/publisher-api.yaml b/components/apimgt-extensions/org.wso2.carbon.apimgt.integration.generated.client/src/main/resources/publisher-api.yaml
index e23d7d28a0..b2068857a7 100644
--- a/components/apimgt-extensions/org.wso2.carbon.apimgt.integration.generated.client/src/main/resources/publisher-api.yaml
+++ b/components/apimgt-extensions/org.wso2.carbon.apimgt.integration.generated.client/src/main/resources/publisher-api.yaml
@@ -2741,7 +2741,7 @@ parameters:
name: limit
in: query
description: |
- Maximum size of resource array to return.
+ Maximum length of resource array to return.
default: 25
type: integer
diff --git a/components/apimgt-extensions/org.wso2.carbon.apimgt.integration.generated.client/src/main/resources/store-api.yaml b/components/apimgt-extensions/org.wso2.carbon.apimgt.integration.generated.client/src/main/resources/store-api.yaml
index 8f85e25759..a57b96d4ab 100644
--- a/components/apimgt-extensions/org.wso2.carbon.apimgt.integration.generated.client/src/main/resources/store-api.yaml
+++ b/components/apimgt-extensions/org.wso2.carbon.apimgt.integration.generated.client/src/main/resources/store-api.yaml
@@ -1823,7 +1823,7 @@ parameters:
name: limit
in: query
description: |
- Maximum size of resource array to return.
+ Maximum length of resource array to return.
default: 25
type: integer
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.addons/pom.xml b/components/application-mgt/org.wso2.carbon.device.application.mgt.addons/pom.xml
new file mode 100644
index 0000000000..c7ff5220b7
--- /dev/null
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.addons/pom.xml
@@ -0,0 +1,112 @@
+
+
+
+ application-mgt
+ org.wso2.carbon.devicemgt
+ 4.0.0-SNAPSHOT
+ ../pom.xml
+
+
+ 4.0.0
+ org.wso2.carbon.device.application.mgt.addons
+ 4.0.0-SNAPSHOT
+ WSO2 Carbon - Application Management Add-Ons
+ WSO2 Carbon - Application Management Add-Ons
+ https://entgra.io
+
+
+
+
+ org.apache.felix
+ maven-scr-plugin
+
+
+ org.apache.felix
+ maven-bundle-plugin
+ 1.4.0
+ true
+
+
+ ${project.artifactId}
+ ${project.artifactId}
+ ${carbon.device.mgt.version}
+ Application Management Add-Ons Bundle
+
+ com.google.gson,
+ io.swagger.annotations.*;resolution:=optional
+
+
+ org.wso2.carbon.device.application.mgt.addons.*
+
+
+
+
+
+
+
+
+
+ org.apache.cxf
+ cxf-rt-frontend-jaxws
+ provided
+
+
+ org.apache.cxf
+ cxf-rt-frontend-jaxrs
+ provided
+
+
+ org.apache.cxf
+ cxf-rt-transports-http
+ provided
+
+
+ org.eclipse.osgi
+ org.eclipse.osgi
+
+
+ org.eclipse.equinox
+ org.eclipse.equinox.common
+
+
+ org.wso2.carbon
+ org.wso2.carbon.logging
+
+
+ commons-codec.wso2
+ commons-codec
+
+
+ commons-io.wso2
+ commons-io
+
+
+ io.swagger
+ swagger-annotations
+ provided
+
+
+ org.json.wso2
+ json
+
+
+ com.google.code.gson
+ gson
+
+
+ org.wso2.carbon.devicemgt
+ org.wso2.carbon.device.application.mgt.common
+
+
+ javax.servlet
+ javax.servlet-api
+ provided
+
+
+ org.hibernate
+ hibernate-validator
+
+
+
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.addons/src/main/java/org/wso2/carbon/device/application/mgt/addons/ApiOriginFilter.java b/components/application-mgt/org.wso2.carbon.device.application.mgt.addons/src/main/java/org/wso2/carbon/device/application/mgt/addons/ApiOriginFilter.java
new file mode 100644
index 0000000000..25446e9513
--- /dev/null
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.addons/src/main/java/org/wso2/carbon/device/application/mgt/addons/ApiOriginFilter.java
@@ -0,0 +1,46 @@
+/* Copyright (c) 2019, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved.
+ *
+ * Entgra (Pvt) Ltd. licenses this file to you under the Apache License,
+ * Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.wso2.carbon.device.application.mgt.addons;
+
+
+import javax.servlet.Filter;
+import javax.servlet.FilterChain;
+import javax.servlet.FilterConfig;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+public class ApiOriginFilter implements Filter {
+ public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
+ throws IOException, ServletException {
+ HttpServletResponse res = (HttpServletResponse) response;
+ res.addHeader("Access-Control-Allow-Origin", "*");
+ res.addHeader("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT");
+ res.addHeader("Access-Control-Allow-Headers", "Content-Type");
+ chain.doFilter(request, response);
+ }
+
+ public void destroy() {
+ //do nothing
+ }
+
+ public void init(FilterConfig filterConfig) throws ServletException {
+ //do nothing
+ }
+}
\ No newline at end of file
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.addons/src/main/java/org/wso2/carbon/device/application/mgt/addons/FileStreamingOutput.java b/components/application-mgt/org.wso2.carbon.device.application.mgt.addons/src/main/java/org/wso2/carbon/device/application/mgt/addons/FileStreamingOutput.java
new file mode 100644
index 0000000000..a1ad912d19
--- /dev/null
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.addons/src/main/java/org/wso2/carbon/device/application/mgt/addons/FileStreamingOutput.java
@@ -0,0 +1,53 @@
+/* Copyright (c) 2019, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved.
+ *
+ * Entgra (Pvt) Ltd. licenses this file to you under the Apache License,
+ * Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.wso2.carbon.device.application.mgt.addons;
+
+
+import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.core.StreamingOutput;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+
+/**
+ * org.wso2.carbon.device.application.mgt.addons.FileStreamingOutput to allow the user to send the files as Stream.
+ */
+public class FileStreamingOutput implements StreamingOutput {
+ private InputStream inputStream;
+
+ public FileStreamingOutput(InputStream inputStream) {
+ this.inputStream = inputStream;
+ }
+
+ @Override
+ public void write(OutputStream outputStream) throws IOException, WebApplicationException {
+ try {
+ byte[] buffer = new byte[inputStream.available()];
+ inputStream.read(buffer);
+ outputStream.write(buffer);
+ outputStream.flush();
+ } finally {
+ if (inputStream != null) {
+ inputStream.close();
+ }
+ if (outputStream != null) {
+ outputStream.close();
+ }
+ }
+
+ }
+}
diff --git a/components/certificate-mgt/org.wso2.carbon.certificate.mgt.v09.api/src/main/java/org/wso2/carbon/certificate/mgt/jaxrs/api/common/GsonMessageBodyHandler.java b/components/application-mgt/org.wso2.carbon.device.application.mgt.addons/src/main/java/org/wso2/carbon/device/application/mgt/addons/JSONMessageHandler.java
similarity index 67%
rename from components/certificate-mgt/org.wso2.carbon.certificate.mgt.v09.api/src/main/java/org/wso2/carbon/certificate/mgt/jaxrs/api/common/GsonMessageBodyHandler.java
rename to components/application-mgt/org.wso2.carbon.device.application.mgt.addons/src/main/java/org/wso2/carbon/device/application/mgt/addons/JSONMessageHandler.java
index ff866606ad..6951e02b2e 100644
--- a/components/certificate-mgt/org.wso2.carbon.certificate.mgt.v09.api/src/main/java/org/wso2/carbon/certificate/mgt/jaxrs/api/common/GsonMessageBodyHandler.java
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.addons/src/main/java/org/wso2/carbon/device/application/mgt/addons/JSONMessageHandler.java
@@ -1,12 +1,11 @@
-/*
- * Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+/* Copyright (c) 2019, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved.
*
- * WSO2 Inc. licenses this file to you under the Apache License,
+ * Entgra (Pvt) Ltd. licenses this file to you under the Apache License,
* Version 2.0 (the "License"); you may not use this file except
* in compliance with the License.
* You may obtain a copy of the License at
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
@@ -15,12 +14,11 @@
* specific language governing permissions and limitations
* under the License.
*/
-
-package org.wso2.carbon.certificate.mgt.jaxrs.api.common;
-
+package org.wso2.carbon.device.application.mgt.addons;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
+import org.wso2.carbon.device.application.mgt.addons.jaxrs.AnnotationExclusionStrategy;
import javax.ws.rs.Consumes;
import javax.ws.rs.Produces;
@@ -30,16 +28,23 @@ import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.ext.MessageBodyReader;
import javax.ws.rs.ext.MessageBodyWriter;
import javax.ws.rs.ext.Provider;
-import java.io.*;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
import static javax.ws.rs.core.MediaType.APPLICATION_JSON;
+/**
+ * This provider is used to change a JSON object to complex object and inversely in request and response.
+ */
@Provider
@Produces(APPLICATION_JSON)
@Consumes(APPLICATION_JSON)
-public class GsonMessageBodyHandler implements MessageBodyWriter