diff --git a/pom.xml b/pom.xml
index 0634a11..f88b055 100644
--- a/pom.xml
+++ b/pom.xml
@@ -51,6 +51,7 @@
UTF-8
2.0.16
2.7
+ 1.7.25
@@ -83,8 +84,14 @@
org.apache.logging.log4j
- log4j-api
+ log4j-slf4j-impl
${log4j.version}
+ runtime
+
+
+ org.slf4j
+ slf4j-api
+ ${slf4j.version}
compile
@@ -132,7 +139,13 @@
org.apache.logging.log4j
- log4j-api
+ log4j-slf4j-impl
+ runtime
+ true
+
+
+ org.slf4j
+ slf4j-api
compile
@@ -201,7 +214,7 @@
maven-javadoc-plugin
- 2.10.4
+ 3.0.1
javadoc-jar
diff --git a/src/main/java/com/github/kmbulebu/dsc/it100/IT100.java b/src/main/java/com/github/kmbulebu/dsc/it100/IT100.java
index dc6d00f..306e60f 100644
--- a/src/main/java/com/github/kmbulebu/dsc/it100/IT100.java
+++ b/src/main/java/com/github/kmbulebu/dsc/it100/IT100.java
@@ -1,10 +1,12 @@
package com.github.kmbulebu.dsc.it100;
-import java.net.SocketAddress;
-
-import org.apache.logging.log4j.Level;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import com.github.kmbulebu.dsc.it100.commands.read.ReadCommand;
+import com.github.kmbulebu.dsc.it100.commands.write.WriteCommand;
+import com.github.kmbulebu.dsc.it100.mina.codec.IT100CodecFactory;
+import com.github.kmbulebu.dsc.it100.mina.filters.CommandLogFilter;
+import com.github.kmbulebu.dsc.it100.mina.filters.PollKeepAliveFilter;
+import com.github.kmbulebu.dsc.it100.mina.filters.StatusRequestFilter;
+import com.github.kmbulebu.dsc.it100.rxjava.ReadCommandOnSubscribe;
import org.apache.mina.core.future.ConnectFuture;
import org.apache.mina.core.service.IoConnector;
import org.apache.mina.core.session.IoSession;
@@ -12,19 +14,15 @@
import org.apache.mina.filter.keepalive.KeepAliveRequestTimeoutHandler;
import org.apache.mina.handler.demux.DemuxingIoHandler;
import org.apache.mina.handler.demux.MessageHandler;
-
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.event.Level;
import rx.Observable;
import rx.Observer;
import rx.observables.ConnectableObservable;
import rx.subjects.PublishSubject;
-import com.github.kmbulebu.dsc.it100.commands.read.ReadCommand;
-import com.github.kmbulebu.dsc.it100.commands.write.WriteCommand;
-import com.github.kmbulebu.dsc.it100.mina.codec.IT100CodecFactory;
-import com.github.kmbulebu.dsc.it100.mina.filters.CommandLogFilter;
-import com.github.kmbulebu.dsc.it100.mina.filters.PollKeepAliveFilter;
-import com.github.kmbulebu.dsc.it100.mina.filters.StatusRequestFilter;
-import com.github.kmbulebu.dsc.it100.rxjava.ReadCommandOnSubscribe;
+import java.net.SocketAddress;
/**
* API Main Entry point.
@@ -43,7 +41,7 @@ public class IT100 {
private IoConnector connector = null;
private IoSession session = null;
- private static final Logger LOGGER = LogManager.getLogger();
+ private static final Logger LOGGER = LoggerFactory.getLogger(IT100.class);
private final Configuration configuration;
diff --git a/src/main/java/com/github/kmbulebu/dsc/it100/commands/read/ReadCommandFactory.java b/src/main/java/com/github/kmbulebu/dsc/it100/commands/read/ReadCommandFactory.java
index 06302c4..c17e630 100644
--- a/src/main/java/com/github/kmbulebu/dsc/it100/commands/read/ReadCommandFactory.java
+++ b/src/main/java/com/github/kmbulebu/dsc/it100/commands/read/ReadCommandFactory.java
@@ -3,97 +3,99 @@
import com.github.kmbulebu.dsc.it100.commands.read.ReadCommand.CommandLengthException;
import com.github.kmbulebu.dsc.it100.commands.read.ReadCommand.InvalidCommandException;
+import java.lang.reflect.InvocationTargetException;
import java.util.HashMap;
import java.util.Map;
public class ReadCommandFactory {
- private static Map> codeToCommandMap = new HashMap>();
+ private static Map> codeToCommandMap = new HashMap>();
- static {
- codeToCommandMap.put(AcknowledgeCommand.CODE, AcknowledgeCommand.class);
- codeToCommandMap.put(BaudRateSetCommand.CODE, BaudRateSetCommand.class);
- codeToCommandMap.put(BroadcastLabelsCommand.CODE, BroadcastLabelsCommand.class);
- codeToCommandMap.put(CommandErrorCommand.CODE, CommandErrorCommand.class);
- codeToCommandMap.put(CommandOutputInProgressCommand.CODE, CommandOutputInProgressCommand.class);
- codeToCommandMap.put(EntryDelayInProgressCommand.CODE, EntryDelayInProgressCommand.class);
- codeToCommandMap.put(ExitDelayInProgressCommand.CODE, ExitDelayInProgressCommand.class);
- codeToCommandMap.put(GeneralSystemTamperCommand.CODE, GeneralSystemTamperCommand.class);
- codeToCommandMap.put(GeneralSystemTamperRestoreCommand.CODE, GeneralSystemTamperRestoreCommand.class);
- codeToCommandMap.put(InvalidAccessCodeCommand.CODE, InvalidAccessCodeCommand.class);
- codeToCommandMap.put(KeybusFaultCommand.CODE, KeybusFaultCommand.class);
- codeToCommandMap.put(KeybusFaultRestoredCommand.CODE, KeybusFaultRestoredCommand.class);
- codeToCommandMap.put(LCDUpdateCommand.CODE, LCDUpdateCommand.class);
- codeToCommandMap.put(LCDCursorCommand.CODE, LCDCursorCommand.class);
- codeToCommandMap.put(LEDStatusCommand.CODE, LEDStatusCommand.class);
- codeToCommandMap.put(BeepStatusCommand.CODE, BeepStatusCommand.class);
- codeToCommandMap.put(BuzzerStatusCommand.CODE, BuzzerStatusCommand.class);
- codeToCommandMap.put(DoorChimeStatusCommand.CODE, DoorChimeStatusCommand.class);
- codeToCommandMap.put(ToneStatusCommand.CODE, ToneStatusCommand.class);
- codeToCommandMap.put(PanelACTroubleCommand.CODE, PanelACTroubleCommand.class);
- codeToCommandMap.put(PanelACTroubleRestoreCommand.CODE, PanelACTroubleRestoreCommand.class);
- codeToCommandMap.put(PanelBatteryTroubleCommand.CODE, PanelBatteryTroubleCommand.class);
- codeToCommandMap.put(PanelBatteryTroubleRestoreCommand.CODE, PanelBatteryTroubleRestoreCommand.class);
- codeToCommandMap.put(PartitionArmedCommand.CODE, PartitionArmedCommand.class);
- codeToCommandMap.put(PartitionBusyCommand.CODE, PartitionBusyCommand.class);
- codeToCommandMap.put(PartitionDisarmedCommand.CODE, PartitionDisarmedCommand.class);
- codeToCommandMap.put(PartitionInAlarmCommand.CODE, PartitionInAlarmCommand.class);
- codeToCommandMap.put(PartitionNotReadyCommand.CODE, PartitionNotReadyCommand.class);
- codeToCommandMap.put(PartitionReadyCommand.CODE, PartitionReadyCommand.class);
- codeToCommandMap.put(PartitionReadyToForceArmCommand.CODE, PartitionReadyToForceArmCommand.class);
- codeToCommandMap.put(RingDetectedCommand.CODE, RingDetectedCommand.class);
- codeToCommandMap.put(SystemBellTroubleCommand.CODE, SystemBellTroubleCommand.class);
- codeToCommandMap.put(SystemBellTroubleRestoreCommand.CODE, SystemBellTroubleRestoreCommand.class);
- codeToCommandMap.put(SystemErrorCommand.CODE, SystemErrorCommand.class);
- codeToCommandMap.put(TimeDateBroadcastCommand.CODE, TimeDateBroadcastCommand.class);
- codeToCommandMap.put(TroubleStatusCommand.CODE, TroubleStatusCommand.class);
- codeToCommandMap.put(TroubleStatusRestoreCommand.CODE, TroubleStatusRestoreCommand.class);
- codeToCommandMap.put(ZoneAlarmCommand.CODE, ZoneAlarmCommand.class);
- codeToCommandMap.put(ZoneAlarmRestoreCommand.CODE, ZoneAlarmRestoreCommand.class);
- codeToCommandMap.put(ZoneFaultCommand.CODE, ZoneFaultCommand.class);
- codeToCommandMap.put(ZoneFaultRestoreCommand.CODE, ZoneFaultRestoreCommand.class);
- codeToCommandMap.put(ZoneOpenCommand.CODE, ZoneOpenCommand.class);
- codeToCommandMap.put(ZoneRestoredCommand.CODE, ZoneRestoredCommand.class);
- codeToCommandMap.put(ZoneTamperCommand.CODE, ZoneTamperCommand.class);
- codeToCommandMap.put(ZoneTamperRestoreCommand.CODE, ZoneTamperRestoreCommand.class);
- codeToCommandMap.put(UserOpeningCommand.CODE, UserOpeningCommand.class);
- codeToCommandMap.put(UserClosingCommand.CODE, UserClosingCommand.class);
- codeToCommandMap.put(PartialClosingCommand.CODE, PartialClosingCommand.class);
- codeToCommandMap.put(SpecialClosingCommand.CODE, SpecialClosingCommand.class);
- codeToCommandMap.put(SoftwareVersionCommand.CODE, SoftwareVersionCommand.class);
- }
+ static {
+ codeToCommandMap.put(AcknowledgeCommand.CODE, AcknowledgeCommand.class);
+ codeToCommandMap.put(BaudRateSetCommand.CODE, BaudRateSetCommand.class);
+ codeToCommandMap.put(BroadcastLabelsCommand.CODE, BroadcastLabelsCommand.class);
+ codeToCommandMap.put(CommandErrorCommand.CODE, CommandErrorCommand.class);
+ codeToCommandMap.put(CommandOutputInProgressCommand.CODE, CommandOutputInProgressCommand.class);
+ codeToCommandMap.put(EntryDelayInProgressCommand.CODE, EntryDelayInProgressCommand.class);
+ codeToCommandMap.put(ExitDelayInProgressCommand.CODE, ExitDelayInProgressCommand.class);
+ codeToCommandMap.put(GeneralSystemTamperCommand.CODE, GeneralSystemTamperCommand.class);
+ codeToCommandMap.put(GeneralSystemTamperRestoreCommand.CODE, GeneralSystemTamperRestoreCommand.class);
+ codeToCommandMap.put(InvalidAccessCodeCommand.CODE, InvalidAccessCodeCommand.class);
+ codeToCommandMap.put(KeybusFaultCommand.CODE, KeybusFaultCommand.class);
+ codeToCommandMap.put(KeybusFaultRestoredCommand.CODE, KeybusFaultRestoredCommand.class);
+ codeToCommandMap.put(LCDUpdateCommand.CODE, LCDUpdateCommand.class);
+ codeToCommandMap.put(LCDCursorCommand.CODE, LCDCursorCommand.class);
+ codeToCommandMap.put(LEDStatusCommand.CODE, LEDStatusCommand.class);
+ codeToCommandMap.put(BeepStatusCommand.CODE, BeepStatusCommand.class);
+ codeToCommandMap.put(BuzzerStatusCommand.CODE, BuzzerStatusCommand.class);
+ codeToCommandMap.put(DoorChimeStatusCommand.CODE, DoorChimeStatusCommand.class);
+ codeToCommandMap.put(ToneStatusCommand.CODE, ToneStatusCommand.class);
+ codeToCommandMap.put(PanelACTroubleCommand.CODE, PanelACTroubleCommand.class);
+ codeToCommandMap.put(PanelACTroubleRestoreCommand.CODE, PanelACTroubleRestoreCommand.class);
+ codeToCommandMap.put(PanelBatteryTroubleCommand.CODE, PanelBatteryTroubleCommand.class);
+ codeToCommandMap.put(PanelBatteryTroubleRestoreCommand.CODE, PanelBatteryTroubleRestoreCommand.class);
+ codeToCommandMap.put(PartitionArmedCommand.CODE, PartitionArmedCommand.class);
+ codeToCommandMap.put(PartitionBusyCommand.CODE, PartitionBusyCommand.class);
+ codeToCommandMap.put(PartitionDisarmedCommand.CODE, PartitionDisarmedCommand.class);
+ codeToCommandMap.put(PartitionInAlarmCommand.CODE, PartitionInAlarmCommand.class);
+ codeToCommandMap.put(PartitionNotReadyCommand.CODE, PartitionNotReadyCommand.class);
+ codeToCommandMap.put(PartitionReadyCommand.CODE, PartitionReadyCommand.class);
+ codeToCommandMap.put(PartitionReadyToForceArmCommand.CODE, PartitionReadyToForceArmCommand.class);
+ codeToCommandMap.put(RingDetectedCommand.CODE, RingDetectedCommand.class);
+ codeToCommandMap.put(SystemBellTroubleCommand.CODE, SystemBellTroubleCommand.class);
+ codeToCommandMap.put(SystemBellTroubleRestoreCommand.CODE, SystemBellTroubleRestoreCommand.class);
+ codeToCommandMap.put(SystemErrorCommand.CODE, SystemErrorCommand.class);
+ codeToCommandMap.put(TimeDateBroadcastCommand.CODE, TimeDateBroadcastCommand.class);
+ codeToCommandMap.put(TroubleStatusCommand.CODE, TroubleStatusCommand.class);
+ codeToCommandMap.put(TroubleStatusRestoreCommand.CODE, TroubleStatusRestoreCommand.class);
+ codeToCommandMap.put(ZoneAlarmCommand.CODE, ZoneAlarmCommand.class);
+ codeToCommandMap.put(ZoneAlarmRestoreCommand.CODE, ZoneAlarmRestoreCommand.class);
+ codeToCommandMap.put(ZoneFaultCommand.CODE, ZoneFaultCommand.class);
+ codeToCommandMap.put(ZoneFaultRestoreCommand.CODE, ZoneFaultRestoreCommand.class);
+ codeToCommandMap.put(ZoneOpenCommand.CODE, ZoneOpenCommand.class);
+ codeToCommandMap.put(ZoneRestoredCommand.CODE, ZoneRestoredCommand.class);
+ codeToCommandMap.put(ZoneTamperCommand.CODE, ZoneTamperCommand.class);
+ codeToCommandMap.put(ZoneTamperRestoreCommand.CODE, ZoneTamperRestoreCommand.class);
+ codeToCommandMap.put(UserOpeningCommand.CODE, UserOpeningCommand.class);
+ codeToCommandMap.put(UserClosingCommand.CODE, UserClosingCommand.class);
+ codeToCommandMap.put(PartialClosingCommand.CODE, PartialClosingCommand.class);
+ codeToCommandMap.put(SpecialClosingCommand.CODE, SpecialClosingCommand.class);
+ codeToCommandMap.put(SoftwareVersionCommand.CODE, SoftwareVersionCommand.class);
+ }
- public ReadCommand parseCommand(String receivedCommand) throws InvalidCommandException {
- if (receivedCommand.length() < 3) {
- throw new CommandLengthException(receivedCommand.length());
- }
+ public ReadCommand parseCommand(String receivedCommand) throws InvalidCommandException {
+ if (receivedCommand.length() < 3) {
+ throw new CommandLengthException(receivedCommand.length());
+ }
- final String commandCode = receivedCommand.substring(0, 3);
+ final String commandCode = receivedCommand.substring(0, 3);
- Class extends ReadCommand> commandClass = codeToCommandMap.get(commandCode);
- //System.out.println(commandCode + ", " + commandClass);
- if (commandClass == null) {
- throw new ReadCommand.UnknownCommandException(receivedCommand);
- }
+ Class extends ReadCommand> commandClass = codeToCommandMap.get(commandCode);
+ //System.out.println(commandCode + ", " + commandClass);
+ if (commandClass == null) {
+ throw new ReadCommand.UnknownCommandException(receivedCommand);
+ }
- ReadCommand command;
- try {
- command = commandClass.newInstance();
- } catch (InstantiationException e) {
- throw new InvalidCommandException(e);
- } catch (IllegalAccessException e) {
- throw new InvalidCommandException(e);
- }
- command.init(receivedCommand);
- return command;
- }
+ ReadCommand command;
+ try {
+ command = commandClass.getDeclaredConstructor().newInstance();
+ } catch (InstantiationException |
+ IllegalAccessException |
+ NoSuchMethodException |
+ InvocationTargetException e) {
+ throw new InvalidCommandException(e);
+ }
+ command.init(receivedCommand);
+ return command;
+ }
- public static void registerCommand(String commandCode, Class extends ReadCommand> clazz) {
- if (codeToCommandMap.containsKey(commandCode)) {
- throw new IllegalArgumentException("You may not redefine an existing command.");
- }
- codeToCommandMap.put(commandCode, clazz);
- }
+ public static void registerCommand(String commandCode, Class extends ReadCommand> clazz) {
+ if (codeToCommandMap.containsKey(commandCode)) {
+ throw new IllegalArgumentException("You may not redefine an existing command.");
+ }
+ codeToCommandMap.put(commandCode, clazz);
+ }
}
diff --git a/src/main/java/com/github/kmbulebu/dsc/it100/mina/filters/CommandLogFilter.java b/src/main/java/com/github/kmbulebu/dsc/it100/mina/filters/CommandLogFilter.java
index a825868..f339dec 100644
--- a/src/main/java/com/github/kmbulebu/dsc/it100/mina/filters/CommandLogFilter.java
+++ b/src/main/java/com/github/kmbulebu/dsc/it100/mina/filters/CommandLogFilter.java
@@ -1,148 +1,61 @@
package com.github.kmbulebu.dsc.it100.mina.filters;
-import org.apache.logging.log4j.Level;
-import org.apache.logging.log4j.Logger;
-import org.apache.logging.log4j.Marker;
+import com.github.kmbulebu.dsc.it100.commands.read.ReadCommand;
+import com.github.kmbulebu.dsc.it100.commands.write.WriteCommand;
import org.apache.mina.core.filterchain.IoFilterAdapter;
import org.apache.mina.core.session.IoSession;
import org.apache.mina.core.write.WriteRequest;
-
-import com.github.kmbulebu.dsc.it100.commands.read.ReadCommand;
-import com.github.kmbulebu.dsc.it100.commands.write.WriteCommand;
+import org.slf4j.IMarkerFactory;
+import org.slf4j.Logger;
+import org.slf4j.Marker;
+import org.slf4j.event.Level;
+import org.slf4j.helpers.BasicMarkerFactory;
public class CommandLogFilter extends IoFilterAdapter {
-
- private final Logger logger;
- private final Level level;
-
- public CommandLogFilter(Logger logger, Level level) {
- this.logger = logger;
- this.level = level;
- }
-
- @Override
- public void messageReceived(NextFilter nextFilter, IoSession session, Object message) throws Exception {
- if (message instanceof ReadCommand) {
- logger.log(level, new ReceivedMarker(), message.toString());
- }
- super.messageReceived(nextFilter, session, message);
- }
-
- @Override
- public void messageSent(NextFilter nextFilter, IoSession session, WriteRequest writeRequest) throws Exception {
- if (writeRequest.getMessage() instanceof WriteCommand) {
- logger.log(level, new SentMarker(), writeRequest.getMessage().toString());
- }
- super.messageSent(nextFilter, session, writeRequest);
- }
-
- private static class ReceivedMarker implements Marker {
-
- /**
- *
- */
- private static final long serialVersionUID = 5190100565468306990L;
-
- @Override
- public String getName() {
- return "RECEIVED";
- }
-
- @Override
- public boolean isInstanceOf(Marker m) {
- return (m instanceof ReceivedMarker);
- }
-
- @Override
- public boolean isInstanceOf(String name) {
- return "RECEIVED".equals(name);
- }
-
- @Override
- public String toString() {
- return "RECEIVED";
- }
-
- @Override
- public Marker addParents(Marker... markers) {
- return null;
- }
-
- @Override
- public Marker[] getParents() {
- return null;
- }
-
- @Override
- public boolean hasParents() {
- return false;
- }
-
- @Override
- public boolean remove(Marker marker) {
- return false;
- }
-
- @Override
- public Marker setParents(Marker... markers) {
- return null;
- }
-
- }
-
- private static class SentMarker implements Marker {
-
-
- /**
- *
- */
- private static final long serialVersionUID = 5213322286168888154L;
-
- @Override
- public String getName() {
- return "SENT";
- }
-
- @Override
- public boolean isInstanceOf(Marker m) {
- return (m instanceof SentMarker);
- }
-
- @Override
- public boolean isInstanceOf(String name) {
- return "SENT".equals(name);
- }
-
- @Override
- public String toString() {
- return "SENT";
- }
-
- @Override
- public Marker addParents(Marker... markers) {
- return null;
- }
-
- @Override
- public Marker[] getParents() {
- return null;
- }
-
- @Override
- public boolean hasParents() {
- return false;
- }
-
- @Override
- public boolean remove(Marker marker) {
- return false;
- }
- @Override
- public Marker setParents(Marker... markers) {
- return null;
- }
-
- }
+ private final IMarkerFactory markerFactory = new BasicMarkerFactory();
+ private final Logger logger;
+ private final Level level;
+
+ public CommandLogFilter(Logger logger, Level level) {
+ this.logger = logger;
+ this.level = level;
+ }
+
+ @Override
+ public void messageReceived(NextFilter nextFilter, IoSession session, Object message) throws Exception {
+ if (message instanceof ReadCommand) {
+ log(level, markerFactory.getMarker("RECEIVED"), message.toString());
+ }
+ super.messageReceived(nextFilter, session, message);
+ }
+
+ @Override
+ public void messageSent(NextFilter nextFilter, IoSession session, WriteRequest writeRequest) throws Exception {
+ if (writeRequest.getMessage() instanceof WriteCommand) {
+ log(level, markerFactory.getMarker("SENT"), writeRequest.getMessage().toString());
+ }
+ super.messageSent(nextFilter, session, writeRequest);
+ }
+
+ private void log(Level level, Marker marker, String message) {
+ switch (level) {
+ case TRACE:
+ logger.trace(marker, message);
+ break;
+ case DEBUG:
+ logger.debug(marker, message);
+ break;
+ case INFO:
+ logger.info(marker, message);
+ break;
+ case WARN:
+ logger.warn(marker, message);
+ break;
+ case ERROR:
+ logger.error(marker, message);
+ break;
+ }
+ }
}
diff --git a/src/main/java/com/github/kmbulebu/dsc/it100/rxjava/ReadCommandOnSubscribe.java b/src/main/java/com/github/kmbulebu/dsc/it100/rxjava/ReadCommandOnSubscribe.java
index c7edb04..3e8a83a 100644
--- a/src/main/java/com/github/kmbulebu/dsc/it100/rxjava/ReadCommandOnSubscribe.java
+++ b/src/main/java/com/github/kmbulebu/dsc/it100/rxjava/ReadCommandOnSubscribe.java
@@ -1,21 +1,19 @@
package com.github.kmbulebu.dsc.it100.rxjava;
-import java.io.IOException;
-
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import com.github.kmbulebu.dsc.it100.commands.read.ReadCommand;
import org.apache.mina.core.session.IoSession;
import org.apache.mina.handler.demux.DemuxingIoHandler;
import org.apache.mina.handler.demux.ExceptionHandler;
import org.apache.mina.handler.demux.MessageHandler;
-
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import rx.Subscriber;
-import com.github.kmbulebu.dsc.it100.commands.read.ReadCommand;
+import java.io.IOException;
public class ReadCommandOnSubscribe implements rx.Observable.OnSubscribe {
- private static final Logger LOGGER = LogManager.getLogger();
+ private static final Logger LOGGER = LoggerFactory.getLogger(ReadCommandOnSubscribe.class);
private final DemuxingIoHandler demuxIoHandler;