Commit 08b8275d authored by Marco Descher's avatar Marco Descher
Browse files

[16515] IMessageService, multiple refactorings

parent 356d0593
Loading
Loading
Loading
Loading
+12 −4
Original line number Diff line number Diff line
@@ -5,7 +5,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.IStatus;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference;
import org.osgi.service.component.annotations.ReferenceCardinality;
@@ -45,7 +45,7 @@ public class MessageService implements IMessageService {
	
	@Override
	public List<String> getSupportedUriSchemes(){
		return new ArrayList<String>(messageTransporters.keySet());
		return new ArrayList<>(messageTransporters.keySet());
	}
	
	@Override
@@ -54,7 +54,7 @@ public class MessageService implements IMessageService {
		String receiver = message.getReceiver();
		int indexOf = receiver.indexOf(':');
		if (indexOf <= 0) {
			return new ObjectStatus(Status.ERROR, Bundle.ID,
			return new ObjectStatus(IStatus.ERROR, Bundle.ID,
				"No transporter uri scheme found in receiver [" + receiver + "]", null);
		}
		
@@ -67,10 +67,18 @@ public class MessageService implements IMessageService {
		}
		
		if (messageTransporter == null) {
			return new ObjectStatus(Status.ERROR, Bundle.ID,
			return new ObjectStatus(IStatus.ERROR, Bundle.ID,
				"No transporter found for uri scheme [" + uriScheme + "]", null);
		}
		
		if (messageTransporter.isExternal()) {
			if (!message.isAlllowExternal()) {
				return new ObjectStatus(IStatus.ERROR, Bundle.ID,
					"Selected transporter is external, but message not marked as allowExternal, rejecting send.",
					null);
			}
		}
		
		return new ObjectStatus(messageTransporter.send(message),
			messageTransporter.getUriScheme());
	}
+6 −7
Original line number Diff line number Diff line
@@ -2,7 +2,6 @@ package ch.elexis.core.services.eenv;

import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Collections;
import java.util.HashMap;
@@ -54,8 +53,8 @@ public class RocketchatMessageTransporter implements IMessageTransporter {
	}
	
	private IStatus sendFromStationSender(TransientMessage message){
		Optional<String> authorizationToken = contextService
			.getNamed(CTX_ROCKETCHAT_STATION_INTEGRATION_TOKEN).map(e -> e.toString());
		Optional<String> authorizationToken =
			contextService.getNamed(CTX_ROCKETCHAT_STATION_INTEGRATION_TOKEN).map(Object::toString);
		if (authorizationToken.isPresent()) {
			try {
				URL integrationUrl =
@@ -66,11 +65,11 @@ public class RocketchatMessageTransporter implements IMessageTransporter {
				return send(integrationUrl, jsonMessage.getBytes());
				
			} catch (IOException e) {
				return new Status(Status.ERROR, Bundle.ID, e.getMessage());
				return new Status(IStatus.ERROR, Bundle.ID, e.getMessage());
			}
		}
		
		return new Status(Status.ERROR, Bundle.ID,
		return new Status(IStatus.ERROR, Bundle.ID,
			"No webhook integration token [" + CTX_ROCKETCHAT_STATION_INTEGRATION_TOKEN
				+ "] found in root context or malformed url.");
	}
@@ -101,7 +100,7 @@ public class RocketchatMessageTransporter implements IMessageTransporter {
		return json.toString();
	}
	
	private IStatus send(URL url, byte[] postDataBytes) throws MalformedURLException, IOException{
	private IStatus send(URL url, byte[] postDataBytes) throws IOException{
		HttpURLConnection con = (HttpURLConnection) url.openConnection();
		con.setRequestMethod("POST");
		con.setDoInput(true);
@@ -115,7 +114,7 @@ public class RocketchatMessageTransporter implements IMessageTransporter {
		if (responseCode == 200) {
			return Status.OK_STATUS;
		}
		return new Status(Status.ERROR, Bundle.ID,
		return new Status(IStatus.ERROR, Bundle.ID,
			"Error sending, with response code: " + responseCode);
	}
	
+2 −3
Original line number Diff line number Diff line
package ch.elexis.core.services.internal;

import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.osgi.service.component.annotations.Component;

import ch.elexis.core.model.IMessage;
@@ -29,10 +28,10 @@ public class InternalDatabaseMessageTransporter implements IMessageTransporter {
		
		boolean save = CoreModelServiceHolder.get().save(idbMessage);
		if (save) {
			return Status.OK_STATUS;
			return ObjectStatus.OK_STATUS(idbMessage.getId(), null);
		}
		
		return ObjectStatus.ERROR_STATUS(idbMessage.getId());
		return ObjectStatus.ERROR_STATUS("Could not save message", null);
	}
	
	@Override
+5 −0
Original line number Diff line number Diff line
@@ -92,4 +92,9 @@ public class TransientMessage {
		this.alllowExternal = alllowExternal;
	}
	
	@Override
	public String toString(){
		return String.format("%s [%s -> %s] %s", createDateTime, sender, receiver, messageText);
	}
	
}
 No newline at end of file
+4 −2
Original line number Diff line number Diff line
@@ -13,7 +13,7 @@ public interface IMessageService {
	public static final String INTERNAL_MESSAGE_URI_SCHEME = "internal";
	
	/**
	 * @return a list of all supported uri schemes
	 * @return a list of all supported URI schemes
	 */
	List<String> getSupportedUriSchemes();
	
@@ -38,7 +38,9 @@ public interface IMessageService {
	 * Try to send the message.
	 * 
	 * @param message
	 * @return if the message was sent successfully and the explicit transporter uri scheme used
	 * @return if the message was sent successfully, an optional message id as
	 *         {@link ObjectStatus#getMessage()} and the explicit transporter URI scheme used in
	 *         {@link ObjectStatus#getObject()}
	 */
	ObjectStatus send(TransientMessage message);
	
Loading