diff --git a/components/device-mgt/org.wso2.carbon.apimgt.webapp.publisher/pom.xml b/components/device-mgt/org.wso2.carbon.apimgt.webapp.publisher/pom.xml
new file mode 100644
index 00000000000..fd1639b76fa
--- /dev/null
+++ b/components/device-mgt/org.wso2.carbon.apimgt.webapp.publisher/pom.xml
@@ -0,0 +1,89 @@
+
+
+
+
+ device-mgt
+ org.wso2.carbon.devicemgt
+ 0.9.2-SNAPSHOT
+ ../pom.xml
+
+
+ 4.0.0
+ org.wso2.carbon.apimgt.webapp.publisher
+ 0.9.2-SNAPSHOT
+ bundle
+ WSO2 Carbon - API Management Webapp Publisher
+ WSO2 Carbon - API Management Webapp Publisher
+ http://wso2.org
+
+
+
+ org.eclipse.osgi
+ org.eclipse.osgi
+
+
+ org.eclipse.osgi
+ org.eclipse.osgi.services
+
+
+ org.testng
+ testng
+
+
+ org.wso2.carbon.apimgt
+ org.wso2.carbon.apimgt.api
+
+
+ org.wso2.carbon.apimgt
+ org.wso2.carbon.apimgt.impl
+
+
+ org.wso2.tomcat
+ tomcat
+
+
+ org.wso2.tomcat
+ tomcat-servlet-api
+
+
+
+
+
+
+
+ org.apache.felix
+ maven-bundle-plugin
+ 1.4.0
+ true
+
+
+ ${project.artifactId}
+ ${project.artifactId}
+ ${carbon.device.mgt.version}
+ API Management Webapp Publisher
+ org.wso2.carbon.apimgt.webapp.publisher.internal
+
+ !org.wso2.carbon.apimgt.webapp.publisher.internal,
+ org.wso2.carbon.apimgt.webapp.publisher.*
+
+
+ org.osgi.framework,
+ org.osgi.service.component,
+ org.apache.commons.logging,
+ javax.servlet,
+ javax.xml.bind.annotation,
+ org.apache.catalina,
+ org.apache.catalina.core,
+ org.wso2.carbon.apimgt.api,
+ org.wso2.carbon.apimgt.api.model,
+ org.wso2.carbon.apimgt.impl
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/api/mgt/APIConfig.java b/components/device-mgt/org.wso2.carbon.apimgt.webapp.publisher/src/main/java/org/wso2/carbon/apimgt/webapp/publisher/APIConfig.java
similarity index 92%
rename from components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/api/mgt/APIConfig.java
rename to components/device-mgt/org.wso2.carbon.apimgt.webapp.publisher/src/main/java/org/wso2/carbon/apimgt/webapp/publisher/APIConfig.java
index 61a549ced7b..4d5c6611056 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/api/mgt/APIConfig.java
+++ b/components/device-mgt/org.wso2.carbon.apimgt.webapp.publisher/src/main/java/org/wso2/carbon/apimgt/webapp/publisher/APIConfig.java
@@ -16,12 +16,11 @@
* under the License.
*
*/
-package org.wso2.carbon.device.mgt.core.api.mgt;
+package org.wso2.carbon.apimgt.webapp.publisher;
import org.wso2.carbon.apimgt.api.APIManagementException;
import org.wso2.carbon.apimgt.api.APIProvider;
import org.wso2.carbon.apimgt.impl.APIManagerFactory;
-import org.wso2.carbon.device.mgt.common.DeviceManagementException;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@@ -55,11 +54,11 @@ public class APIConfig {
private APIProvider provider;
private boolean isSecured;
- public void init() throws DeviceManagementException {
+ public void init() throws APIManagementException {
try {
this.provider = APIManagerFactory.getInstance().getAPIProvider(this.getOwner());
} catch (APIManagementException e) {
- throw new DeviceManagementException("Error occurred while initializing API provider", e);
+ throw new APIManagementException("Error occurred while initializing API provider", e);
}
}
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/api/mgt/APIPublisherService.java b/components/device-mgt/org.wso2.carbon.apimgt.webapp.publisher/src/main/java/org/wso2/carbon/apimgt/webapp/publisher/APIPublisherService.java
similarity index 98%
rename from components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/api/mgt/APIPublisherService.java
rename to components/device-mgt/org.wso2.carbon.apimgt.webapp.publisher/src/main/java/org/wso2/carbon/apimgt/webapp/publisher/APIPublisherService.java
index 77e961470eb..32cb28f38d1 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/api/mgt/APIPublisherService.java
+++ b/components/device-mgt/org.wso2.carbon.apimgt.webapp.publisher/src/main/java/org/wso2/carbon/apimgt/webapp/publisher/APIPublisherService.java
@@ -16,7 +16,7 @@
* under the License.
*
*/
-package org.wso2.carbon.device.mgt.core.api.mgt;
+package org.wso2.carbon.apimgt.webapp.publisher;
import org.wso2.carbon.apimgt.api.APIManagementException;
import org.wso2.carbon.apimgt.api.model.API;
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/api/mgt/APIPublisherServiceImpl.java b/components/device-mgt/org.wso2.carbon.apimgt.webapp.publisher/src/main/java/org/wso2/carbon/apimgt/webapp/publisher/APIPublisherServiceImpl.java
similarity index 93%
rename from components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/api/mgt/APIPublisherServiceImpl.java
rename to components/device-mgt/org.wso2.carbon.apimgt.webapp.publisher/src/main/java/org/wso2/carbon/apimgt/webapp/publisher/APIPublisherServiceImpl.java
index e5e09fe4a8f..47757b4cf8b 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/api/mgt/APIPublisherServiceImpl.java
+++ b/components/device-mgt/org.wso2.carbon.apimgt.webapp.publisher/src/main/java/org/wso2/carbon/apimgt/webapp/publisher/APIPublisherServiceImpl.java
@@ -16,7 +16,7 @@
* under the License.
*
*/
-package org.wso2.carbon.device.mgt.core.api.mgt;
+package org.wso2.carbon.apimgt.webapp.publisher;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -54,8 +54,8 @@ public class APIPublisherServiceImpl implements APIPublisherService {
"'. Thus, the API config is updated");
}
} else {
- log.error("API provider configured for the given API configuration is null. Thus, the API is not " +
- "published");
+ throw new APIManagementException("API provider configured for the given API configuration is null. " +
+ "Thus, the API is not published");
}
}
diff --git a/components/device-mgt/org.wso2.carbon.apimgt.webapp.publisher/src/main/java/org/wso2/carbon/apimgt/webapp/publisher/APIPublisherUtil.java b/components/device-mgt/org.wso2.carbon.apimgt.webapp.publisher/src/main/java/org/wso2/carbon/apimgt/webapp/publisher/APIPublisherUtil.java
new file mode 100644
index 00000000000..9776159a612
--- /dev/null
+++ b/components/device-mgt/org.wso2.carbon.apimgt.webapp.publisher/src/main/java/org/wso2/carbon/apimgt/webapp/publisher/APIPublisherUtil.java
@@ -0,0 +1,98 @@
+/*
+ * Copyright (c) 2015, 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.apimgt.webapp.publisher;
+
+import org.wso2.carbon.apimgt.api.APIManagementException;
+import org.wso2.carbon.apimgt.api.APIProvider;
+import org.wso2.carbon.apimgt.api.model.API;
+import org.wso2.carbon.apimgt.api.model.APIIdentifier;
+import org.wso2.carbon.apimgt.api.model.APIStatus;
+import org.wso2.carbon.apimgt.api.model.URITemplate;
+import org.wso2.carbon.apimgt.impl.APIConstants;
+
+import java.util.ArrayList;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Set;
+
+public class APIPublisherUtil {
+
+ enum HTTPMethod {
+ GET, POST, DELETE, PUT, OPTIONS
+ }
+
+ private static List httpMethods;
+
+ static {
+ httpMethods = new ArrayList();
+ httpMethods.add(HTTPMethod.GET);
+ httpMethods.add(HTTPMethod.POST);
+ httpMethods.add(HTTPMethod.DELETE);
+ httpMethods.add(HTTPMethod.PUT);
+ httpMethods.add(HTTPMethod.OPTIONS);
+ }
+
+ public static API getAPI(APIConfig config) throws APIManagementException {
+ APIProvider provider = config.getProvider();
+ APIIdentifier id = new APIIdentifier(config.getOwner(), config.getName(), config.getVersion());
+
+ API api = new API(id);
+ api.setApiOwner(config.getOwner());
+ api.setContext(config.getContext());
+ api.setUrl(config.getEndpoint());
+ api.setUriTemplates(
+ getURITemplates(config.getEndpoint(), APIConstants.AUTH_APPLICATION_OR_USER_LEVEL_TOKEN));
+ api.setVisibility(APIConstants.API_GLOBAL_VISIBILITY);
+ api.addAvailableTiers(provider.getTiers());
+ api.setEndpointSecured(true);
+ api.setStatus(APIStatus.PUBLISHED);
+ api.setTransports(config.getTransports());
+
+ return api;
+ }
+
+ private static Set getURITemplates(String endpoint, String authType) {
+ Set uriTemplates = new LinkedHashSet();
+ if (APIConstants.AUTH_NO_AUTHENTICATION.equals(authType)) {
+ for (HTTPMethod method : httpMethods) {
+ URITemplate template = new URITemplate();
+ template.setAuthType(APIConstants.AUTH_NO_AUTHENTICATION);
+ template.setHTTPVerb(method.toString());
+ template.setResourceURI(endpoint);
+ template.setUriTemplate("/*");
+ uriTemplates.add(template);
+ }
+ } else {
+ for (HTTPMethod method : httpMethods) {
+ URITemplate template = new URITemplate();
+ if (HTTPMethod.OPTIONS.equals(method)) {
+ template.setAuthType(APIConstants.AUTH_NO_AUTHENTICATION);
+ } else {
+ template.setAuthType(APIConstants.AUTH_APPLICATION_OR_USER_LEVEL_TOKEN);
+ }
+ template.setHTTPVerb(method.toString());
+ template.setResourceURI(endpoint);
+ template.setUriTemplate("/*");
+ uriTemplates.add(template);
+ }
+ }
+ return uriTemplates;
+ }
+
+}
diff --git a/components/device-mgt/org.wso2.carbon.apimgt.webapp.publisher/src/main/java/org/wso2/carbon/apimgt/webapp/publisher/internal/APIPublisherDataHolder.java b/components/device-mgt/org.wso2.carbon.apimgt.webapp.publisher/src/main/java/org/wso2/carbon/apimgt/webapp/publisher/internal/APIPublisherDataHolder.java
new file mode 100644
index 00000000000..41dd3de7efa
--- /dev/null
+++ b/components/device-mgt/org.wso2.carbon.apimgt.webapp.publisher/src/main/java/org/wso2/carbon/apimgt/webapp/publisher/internal/APIPublisherDataHolder.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright (c) 2015, 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.apimgt.webapp.publisher.internal;
+
+import org.wso2.carbon.apimgt.webapp.publisher.APIPublisherService;
+
+public class APIPublisherDataHolder {
+
+ private APIPublisherService apiPublisherService;
+
+ private static APIPublisherDataHolder thisInstance = new APIPublisherDataHolder();
+
+ private APIPublisherDataHolder() {
+ }
+
+ public static APIPublisherDataHolder getInstance() {
+ return thisInstance;
+ }
+
+ public APIPublisherService getApiPublisherService() {
+ return apiPublisherService;
+ }
+
+ public void setApiPublisherService(APIPublisherService apiPublisherService) {
+ this.apiPublisherService = apiPublisherService;
+ }
+
+}
diff --git a/components/device-mgt/org.wso2.carbon.apimgt.webapp.publisher/src/main/java/org/wso2/carbon/apimgt/webapp/publisher/internal/APIPublisherServiceComponent.java b/components/device-mgt/org.wso2.carbon.apimgt.webapp.publisher/src/main/java/org/wso2/carbon/apimgt/webapp/publisher/internal/APIPublisherServiceComponent.java
new file mode 100644
index 00000000000..97fe5d11e87
--- /dev/null
+++ b/components/device-mgt/org.wso2.carbon.apimgt.webapp.publisher/src/main/java/org/wso2/carbon/apimgt/webapp/publisher/internal/APIPublisherServiceComponent.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright (c) 2015, 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.apimgt.webapp.publisher.internal;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.osgi.framework.BundleContext;
+import org.osgi.service.component.ComponentContext;
+import org.wso2.carbon.apimgt.impl.APIManagerConfigurationService;
+import org.wso2.carbon.apimgt.webapp.publisher.APIPublisherService;
+import org.wso2.carbon.apimgt.webapp.publisher.APIPublisherServiceImpl;
+
+public class APIPublisherServiceComponent {
+
+ private static Log log = LogFactory.getLog(APIPublisherServiceComponent.class);
+
+ @SuppressWarnings("unused")
+ protected void activate(ComponentContext componentContext) {
+ try {
+ if (log.isDebugEnabled()) {
+ log.debug("Initializing device management core bundle");
+ }
+
+ /* Registering declarative service instances exposed by DeviceManagementServiceComponent */
+ this.registerServices(componentContext);
+
+ if (log.isDebugEnabled()) {
+ log.debug("Device management core bundle has been successfully initialized");
+ }
+ } catch (Throwable e) {
+ log.error("Error occurred while initializing device management core bundle", e);
+ }
+ }
+
+ @SuppressWarnings("unused")
+ protected void deactivate(ComponentContext componentContext) {
+ //do nothing
+ }
+
+ private void registerServices(ComponentContext componentContext) {
+ if (log.isDebugEnabled()) {
+ log.debug("Registering OSGi service DeviceManagementProviderServiceImpl");
+ }
+ /* Registering Device Management Service */
+ BundleContext bundleContext = componentContext.getBundleContext();
+
+ APIPublisherService publisher = new APIPublisherServiceImpl();
+ APIPublisherDataHolder.getInstance().setApiPublisherService(publisher);
+ bundleContext.registerService(APIPublisherService.class, publisher, null);
+
+ }
+
+ protected void setAPIManagerConfigurationService(APIManagerConfigurationService service) {
+ //do nothing
+ }
+
+ protected void unsetAPIManagerConfigurationService(APIManagerConfigurationService service) {
+ //do nothing
+ }
+
+}
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/api/mgt/lifecycle/listener/APIPublisherLifecycleListener.java b/components/device-mgt/org.wso2.carbon.apimgt.webapp.publisher/src/main/java/org/wso2/carbon/apimgt/webapp/publisher/lifecycle/listener/APIPublisherLifecycleListener.java
similarity index 71%
rename from components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/api/mgt/lifecycle/listener/APIPublisherLifecycleListener.java
rename to components/device-mgt/org.wso2.carbon.apimgt.webapp.publisher/src/main/java/org/wso2/carbon/apimgt/webapp/publisher/lifecycle/listener/APIPublisherLifecycleListener.java
index c856c8a7a0c..4284c9a5a5b 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/api/mgt/lifecycle/listener/APIPublisherLifecycleListener.java
+++ b/components/device-mgt/org.wso2.carbon.apimgt.webapp.publisher/src/main/java/org/wso2/carbon/apimgt/webapp/publisher/lifecycle/listener/APIPublisherLifecycleListener.java
@@ -16,7 +16,7 @@
* under the License.
*
*/
-package org.wso2.carbon.device.mgt.core.api.mgt.lifecycle.listener;
+package org.wso2.carbon.apimgt.webapp.publisher.lifecycle.listener;
import org.apache.catalina.Lifecycle;
import org.apache.catalina.LifecycleEvent;
@@ -25,9 +25,9 @@ import org.apache.catalina.core.StandardContext;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.wso2.carbon.apimgt.api.model.API;
-import org.wso2.carbon.device.mgt.core.api.mgt.APIConfig;
-import org.wso2.carbon.device.mgt.core.internal.DeviceManagementDataHolder;
-import org.wso2.carbon.device.mgt.core.util.DeviceManagerUtil;
+import org.wso2.carbon.apimgt.webapp.publisher.APIConfig;
+import org.wso2.carbon.apimgt.webapp.publisher.APIPublisherUtil;
+import org.wso2.carbon.apimgt.webapp.publisher.internal.APIPublisherDataHolder;
import javax.servlet.ServletContext;
@@ -36,13 +36,14 @@ public class APIPublisherLifecycleListener implements LifecycleListener {
private static final String API_CONFIG_DEFAULT_VERSION = "1.0.0";
- private static final String PARAM_MANAGE_API_NAME = "managed-api-name";
- private static final String PARAM_MANAGE_API_VERSION = "managed-api-version";
- private static final String PARAM_MANAGE_API_CONTEXT = "managed-api-context";
- private static final String PARAM_MANAGE_API_ENDPOINT = "managed-api-endpoint";
- private static final String PARAM_MANAGE_API_OWNER = "managed-api-owner";
- private static final String PARAM_MANAGE_API_TRANSPORTS = "managed-api-transports";
- private static final String PARAM_MANAGE_API_IS_SECURED = "managed-api-isSecured";
+ private static final String PARAM_MANAGED_API_ENABLED = "managed-api-enabled";
+ private static final String PARAM_MANAGED_API_NAME = "managed-api-name";
+ private static final String PARAM_MANAGED_API_VERSION = "managed-api-version";
+ private static final String PARAM_MANAGED_API_CONTEXT = "managed-api-context";
+ private static final String PARAM_MANAGED_API_ENDPOINT = "managed-api-endpoint";
+ private static final String PARAM_MANAGED_API_OWNER = "managed-api-owner";
+ private static final String PARAM_MANAGED_API_TRANSPORTS = "managed-api-transports";
+ private static final String PARAM_MANAGED_API_IS_SECURED = "managed-api-isSecured";
private static final Log log = LogFactory.getLog(APIPublisherLifecycleListener.class);
@@ -52,15 +53,15 @@ public class APIPublisherLifecycleListener implements LifecycleListener {
StandardContext context = (StandardContext) lifecycleEvent.getLifecycle();
ServletContext servletContext = context.getServletContext();
- String param = servletContext.getInitParameter("managed-api-enabled");
- boolean isManagedApi = (param != null && !"".equals(param)) && Boolean.parseBoolean(param);
+ String param = servletContext.getInitParameter(PARAM_MANAGED_API_ENABLED);
+ boolean isManagedApi = (param != null && param.isEmpty()) && Boolean.parseBoolean(param);
if (isManagedApi) {
APIConfig apiConfig = this.buildApiConfig(servletContext);
try {
apiConfig.init();
- API api = DeviceManagerUtil.getAPI(apiConfig);
- DeviceManagementDataHolder.getInstance().getApiPublisherService().publishAPI(api);
+ API api = APIPublisherUtil.getAPI(apiConfig);
+ APIPublisherDataHolder.getInstance().getApiPublisherService().publishAPI(api);
} catch (Throwable e) {
/* Throwable is caught as none of the RuntimeExceptions that can potentially occur at this point
does not seem to be logged anywhere else within the framework */
@@ -74,8 +75,8 @@ public class APIPublisherLifecycleListener implements LifecycleListener {
private APIConfig buildApiConfig(ServletContext servletContext) {
APIConfig apiConfig = new APIConfig();
- String name = servletContext.getInitParameter(PARAM_MANAGE_API_NAME);
- if (name == null || "".equals(name)) {
+ String name = servletContext.getInitParameter(PARAM_MANAGED_API_NAME);
+ if (name == null || name.isEmpty()) {
if (log.isDebugEnabled()) {
log.debug("'managed-api-name' attribute is not configured. Therefore, using the default, " +
"which is the name of the web application");
@@ -84,8 +85,8 @@ public class APIPublisherLifecycleListener implements LifecycleListener {
}
apiConfig.setName(name);
- String version = servletContext.getInitParameter(PARAM_MANAGE_API_VERSION);
- if (version == null || "".equals(version)) {
+ String version = servletContext.getInitParameter(PARAM_MANAGED_API_VERSION);
+ if (version == null || version.isEmpty()) {
if (log.isDebugEnabled()) {
log.debug("'managed-api-version' attribute is not configured. Therefore, using the " +
"default, which is '1.0.0'");
@@ -94,8 +95,8 @@ public class APIPublisherLifecycleListener implements LifecycleListener {
}
apiConfig.setVersion(version);
- String context = servletContext.getInitParameter(PARAM_MANAGE_API_CONTEXT);
- if (context == null || "".equals(context)) {
+ String context = servletContext.getInitParameter(PARAM_MANAGED_API_CONTEXT);
+ if (context == null || context.isEmpty()) {
if (log.isDebugEnabled()) {
log.debug("'managed-api-context' attribute is not configured. Therefore, using the default, " +
"which is the original context assigned to the web application");
@@ -104,29 +105,29 @@ public class APIPublisherLifecycleListener implements LifecycleListener {
}
apiConfig.setContext(context);
- String endpoint = servletContext.getInitParameter(PARAM_MANAGE_API_ENDPOINT);
- if (endpoint == null || "".equals(endpoint)) {
+ String endpoint = servletContext.getInitParameter(PARAM_MANAGED_API_ENDPOINT);
+ if (endpoint == null || endpoint.isEmpty()) {
if (log.isDebugEnabled()) {
log.debug("'managed-api-endpoint' attribute is not configured");
}
}
apiConfig.setEndpoint(endpoint);
- String owner = servletContext.getInitParameter(PARAM_MANAGE_API_OWNER);
- if (owner == null || "".equals(owner)) {
+ String owner = servletContext.getInitParameter(PARAM_MANAGED_API_OWNER);
+ if (owner == null || owner.isEmpty()) {
if (log.isDebugEnabled()) {
log.debug("'managed-api-owner' attribute is not configured");
}
}
apiConfig.setOwner(owner);
- String isSecuredParam = servletContext.getInitParameter(PARAM_MANAGE_API_IS_SECURED);
+ String isSecuredParam = servletContext.getInitParameter(PARAM_MANAGED_API_IS_SECURED);
boolean isSecured =
- (isSecuredParam != null && !"".equals(isSecuredParam)) && Boolean.parseBoolean(isSecuredParam);
+ (isSecuredParam != null && !isSecuredParam.isEmpty()) && Boolean.parseBoolean(isSecuredParam);
apiConfig.setSecured(isSecured);
- String transports = servletContext.getInitParameter(PARAM_MANAGE_API_TRANSPORTS);
- if (transports == null || "".equals(transports)) {
+ String transports = servletContext.getInitParameter(PARAM_MANAGED_API_TRANSPORTS);
+ if (transports == null || transports.isEmpty()) {
if (log.isDebugEnabled()) {
log.debug("'managed-api-transports' attribute is not configured. Therefore using the defaults, " +
"which are 'http' and 'https'");
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/pom.xml b/components/device-mgt/org.wso2.carbon.device.mgt.core/pom.xml
index 1de4ce1c0f1..6194adc77dc 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.core/pom.xml
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/pom.xml
@@ -17,7 +17,8 @@
~ under the License.
-->
-
+
org.wso2.carbon.devicemgt
device-mgt
@@ -69,23 +70,13 @@
org.wso2.carbon.device.mgt.common.*,
org.wso2.carbon.user.api,
org.wso2.carbon.user.core.*,
- org.wso2.carbon.registry.core,
- org.wso2.carbon.registry.core.exceptions,
org.wso2.carbon.registry.core.service,
- org.wso2.carbon.registry.core.session,
org.w3c.dom,
- org.wso2.carbon.governance.api.exception,
- org.wso2.carbon.governance.api.generic,
- org.wso2.carbon.governance.api.generic.dataobjects,
- org.wso2.carbon.apimgt.api,
- org.wso2.carbon.apimgt.api.model,
- org.wso2.carbon.apimgt.impl,
org.wso2.carbon.identity.oauth.stub,
org.wso2.carbon.identity.oauth.stub.dto,
org.wso2.carbon.ndatasource.core,
- org.apache.catalina,
- org.apache.catalina.core,
- javax.servlet
+ org.wso2.carbon.apimgt.impl,
+ org.wso2.carbon.ndatasource.core
!org.wso2.carbon.device.mgt.core.internal,
@@ -100,9 +91,9 @@
maven-surefire-plugin
2.18
-
- file:src/test/resources/log4j.properties
-
+
+ file:src/test/resources/log4j.properties
+
src/test/resources/testng.xml
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/api/mgt/ApplicationManagementProviderService.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/app/mgt/ApplicationManagementProviderService.java
similarity index 96%
rename from components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/api/mgt/ApplicationManagementProviderService.java
rename to components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/app/mgt/ApplicationManagementProviderService.java
index 2002818504c..085dadac479 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/api/mgt/ApplicationManagementProviderService.java
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/app/mgt/ApplicationManagementProviderService.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.wso2.carbon.device.mgt.core.api.mgt;
+package org.wso2.carbon.device.mgt.core.app.mgt;
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
import org.wso2.carbon.device.mgt.common.app.mgt.Application;
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/app/mgt/ApplicationManagerProviderServiceImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/app/mgt/ApplicationManagerProviderServiceImpl.java
index e4f648035a1..e83c0c9a970 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/app/mgt/ApplicationManagerProviderServiceImpl.java
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/app/mgt/ApplicationManagerProviderServiceImpl.java
@@ -29,19 +29,16 @@ import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
import org.wso2.carbon.device.mgt.common.DeviceManagementException;
import org.wso2.carbon.device.mgt.common.app.mgt.Application;
import org.wso2.carbon.device.mgt.common.app.mgt.ApplicationManagementException;
-import org.wso2.carbon.device.mgt.common.app.mgt.ApplicationManager;
import org.wso2.carbon.device.mgt.common.operation.mgt.Operation;
import org.wso2.carbon.device.mgt.common.spi.DeviceManagementService;
import org.wso2.carbon.device.mgt.core.DeviceManagementConstants;
import org.wso2.carbon.device.mgt.core.DeviceManagementPluginRepository;
-import org.wso2.carbon.device.mgt.core.api.mgt.ApplicationManagementProviderService;
import org.wso2.carbon.device.mgt.core.app.mgt.config.AppManagementConfig;
import org.wso2.carbon.device.mgt.core.app.mgt.oauth.ServiceAuthenticator;
import org.wso2.carbon.device.mgt.core.config.DeviceConfigurationManager;
import org.wso2.carbon.device.mgt.core.config.identity.IdentityConfigurations;
import org.wso2.carbon.device.mgt.core.dao.*;
import org.wso2.carbon.device.mgt.core.internal.PluginInitializationListener;
-import org.wso2.carbon.device.mgt.core.util.DeviceManagerUtil;
import org.wso2.carbon.identity.oauth.stub.OAuthAdminServiceException;
import org.wso2.carbon.identity.oauth.stub.OAuthAdminServiceStub;
import org.wso2.carbon.identity.oauth.stub.dto.OAuthConsumerAppDTO;
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/internal/DeviceManagementDataHolder.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/internal/DeviceManagementDataHolder.java
index 3533ea96c42..5dc73850f84 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/internal/DeviceManagementDataHolder.java
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/internal/DeviceManagementDataHolder.java
@@ -22,7 +22,6 @@ package org.wso2.carbon.device.mgt.core.internal;
import org.wso2.carbon.device.mgt.common.app.mgt.ApplicationManager;
import org.wso2.carbon.device.mgt.common.license.mgt.LicenseManager;
import org.wso2.carbon.device.mgt.common.operation.mgt.OperationManager;
-import org.wso2.carbon.device.mgt.core.api.mgt.APIPublisherService;
import org.wso2.carbon.device.mgt.core.app.mgt.config.AppManagementConfig;
import org.wso2.carbon.device.mgt.core.config.license.LicenseConfig;
import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService;
@@ -39,7 +38,6 @@ public class DeviceManagementDataHolder {
private LicenseManager licenseManager;
private RegistryService registryService;
private LicenseConfig licenseConfig;
- private APIPublisherService apiPublisherService;
private ApplicationManager appManager;
private AppManagementConfig appManagerConfig;
private OperationManager operationManager;
@@ -106,14 +104,6 @@ public class DeviceManagementDataHolder {
this.licenseConfig = licenseConfig;
}
- public APIPublisherService getApiPublisherService() {
- return apiPublisherService;
- }
-
- public void setApiPublisherService(APIPublisherService apiPublisherService) {
- this.apiPublisherService = apiPublisherService;
- }
-
public ApplicationManager getAppManager() {
return appManager;
}
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/internal/DeviceManagementServiceComponent.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/internal/DeviceManagementServiceComponent.java
index d6443f193cd..84ff9553f26 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/internal/DeviceManagementServiceComponent.java
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/internal/DeviceManagementServiceComponent.java
@@ -25,24 +25,18 @@ import org.wso2.carbon.apimgt.impl.APIManagerConfigurationService;
import org.wso2.carbon.core.ServerStartupObserver;
import org.wso2.carbon.device.mgt.common.DeviceManagementException;
import org.wso2.carbon.device.mgt.common.app.mgt.ApplicationManagementException;
-import org.wso2.carbon.device.mgt.common.license.mgt.License;
-import org.wso2.carbon.device.mgt.common.license.mgt.LicenseManagementException;
-import org.wso2.carbon.device.mgt.common.license.mgt.LicenseManager;
import org.wso2.carbon.device.mgt.common.operation.mgt.OperationManagementException;
import org.wso2.carbon.device.mgt.common.operation.mgt.OperationManager;
import org.wso2.carbon.device.mgt.common.spi.DeviceManagementService;
import org.wso2.carbon.device.mgt.core.DeviceManagementConstants;
import org.wso2.carbon.device.mgt.core.DeviceManagementPluginRepository;
-import org.wso2.carbon.device.mgt.core.api.mgt.APIPublisherService;
-import org.wso2.carbon.device.mgt.core.api.mgt.APIPublisherServiceImpl;
-import org.wso2.carbon.device.mgt.core.api.mgt.ApplicationManagementProviderService;
+import org.wso2.carbon.device.mgt.core.app.mgt.ApplicationManagementProviderService;
import org.wso2.carbon.device.mgt.core.app.mgt.ApplicationManagerProviderServiceImpl;
import org.wso2.carbon.device.mgt.core.app.mgt.config.AppManagementConfig;
import org.wso2.carbon.device.mgt.core.app.mgt.config.AppManagementConfigurationManager;
import org.wso2.carbon.device.mgt.core.config.DeviceConfigurationManager;
import org.wso2.carbon.device.mgt.core.config.DeviceManagementConfig;
import org.wso2.carbon.device.mgt.core.config.datasource.DataSourceConfig;
-import org.wso2.carbon.device.mgt.core.config.license.LicenseConfig;
import org.wso2.carbon.device.mgt.core.dao.DeviceManagementDAOFactory;
import org.wso2.carbon.device.mgt.core.operation.mgt.OperationManagerImpl;
import org.wso2.carbon.device.mgt.core.operation.mgt.dao.OperationManagementDAOFactory;
@@ -175,10 +169,6 @@ public class DeviceManagementServiceComponent {
DeviceManagementDataHolder.getInstance().setDeviceManagementProvider(deviceManagementProvider);
bundleContext.registerService(DeviceManagementProviderService.class.getName(), deviceManagementProvider, null);
- APIPublisherService publisher = new APIPublisherServiceImpl();
- DeviceManagementDataHolder.getInstance().setApiPublisherService(publisher);
- bundleContext.registerService(APIPublisherService.class, publisher, null);
-
/* Registering App Management service */
try {
AppManagementConfigurationManager.getInstance().initConfig();
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/util/DeviceManagerUtil.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/util/DeviceManagerUtil.java
index dc895d8581a..ac64d714a2b 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/util/DeviceManagerUtil.java
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/util/DeviceManagerUtil.java
@@ -20,18 +20,9 @@ package org.wso2.carbon.device.mgt.core.util;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.w3c.dom.Document;
-import org.wso2.carbon.apimgt.api.APIManagementException;
-import org.wso2.carbon.apimgt.api.APIProvider;
-import org.wso2.carbon.apimgt.api.model.API;
-import org.wso2.carbon.apimgt.api.model.APIIdentifier;
-import org.wso2.carbon.apimgt.api.model.APIStatus;
-import org.wso2.carbon.apimgt.api.model.URITemplate;
-import org.wso2.carbon.apimgt.impl.APIConstants;
import org.wso2.carbon.context.PrivilegedCarbonContext;
import org.wso2.carbon.device.mgt.common.Device;
import org.wso2.carbon.device.mgt.common.DeviceManagementException;
-import org.wso2.carbon.device.mgt.common.EnrolmentInfo;
-import org.wso2.carbon.device.mgt.core.api.mgt.APIConfig;
import org.wso2.carbon.device.mgt.core.config.datasource.DataSourceConfig;
import org.wso2.carbon.device.mgt.core.config.datasource.JNDILookupDefinition;
import org.wso2.carbon.device.mgt.core.dao.DeviceManagementDAOException;
@@ -44,27 +35,15 @@ import javax.sql.DataSource;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import java.io.File;
-import java.util.*;
+import java.util.HashMap;
+import java.util.Hashtable;
+import java.util.List;
+import java.util.Map;
public final class DeviceManagerUtil {
private static final Log log = LogFactory.getLog(DeviceManagerUtil.class);
- enum HTTPMethod {
- GET, POST, DELETE, PUT, OPTIONS
- }
-
- private static List httpMethods;
-
- static {
- httpMethods = new ArrayList();
- httpMethods.add(HTTPMethod.GET);
- httpMethods.add(HTTPMethod.POST);
- httpMethods.add(HTTPMethod.DELETE);
- httpMethods.add(HTTPMethod.PUT);
- httpMethods.add(HTTPMethod.OPTIONS);
- }
-
public static Document convertToDocument(File file) throws DeviceManagementException {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
@@ -168,52 +147,4 @@ public final class DeviceManagerUtil {
return ctx.getTenantId();
}
- public static API getAPI(APIConfig config) throws APIManagementException {
- APIProvider provider = config.getProvider();
- APIIdentifier id = new APIIdentifier(config.getOwner(), config.getName(), config.getVersion());
-
- API api = new API(id);
- api.setApiOwner(config.getOwner());
- api.setContext(config.getContext());
- api.setUrl(config.getEndpoint());
- api.setUriTemplates(
- getURITemplates(config.getEndpoint(), APIConstants.AUTH_APPLICATION_OR_USER_LEVEL_TOKEN));
- api.setVisibility(APIConstants.API_GLOBAL_VISIBILITY);
- api.addAvailableTiers(provider.getTiers());
- api.setEndpointSecured(true);
- api.setStatus(APIStatus.PUBLISHED);
- api.setTransports(config.getTransports());
-
- return api;
- }
-
- private static Set getURITemplates(String endpoint, String authType) {
- Set uriTemplates = new LinkedHashSet();
- if (APIConstants.AUTH_NO_AUTHENTICATION.equals(authType)) {
- for (HTTPMethod method : httpMethods) {
- URITemplate template = new URITemplate();
- template.setAuthType(APIConstants.AUTH_NO_AUTHENTICATION);
- template.setHTTPVerb(method.toString());
- template.setResourceURI(endpoint);
- template.setUriTemplate("/*");
- uriTemplates.add(template);
- }
- } else {
- for (HTTPMethod method : httpMethods) {
- URITemplate template = new URITemplate();
- if (HTTPMethod.OPTIONS.equals(method)) {
- template.setAuthType(APIConstants.AUTH_NO_AUTHENTICATION);
- } else {
- template.setAuthType(APIConstants.AUTH_APPLICATION_OR_USER_LEVEL_TOKEN);
- }
- template.setHTTPVerb(method.toString());
- template.setResourceURI(endpoint);
- template.setUriTemplate("/*");
- uriTemplates.add(template);
- }
- }
- return uriTemplates;
- }
-
-
}
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/app/mgt/ApplicationManagementProviderServiceTest.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/app/mgt/ApplicationManagementProviderServiceTest.java
index 132f73cb176..ad607d74cf8 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/app/mgt/ApplicationManagementProviderServiceTest.java
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/app/mgt/ApplicationManagementProviderServiceTest.java
@@ -27,8 +27,6 @@ import org.wso2.carbon.device.mgt.common.app.mgt.Application;
import org.wso2.carbon.device.mgt.common.app.mgt.ApplicationManagementException;
import org.wso2.carbon.device.mgt.core.DeviceManagementPluginRepository;
import org.wso2.carbon.device.mgt.core.TestDeviceManagementService;
-import org.wso2.carbon.device.mgt.core.api.mgt.ApplicationManagementProviderService;
-import org.wso2.carbon.device.mgt.core.app.mgt.ApplicationManagerProviderServiceImpl;
import org.wso2.carbon.device.mgt.core.app.mgt.config.AppManagementConfig;
import org.wso2.carbon.device.mgt.core.common.TestDataHolder;
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/resources/testng.xml b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/resources/testng.xml
index 1eee2b18ebf..cf107283b8f 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/resources/testng.xml
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/resources/testng.xml
@@ -24,17 +24,17 @@
-
-
-
-
-
+
+
+
+
+
-
-
+
+
\ No newline at end of file
diff --git a/components/device-mgt/pom.xml b/components/device-mgt/pom.xml
index 057e6af1543..daaa8bda231 100644
--- a/components/device-mgt/pom.xml
+++ b/components/device-mgt/pom.xml
@@ -38,6 +38,7 @@
org.wso2.carbon.device.mgt.core
org.wso2.carbon.device.mgt.common
org.wso2.carbon.device.mgt.extensions
+ org.wso2.carbon.apimgt.webapp.publisher
diff --git a/features/device-mgt/org.wso2.carbon.apimgt.webapp.publisher.feature/pom.xml b/features/device-mgt/org.wso2.carbon.apimgt.webapp.publisher.feature/pom.xml
new file mode 100644
index 00000000000..b05b330b16a
--- /dev/null
+++ b/features/device-mgt/org.wso2.carbon.apimgt.webapp.publisher.feature/pom.xml
@@ -0,0 +1,91 @@
+
+
+
+ org.wso2.carbon.devicemgt
+ device-mgt-feature
+ 0.9.2-SNAPSHOT
+ ../pom.xml
+
+
+ 4.0.0
+ org.wso2.carbon.apimgt.webapp.publisher.feature
+ pom
+ 0.9.2-SNAPSHOT
+ WSO2 Carbon - API Management Webapp Publisher Feature
+ http://wso2.org
+ This feature contains an implementation of a Tomcat lifecycle listener, which takes care of publishing
+ JAX-RS web applications as 'Managed APIs'
+
+
+
+
+ org.wso2.carbon.devicemgt
+ org.wso2.carbon.apimgt.webapp.publisher
+
+
+
+
+
+
+ maven-resources-plugin
+ 2.6
+
+
+ copy-resources
+ generate-resources
+
+ copy-resources
+
+
+ src/main/resources
+
+
+ resources
+
+ build.properties
+ p2.inf
+
+
+
+
+
+
+
+
+ org.wso2.maven
+ carbon-p2-plugin
+ ${carbon.p2.plugin.version}
+
+
+ p2-feature-generation
+ package
+
+ p2-feature-gen
+
+
+ org.wso2.carbon.apimgt.webapp.publisher
+ ../../../features/etc/feature.properties
+
+
+ org.wso2.carbon.p2.category.type:server
+ org.eclipse.equinox.p2.type.group:false
+
+
+
+
+ org.wso2.carbon.devicemgt:org.wso2.carbon.apimgt.webapp.publisher:${carbon.device.mgt.version}
+
+
+
+ org.wso2.carbon.core.server:${carbon.kernel.version}
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/features/device-mgt/pom.xml b/features/device-mgt/pom.xml
index c1e36a3fe03..b9290269035 100644
--- a/features/device-mgt/pom.xml
+++ b/features/device-mgt/pom.xml
@@ -37,6 +37,7 @@
org.wso2.carbon.device.mgt.server.feature
org.wso2.carbon.device.mgt.extensions.feature
+ org.wso2.carbon.apimgt.webapp.publisher.feature
diff --git a/pom.xml b/pom.xml
index 16a015fe087..dee3c949418 100644
--- a/pom.xml
+++ b/pom.xml
@@ -157,9 +157,9 @@
${carbon.device.mgt.version}
- org.wso2.carbon.identity
- org.wso2.carbon.identity.oauth.stub
- ${carbon.identity.version}
+ org.wso2.carbon.devicemgt
+ org.wso2.carbon.apimgt.webapp.publisher
+ ${carbon.device.mgt.version}
@@ -837,6 +837,11 @@
org.wso2.carbon.identity.core
${carbon.identity.version}
+
+ org.wso2.carbon.identity
+ org.wso2.carbon.identity.oauth.stub
+ ${carbon.identity.version}
+