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 fdd2e5bb2dd..43490e0c831 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 @@ -47,6 +47,7 @@ public class APIUtil { 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"; + private static final String DEFAULT_TRANSPORT_MGT_TAG = "transport_management"; public static final String PERMISSION_PROPERTY_NAME = "name"; @@ -116,6 +117,7 @@ public class APIUtil { allowedApisTags.add(DEFAULT_APP_MGT_REVIEW_MGT_TAG); allowedApisTags.add(DEFAULT_APP_MGT_SUB_MGT_TAG); allowedApisTags.add(DEFAULT_ANALYTICS_ARTIFACT_TAG); + allowedApisTags.add(DEFAULT_TRANSPORT_MGT_TAG); return allowedApisTags; } diff --git a/components/email-sender/org.wso2.carbon.email.sender.core/pom.xml b/components/transport-mgt/email-sender/org.wso2.carbon.email.sender.core/pom.xml similarity index 100% rename from components/email-sender/org.wso2.carbon.email.sender.core/pom.xml rename to components/transport-mgt/email-sender/org.wso2.carbon.email.sender.core/pom.xml diff --git a/components/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/ContentProcessingInterruptedException.java b/components/transport-mgt/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/ContentProcessingInterruptedException.java similarity index 100% rename from components/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/ContentProcessingInterruptedException.java rename to components/transport-mgt/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/ContentProcessingInterruptedException.java diff --git a/components/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/ContentProviderInfo.java b/components/transport-mgt/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/ContentProviderInfo.java similarity index 100% rename from components/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/ContentProviderInfo.java rename to components/transport-mgt/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/ContentProviderInfo.java diff --git a/components/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/EmailContentProvider.java b/components/transport-mgt/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/EmailContentProvider.java similarity index 100% rename from components/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/EmailContentProvider.java rename to components/transport-mgt/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/EmailContentProvider.java diff --git a/components/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/EmailContentProviderFactory.java b/components/transport-mgt/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/EmailContentProviderFactory.java similarity index 100% rename from components/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/EmailContentProviderFactory.java rename to components/transport-mgt/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/EmailContentProviderFactory.java diff --git a/components/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/EmailContext.java b/components/transport-mgt/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/EmailContext.java similarity index 100% rename from components/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/EmailContext.java rename to components/transport-mgt/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/EmailContext.java diff --git a/components/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/EmailData.java b/components/transport-mgt/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/EmailData.java similarity index 100% rename from components/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/EmailData.java rename to components/transport-mgt/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/EmailData.java diff --git a/components/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/EmailSenderConfig.java b/components/transport-mgt/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/EmailSenderConfig.java similarity index 100% rename from components/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/EmailSenderConfig.java rename to components/transport-mgt/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/EmailSenderConfig.java diff --git a/components/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/EmailSenderConfigurationFailedException.java b/components/transport-mgt/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/EmailSenderConfigurationFailedException.java similarity index 100% rename from components/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/EmailSenderConfigurationFailedException.java rename to components/transport-mgt/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/EmailSenderConfigurationFailedException.java diff --git a/components/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/EmailSenderUtil.java b/components/transport-mgt/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/EmailSenderUtil.java similarity index 100% rename from components/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/EmailSenderUtil.java rename to components/transport-mgt/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/EmailSenderUtil.java diff --git a/components/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/EmailSendingFailedException.java b/components/transport-mgt/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/EmailSendingFailedException.java similarity index 100% rename from components/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/EmailSendingFailedException.java rename to components/transport-mgt/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/EmailSendingFailedException.java diff --git a/components/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/EmailTransportNotConfiguredException.java b/components/transport-mgt/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/EmailTransportNotConfiguredException.java similarity index 100% rename from components/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/EmailTransportNotConfiguredException.java rename to components/transport-mgt/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/EmailTransportNotConfiguredException.java diff --git a/components/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/InvalidConfigurationStateException.java b/components/transport-mgt/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/InvalidConfigurationStateException.java similarity index 100% rename from components/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/InvalidConfigurationStateException.java rename to components/transport-mgt/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/InvalidConfigurationStateException.java diff --git a/components/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/RegistryBasedResourceLoader.java b/components/transport-mgt/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/RegistryBasedResourceLoader.java similarity index 100% rename from components/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/RegistryBasedResourceLoader.java rename to components/transport-mgt/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/RegistryBasedResourceLoader.java diff --git a/components/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/TypedValue.java b/components/transport-mgt/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/TypedValue.java similarity index 100% rename from components/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/TypedValue.java rename to components/transport-mgt/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/TypedValue.java diff --git a/components/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/VelocityBasedEmailContentProvider.java b/components/transport-mgt/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/VelocityBasedEmailContentProvider.java similarity index 100% rename from components/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/VelocityBasedEmailContentProvider.java rename to components/transport-mgt/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/VelocityBasedEmailContentProvider.java diff --git a/components/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/internal/EmailSenderAxis2ConfigContextObserver.java b/components/transport-mgt/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/internal/EmailSenderAxis2ConfigContextObserver.java similarity index 100% rename from components/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/internal/EmailSenderAxis2ConfigContextObserver.java rename to components/transport-mgt/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/internal/EmailSenderAxis2ConfigContextObserver.java diff --git a/components/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/internal/EmailSenderDataHolder.java b/components/transport-mgt/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/internal/EmailSenderDataHolder.java similarity index 100% rename from components/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/internal/EmailSenderDataHolder.java rename to components/transport-mgt/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/internal/EmailSenderDataHolder.java diff --git a/components/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/internal/EmailSenderServiceComponent.java b/components/transport-mgt/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/internal/EmailSenderServiceComponent.java similarity index 100% rename from components/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/internal/EmailSenderServiceComponent.java rename to components/transport-mgt/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/internal/EmailSenderServiceComponent.java diff --git a/components/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/internal/EmailUtils.java b/components/transport-mgt/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/internal/EmailUtils.java similarity index 100% rename from components/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/internal/EmailUtils.java rename to components/transport-mgt/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/internal/EmailUtils.java diff --git a/components/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/service/EmailSenderService.java b/components/transport-mgt/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/service/EmailSenderService.java similarity index 100% rename from components/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/service/EmailSenderService.java rename to components/transport-mgt/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/service/EmailSenderService.java diff --git a/components/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/service/EmailSenderServiceImpl.java b/components/transport-mgt/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/service/EmailSenderServiceImpl.java similarity index 100% rename from components/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/service/EmailSenderServiceImpl.java rename to components/transport-mgt/email-sender/org.wso2.carbon.email.sender.core/src/main/java/org/wso2/carbon/email/sender/core/service/EmailSenderServiceImpl.java diff --git a/components/email-sender/org.wso2.carbon.email.sender.core/src/test/resources/log4j.properties b/components/transport-mgt/email-sender/org.wso2.carbon.email.sender.core/src/test/resources/log4j.properties similarity index 100% rename from components/email-sender/org.wso2.carbon.email.sender.core/src/test/resources/log4j.properties rename to components/transport-mgt/email-sender/org.wso2.carbon.email.sender.core/src/test/resources/log4j.properties diff --git a/components/email-sender/org.wso2.carbon.email.sender.core/src/test/resources/testng.xml b/components/transport-mgt/email-sender/org.wso2.carbon.email.sender.core/src/test/resources/testng.xml similarity index 100% rename from components/email-sender/org.wso2.carbon.email.sender.core/src/test/resources/testng.xml rename to components/transport-mgt/email-sender/org.wso2.carbon.email.sender.core/src/test/resources/testng.xml diff --git a/components/email-sender/org.wso2.carbon.email.sender.core/velocity.log b/components/transport-mgt/email-sender/org.wso2.carbon.email.sender.core/velocity.log similarity index 100% rename from components/email-sender/org.wso2.carbon.email.sender.core/velocity.log rename to components/transport-mgt/email-sender/org.wso2.carbon.email.sender.core/velocity.log diff --git a/components/email-sender/pom.xml b/components/transport-mgt/email-sender/pom.xml similarity index 92% rename from components/email-sender/pom.xml rename to components/transport-mgt/email-sender/pom.xml index 23b09390c00..33817efa23e 100644 --- a/components/email-sender/pom.xml +++ b/components/transport-mgt/email-sender/pom.xml @@ -21,9 +21,9 @@ org.wso2.carbon.devicemgt - carbon-devicemgt + transport-mgt 4.1.12-SNAPSHOT - ../../pom.xml + ../pom.xml 4.0.0 diff --git a/components/transport-mgt/pom.xml b/components/transport-mgt/pom.xml new file mode 100644 index 00000000000..2fa7c65c0c9 --- /dev/null +++ b/components/transport-mgt/pom.xml @@ -0,0 +1,23 @@ + + + + carbon-devicemgt + org.wso2.carbon.devicemgt + 4.1.12-SNAPSHOT + ../../pom.xml + + + 4.0.0 + transport-mgt + pom + Entgra IoT - Transport Component + http://entgra.io + + + sms-handler + email-sender + + + diff --git a/components/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.api/pom.xml b/components/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.api/pom.xml new file mode 100644 index 00000000000..2804324cc5b --- /dev/null +++ b/components/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.api/pom.xml @@ -0,0 +1,224 @@ + + + + + + + org.wso2.carbon.devicemgt + sms-handler + 4.1.12-SNAPSHOT + ../pom.xml + + + 4.0.0 + io.entgra.transport.mgt.sms.handler.api + war + Entgra IoT - SMS Management Core + Entgra IoT - SMS Management API + http://entgra.io + + + + + maven-compiler-plugin + + 1.8 + 1.8 + + + + maven-war-plugin + + WEB-INF/lib/*cxf*.jar + api#sms-handler#v1.0 + + + + org.jacoco + jacoco-maven-plugin + + ${basedir}/target/coverage-reports/jacoco-unit.exec + + + + jacoco-initialize + + prepare-agent + + + + jacoco-site + test + + report + + + ${basedir}/target/coverage-reports/jacoco-unit.exec + ${basedir}/target/coverage-reports/site + + + + + + org.apache.maven.plugins + maven-surefire-plugin + + + file:src/test/resources/log4j.properties + + + src/test/resources/testng.xml + + + + + + + + + deploy + + compile + + + org.apache.maven.plugins + maven-antrun-plugin + 1.7 + + + compile + + run + + + + + + + + + + + + + + + + + + client + + test + + + org.codehaus.mojo + exec-maven-plugin + 1.2.1 + + + test + + java + + + + + + + + + + + + org.apache.cxf + cxf-rt-frontend-jaxws + provided + + + org.apache.cxf + cxf-rt-frontend-jaxrs + provided + + + org.apache.cxf + cxf-rt-transports-http + provided + + + javax.servlet + javax.servlet-api + provided + + + javax.ws.rs + javax.ws.rs-api + provided + + + io.swagger + swagger-annotations + + + io.swagger + swagger-jaxrs + + + com.fasterxml.jackson.module + jackson-module-jaxb-annotations + + + org.slf4j + slf4j-api + + + org.wso2.orbit.com.fasterxml.jackson.core + jackson-core + + + + + org.wso2.carbon.devicemgt + org.wso2.carbon.apimgt.annotations + provided + + + org.wso2.carbon + org.wso2.carbon.logging + provided + + + org.wso2.carbon.devicemgt + org.wso2.carbon.device.mgt.common + provided + + + org.wso2.carbon.devicemgt + io.entgra.transport.mgt.sms.handler.core + provided + + + org.wso2.carbon.devicemgt + io.entgra.transport.mgt.sms.handler.common + provided + + + + diff --git a/components/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.api/src/main/java/io/entgra/transport/mgt/sms/handler/api/service/ConfigurationManagementService.java b/components/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.api/src/main/java/io/entgra/transport/mgt/sms/handler/api/service/ConfigurationManagementService.java new file mode 100644 index 00000000000..3a771222c7a --- /dev/null +++ b/components/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.api/src/main/java/io/entgra/transport/mgt/sms/handler/api/service/ConfigurationManagementService.java @@ -0,0 +1,118 @@ +/* + * Copyright (c) 2021, 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 io.entgra.transport.mgt.sms.handler.api.service; + +import io.entgra.transport.mgt.sms.handler.common.SMSHandlerConstants; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiResponse; +import io.swagger.annotations.ApiResponses; +import io.swagger.annotations.Extension; +import io.swagger.annotations.ExtensionProperty; +import io.swagger.annotations.Info; +import io.swagger.annotations.ResponseHeader; +import io.swagger.annotations.SwaggerDefinition; +import io.swagger.annotations.Tag; +import org.wso2.carbon.apimgt.annotations.api.Scope; +import org.wso2.carbon.apimgt.annotations.api.Scopes; + +import javax.ws.rs.Consumes; +import javax.ws.rs.GET; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; + +@SwaggerDefinition( + info = @Info( + version = "1.0.0", + title = "", + extensions = { + @Extension(properties = { + @ExtensionProperty(name = "name", value = "ConfigurationManagementService"), + @ExtensionProperty(name = "context", value = "/api/sms-handler/v1.0/configuration"), + }) + } + ), + tags = { + @Tag(name = "transport_management", description = "") + } +) +@Path("/configuration") +@Api(value = "Configuration Management", description = "The general SMS configuration management capabilities " + + "are exposed through this API.") +@Produces(MediaType.APPLICATION_JSON) +@Consumes(MediaType.APPLICATION_JSON) +@Scopes(scopes = { + @Scope( + name = "View configurations", + description = "", + key = "perm:sms-handler:view-configuration", + permissions = {"/sms-handler/platform-configurations/view"} + ) +}) +public interface ConfigurationManagementService { + + @GET + @ApiOperation( + produces = MediaType.APPLICATION_JSON, + httpMethod = "GET", + value = "Reload SMS Configuration", + notes = "Reload SMS Configuration in sms-config.xml file", + tags = "SMS Configuration Management", + extensions = { + @Extension(properties = { + @ExtensionProperty(name = SMSHandlerConstants.SCOPE, value = "perm:sms-handler:view-configuration") + }) + } + ) + @ApiResponses( + value = { + @ApiResponse( + code = 200, + message = "OK. \n Successfully reloaded SMS configurations.", + responseContainer = "List", + responseHeaders = { + @ResponseHeader( + name = "Content-Type", + description = "The content type of the body"), + @ResponseHeader( + name = "ETag", + description = "Entity Tag of the response resource.\n" + + "Used by caches, or in conditional requests."), + @ResponseHeader( + name = "Last-Modified", + description = "Date and time the resource has been modified the last time.\n" + + "Used by caches, or in conditional requests."), + } + ), + @ApiResponse( + code = 304, + message = "Not Modified. \n Empty body because the client already has the latest " + + "version of the requested resource."), + @ApiResponse( + code = 406, + message = "Not Acceptable.\n The requested media type is not supported."), + @ApiResponse( + code = 500, + message = "Internal Server Error. \n Server error occurred while fetching the general " + + "platform configurations.") + }) + Response reloadConfiguration(); +} diff --git a/components/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.api/src/main/java/io/entgra/transport/mgt/sms/handler/api/service/addons/ApiOriginFilter.java b/components/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.api/src/main/java/io/entgra/transport/mgt/sms/handler/api/service/addons/ApiOriginFilter.java new file mode 100644 index 00000000000..867636638bb --- /dev/null +++ b/components/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.api/src/main/java/io/entgra/transport/mgt/sms/handler/api/service/addons/ApiOriginFilter.java @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2021, 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 io.entgra.transport.mgt.sms.handler.api.service.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 + } +} diff --git a/components/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.api/src/main/java/io/entgra/transport/mgt/sms/handler/api/service/addons/GsonMessageBodyHandler.java b/components/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.api/src/main/java/io/entgra/transport/mgt/sms/handler/api/service/addons/GsonMessageBodyHandler.java new file mode 100644 index 00000000000..9917fc119b6 --- /dev/null +++ b/components/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.api/src/main/java/io/entgra/transport/mgt/sms/handler/api/service/addons/GsonMessageBodyHandler.java @@ -0,0 +1,85 @@ +/* + * Copyright (c) 2021, 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 io.entgra.transport.mgt.sms.handler.api.service.addons; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; + +import javax.ws.rs.WebApplicationException; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.MultivaluedMap; +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; + +public class GsonMessageBodyHandler { + + public static final String DATE_FORMAT = "EEE, d MMM yyyy HH:mm:ss Z"; + private Gson gson; + private static final String UTF_8 = "UTF-8"; + + public boolean isReadable(Class aClass, Type type, Annotation[] annotations, MediaType mediaType) { + return true; + } + + private Gson getGson() { + if (gson == null) { + final GsonBuilder gsonBuilder = new GsonBuilder(); + gson = gsonBuilder.setDateFormat(DATE_FORMAT).create(); + } + return gson; + } + + public Object readFrom(Class objectClass, Type type, Annotation[] annotations, MediaType mediaType, + MultivaluedMap stringStringMultivaluedMap, InputStream entityStream) + throws IOException, WebApplicationException { + + InputStreamReader reader = new InputStreamReader(entityStream, "UTF-8"); + + try { + return getGson().fromJson(reader, type); + } finally { + reader.close(); + } + } + + public boolean isWriteable(Class aClass, Type type, Annotation[] annotations, MediaType mediaType) { + return true; + } + + public long getSize(Object o, Class aClass, Type type, Annotation[] annotations, MediaType mediaType) { + return -1; + } + + public void writeTo(Object object, Class aClass, Type type, Annotation[] annotations, MediaType mediaType, + MultivaluedMap stringObjectMultivaluedMap, OutputStream entityStream) + throws IOException, WebApplicationException { + + OutputStreamWriter writer = new OutputStreamWriter(entityStream, UTF_8); + try { + getGson().toJson(object, type, writer); + } finally { + writer.close(); + } + } +} diff --git a/components/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.api/src/main/java/io/entgra/transport/mgt/sms/handler/api/service/impl/ConfigurationManagementServiceImpl.java b/components/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.api/src/main/java/io/entgra/transport/mgt/sms/handler/api/service/impl/ConfigurationManagementServiceImpl.java new file mode 100644 index 00000000000..f849161df7f --- /dev/null +++ b/components/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.api/src/main/java/io/entgra/transport/mgt/sms/handler/api/service/impl/ConfigurationManagementServiceImpl.java @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2021, 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 io.entgra.transport.mgt.sms.handler.api.service.impl; + +import io.entgra.transport.mgt.sms.handler.api.service.ConfigurationManagementService; +import io.entgra.transport.mgt.sms.handler.core.config.SMSConfigurationManager; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.wso2.carbon.device.mgt.common.exceptions.DeviceManagementException; + +import javax.ws.rs.GET; +import javax.ws.rs.Path; +import javax.ws.rs.core.Response; + +@Path("/configuration") +public class ConfigurationManagementServiceImpl implements ConfigurationManagementService { + + private static final Log log = LogFactory.getLog(ConfigurationManagementServiceImpl.class); + + @Path("/reload") + @GET + @Override + public Response reloadConfiguration() { + if (log.isDebugEnabled()) { + log.debug("Reloading SMS Configuration in file sms-config.xml"); + } + try { + SMSConfigurationManager.getInstance().initConfig(); + } catch (DeviceManagementException e) { + String msg = "Error occurred while reloading SMS Configuration"; + log.error(msg, e); + return Response.serverError().entity(msg).build(); + } + return Response.ok().entity("Successfully reloaded SMS Configuration in file sms-config.xml ").build(); + } +} diff --git a/components/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.api/src/main/webapp/META-INF/webapp-classloading.xml b/components/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.api/src/main/webapp/META-INF/webapp-classloading.xml new file mode 100644 index 00000000000..d0d7a01621f --- /dev/null +++ b/components/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.api/src/main/webapp/META-INF/webapp-classloading.xml @@ -0,0 +1,35 @@ + + + + + + + + + false + + + CXF,Carbon + diff --git a/components/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.api/src/main/webapp/WEB-INF/cxf-servlet.xml b/components/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.api/src/main/webapp/WEB-INF/cxf-servlet.xml new file mode 100644 index 00000000000..8c3cefe9e48 --- /dev/null +++ b/components/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.api/src/main/webapp/WEB-INF/cxf-servlet.xml @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/components/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.api/src/main/webapp/WEB-INF/web.xml b/components/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.api/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 00000000000..e2e3f78aace --- /dev/null +++ b/components/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.api/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,88 @@ + + + + Admin-Webapp + + JAX-WS/JAX-RS Device Management Endpoint + JAX-WS/JAX-RS Servlet + CXFServlet + + org.apache.cxf.transport.servlet.CXFServlet + + + + swagger.security.filter + ApiAuthorizationFilterImpl + + 1 + + + CXFServlet + /* + + + 60 + + + + doAuthentication + true + + + + nonSecuredEndPoints + + + + + + managed-api-enabled + true + + + managed-api-owner + admin + + + isSharedWithAllTenants + true + + + + + + SMSMgt-Admin + /* + + + CONFIDENTIAL + + + + + ApiOriginFilter + io.entgra.transport.mgt.sms.handler.api.service.addons.ApiOriginFilter + + + + ApiOriginFilter + /* + + + diff --git a/components/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.common/pom.xml b/components/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.common/pom.xml new file mode 100644 index 00000000000..328b0425c71 --- /dev/null +++ b/components/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.common/pom.xml @@ -0,0 +1,98 @@ + + + + + + + org.wso2.carbon.devicemgt + sms-handler + 4.1.12-SNAPSHOT + ../pom.xml + + + 4.0.0 + io.entgra.transport.mgt.sms.handler.common + bundle + Entgra IoT - SMS Management Common + Entgra IoT - SMS Management Common + http://entgra.io + + + + + org.apache.felix + maven-bundle-plugin + true + + + ${project.artifactId} + ${project.artifactId} + ${carbon.device.mgt.version} + SMS Management Common Bundle + + io.entgra.transport.mgt.sms.handler.common.* + + + io.swagger.annotations; version="${swagger.annotations.version}"; resolution:=optional, + + + + + + org.jacoco + jacoco-maven-plugin + + ${basedir}/target/coverage-reports/jacoco-unit.exec + + + + jacoco-initialize + + prepare-agent + + + + jacoco-site + test + + report + + + ${basedir}/target/coverage-reports/jacoco-unit.exec + ${basedir}/target/coverage-reports/site + + + + + + + + + + + io.swagger + swagger-annotations + provided + + + + + diff --git a/components/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.common/src/main/java/io/entgra/transport/mgt/sms/handler/common/SMSHandlerConstants.java b/components/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.common/src/main/java/io/entgra/transport/mgt/sms/handler/common/SMSHandlerConstants.java new file mode 100644 index 00000000000..c5b5e620668 --- /dev/null +++ b/components/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.common/src/main/java/io/entgra/transport/mgt/sms/handler/common/SMSHandlerConstants.java @@ -0,0 +1,10 @@ +package io.entgra.transport.mgt.sms.handler.common; + +/** + * This class holds SMS Management Constants + */ +public final class SMSHandlerConstants { + + public static final String SCOPE = "scope"; + public static final String SMS_CONFIG_XML_NAME = "sms-config.xml"; +} diff --git a/components/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.common/src/main/java/io/entgra/transport/mgt/sms/handler/common/bean/SMSMessage.java b/components/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.common/src/main/java/io/entgra/transport/mgt/sms/handler/common/bean/SMSMessage.java new file mode 100644 index 00000000000..f7e33116bbe --- /dev/null +++ b/components/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.common/src/main/java/io/entgra/transport/mgt/sms/handler/common/bean/SMSMessage.java @@ -0,0 +1,71 @@ +/* + * Copyright (c) 2021, 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 io.entgra.transport.mgt.sms.handler.common.bean; + +import io.swagger.annotations.ApiModelProperty; + +/** + * This class hold the SMS Message + */ +public class SMSMessage { + + @ApiModelProperty( + name = "from", + value = "Sender's number.", + required = true + ) + private String from; + + @ApiModelProperty( + name = "to", + value = "Recipient's number." + ) + private String to; + + @ApiModelProperty( + name = "body", + value = "SMS message content.", + required = true + ) + private String body; + + public String getFrom() { + return from; + } + + public void setFrom(String from) { + this.from = from; + } + + public String getTo() { + return to; + } + + public void setTo(String to) { + this.to = to; + } + + public String getBody() { + return body; + } + + public void setBody(String body) { + this.body = body; + } +} diff --git a/components/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.common/src/main/java/io/entgra/transport/mgt/sms/handler/common/config/Property.java b/components/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.common/src/main/java/io/entgra/transport/mgt/sms/handler/common/config/Property.java new file mode 100644 index 00000000000..f5a3195ae1a --- /dev/null +++ b/components/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.common/src/main/java/io/entgra/transport/mgt/sms/handler/common/config/Property.java @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2021, 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 io.entgra.transport.mgt.sms.handler.common.config; + +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlValue; + +@XmlRootElement(name = "Property") +public class Property { + + private String name; + private String value; + + @XmlAttribute(name = "name") + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @XmlValue + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } +} diff --git a/components/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.common/src/main/java/io/entgra/transport/mgt/sms/handler/common/config/SMSConfiguration.java b/components/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.common/src/main/java/io/entgra/transport/mgt/sms/handler/common/config/SMSConfiguration.java new file mode 100644 index 00000000000..ffc6952db6e --- /dev/null +++ b/components/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.common/src/main/java/io/entgra/transport/mgt/sms/handler/common/config/SMSConfiguration.java @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2021, 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 io.entgra.transport.mgt.sms.handler.common.config; + +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlElementWrapper; +import javax.xml.bind.annotation.XmlRootElement; +import java.util.List; + +@XmlRootElement(name = "SMSConfiguration") +public class SMSConfiguration { + + private List smsGateways; + + @XmlElementWrapper(name = "Gateways") + @XmlElement(name = "Gateway") + public List getSMSGateways() { + return smsGateways; + } + + public void setSMSGateways(List smsGateways) { + this.smsGateways = smsGateways; + } + + /** + * Retrieve the default SMS Gateway as defined in the SMS configuration. + * @return default {@link SMSGateway} + */ + public SMSGateway getDefaultSMSGateway() { + for (SMSGateway smsGateway : smsGateways) { + if (smsGateway.isDefault()) { + return smsGateway; + } + } + return null; + } + + /** + * Retrieve SMS Gateway by the provided Gateway Name + * @param gatewayName has the name of the Gateway to be retrieved + * @return retrieved {@link SMSGateway} + */ + public SMSGateway getSMSGateway(String gatewayName) { + for (SMSGateway smsGateway : smsGateways) { + if (gatewayName.equals(smsGateway.getName())) { + return smsGateway; + } + } + return null; + } +} diff --git a/components/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.common/src/main/java/io/entgra/transport/mgt/sms/handler/common/config/SMSGateway.java b/components/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.common/src/main/java/io/entgra/transport/mgt/sms/handler/common/config/SMSGateway.java new file mode 100644 index 00000000000..a1e031328b8 --- /dev/null +++ b/components/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.common/src/main/java/io/entgra/transport/mgt/sms/handler/common/config/SMSGateway.java @@ -0,0 +1,85 @@ +/* + * Copyright (c) 2021, 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 io.entgra.transport.mgt.sms.handler.common.config; + +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlElementWrapper; +import javax.xml.bind.annotation.XmlRootElement; +import java.util.List; + +@XmlRootElement(name = "Gateway") +public class SMSGateway { + + private String name; + private String extensionClass; + private boolean isDefault; + private List properties; + + @XmlAttribute(name = "name") + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @XmlAttribute(name = "extensionClass") + public String getExtensionClass() { + return extensionClass; + } + + public void setExtensionClass(String extensionClass) { + this.extensionClass = extensionClass; + } + + @XmlAttribute(name = "isDefault") + public boolean isDefault() { + return isDefault; + } + + public void setDefault(boolean aDefault) { + isDefault = aDefault; + } + + @XmlElementWrapper(name = "Properties") + @XmlElement(name = "Property") + public List getProperties() { + return properties; + } + + public void setProperties(List properties) { + this.properties = properties; + } + + /** + * Retrives the Property based on the provided property name + * @param propertyName has the name of the Property to be retrieved + * @return retrieved {@link Property} + */ + public Property getPropertyByName(String propertyName) { + for (Property property : properties) { + if (propertyName.equals(property.getName())) { + return property; + } + } + return null; + } +} diff --git a/components/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.common/src/main/java/io/entgra/transport/mgt/sms/handler/common/exception/SMSSenderException.java b/components/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.common/src/main/java/io/entgra/transport/mgt/sms/handler/common/exception/SMSSenderException.java new file mode 100644 index 00000000000..06a3b4cde41 --- /dev/null +++ b/components/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.common/src/main/java/io/entgra/transport/mgt/sms/handler/common/exception/SMSSenderException.java @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2021, 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 io.entgra.transport.mgt.sms.handler.common.exception; + +/** + * Exception that will be thrown during SMS Sender Management + */ +public class SMSSenderException extends Exception { + + private static final long serialVersionUID = 3570365211845277909L; + + public SMSSenderException(String msg, Exception nestedEx) { + super(msg, nestedEx); + } + + public SMSSenderException(String message, Throwable cause) { + super(message, cause); + } + + public SMSSenderException(String msg) { + super(msg); + } + + public SMSSenderException() { + super(); + } + + public SMSSenderException(Throwable cause) { + super(cause); + } +} diff --git a/components/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.common/src/main/java/io/entgra/transport/mgt/sms/handler/common/spi/SMSSender.java b/components/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.common/src/main/java/io/entgra/transport/mgt/sms/handler/common/spi/SMSSender.java new file mode 100644 index 00000000000..25fa4210fe6 --- /dev/null +++ b/components/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.common/src/main/java/io/entgra/transport/mgt/sms/handler/common/spi/SMSSender.java @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2021, 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 io.entgra.transport.mgt.sms.handler.common.spi; + +import io.entgra.transport.mgt.sms.handler.common.bean.SMSMessage; +import io.entgra.transport.mgt.sms.handler.common.exception.SMSSenderException; + +/** + * Manages the sending of SMS. + * This interface can be implemented by SMS Senders and specific implementation can be done + * depending on the SMS Sender. + */ +public interface SMSSender { + + /** + * Responsible for sending SMS. + * This method can be implemented by the relevant SMS Senders for specific sender related implementation. + * @param smsMessage which has data on the SMS to be send + * @throws SMSSenderException catches all other exception and {@link SMSSenderException} is thrown + */ + void sendSMS(SMSMessage smsMessage) throws SMSSenderException; +} diff --git a/components/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.core/pom.xml b/components/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.core/pom.xml new file mode 100644 index 00000000000..d512053fec4 --- /dev/null +++ b/components/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.core/pom.xml @@ -0,0 +1,132 @@ + + + + + + + org.wso2.carbon.devicemgt + sms-handler + 4.1.12-SNAPSHOT + ../pom.xml + + + 4.0.0 + io.entgra.transport.mgt.sms.handler.core + bundle + Entgra IoT - SMS Management Core + Entgra IoT - SMS Management Core + http://entgra.io + + + + + org.apache.felix + maven-scr-plugin + + + org.jacoco + jacoco-maven-plugin + + ${basedir}/target/coverage-reports/jacoco-unit.exec + + + + jacoco-initialize + + prepare-agent + + + + jacoco-site + test + + report + + + ${basedir}/target/coverage-reports/jacoco-unit.exec + ${basedir}/target/coverage-reports/site + + + + + + org.apache.felix + maven-bundle-plugin + true + + + ${project.artifactId} + ${project.artifactId} + ${carbon.device.mgt.version} + SMS Management Core Bundle + io.entgra.transport.mgt.sms.handler.core.internal + + io.entgra.transport.mgt.sms.handler.common.*, + javax.xml.parsers;version="${javax.xml.parsers.import.pkg.version}";resolution:=optional, + javax.xml.bind.annotation, + javax.xml.bind, + org.apache.commons.lang, + org.wso2.carbon, + org.wso2.carbon.device.mgt.common.*, + org.wso2.carbon.device.mgt.core.* + + + !io.entgra.transport.mgt.sms.handler.core.internal, + io.entgra.transport.mgt.sms.handler.core.* + + * + + + + + + + + + org.wso2.carbon + org.wso2.carbon.logging + provided + + + org.wso2.carbon + org.wso2.carbon.core + provided + + + org.wso2.carbon.devicemgt + io.entgra.transport.mgt.sms.handler.common + provided + + + org.wso2.carbon.devicemgt + org.wso2.carbon.device.mgt.core + provided + + + org.wso2.carbon.devicemgt + org.wso2.carbon.device.mgt.common + provided + + + + + + diff --git a/components/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.core/src/main/java/io/entgra/transport/mgt/sms/handler/core/SMSSenderFactory.java b/components/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.core/src/main/java/io/entgra/transport/mgt/sms/handler/core/SMSSenderFactory.java new file mode 100644 index 00000000000..27e7bc6802d --- /dev/null +++ b/components/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.core/src/main/java/io/entgra/transport/mgt/sms/handler/core/SMSSenderFactory.java @@ -0,0 +1,71 @@ +/* + * Copyright (c) 2021, 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 io.entgra.transport.mgt.sms.handler.core; + +import io.entgra.transport.mgt.sms.handler.common.config.SMSGateway; +import io.entgra.transport.mgt.sms.handler.common.spi.SMSSender; +import io.entgra.transport.mgt.sms.handler.core.config.SMSConfigurationManager; +import org.apache.commons.lang.StringUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +/** + * Factory class to retrieve the relevant SMSSender based on SMS Configuration. + * There can be multiple SMSSender Implementation and an instance of that specific SMSSender can be + * created and retrieved via this factory class. + */ +public class SMSSenderFactory { + + private static final Log log = LogFactory.getLog(SMSSenderFactory.class); + + /** + * Retrieve the SMSSender based on the default SMS Gateway in SMS configuration. + * @return an instance of {@link SMSSender} + */ + public static SMSSender getSMSSender() { + SMSGateway smsGateway = SMSConfigurationManager.getInstance().getSMSConfig().getDefaultSMSGateway(); + if (smsGateway != null) { + return getSMSSender(smsGateway.getExtensionClass()); + } + return null; + } + + /** + * Retrieve the SMSSender based on the provided extension class name. + * @param extensionClass has the class name of the implemented SMSSender using which + * an instance of SMSSender is created + * @return an instance of {@link SMSSender} + */ + public static SMSSender getSMSSender(String extensionClass) { + if (StringUtils.isNotBlank(extensionClass)) { + try { + Class clz = Class.forName(extensionClass); + return (SMSSender) clz.newInstance(); + } catch (ClassNotFoundException e) { + log.error("Extension class '" + extensionClass + "' cannot be located", e); + } catch (IllegalAccessException e) { + log.error("Can't access the class '" + extensionClass + + "' or its nullary constructor is not accessible", e); + } catch (InstantiationException e) { + log.error("Extension class '" + extensionClass + "' instantiation is failed", e); + } + } + return null; + } +} diff --git a/components/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.core/src/main/java/io/entgra/transport/mgt/sms/handler/core/config/SMSConfigurationManager.java b/components/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.core/src/main/java/io/entgra/transport/mgt/sms/handler/core/config/SMSConfigurationManager.java new file mode 100644 index 00000000000..aa1d64dde8e --- /dev/null +++ b/components/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.core/src/main/java/io/entgra/transport/mgt/sms/handler/core/config/SMSConfigurationManager.java @@ -0,0 +1,99 @@ +/* + * Copyright (c) 2021, 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 io.entgra.transport.mgt.sms.handler.core.config; + +import io.entgra.transport.mgt.sms.handler.common.SMSHandlerConstants; +import io.entgra.transport.mgt.sms.handler.common.config.SMSConfiguration; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.w3c.dom.Document; +import org.wso2.carbon.device.mgt.common.exceptions.DeviceManagementException; +import org.wso2.carbon.device.mgt.core.util.DeviceManagerUtil; +import org.wso2.carbon.utils.CarbonUtils; + +import javax.xml.bind.JAXBContext; +import javax.xml.bind.JAXBException; +import javax.xml.bind.Unmarshaller; +import java.io.File; + +/** + * Responsible for the SMS configuration initialization. + */ +public class SMSConfigurationManager { + + private static final Log log = LogFactory.getLog(SMSConfigurationManager.class); + private static SMSConfigurationManager smsConfigurationManager; + private SMSConfiguration smsConfiguration; + private static final String SMS_CONFIG_PATH = CarbonUtils.getCarbonConfigDirPath() + File.separator + + SMSHandlerConstants.SMS_CONFIG_XML_NAME; + + /** + * Retrieve an instance of {@link SMSConfigurationManager} + * @return an instance of {@link SMSConfigurationManager} + */ + public static SMSConfigurationManager getInstance() { + if (smsConfigurationManager == null) { + synchronized (SMSConfigurationManager.class) { + if (smsConfigurationManager == null) { + smsConfigurationManager = new SMSConfigurationManager(); + } + } + } + return smsConfigurationManager; + } + + /** + * Initialize the SMS Configuration through the provided configuration location + * @param configLocation has the path of the SMS configuration file + * @throws DeviceManagementException throws when there are any errors during the initialization of + * SMS configuration + */ + public synchronized void initConfig(String configLocation) throws DeviceManagementException { + try { + File smsConfig = new File(configLocation); + Document doc = DeviceManagerUtil.convertToDocument(smsConfig); + + /* Un-marshaling SMS configuration */ + JAXBContext smsContext = JAXBContext.newInstance(SMSConfiguration.class); + Unmarshaller unmarshaller = smsContext.createUnmarshaller(); + this.smsConfiguration = (SMSConfiguration) unmarshaller.unmarshal(doc); + } catch (JAXBException e) { + String msg = "Error occurred while initializing SMS config '" + configLocation + "'"; + log.error(msg, e); + throw new DeviceManagementException(msg, e); + } + } + + /** + * Initialize the SMS Configuration through the sms-config.xml file in the SMS_CONFIG_PATH + * @throws DeviceManagementException throws when there are any errors during the initialization of + * SMS configuration + */ + public void initConfig() throws DeviceManagementException { + this.initConfig(SMS_CONFIG_PATH); + } + + /** + * Retrieves the initialized {@link SMSConfiguration} + * @return the initialized {@link SMSConfiguration} + */ + public SMSConfiguration getSMSConfig() { + return smsConfiguration; + } +} diff --git a/components/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.core/src/main/java/io/entgra/transport/mgt/sms/handler/core/impl/SampleSenderImpl.java b/components/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.core/src/main/java/io/entgra/transport/mgt/sms/handler/core/impl/SampleSenderImpl.java new file mode 100644 index 00000000000..a585433b953 --- /dev/null +++ b/components/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.core/src/main/java/io/entgra/transport/mgt/sms/handler/core/impl/SampleSenderImpl.java @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2021, 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 io.entgra.transport.mgt.sms.handler.core.impl; + +import io.entgra.transport.mgt.sms.handler.common.bean.SMSMessage; +import io.entgra.transport.mgt.sms.handler.common.config.SMSGateway; +import io.entgra.transport.mgt.sms.handler.common.exception.SMSSenderException; +import io.entgra.transport.mgt.sms.handler.common.spi.SMSSender; +import io.entgra.transport.mgt.sms.handler.core.config.SMSConfigurationManager; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +/** + * Sample sender class on how to implement the SMSSender + */ +public class SampleSenderImpl implements SMSSender { + + private static final Log log = LogFactory.getLog(SampleSenderImpl.class); + + @Override + public void sendSMS(SMSMessage smsMessage) throws SMSSenderException { + + //Retrieve the default (isDefault=true) SMS Gateway in the SMS configuration in sms-config.xml + SMSGateway smsGateway = SMSConfigurationManager.getInstance().getSMSConfig().getDefaultSMSGateway(); + + //Retrieve the SMS Gateway by passing the Gateway name + smsGateway = SMSConfigurationManager.getInstance().getSMSConfig().getSMSGateway("sample"); + + //Retrieve the properties in the SMS Gateway by passing the property name + String sampleProperty = smsGateway.getPropertyByName("sample-property").getValue(); + + if (log.isDebugEnabled()) { + log.debug("This is a Sample Sender Implementation and the property value retrieved is '" + + sampleProperty + "'"); + } + + //If any exception is catched, wrap and throw as SMSSenderException + } +} diff --git a/components/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.core/src/main/java/io/entgra/transport/mgt/sms/handler/core/internal/SMSHandlerServiceComponent.java b/components/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.core/src/main/java/io/entgra/transport/mgt/sms/handler/core/internal/SMSHandlerServiceComponent.java new file mode 100644 index 00000000000..abaafee2b53 --- /dev/null +++ b/components/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.core/src/main/java/io/entgra/transport/mgt/sms/handler/core/internal/SMSHandlerServiceComponent.java @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2021, 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 io.entgra.transport.mgt.sms.handler.core.internal; + +import io.entgra.transport.mgt.sms.handler.core.config.SMSConfigurationManager; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.osgi.service.component.ComponentContext; + +/** + * @scr.component + * name="io.entgra.transport.mgt.sms.handler.core.internal.SMSHandlerServiceComponent" immediate="true" + */ +public class SMSHandlerServiceComponent { + + private static final Log log = LogFactory.getLog(SMSHandlerServiceComponent.class); + + protected void activate(ComponentContext ctx) { + + if (log.isDebugEnabled()) { + log.debug("Activating SMS Handler Service Component"); + } + try { + SMSConfigurationManager.getInstance().initConfig(); + + if (log.isDebugEnabled()) { + log.debug("SMS Handler Service Component has been successfully activated"); + } + } catch (Throwable e) { + log.error("Error occurred while activating SMS Handler Service Component", e); + } + } + + protected void deactivate(ComponentContext ctx) { + if (log.isDebugEnabled()) { + log.debug("De-activating SMS Handler Service Component"); + } + } +} diff --git a/components/transport-mgt/sms-handler/pom.xml b/components/transport-mgt/sms-handler/pom.xml new file mode 100644 index 00000000000..04710ad6d8e --- /dev/null +++ b/components/transport-mgt/sms-handler/pom.xml @@ -0,0 +1,44 @@ + + + + + + + org.wso2.carbon.devicemgt + transport-mgt + 4.1.12-SNAPSHOT + ../pom.xml + + + 4.0.0 + sms-handler + pom + Entgra IoT - SMS Management Component + http://entgra.io + + + + io.entgra.transport.mgt.sms.handler.core + io.entgra.transport.mgt.sms.handler.common + io.entgra.transport.mgt.sms.handler.api + + + diff --git a/features/email-sender/org.wso2.carbon.email.sender.feature/pom.xml b/features/transport-mgt/email-sender/org.wso2.carbon.email.sender.feature/pom.xml similarity index 97% rename from features/email-sender/org.wso2.carbon.email.sender.feature/pom.xml rename to features/transport-mgt/email-sender/org.wso2.carbon.email.sender.feature/pom.xml index 5f14e97427f..58bc8c85931 100644 --- a/features/email-sender/org.wso2.carbon.email.sender.feature/pom.xml +++ b/features/transport-mgt/email-sender/org.wso2.carbon.email.sender.feature/pom.xml @@ -87,7 +87,7 @@ org.wso2.carbon.email.sender - ../../../features/etc/feature.properties + ../../../etc/feature.properties org.wso2.carbon.p2.category.type:server diff --git a/features/email-sender/org.wso2.carbon.email.sender.feature/src/main/resources/build.properties b/features/transport-mgt/email-sender/org.wso2.carbon.email.sender.feature/src/main/resources/build.properties similarity index 100% rename from features/email-sender/org.wso2.carbon.email.sender.feature/src/main/resources/build.properties rename to features/transport-mgt/email-sender/org.wso2.carbon.email.sender.feature/src/main/resources/build.properties diff --git a/features/email-sender/org.wso2.carbon.email.sender.feature/src/main/resources/conf/email-sender-config.xml b/features/transport-mgt/email-sender/org.wso2.carbon.email.sender.feature/src/main/resources/conf/email-sender-config.xml similarity index 100% rename from features/email-sender/org.wso2.carbon.email.sender.feature/src/main/resources/conf/email-sender-config.xml rename to features/transport-mgt/email-sender/org.wso2.carbon.email.sender.feature/src/main/resources/conf/email-sender-config.xml diff --git a/features/email-sender/org.wso2.carbon.email.sender.feature/src/main/resources/email/templates/default-enrollment-invitation.vm b/features/transport-mgt/email-sender/org.wso2.carbon.email.sender.feature/src/main/resources/email/templates/default-enrollment-invitation.vm similarity index 100% rename from features/email-sender/org.wso2.carbon.email.sender.feature/src/main/resources/email/templates/default-enrollment-invitation.vm rename to features/transport-mgt/email-sender/org.wso2.carbon.email.sender.feature/src/main/resources/email/templates/default-enrollment-invitation.vm diff --git a/features/email-sender/org.wso2.carbon.email.sender.feature/src/main/resources/email/templates/default.vm b/features/transport-mgt/email-sender/org.wso2.carbon.email.sender.feature/src/main/resources/email/templates/default.vm similarity index 100% rename from features/email-sender/org.wso2.carbon.email.sender.feature/src/main/resources/email/templates/default.vm rename to features/transport-mgt/email-sender/org.wso2.carbon.email.sender.feature/src/main/resources/email/templates/default.vm diff --git a/features/email-sender/org.wso2.carbon.email.sender.feature/src/main/resources/email/templates/policy-violating-notifier.vm b/features/transport-mgt/email-sender/org.wso2.carbon.email.sender.feature/src/main/resources/email/templates/policy-violating-notifier.vm similarity index 100% rename from features/email-sender/org.wso2.carbon.email.sender.feature/src/main/resources/email/templates/policy-violating-notifier.vm rename to features/transport-mgt/email-sender/org.wso2.carbon.email.sender.feature/src/main/resources/email/templates/policy-violating-notifier.vm diff --git a/features/email-sender/org.wso2.carbon.email.sender.feature/src/main/resources/email/templates/user-enrollment.vm b/features/transport-mgt/email-sender/org.wso2.carbon.email.sender.feature/src/main/resources/email/templates/user-enrollment.vm similarity index 100% rename from features/email-sender/org.wso2.carbon.email.sender.feature/src/main/resources/email/templates/user-enrollment.vm rename to features/transport-mgt/email-sender/org.wso2.carbon.email.sender.feature/src/main/resources/email/templates/user-enrollment.vm diff --git a/features/email-sender/org.wso2.carbon.email.sender.feature/src/main/resources/email/templates/user-registration.vm b/features/transport-mgt/email-sender/org.wso2.carbon.email.sender.feature/src/main/resources/email/templates/user-registration.vm similarity index 100% rename from features/email-sender/org.wso2.carbon.email.sender.feature/src/main/resources/email/templates/user-registration.vm rename to features/transport-mgt/email-sender/org.wso2.carbon.email.sender.feature/src/main/resources/email/templates/user-registration.vm diff --git a/features/email-sender/org.wso2.carbon.email.sender.feature/src/main/resources/email/templates/user-verify.vm b/features/transport-mgt/email-sender/org.wso2.carbon.email.sender.feature/src/main/resources/email/templates/user-verify.vm similarity index 100% rename from features/email-sender/org.wso2.carbon.email.sender.feature/src/main/resources/email/templates/user-verify.vm rename to features/transport-mgt/email-sender/org.wso2.carbon.email.sender.feature/src/main/resources/email/templates/user-verify.vm diff --git a/features/email-sender/org.wso2.carbon.email.sender.feature/src/main/resources/email/templates/user-welcome.vm b/features/transport-mgt/email-sender/org.wso2.carbon.email.sender.feature/src/main/resources/email/templates/user-welcome.vm similarity index 100% rename from features/email-sender/org.wso2.carbon.email.sender.feature/src/main/resources/email/templates/user-welcome.vm rename to features/transport-mgt/email-sender/org.wso2.carbon.email.sender.feature/src/main/resources/email/templates/user-welcome.vm diff --git a/features/email-sender/org.wso2.carbon.email.sender.feature/src/main/resources/p2.inf b/features/transport-mgt/email-sender/org.wso2.carbon.email.sender.feature/src/main/resources/p2.inf similarity index 100% rename from features/email-sender/org.wso2.carbon.email.sender.feature/src/main/resources/p2.inf rename to features/transport-mgt/email-sender/org.wso2.carbon.email.sender.feature/src/main/resources/p2.inf diff --git a/features/email-sender/pom.xml b/features/transport-mgt/email-sender/pom.xml similarity index 93% rename from features/email-sender/pom.xml rename to features/transport-mgt/email-sender/pom.xml index 7c4f49db264..ea751866fef 100644 --- a/features/email-sender/pom.xml +++ b/features/transport-mgt/email-sender/pom.xml @@ -21,9 +21,9 @@ org.wso2.carbon.devicemgt - carbon-devicemgt + transport-mgt-feature 4.1.12-SNAPSHOT - ../../pom.xml + ../pom.xml 4.0.0 diff --git a/features/transport-mgt/pom.xml b/features/transport-mgt/pom.xml new file mode 100644 index 00000000000..84148ff7ede --- /dev/null +++ b/features/transport-mgt/pom.xml @@ -0,0 +1,22 @@ + + + + carbon-devicemgt + org.wso2.carbon.devicemgt + 4.1.12-SNAPSHOT + ../../pom.xml + + + 4.0.0 + transport-mgt-feature + pom + Entgra IoT - Transport Feature + http://entgra.io + + + sms-handler + email-sender + + diff --git a/features/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.api.feature/pom.xml b/features/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.api.feature/pom.xml new file mode 100644 index 00000000000..5cc5414343a --- /dev/null +++ b/features/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.api.feature/pom.xml @@ -0,0 +1,123 @@ + + + + + + + org.wso2.carbon.devicemgt + sms-handler-feature + 4.1.12-SNAPSHOT + ../pom.xml + + + 4.0.0 + io.entgra.transport.mgt.sms.handler.api.feature + pom + 4.1.12-SNAPSHOT + Entgra IoT - SMS Management API Feature + https://entgra.io + This feature contains the APIs required for SMS Management + + + + + org.apache.maven.plugins + maven-dependency-plugin + + + sms-mgt-copy + package + + copy + + + + + org.wso2.carbon.devicemgt + io.entgra.transport.mgt.sms.handler.api + ${project.version} + war + true + + ${project.build.directory}/maven-shared-archive-resources/webapps + + api#sms-handler#v1.0.war + + + + + + + + org.apache.maven.plugins + maven-resources-plugin + + + copy-resources + generate-resources + + copy-resources + + + src/main/resources + + + resources + + build.properties + p2.inf + + + + + + + + + org.wso2.maven + carbon-p2-plugin + + + p2-feature-generation + package + + p2-feature-gen + + + io.entgra.transport.mgt.sms.handler.api + ../../../etc/feature.properties + + + + org.wso2.carbon.p2.category.type:server + + org.eclipse.equinox.p2.type.group:false + + + + + + + + + + + diff --git a/features/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.api.feature/src/main/resources/build.properties b/features/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.api.feature/src/main/resources/build.properties new file mode 100644 index 00000000000..9c86577d768 --- /dev/null +++ b/features/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.api.feature/src/main/resources/build.properties @@ -0,0 +1 @@ +custom = true diff --git a/features/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.api.feature/src/main/resources/p2.inf b/features/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.api.feature/src/main/resources/p2.inf new file mode 100644 index 00000000000..ee42576e148 --- /dev/null +++ b/features/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.api.feature/src/main/resources/p2.inf @@ -0,0 +1,3 @@ +instructions.configure = \ +org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../deployment/server/webapps/);\ +org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/io.entgra.transport.mgt.sms.handler.api_${feature.version}/webapps/api#sms-handler#v1.0.war,target:${installFolder}/../../deployment/server/webapps/api#sms-handler#v1.0.war,overwrite:true);\ diff --git a/features/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.server.feature/pom.xml b/features/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.server.feature/pom.xml new file mode 100644 index 00000000000..cf28c0b8032 --- /dev/null +++ b/features/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.server.feature/pom.xml @@ -0,0 +1,116 @@ + + + + + + + org.wso2.carbon.devicemgt + sms-handler-feature + 4.1.12-SNAPSHOT + ../pom.xml + + + 4.0.0 + io.entgra.transport.mgt.sms.handler.server.feature + pom + 4.1.12-SNAPSHOT + Entgra IoT - SMS Management Server Feature + https://entgra.io + This feature contains the core bundles required for Back-end SMS Management functionality + + + + + org.wso2.carbon.devicemgt + io.entgra.transport.mgt.sms.handler.core + + + org.wso2.carbon.devicemgt + io.entgra.transport.mgt.sms.handler.common + + + + + + + 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 + + + io.entgra.transport.mgt.sms.handler.server + ../../../etc/feature.properties + + + org.wso2.carbon.p2.category.type:server + org.eclipse.equinox.p2.type.group:false + + + + + org.wso2.carbon.devicemgt:io.entgra.transport.mgt.sms.handler.core:${carbon.device.mgt.version} + + + org.wso2.carbon.devicemgt:io.entgra.transport.mgt.sms.handler.common:${carbon.device.mgt.version} + + + + + + + + + + + + + diff --git a/features/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.server.feature/src/main/resources/conf/sms-config.xml b/features/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.server.feature/src/main/resources/conf/sms-config.xml new file mode 100644 index 00000000000..d225f912ecf --- /dev/null +++ b/features/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.server.feature/src/main/resources/conf/sms-config.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + sample + +94 + 160 + + + + diff --git a/features/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.server.feature/src/main/resources/p2.inf b/features/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.server.feature/src/main/resources/p2.inf new file mode 100644 index 00000000000..af486db59b2 --- /dev/null +++ b/features/transport-mgt/sms-handler/io.entgra.transport.mgt.sms.handler.server.feature/src/main/resources/p2.inf @@ -0,0 +1,4 @@ +instructions.configure = \ +org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/io.entgra.transport.mgt.sms.handler.server_${feature.version}/conf/sms-config.xml,target:${installFolder}/../../conf/sms-config.xml,overwrite:true);\ + +instructions.unconfigure = \ diff --git a/features/transport-mgt/sms-handler/pom.xml b/features/transport-mgt/sms-handler/pom.xml new file mode 100644 index 00000000000..c0c005f32ce --- /dev/null +++ b/features/transport-mgt/sms-handler/pom.xml @@ -0,0 +1,42 @@ + + + + + + + org.wso2.carbon.devicemgt + transport-mgt-feature + 4.1.12-SNAPSHOT + ../pom.xml + + + 4.0.0 + sms-handler-feature + pom + Entgra IoT - SMS Management Feature + http://entgra.io + + + io.entgra.transport.mgt.sms.handler.server.feature + io.entgra.transport.mgt.sms.handler.api.feature + + + diff --git a/pom.xml b/pom.xml index 129faec6fed..ba74a95be35 100644 --- a/pom.xml +++ b/pom.xml @@ -44,8 +44,8 @@ components/policy-mgt components/certificate-mgt components/webapp-authenticator-framework - components/email-sender components/ui-request-interceptor + components/transport-mgt features/device-mgt features/apimgt-extensions features/application-mgt @@ -53,11 +53,11 @@ features/webapp-authenticator-framework features/certificate-mgt features/oauth-extensions - features/email-sender features/heartbeat-management features/ui-request-interceptor features/jwt-client features/device-mgt-extensions + features/transport-mgt @@ -383,6 +383,16 @@ io.entgra.server.bootup.heartbeat.beacon ${carbon.device.mgt.version} + + org.wso2.carbon.devicemgt + io.entgra.transport.mgt.sms.handler.core + ${carbon.device.mgt.version} + + + org.wso2.carbon.devicemgt + io.entgra.transport.mgt.sms.handler.common + ${carbon.device.mgt.version} +