Add SMS management common classes

revert-70ac1926
Saad Sahibjan 4 years ago
parent 7890517d43
commit 97bb7ee87c

@ -0,0 +1,98 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ 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.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>org.wso2.carbon.devicemgt</groupId>
<artifactId>sms-mgt</artifactId>
<version>4.1.12-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>io.entgra.sms.mgt.common</artifactId>
<packaging>bundle</packaging>
<name>Entgra IoT - SMS Management Common</name>
<description>Entgra IoT - SMS Management Common</description>
<url>http://entgra.io</url>
<build>
<plugins>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<extensions>true</extensions>
<configuration>
<instructions>
<Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
<Bundle-Name>${project.artifactId}</Bundle-Name>
<Bundle-Version>${carbon.device.mgt.version}</Bundle-Version>
<Bundle-Description>SMS Management Common Bundle</Bundle-Description>
<Export-Package>
io.entgra.sms.mgt.common.*
</Export-Package>
<Import-Package>
io.swagger.annotations; version="${swagger.annotations.version}"; resolution:=optional,
</Import-Package>
</instructions>
</configuration>
</plugin>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<configuration>
<destFile>${basedir}/target/coverage-reports/jacoco-unit.exec</destFile>
</configuration>
<executions>
<execution>
<id>jacoco-initialize</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>jacoco-site</id>
<phase>test</phase>
<goals>
<goal>report</goal>
</goals>
<configuration>
<dataFile>${basedir}/target/coverage-reports/jacoco-unit.exec</dataFile>
<outputDirectory>${basedir}/target/coverage-reports/site</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-annotations</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
</project>

@ -0,0 +1,10 @@
package io.entgra.sms.mgt.common;
/**
* This class holds SMS Management Constants
*/
public final class SMSMgtConstants {
public static final String SCOPE = "scope";
public static final String SMS_CONFIG_XML_NAME = "sms-config.xml";
}

@ -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.sms.mgt.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;
}
}

@ -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.sms.mgt.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;
}
}

@ -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.sms.mgt.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<SMSGateway> smsGateways;
@XmlElementWrapper(name = "Gateways")
@XmlElement(name = "Gateway")
public List<SMSGateway> getSMSGateways() {
return smsGateways;
}
public void setSMSGateways(List<SMSGateway> 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;
}
}

@ -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.sms.mgt.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<Property> 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<Property> getProperties() {
return properties;
}
public void setProperties(List<Property> 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;
}
}

@ -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.sms.mgt.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);
}
}

@ -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.sms.mgt.common.spi;
import io.entgra.sms.mgt.common.bean.SMSMessage;
import io.entgra.sms.mgt.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;
}

@ -0,0 +1,44 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ 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.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>org.wso2.carbon.devicemgt</groupId>
<artifactId>carbon-devicemgt</artifactId>
<version>4.1.12-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>sms-mgt</artifactId>
<packaging>pom</packaging>
<name>Entgra IoT - SMS Management Component</name>
<url>http://entgra.io</url>
<modules>
<module>io.entgra.sms.mgt.core</module>
<module>io.entgra.sms.mgt.common</module>
<module>io.entgra.sms.mgt.api</module>
</modules>
</project>
Loading…
Cancel
Save