();
+ list = new ArrayList<>();
}
list.add(listener);
pinListeners.put(pinAddress, list);
@@ -741,10 +742,10 @@ public void attach(String controllerName, String deviceBus, String deviceAddress
}
@Override
- public void attach(I2CController controller, String deviceBus, String deviceAddress) {
+ public void attach(@FindDistinct I2CController controller, String deviceBus, String deviceAddress) {
if (isAttached && this.controller != controller) {
- log.error("Already attached to {}, use detach({}) first", this.controllerName);
+ log.error("Already attached to {}, use detach({}) first", this.controllerName, this.controllerName);
}
controllerName = controller.getName();
@@ -764,7 +765,7 @@ public void attachI2CController(I2CController controller) {
if (isAttached(controller))
return;
- if (this.controllerName != controller.getName()) {
+ if (!Objects.equals(this.controllerName, controller.getName())) {
log.error("Trying to attached to {}, but already attached to ({})", controller.getName(), this.controllerName);
return;
}
@@ -832,7 +833,6 @@ public boolean isAttached(Attachable instance) {
if (controller != null && controller.getName().equals(instance.getName())) {
return isAttached;
}
- ;
return false;
}
diff --git a/src/main/java/org/myrobotlab/service/MqttBroker.java b/src/main/java/org/myrobotlab/service/MqttBroker.java
index aab3e516ef..718639368d 100644
--- a/src/main/java/org/myrobotlab/service/MqttBroker.java
+++ b/src/main/java/org/myrobotlab/service/MqttBroker.java
@@ -483,7 +483,7 @@ private void saveIdentities() {
byte[] encodedhash = digest.digest(password.getBytes(StandardCharsets.UTF_8));
// String credline = String.format(username + ":" +
// StringUtil.bytesToHex(encodedhash));
- String credline = String.format(username + ":" + bytesToHex(encodedhash));
+ String credline = username + ":" + bytesToHex(encodedhash);
fos.write(credline.getBytes());
fos.close();
}
diff --git a/src/main/java/org/myrobotlab/service/MyoThalmic.java b/src/main/java/org/myrobotlab/service/MyoThalmic.java
index 496442ccf7..09c3194b26 100644
--- a/src/main/java/org/myrobotlab/service/MyoThalmic.java
+++ b/src/main/java/org/myrobotlab/service/MyoThalmic.java
@@ -1,5 +1,7 @@
package org.myrobotlab.service;
+import org.checkerframework.checker.formatter.qual.ConversionCategory;
+import org.checkerframework.checker.formatter.util.FormatUtil;
import org.myrobotlab.framework.Service;
import org.myrobotlab.logging.Level;
import org.myrobotlab.logging.LoggerFactory;
@@ -276,7 +278,12 @@ public String toString() {
String poseString = null;
if (currentPose != null) {
String poseTypeString = currentPose.getType().toString();
- poseString = String.format("[%s%" + (scale - poseTypeString.length()) + "s]", poseTypeString, " ");
+ poseString = String.format(
+ FormatUtil.asFormat(
+ "[%s%" + (scale - poseTypeString.length()) + "s]",
+ ConversionCategory.GENERAL,
+ ConversionCategory.GENERAL)
+ , poseTypeString, " ");
} else {
poseString = String.format("[%14s]", " ");
}
diff --git a/src/main/java/org/myrobotlab/service/OledSsd1306.java b/src/main/java/org/myrobotlab/service/OledSsd1306.java
index aed9aa7b4d..52d4644699 100644
--- a/src/main/java/org/myrobotlab/service/OledSsd1306.java
+++ b/src/main/java/org/myrobotlab/service/OledSsd1306.java
@@ -11,8 +11,10 @@
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
+import java.util.Objects;
import java.util.Set;
+import org.checkerframework.checker.interning.qual.FindDistinct;
import org.myrobotlab.framework.Registration;
import org.myrobotlab.framework.Service;
import org.myrobotlab.framework.interfaces.Attachable;
@@ -865,10 +867,10 @@ public void attach(String controllerName, String deviceBus, String deviceAddress
}
@Override
- public void attach(I2CController controller, String deviceBus, String deviceAddress) {
+ public void attach(@FindDistinct I2CController controller, String deviceBus, String deviceAddress) {
if (isAttached && this.controller != controller) {
- log.error("Already attached to {}, use detach({}) first", this.controllerName);
+ log.error("Already attached to {}, use detach({}) first", this.controllerName, this.controllerName);
}
controllerName = controller.getName();
@@ -888,7 +890,7 @@ public void attachI2CController(I2CController controller) {
if (isAttached(controller))
return;
- if (this.controllerName != controller.getName()) {
+ if (!Objects.equals(this.controllerName, controller.getName())) {
log.error("Trying to attached to {}, but already attached to ({})", controller.getName(), this.controllerName);
return;
}
diff --git a/src/main/java/org/myrobotlab/service/OpenCV.java b/src/main/java/org/myrobotlab/service/OpenCV.java
index 46ba742553..2741dfdfff 100644
--- a/src/main/java/org/myrobotlab/service/OpenCV.java
+++ b/src/main/java/org/myrobotlab/service/OpenCV.java
@@ -94,6 +94,10 @@
import org.bytedeco.opencv.opencv_core.IplImage;
import org.bytedeco.opencv.opencv_core.Rect;
import org.bytedeco.opencv.opencv_imgproc.CvFont;
+import org.checkerframework.checker.formatter.qual.ConversionCategory;
+import org.checkerframework.checker.formatter.qual.FormatMethod;
+import org.checkerframework.checker.formatter.util.FormatUtil;
+import org.checkerframework.checker.interning.qual.FindDistinct;
import org.myrobotlab.codec.CodecUtils;
import org.myrobotlab.cv.CvData;
import org.myrobotlab.cv.CvFilter;
@@ -1466,12 +1470,17 @@ public void putText(int x, int y, String format, String color) {
* args to format into the text
*
*/
+ @FormatMethod
public void putText(String format, Object... args) {
if (overlays.containsKey(format)) {
Overlay overlay = overlays.get(format);
overlay.text = String.format(format, args);
} else {
- putText(format, 20, 10 * overlays.size(), "black");
+ putText(
+ FormatUtil.asFormat(format,
+ ConversionCategory.INT,
+ ConversionCategory.INT,
+ ConversionCategory.GENERAL), 20, 10 * overlays.size(), "black");
}
}
@@ -1546,7 +1555,12 @@ public void record(OpenCVData data) {
*/
FrameRecorder recorder = null;
if (!recordingFrames) {
- recordingFilename = String.format(getDataDir() + File.separator + "%s-%d.flv", recordingSource, System.currentTimeMillis());
+ recordingFilename = String.format(
+ FormatUtil.asFormat(
+ getDataDir() + File.separator + "%s-%d.flv",
+ ConversionCategory.GENERAL,
+ ConversionCategory.INT
+ ), recordingSource, System.currentTimeMillis());
info("recording %s", recordingFilename);
recorder = new FFmpegFrameRecorder(recordingFilename, frame.imageWidth, frame.imageHeight, 0);
recorder.setFormat("flv");
@@ -1740,10 +1754,10 @@ public void setDisplayFilter(String name) {
* JNI members or pointer references it will break, mark all of
* these.
*/
- public void setFilterState(FilterWrapper otherFilter) {
+ public void setFilterState(@FindDistinct FilterWrapper otherFilter) {
OpenCVFilter filter = getFilter(otherFilter.name);
if (filter != null) {
- if (filter != otherFilter.filter) {
+ if (!filter.equals(otherFilter.filter)) {
Service.copyShallowFrom(filter, otherFilter.filter);
}
} else {
diff --git a/src/main/java/org/myrobotlab/service/OpenNi.java b/src/main/java/org/myrobotlab/service/OpenNi.java
index ed7f0f65a1..56fe35d1bc 100644
--- a/src/main/java/org/myrobotlab/service/OpenNi.java
+++ b/src/main/java/org/myrobotlab/service/OpenNi.java
@@ -27,26 +27,28 @@
import SimpleOpenNI.SimpleOpenNIConstants;
/**
- * @author GroG
- *
+ *
+ *
* Service to expose the capabilities of kinect like sensors through a
* modified SimpleOpenNI interface
- *
+ *
* Dependencies on Linux : boost-devel
- *
- * References
- *
- * http://stackoverflow.com/questions/2676719/calculating-the-angle-
- * between-the-line-defined-by-two-points
- * http://stackoverflow.com/questions
- * /9614109/how-to-calculate-an-angle-from-points
- * http://nghiaho.com/?page_id=846
- * https://www.youtube.com/watch?v=KKuiuctKGRQ Some snippets are taken
+ *
+ *
References
+ *
+ *
+ * - Calculating the angle between a line and the x-axis
+ * - How to calculate an angle from points?
+ * - http://nghiaho.com/?page_id=846
+ * - 3D Game Math | Matrices - Multiplication & Representation
+ * - Some snippets are taken
* from "Making Things See" a excellent book and I recommend buying it
- * http://shop.oreilly.com/product/0636920020684.do
- *
- *
- *
+ * Making Things See
+ *
+ *
+ *
+ * @author GroG
+ *
*/
public class OpenNi extends Service // implements
// UserTracker.NewFrameListener,
@@ -219,7 +221,7 @@ public void addOpenNIData(Service service) {
public void addRubySketchUpFrame(Skeleton skeleton, boolean singleFrame) {
try {
StringBuffer sb = new StringBuffer();
- sb.append(String.format(String.format("\n#-----------------------frame %d begin----------------------\n", frameNumber)));
+ sb.append(String.format("\n#-----------------------frame %d begin----------------------\n", frameNumber));
sb.append(String.format("head = [%f,%f,%f]\n", skeleton.head.x, skeleton.head.z, skeleton.head.y));
sb.append(String.format("neck = [%f,%f,%f]\n", skeleton.neck.x, skeleton.neck.z, skeleton.neck.y));
@@ -263,7 +265,7 @@ public void addRubySketchUpFrame(Skeleton skeleton, boolean singleFrame) {
sb.append("model.entities.add_line(rightHip, rightKnee)\n");
sb.append("model.entities.add_line(rightKnee, rightFoot)\n");
- sb.append(String.format(String.format("\n#-----------------------frame %d begin----------------------\n", frameNumber)));
+ sb.append(String.format("\n#-----------------------frame %d begin----------------------\n", frameNumber));
if (rubySketchUpFile == null) {
String filename = String.format("skeleton.%d.rb", skeleton.frameNumber);
diff --git a/src/main/java/org/myrobotlab/service/Osc.java b/src/main/java/org/myrobotlab/service/Osc.java
index 63bfe69efd..368c742212 100644
--- a/src/main/java/org/myrobotlab/service/Osc.java
+++ b/src/main/java/org/myrobotlab/service/Osc.java
@@ -89,7 +89,7 @@ public void listen(Integer newPort) throws IOException {
public void listen(String filter, Integer newPort) throws IOException {
- if (port != null && port != newPort) {
+ if (port != null && !port.equals(newPort)) {
receiver.stopListening();
receiver = null;
}
diff --git a/src/main/java/org/myrobotlab/service/Pcf8574.java b/src/main/java/org/myrobotlab/service/Pcf8574.java
index 5cd0cf233d..552f8d8388 100644
--- a/src/main/java/org/myrobotlab/service/Pcf8574.java
+++ b/src/main/java/org/myrobotlab/service/Pcf8574.java
@@ -6,6 +6,7 @@
import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import java.util.Set;
import java.util.TreeMap;
@@ -276,7 +277,7 @@ public void attach(String controllerName, String deviceBus, String deviceAddress
@Override
public void attachI2CController(I2CController controller) {
- if (this.controllerName == controller.getName()) {
+ if (Objects.equals(this.controllerName, controller.getName())) {
log.info("already attached to {}, use detach({}) first", controllerName, controllerName);
return;
}
@@ -510,7 +511,7 @@ public void pinMode(int address, int mode) {
public void pinMode(int address, String mode) {
PinDefinition pinDef = getPin(address);
// There is no direction register in the PCF8574 it is always BIDRECTIONAL.
- if (mode != "BIDIRECTIONAL") {
+ if (!Objects.equals(mode, "BIDIRECTIONAL")) {
log.error("There is no direction register, address {} mode must be BIDIRECTIONAL", address);
}
pinDef.setMode("BIDIRECTIONAL");
diff --git a/src/main/java/org/myrobotlab/service/ProgramAB.java b/src/main/java/org/myrobotlab/service/ProgramAB.java
index 0852f7e68f..3d9bff2084 100644
--- a/src/main/java/org/myrobotlab/service/ProgramAB.java
+++ b/src/main/java/org/myrobotlab/service/ProgramAB.java
@@ -19,6 +19,7 @@
import org.alicebot.ab.MagicBooleans;
import org.alicebot.ab.ProgramABListener;
import org.apache.commons.lang3.StringUtils;
+import org.checkerframework.checker.interning.qual.FindDistinct;
import org.myrobotlab.framework.Service;
import org.myrobotlab.framework.interfaces.Attachable;
import org.myrobotlab.image.Util;
@@ -1274,7 +1275,7 @@ public void addBotsDir(String path) {
}
@Override
- synchronized public void onChangePredicate(Chat chat, String predicateName, String result) {
+ synchronized public void onChangePredicate(@FindDistinct Chat chat, String predicateName, String result) {
log.info("{} on predicate change {}={}", chat.bot.name, predicateName, result);
// a little janky because program-ab doesn't know the predicate filename,
diff --git a/src/main/java/org/myrobotlab/service/RoboClaw.java b/src/main/java/org/myrobotlab/service/RoboClaw.java
index a26d3dfbe8..5036c4d6be 100644
--- a/src/main/java/org/myrobotlab/service/RoboClaw.java
+++ b/src/main/java/org/myrobotlab/service/RoboClaw.java
@@ -273,7 +273,7 @@ public void motorMove(MotorControl mc) {
driveBackwardM1(Math.abs(power));
}
} else {
- error("invalid port number %d", port);
+ error("invalid port number %s", port);
}
}
diff --git a/src/main/java/org/myrobotlab/service/Runtime.java b/src/main/java/org/myrobotlab/service/Runtime.java
index 50169e6cd6..fd1b2b0281 100644
--- a/src/main/java/org/myrobotlab/service/Runtime.java
+++ b/src/main/java/org/myrobotlab/service/Runtime.java
@@ -37,6 +37,7 @@
import java.util.TreeMap;
import java.util.TreeSet;
+import org.checkerframework.checker.interning.qual.Interned;
import org.myrobotlab.codec.ClassUtil;
import org.myrobotlab.codec.CodecUtils;
import org.myrobotlab.codec.CodecUtils.ApiDescription;
@@ -113,6 +114,7 @@
* VAR OF RUNTIME !
*
*/
+@Interned
public class Runtime extends Service implements MessageListener, ServiceLifeCyclePublisher, RemoteMessageHandler, ConnectionManager, Gateway, LocaleProvider {
final static private long serialVersionUID = 1L;
@@ -2567,7 +2569,7 @@ public Runtime(String n, String id) {
synchronized (INSTANCE_LOCK) {
if (runtime == null) {
// fist and only time....
- runtime = this;
+ runtime = (@Interned Runtime) this;
repo = (IvyWrapper) Repo.getInstance(LIBRARIES, "IvyWrapper");
}
}
@@ -2587,7 +2589,9 @@ public Runtime(String n, String id) {
String userHome = System.getProperty("user.home");
// initialize the config list
- publishConfigList();
+ // Needed to make Checker happy, just tells it this
+ // is interned so don't blow up on receiver mismatch
+ ((@Interned Runtime) this).publishConfigList();
// TODO this should be a single log statement
// http://developer.android.com/reference/java/lang/System.html
diff --git a/src/main/java/org/myrobotlab/service/Sabertooth.java b/src/main/java/org/myrobotlab/service/Sabertooth.java
index b02ff98744..d8ea618715 100644
--- a/src/main/java/org/myrobotlab/service/Sabertooth.java
+++ b/src/main/java/org/myrobotlab/service/Sabertooth.java
@@ -155,15 +155,15 @@ public void setAddress(Integer address) {
public void setMaxVoltage(int maxVolts) {
int actualValue = (int) Math.round(maxVolts / 5.12);
- info("setting max voltage to %d volts - actual value %f", actualValue);
+ info("setting max voltage to %d volts - actual value %d", maxVolts, actualValue);
sendPacket(SET_MAX_VOLTAGE, actualValue);
}
public void setMinVoltage(int min) {
int actualValue = (min - 6) * 5;
- info("setting max voltage to %d volts - actual value %d", actualValue);
+ info("setting min voltage to %d volts - actual value %d", min, actualValue);
if (actualValue < 0 || actualValue > 120) {
- error("invalid value must be between 0 and 120 %d", actualValue);
+ error("invalid value must be between 0 and 120: %d", actualValue);
return;
}
sendPacket(SET_MIN_VOLTAGE, actualValue);
@@ -237,7 +237,7 @@ public void motorMove(MotorControl mc) {
driveBackwardsMotor2(Math.abs(power));
}
} else {
- error("invalid port number %d", port);
+ error("invalid port number %s", port);
}
}
diff --git a/src/main/java/org/myrobotlab/service/Serial.java b/src/main/java/org/myrobotlab/service/Serial.java
index 1f5326bcf1..a7e4c01b43 100644
--- a/src/main/java/org/myrobotlab/service/Serial.java
+++ b/src/main/java/org/myrobotlab/service/Serial.java
@@ -19,6 +19,7 @@
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.TimeUnit;
+import org.checkerframework.checker.formatter.qual.Format;
import org.myrobotlab.framework.Platform;
import org.myrobotlab.framework.Service;
import org.myrobotlab.framework.interfaces.ServiceInterface;
diff --git a/src/main/java/org/myrobotlab/service/SerialRelay.java b/src/main/java/org/myrobotlab/service/SerialRelay.java
index 7f0f371e44..7bb68c82da 100644
--- a/src/main/java/org/myrobotlab/service/SerialRelay.java
+++ b/src/main/java/org/myrobotlab/service/SerialRelay.java
@@ -3,6 +3,7 @@
import java.io.IOException;
import java.util.HashSet;
import java.util.List;
+import java.util.Objects;
import java.util.Set;
import org.myrobotlab.framework.Service;
@@ -112,7 +113,7 @@ public Set getAttached() {
}
public int[] onSerialData(SerialRelayData data) {
- if (data.deviceId == controller.getDeviceId(this)) {
+ if (Objects.equals(data.deviceId, controller.getDeviceId(this))) {
byte[] byteData = new byte[data.data.length];
// TODO: convert serial relay data to pass around a byte array..
for (int i = 0; i < data.data.length; i++) {
diff --git a/src/main/java/org/myrobotlab/service/Ssc32UsbServoController.java b/src/main/java/org/myrobotlab/service/Ssc32UsbServoController.java
index 82b00edf28..893bbaba2b 100644
--- a/src/main/java/org/myrobotlab/service/Ssc32UsbServoController.java
+++ b/src/main/java/org/myrobotlab/service/Ssc32UsbServoController.java
@@ -4,6 +4,8 @@
import java.util.HashMap;
import java.util.Set;
+import org.checkerframework.checker.formatter.qual.FormatMethod;
+import org.checkerframework.checker.formatter.util.FormatUtil;
import org.myrobotlab.framework.Service;
import org.myrobotlab.framework.interfaces.Attachable;
import org.myrobotlab.logging.LoggerFactory;
@@ -115,6 +117,7 @@ public void connect(String port, int rate, int databits, int stopbits, int parit
serial.open(port, rate, databits, stopbits, parity);
}
+ @FormatMethod
public void write(String cmd, Object... params) {
if (serial == null || !serial.isConnected()) {
error("must be connected to serial port - connect(port)");
@@ -154,7 +157,7 @@ public void onServoMoveTo(ServoMove move) {
// String cmd = "#%dP%d";
// write("#%dP%d", servo.getPin(),
// (int)servo.toUs(servo.getTargetOutput()));
- write(sb.toString());
+ write(FormatUtil.asFormat(sb.toString()));
}
@Override
@@ -167,7 +170,7 @@ public void onServoWriteMicroseconds(ServoControl servo, int uS) {
// sb.append("T").append(velocity * 10); // T is us per second
sb.append("T").append(velocity * 100);
}
- write(sb.toString());
+ write(FormatUtil.asFormat(sb.toString()));
}
@Override
diff --git a/src/main/java/org/myrobotlab/service/SwingGui.java b/src/main/java/org/myrobotlab/service/SwingGui.java
index c27951c118..1e0c36d59a 100644
--- a/src/main/java/org/myrobotlab/service/SwingGui.java
+++ b/src/main/java/org/myrobotlab/service/SwingGui.java
@@ -60,6 +60,7 @@
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
+import org.checkerframework.checker.interning.qual.FindDistinct;
import org.myrobotlab.codec.CodecUtils;
import org.myrobotlab.framework.Instantiator;
import org.myrobotlab.framework.Message;
@@ -280,6 +281,7 @@ public void about() {
}
@Override
+ @SuppressWarnings("not.interned")
public void actionPerformed(ActionEvent e) {
String cmd = e.getActionCommand();
Object o = e.getSource();
@@ -564,7 +566,7 @@ public JMenuBar createMenu() {
* gui
*
*/
- public void subscribeToServiceMethod(String key, ServiceGui sg) {
+ public void subscribeToServiceMethod(String key, @FindDistinct ServiceGui sg) {
List list = null;
if (nameMethodCallbackMap.containsKey(key)) {
list = nameMethodCallbackMap.get(key);
@@ -574,10 +576,10 @@ public void subscribeToServiceMethod(String key, ServiceGui sg) {
}
boolean found = false;
- for (int i = 0; i < list.size(); ++i) {
- ServiceGui existingSg = list.get(i);
+ for (ServiceGui existingSg : list) {
if (existingSg == sg) {
found = true;
+ break;
}
}
if (!found) {
diff --git a/src/main/java/org/myrobotlab/service/UltrasonicSensor.java b/src/main/java/org/myrobotlab/service/UltrasonicSensor.java
index 8b8fe2cc60..74804d1c17 100644
--- a/src/main/java/org/myrobotlab/service/UltrasonicSensor.java
+++ b/src/main/java/org/myrobotlab/service/UltrasonicSensor.java
@@ -7,6 +7,7 @@
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.TimeUnit;
+import org.checkerframework.checker.interning.qual.FindDistinct;
import org.myrobotlab.framework.Service;
import org.myrobotlab.framework.interfaces.Attachable;
import org.myrobotlab.logging.LoggerFactory;
@@ -229,7 +230,7 @@ public boolean isAttached(String name) {
return isAttached;
}
- protected boolean isAttached(UltrasonicSensorController controller) {
+ protected boolean isAttached(@FindDistinct UltrasonicSensorController controller) {
return this.controller == controller;
}
diff --git a/src/main/java/org/myrobotlab/service/Updater.java b/src/main/java/org/myrobotlab/service/Updater.java
index 779dc1c81f..64ccadc067 100644
--- a/src/main/java/org/myrobotlab/service/Updater.java
+++ b/src/main/java/org/myrobotlab/service/Updater.java
@@ -9,6 +9,9 @@
import java.util.Set;
import java.util.TreeSet;
+import org.checkerframework.checker.formatter.qual.ConversionCategory;
+import org.checkerframework.checker.formatter.qual.Format;
+import org.checkerframework.checker.formatter.util.FormatUtil;
import org.myrobotlab.codec.CodecUtils;
import org.myrobotlab.framework.CmdOptions;
import org.myrobotlab.framework.MrlException;
@@ -76,15 +79,18 @@ public class Updater extends Service {
@Option(names = { "-a", "--auto-update" }, arity = "0..1", description = "automatically apply update")
protected boolean autoUpdate = true;
- final public static String MULTI_BRANCH_LATEST_BUILD_URL = "http://build.myrobotlab.org:8080/job/myrobotlab/job/%s/lastSuccessfulBuild/artifact/target/myrobotlab.jar";
+ final public static @Format(ConversionCategory.GENERAL) String MULTI_BRANCH_LATEST_BUILD_URL =
+ "http://build.myrobotlab.org:8080/job/myrobotlab/job/%s/lastSuccessfulBuild/artifact/target/myrobotlab.jar";
// for more info -
// myrobotlab-multibranch/job/develop/api/json
// WARNING Jenkins url api format for multi-branch pipelines is different from
// maven builds !
- final static String REMOTE_BUILDS_URL = "job/%s/api/json?tree=builds[number,status,timestamp,id,result]";
+ final static @Format(ConversionCategory.GENERAL) String REMOTE_BUILDS_URL =
+ "job/%s/api/json?tree=builds[number,status,timestamp,id,result]";
- final static String REMOTE_JAR_URL = "job/%s/%s/artifact/target/myrobotlab.jar";
+ final static @Format({ConversionCategory.GENERAL, ConversionCategory.GENERAL}) String REMOTE_JAR_URL =
+ "job/%s/%s/artifact/target/myrobotlab.jar";
final static String REMOTE_MULTI_BRANCH_JOBS = "api/json";
@@ -219,7 +225,9 @@ public Set getRemoteVersions(String branch) {
Set versions = new TreeSet();
try {
- byte[] data = Http.get(String.format(REMOTE_BUILDS_URL_HOME + REMOTE_BUILDS_URL, branch));
+ byte[] data = Http.get(String.format(
+ FormatUtil.asFormat(REMOTE_BUILDS_URL_HOME + REMOTE_BUILDS_URL,
+ ConversionCategory.GENERAL), branch));
if (data != null) {
String json = new String(data);
WorkflowJob job = CodecUtils.fromJson(json, WorkflowJob.class);
@@ -304,7 +312,8 @@ public synchronized void stop() {
purgeTask("checkForUpdates");
}
- protected static final String MULTI_BRANCH_VERSION = "http://build.myrobotlab.org:8080/job/myrobotlab/job/%s/api/xml?xpath=/*/lastStableBuild/number";
+ protected static final @Format(ConversionCategory.GENERAL) String MULTI_BRANCH_VERSION =
+ "http://build.myrobotlab.org:8080/job/myrobotlab/job/%s/api/xml?xpath=/*/lastStableBuild/number";
public String getRemoteVersion(String branch) throws UnsupportedEncodingException {
byte[] v = Http.get(String.format(MULTI_BRANCH_VERSION, branch));
diff --git a/src/main/java/org/myrobotlab/service/WebGui.java b/src/main/java/org/myrobotlab/service/WebGui.java
index 51619d3c64..5ff28715b2 100644
--- a/src/main/java/org/myrobotlab/service/WebGui.java
+++ b/src/main/java/org/myrobotlab/service/WebGui.java
@@ -43,6 +43,8 @@
import org.atmosphere.nettosphere.Nettosphere;
//import org.jboss.netty.handler.ssl.SslContext;
//import org.jboss.netty.handler.ssl.util.SelfSignedCertificate;
+import org.checkerframework.checker.formatter.qual.ConversionCategory;
+import org.checkerframework.checker.formatter.qual.Format;
import org.myrobotlab.codec.CodecUtils;
import org.myrobotlab.framework.MRLListener;
import org.myrobotlab.framework.Message;
@@ -238,7 +240,7 @@ private static SSLContext createSSLContext2() {
public boolean isSsl = false;
- public String startURL = "http://localhost:%d/#/tabs";
+ public @Format(ConversionCategory.INT) String startURL = "http://localhost:%d/#/tabs";
transient LiveVideoStreamHandler stream = new LiveVideoStreamHandler();
@@ -694,7 +696,7 @@ public void handle(AtmosphereResource r) {
if (clazz == null) {
log.error("cannot derive local type from service {}", serviceName);
}
-
+
Object[] params = cache.getDecodedJsonParameters(clazz, msg.method, msg.data);
Method method = cache.getMethod(clazz, msg.method, params);
@@ -1164,7 +1166,7 @@ public void start() {
}
}
- public void startBrowser(String URL) {
+ public void startBrowser(@Format(ConversionCategory.INT) String URL) {
BareBonesBrowserLaunch.openURL(String.format(URL, port));
}
diff --git a/src/main/java/org/myrobotlab/service/WorkE.java b/src/main/java/org/myrobotlab/service/WorkE.java
index 9ed607d4a0..36dd024410 100644
--- a/src/main/java/org/myrobotlab/service/WorkE.java
+++ b/src/main/java/org/myrobotlab/service/WorkE.java
@@ -3,6 +3,8 @@
import java.util.ArrayList;
import java.util.List;
+import org.checkerframework.checker.formatter.qual.FormatMethod;
+import org.checkerframework.checker.formatter.util.FormatUtil;
import org.myrobotlab.framework.Platform;
import org.myrobotlab.framework.Service;
import org.myrobotlab.framework.Status;
@@ -752,9 +754,10 @@ public double setVolume(double volume) {
@Override
public String speak(String text) {
- return speak(text, (Object[]) null);
+ return speak(FormatUtil.asFormat(text), (Object[]) null);
}
+ @FormatMethod
public String speak(String inText, Object... args) {
String text = null;
diff --git a/src/main/java/org/myrobotlab/service/abstracts/AbstractMotor.java b/src/main/java/org/myrobotlab/service/abstracts/AbstractMotor.java
index b8a974c7ea..297af55030 100644
--- a/src/main/java/org/myrobotlab/service/abstracts/AbstractMotor.java
+++ b/src/main/java/org/myrobotlab/service/abstracts/AbstractMotor.java
@@ -31,6 +31,7 @@
import java.util.List;
import java.util.Set;
+import org.checkerframework.checker.interning.qual.FindDistinct;
import org.myrobotlab.framework.Registration;
import org.myrobotlab.framework.Service;
import org.myrobotlab.framework.interfaces.Attachable;
@@ -167,7 +168,7 @@ public double getPowerLevel() {
}
@Override
- public boolean isAttached(MotorController controller) {
+ public boolean isAttached(@FindDistinct MotorController controller) {
return this.controller == controller;
}
diff --git a/src/main/java/org/myrobotlab/service/abstracts/AbstractPinEncoder.java b/src/main/java/org/myrobotlab/service/abstracts/AbstractPinEncoder.java
index b04a551f16..d5a2cc7b8e 100644
--- a/src/main/java/org/myrobotlab/service/abstracts/AbstractPinEncoder.java
+++ b/src/main/java/org/myrobotlab/service/abstracts/AbstractPinEncoder.java
@@ -1,5 +1,6 @@
package org.myrobotlab.service.abstracts;
+import org.checkerframework.checker.interning.qual.FindDistinct;
import org.myrobotlab.framework.Service;
import org.myrobotlab.sensor.EncoderData;
import org.myrobotlab.service.interfaces.EncoderControl;
@@ -24,7 +25,7 @@ public AbstractPinEncoder(String n, String id) {
}
@Override
- public void attachEncoderController(EncoderController controller) {
+ public void attachEncoderController(@FindDistinct EncoderController controller) {
if (this.controller == controller) {
log.info("{} already attached to controller {}", getName(), controller.getName());
}
diff --git a/src/main/java/org/myrobotlab/service/abstracts/AbstractSpeechSynthesis.java b/src/main/java/org/myrobotlab/service/abstracts/AbstractSpeechSynthesis.java
index 47a6a81c5d..9d2ec8b55d 100644
--- a/src/main/java/org/myrobotlab/service/abstracts/AbstractSpeechSynthesis.java
+++ b/src/main/java/org/myrobotlab/service/abstracts/AbstractSpeechSynthesis.java
@@ -10,6 +10,8 @@
import java.util.TreeMap;
import java.util.concurrent.ConcurrentHashMap;
+import org.checkerframework.checker.formatter.qual.ConversionCategory;
+import org.checkerframework.checker.formatter.qual.Format;
import org.myrobotlab.framework.Service;
import org.myrobotlab.framework.interfaces.Attachable;
import org.myrobotlab.io.FileIO;
@@ -245,7 +247,7 @@ public Object getVoiceProvider() {
// This is the format string that will be used when asking for confirmation.
// FIXME - why is this in english - does it make sense ? - should probably not
// be here
- public String confirmationString = "did you say %s ?";
+ public @Format(ConversionCategory.GENERAL) String confirmationString = "did you say %s ?";
protected Map voiceKeyIndex = new TreeMap<>();
@@ -709,7 +711,7 @@ public List speakBlocking(String toSpeak) {
private String filterText(String toSpeak) {
- if (toSpeak == null || toSpeak.isEmpty() || toSpeak == " ") {
+ if (toSpeak == null || toSpeak.isEmpty() || toSpeak.equals(" ")) {
return " , ";
}
toSpeak = toSpeak.trim();
diff --git a/src/main/java/org/myrobotlab/service/meta/RuntimeMeta.java b/src/main/java/org/myrobotlab/service/meta/RuntimeMeta.java
index eb52030d8d..1f967b6cfd 100644
--- a/src/main/java/org/myrobotlab/service/meta/RuntimeMeta.java
+++ b/src/main/java/org/myrobotlab/service/meta/RuntimeMeta.java
@@ -49,6 +49,11 @@ public RuntimeMeta() {
// ws client sockets
addDependency("org.asynchttpclient", "async-http-client", "2.12.3");
+ // Checker framework
+ addDependency("org.checkerframework", "checker-qual", "3.28.0");
+ addDependency("org.checkerframework", "checker", "3.28.0");
+ addDependency("org.checkerframework", "checker-util", "3.28.0");
+
}
}
diff --git a/src/main/java/org/myrobotlab/swing/Adafruit16CServoDriverGui.java b/src/main/java/org/myrobotlab/swing/Adafruit16CServoDriverGui.java
index bbd5dbad11..2ff579275e 100644
--- a/src/main/java/org/myrobotlab/swing/Adafruit16CServoDriverGui.java
+++ b/src/main/java/org/myrobotlab/swing/Adafruit16CServoDriverGui.java
@@ -74,6 +74,7 @@ public Adafruit16CServoDriverGui(final String boundServiceName, final SwingGui m
restoreListeners();
}
+ @SuppressWarnings("not.interned")
@Override
public void actionPerformed(final ActionEvent event) {
// TODO Auto-generated method stub
diff --git a/src/main/java/org/myrobotlab/swing/AdafruitIna219Gui.java b/src/main/java/org/myrobotlab/swing/AdafruitIna219Gui.java
index b6a6810809..7cee781fcd 100644
--- a/src/main/java/org/myrobotlab/swing/AdafruitIna219Gui.java
+++ b/src/main/java/org/myrobotlab/swing/AdafruitIna219Gui.java
@@ -104,6 +104,7 @@ public AdafruitIna219Gui(final String boundServiceName, final SwingGui myService
restoreListeners();
}
+ @SuppressWarnings("not.interned")
@Override
public void actionPerformed(final ActionEvent event) {
// TODO Auto-generated method stub
diff --git a/src/main/java/org/myrobotlab/swing/AdafruitMotorHat4PiGui.java b/src/main/java/org/myrobotlab/swing/AdafruitMotorHat4PiGui.java
index 309b8eb6bc..b50cf1c000 100644
--- a/src/main/java/org/myrobotlab/swing/AdafruitMotorHat4PiGui.java
+++ b/src/main/java/org/myrobotlab/swing/AdafruitMotorHat4PiGui.java
@@ -74,6 +74,7 @@ public AdafruitMotorHat4PiGui(final String boundServiceName, final SwingGui mySe
restoreListeners();
}
+ @SuppressWarnings("not.interned")
@Override
public void actionPerformed(final ActionEvent event) {
// TODO Auto-generated method stub
diff --git a/src/main/java/org/myrobotlab/swing/Ads1115Gui.java b/src/main/java/org/myrobotlab/swing/Ads1115Gui.java
index 385664a05b..a0b402339d 100644
--- a/src/main/java/org/myrobotlab/swing/Ads1115Gui.java
+++ b/src/main/java/org/myrobotlab/swing/Ads1115Gui.java
@@ -99,6 +99,7 @@ public Ads1115Gui(final String boundServiceName, final SwingGui myService) {
}
+ @SuppressWarnings("not.interned")
@Override
public void actionPerformed(ActionEvent event) {
log.info("Ads1115GUI actionPerformed");
diff --git a/src/main/java/org/myrobotlab/swing/ArduinoGui.java b/src/main/java/org/myrobotlab/swing/ArduinoGui.java
index ca5be67880..163c611c4f 100644
--- a/src/main/java/org/myrobotlab/swing/ArduinoGui.java
+++ b/src/main/java/org/myrobotlab/swing/ArduinoGui.java
@@ -177,6 +177,7 @@ void removeListeners() {
* The guts of the business logic of handling all the graphical components and
* their relations with each other.
*/
+ @SuppressWarnings("not.interned")
@Override
public void actionPerformed(ActionEvent e) {
Object o = e.getSource();
@@ -484,6 +485,7 @@ public void onState(final Arduino arduino) {
update(arduino);
}
+ @SuppressWarnings("not.interned")
@Override
public void itemStateChanged(ItemEvent event) {
Object o = event.getSource();
diff --git a/src/main/java/org/myrobotlab/swing/BlenderGui.java b/src/main/java/org/myrobotlab/swing/BlenderGui.java
index ba5d0df67c..1cd47568dd 100644
--- a/src/main/java/org/myrobotlab/swing/BlenderGui.java
+++ b/src/main/java/org/myrobotlab/swing/BlenderGui.java
@@ -55,6 +55,7 @@ public BlenderGui(final String boundServiceName, final SwingGui myService) {
}
+ @SuppressWarnings("not.interned")
@Override
public void actionPerformed(ActionEvent event) {
Object o = event.getSource();
diff --git a/src/main/java/org/myrobotlab/swing/ClockGui.java b/src/main/java/org/myrobotlab/swing/ClockGui.java
index 01a4dcf865..8034921f37 100644
--- a/src/main/java/org/myrobotlab/swing/ClockGui.java
+++ b/src/main/java/org/myrobotlab/swing/ClockGui.java
@@ -35,6 +35,8 @@
import javax.swing.JLabel;
import javax.swing.JTextField;
+import org.checkerframework.checker.formatter.qual.ConversionCategory;
+import org.checkerframework.checker.formatter.qual.Format;
import org.myrobotlab.service.Clock;
import org.myrobotlab.service.SwingGui;
@@ -44,7 +46,7 @@ public class ClockGui extends ServiceGui implements ActionListener {
JButton startClock = new JButton("start clock");
JLabel clockDisplay = new JLabel("00:00:00.
");
- String displayFormat = "%s
";
+ @Format(ConversionCategory.GENERAL) String displayFormat = "%s
";
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
JTextField interval = new JTextField("1000", 8);
@@ -56,6 +58,7 @@ public ClockGui(final String boundServiceName, final SwingGui myService) {
startClock.addActionListener(this);
}
+ @SuppressWarnings("not.interned")
@Override
public void actionPerformed(ActionEvent e) {
Object o = e.getSource();
diff --git a/src/main/java/org/myrobotlab/swing/DiyServoGui.java b/src/main/java/org/myrobotlab/swing/DiyServoGui.java
index 789ca6fdc8..6dd0a88911 100644
--- a/src/main/java/org/myrobotlab/swing/DiyServoGui.java
+++ b/src/main/java/org/myrobotlab/swing/DiyServoGui.java
@@ -446,6 +446,7 @@ public DiyServoGui(final String boundServiceName, final SwingGui myService) {
}
// SwingGui's action processing section - data from user
+ @SuppressWarnings("not.interned")
@Override
public void actionPerformed(final ActionEvent event) {
SwingUtilities.invokeLater(new Runnable() {
diff --git a/src/main/java/org/myrobotlab/swing/FiniteStateMachineGui.java b/src/main/java/org/myrobotlab/swing/FiniteStateMachineGui.java
index c9e1644cb6..579c84b855 100644
--- a/src/main/java/org/myrobotlab/swing/FiniteStateMachineGui.java
+++ b/src/main/java/org/myrobotlab/swing/FiniteStateMachineGui.java
@@ -70,6 +70,7 @@ public FiniteStateMachineGui(final String boundServiceName, final SwingGui mySer
set.addActionListener(this);
}
+ @SuppressWarnings("not.interned")
@Override
public void actionPerformed(ActionEvent event) {
Object o = event.getSource();
diff --git a/src/main/java/org/myrobotlab/swing/Hd44780Gui.java b/src/main/java/org/myrobotlab/swing/Hd44780Gui.java
index f8dd4d78bf..8d038e5b90 100644
--- a/src/main/java/org/myrobotlab/swing/Hd44780Gui.java
+++ b/src/main/java/org/myrobotlab/swing/Hd44780Gui.java
@@ -81,6 +81,7 @@ public Hd44780Gui(final String boundServiceName, final SwingGui myService) throw
save.addActionListener(this);
}
+ @SuppressWarnings("not.interned")
@Override
public void actionPerformed(final ActionEvent event) {
SwingUtilities.invokeLater(new Runnable() {
diff --git a/src/main/java/org/myrobotlab/swing/I2cMuxGui.java b/src/main/java/org/myrobotlab/swing/I2cMuxGui.java
index 47d24e1cce..2d0fd640b7 100644
--- a/src/main/java/org/myrobotlab/swing/I2cMuxGui.java
+++ b/src/main/java/org/myrobotlab/swing/I2cMuxGui.java
@@ -82,6 +82,7 @@ public I2cMuxGui(final String boundServiceName, final SwingGui myService) {
restoreListeners();
}
+ @SuppressWarnings("not.interned")
@Override
public void actionPerformed(ActionEvent event) {
Object o = event.getSource();
diff --git a/src/main/java/org/myrobotlab/swing/IntegratedMovementGui.java b/src/main/java/org/myrobotlab/swing/IntegratedMovementGui.java
index c73527b3bf..1bc357ec4d 100644
--- a/src/main/java/org/myrobotlab/swing/IntegratedMovementGui.java
+++ b/src/main/java/org/myrobotlab/swing/IntegratedMovementGui.java
@@ -94,6 +94,7 @@ private JPanel buildControl() {
return controlPane;
}
+ @SuppressWarnings("not.interned")
@Override
public void actionPerformed(ActionEvent e) {
log.info("IntegratedMovementGUI actionPerformed");
diff --git a/src/main/java/org/myrobotlab/swing/JoystickGui.java b/src/main/java/org/myrobotlab/swing/JoystickGui.java
index a23e358a66..f3710bf1fe 100644
--- a/src/main/java/org/myrobotlab/swing/JoystickGui.java
+++ b/src/main/java/org/myrobotlab/swing/JoystickGui.java
@@ -95,6 +95,7 @@ public JoystickGui(final String boundServiceName, final SwingGui myService) {
refresh.addActionListener(this);
}
+ @SuppressWarnings("not.interned")
@Override
public void actionPerformed(ActionEvent e) {
Object o = e.getSource();
@@ -234,6 +235,7 @@ public void onJoystickInput(final JoystickData input) {
}
}
+ @SuppressWarnings("not.interned")
@Override
public void itemStateChanged(final ItemEvent e) {
SwingUtilities.invokeLater(new Runnable() {
diff --git a/src/main/java/org/myrobotlab/swing/KeyboardGui.java b/src/main/java/org/myrobotlab/swing/KeyboardGui.java
index 66c603640b..761becf7ea 100644
--- a/src/main/java/org/myrobotlab/swing/KeyboardGui.java
+++ b/src/main/java/org/myrobotlab/swing/KeyboardGui.java
@@ -106,6 +106,7 @@ public void run() {
});
}
+ @SuppressWarnings("not.interned")
@Override
public void actionPerformed(ActionEvent e) {
Object o = e.getSource();
diff --git a/src/main/java/org/myrobotlab/swing/Lm75aGui.java b/src/main/java/org/myrobotlab/swing/Lm75aGui.java
index dde57dd7f0..386d5c45ac 100644
--- a/src/main/java/org/myrobotlab/swing/Lm75aGui.java
+++ b/src/main/java/org/myrobotlab/swing/Lm75aGui.java
@@ -85,6 +85,7 @@ public Lm75aGui(final String boundServiceName, final SwingGui myService) {
}
+ @SuppressWarnings("not.interned")
@Override
public void actionPerformed(ActionEvent event) {
Object o = event.getSource();
diff --git a/src/main/java/org/myrobotlab/swing/LogGui.java b/src/main/java/org/myrobotlab/swing/LogGui.java
index c483616fc0..ec020704e7 100644
--- a/src/main/java/org/myrobotlab/swing/LogGui.java
+++ b/src/main/java/org/myrobotlab/swing/LogGui.java
@@ -38,6 +38,7 @@ public LogGui(final String boundServiceName, final SwingGui myService) {
}
+ @SuppressWarnings("not.interned")
@Override
public void actionPerformed(ActionEvent action) {
Object o = action.getSource();
diff --git a/src/main/java/org/myrobotlab/swing/MotorDualPwmGui.java b/src/main/java/org/myrobotlab/swing/MotorDualPwmGui.java
index 9f4aba578b..a81790c3f3 100644
--- a/src/main/java/org/myrobotlab/swing/MotorDualPwmGui.java
+++ b/src/main/java/org/myrobotlab/swing/MotorDualPwmGui.java
@@ -130,6 +130,7 @@ public MotorDualPwmGui(final String boundServiceName, final SwingGui myService)
restoreListeners();
}
+ @SuppressWarnings("not.interned")
@Override
public void actionPerformed(ActionEvent e) {
@@ -236,6 +237,7 @@ public void setEnabled(boolean enable) {
}
+ @SuppressWarnings("not.interned")
@Override
public void stateChanged(ChangeEvent ce) {
Object source = ce.getSource();
diff --git a/src/main/java/org/myrobotlab/swing/MotorGui.java b/src/main/java/org/myrobotlab/swing/MotorGui.java
index 30d1c72a3b..99dfd9e828 100644
--- a/src/main/java/org/myrobotlab/swing/MotorGui.java
+++ b/src/main/java/org/myrobotlab/swing/MotorGui.java
@@ -164,6 +164,7 @@ public MotorGui(final String boundServiceName, final SwingGui myService) {
}
+ @SuppressWarnings("not.interned")
@Override
public void actionPerformed(ActionEvent e) {
Object source = e.getSource();
@@ -251,6 +252,7 @@ public void setEnabled(boolean enable) {
}
+ @SuppressWarnings("not.interned")
@Override
public void stateChanged(ChangeEvent ce) {
Object source = ce.getSource();
diff --git a/src/main/java/org/myrobotlab/swing/MotorHat4PiGui.java b/src/main/java/org/myrobotlab/swing/MotorHat4PiGui.java
index d14c286ecd..e52684219a 100644
--- a/src/main/java/org/myrobotlab/swing/MotorHat4PiGui.java
+++ b/src/main/java/org/myrobotlab/swing/MotorHat4PiGui.java
@@ -127,6 +127,7 @@ public MotorHat4PiGui(final String boundServiceName, final SwingGui myService) {
restoreListeners();
}
+ @SuppressWarnings("not.interned")
@Override
public void actionPerformed(ActionEvent e) {
@@ -222,6 +223,7 @@ public void setEnabled(boolean enable) {
}
+ @SuppressWarnings("not.interned")
@Override
public void stateChanged(ChangeEvent ce) {
Object source = ce.getSource();
diff --git a/src/main/java/org/myrobotlab/swing/MotorPortGui.java b/src/main/java/org/myrobotlab/swing/MotorPortGui.java
index e5846a5171..9069f2ec0a 100644
--- a/src/main/java/org/myrobotlab/swing/MotorPortGui.java
+++ b/src/main/java/org/myrobotlab/swing/MotorPortGui.java
@@ -134,6 +134,7 @@ public MotorPortGui(final String boundServiceName, final SwingGui myService) {
restoreListeners();
}
+ @SuppressWarnings("not.interned")
@Override
public void actionPerformed(ActionEvent e) {
@@ -258,6 +259,7 @@ public void setControlEnabled(boolean enable) {
}
+ @SuppressWarnings("not.interned")
@Override
public void stateChanged(ChangeEvent ce) {
Object source = ce.getSource();
diff --git a/src/main/java/org/myrobotlab/swing/MqttGui.java b/src/main/java/org/myrobotlab/swing/MqttGui.java
index da6be0f59a..acc244c05c 100644
--- a/src/main/java/org/myrobotlab/swing/MqttGui.java
+++ b/src/main/java/org/myrobotlab/swing/MqttGui.java
@@ -102,6 +102,7 @@ public void run() {
});
}
+ @SuppressWarnings("not.interned")
@Override
public void actionPerformed(ActionEvent event) {
Object o = event.getSource();
diff --git a/src/main/java/org/myrobotlab/swing/OculusRiftGui.java b/src/main/java/org/myrobotlab/swing/OculusRiftGui.java
index 10ed9db8ae..8559b6606c 100644
--- a/src/main/java/org/myrobotlab/swing/OculusRiftGui.java
+++ b/src/main/java/org/myrobotlab/swing/OculusRiftGui.java
@@ -25,9 +25,9 @@ public OculusRiftGui(String boundServiceName, SwingGui myService) {
super(boundServiceName, myService);
// Create the 2 video widgets
- leftEye = new VideoWidget(String.format("%s." + OculusRift.LEFT_OPEN_CV, boundServiceName), myService);
+ leftEye = new VideoWidget(String.format("%s.%s", boundServiceName, OculusRift.LEFT_OPEN_CV), myService);
- rightEye = new VideoWidget(String.format("%s." + OculusRift.RIGHT_OPEN_CV, boundServiceName), myService);
+ rightEye = new VideoWidget(String.format("%s.%s", boundServiceName, OculusRift.RIGHT_OPEN_CV), myService);
JPanel leftVideoPanel = new JPanel();
leftVideoPanel.add(leftEye.display);
diff --git a/src/main/java/org/myrobotlab/swing/OledSsd1306Gui.java b/src/main/java/org/myrobotlab/swing/OledSsd1306Gui.java
index f44591512a..000e9c81e8 100644
--- a/src/main/java/org/myrobotlab/swing/OledSsd1306Gui.java
+++ b/src/main/java/org/myrobotlab/swing/OledSsd1306Gui.java
@@ -72,6 +72,7 @@ public OledSsd1306Gui(final String boundServiceName, final SwingGui myService) {
}
@Override
+ @SuppressWarnings("not.interned")
public void actionPerformed(final ActionEvent event) {
// TODO Auto-generated method stub
SwingUtilities.invokeLater(new Runnable() {
diff --git a/src/main/java/org/myrobotlab/swing/OpenCVGui.java b/src/main/java/org/myrobotlab/swing/OpenCVGui.java
index fc0c26694a..c8ba577317 100644
--- a/src/main/java/org/myrobotlab/swing/OpenCVGui.java
+++ b/src/main/java/org/myrobotlab/swing/OpenCVGui.java
@@ -241,6 +241,7 @@ public Component getListCellRendererComponent(JList> list, Object value, int i
}
// gui events handled - never "set" status of a ui component here ...
+ @SuppressWarnings("not.interned")
@Override
public void actionPerformed(ActionEvent e) {
Object o = e.getSource();
diff --git a/src/main/java/org/myrobotlab/swing/OpenNiGui.java b/src/main/java/org/myrobotlab/swing/OpenNiGui.java
index 88ab1f7303..79bf1e8147 100644
--- a/src/main/java/org/myrobotlab/swing/OpenNiGui.java
+++ b/src/main/java/org/myrobotlab/swing/OpenNiGui.java
@@ -81,6 +81,7 @@ public OpenNiGui(final String boundServiceName, final SwingGui myService) {
}
+ @SuppressWarnings("not.interned")
@Override
public void actionPerformed(ActionEvent e) {
Object o = e.getSource();
diff --git a/src/main/java/org/myrobotlab/swing/Pcf8574Gui.java b/src/main/java/org/myrobotlab/swing/Pcf8574Gui.java
index dd8e1618d0..47023be4dd 100644
--- a/src/main/java/org/myrobotlab/swing/Pcf8574Gui.java
+++ b/src/main/java/org/myrobotlab/swing/Pcf8574Gui.java
@@ -82,6 +82,7 @@ public Pcf8574Gui(final String boundServiceName, final SwingGui myService) {
}
+ @SuppressWarnings("not.interned")
@Override
public void actionPerformed(ActionEvent event) {
Object o = event.getSource();
diff --git a/src/main/java/org/myrobotlab/swing/ProgramABGui.java b/src/main/java/org/myrobotlab/swing/ProgramABGui.java
index f437ae91ed..6d90080e20 100644
--- a/src/main/java/org/myrobotlab/swing/ProgramABGui.java
+++ b/src/main/java/org/myrobotlab/swing/ProgramABGui.java
@@ -10,6 +10,7 @@
import java.io.File;
import java.io.IOException;
import java.util.Iterator;
+import java.util.Objects;
import javax.swing.ImageIcon;
import javax.swing.JButton;
@@ -170,6 +171,7 @@ public ProgramABGui(String boundServiceName, SwingGui myService) throws BadLocat
visualDebug.addActionListener(this);
}
+ @SuppressWarnings("not.interned")
@Override
public void actionPerformed(ActionEvent event) {
Object o = event.getSource();
@@ -277,7 +279,7 @@ public void run() {
}
private void setLogLevelForConsole() {
- if (LoggingFactory.getInstance().getLevel() == "WARN" || LoggingFactory.getInstance().getLevel() == "ERROR") {
+ if (Objects.equals(LoggingFactory.getInstance().getLevel(), "WARN") || Objects.equals(LoggingFactory.getInstance().getLevel(), "ERROR")) {
for (String s : logsClassOnly) {
if (!LoggerFactory.getLogger(s).isInfoEnabled()) {
LoggingFactory.getInstance().setLevel(s, "INFO");
diff --git a/src/main/java/org/myrobotlab/swing/PythonGui.java b/src/main/java/org/myrobotlab/swing/PythonGui.java
index 91714b2f21..932637fddc 100644
--- a/src/main/java/org/myrobotlab/swing/PythonGui.java
+++ b/src/main/java/org/myrobotlab/swing/PythonGui.java
@@ -50,6 +50,7 @@
import javax.swing.SwingUtilities;
import javax.swing.text.DefaultCaret;
+import org.checkerframework.checker.formatter.util.FormatUtil;
import org.fife.ui.autocomplete.AutoCompletion;
import org.fife.ui.autocomplete.CompletionProvider;
import org.fife.ui.rsyntaxtextarea.TextEditorPane;
@@ -156,6 +157,7 @@ public String getSelected() {
return tabs.getTitleAt(tabs.getSelectedIndex());
}
+ @SuppressWarnings("not.interned")
@Override
public void actionPerformed(ActionEvent arg0) {
@@ -440,6 +442,7 @@ public void mouseExited(MouseEvent arg0) {
}
+ @SuppressWarnings("not.interned")
@Override
public void mousePressed(MouseEvent me) {
// TODO Auto-generated method stub
@@ -463,13 +466,13 @@ public void openFile() {
String filename = FileUtil.getLastFileOpened();
Script script = new Script(filename, newfile);
addNewEditorPanel(script);
- info("Loaded: " + FileUtil.getLastFileOpened());
+ info("Loaded: %s", FileUtil.getLastFileOpened());
return;
}
if (FileUtil.getLastStatus() == null) {
info("no file selected");
} else {
- info(FileUtil.getLastStatus());
+ info(FormatUtil.asFormat(FileUtil.getLastStatus()));
}
return;
}
diff --git a/src/main/java/org/myrobotlab/swing/RuntimeGui.java b/src/main/java/org/myrobotlab/swing/RuntimeGui.java
index c7173622b9..e92018aa48 100644
--- a/src/main/java/org/myrobotlab/swing/RuntimeGui.java
+++ b/src/main/java/org/myrobotlab/swing/RuntimeGui.java
@@ -413,6 +413,7 @@ public JMenuBar createMenuBar() {
}
// zod
+ @SuppressWarnings("not.interned")
@Override
public void actionPerformed(ActionEvent event) {
MetaData c = (MetaData) possibleServicesModel.getValueAt(popupRow, 0);
@@ -607,7 +608,7 @@ public void run() {
List possibleService = serviceData.getServiceTypes();
for (int i = 0; i < possibleService.size(); ++i) {
MetaData serviceType = possibleService.get(i);
- if (filtered == "" || serviceType.getSimpleName().toLowerCase().indexOf(filtered.toLowerCase()) != -1) {
+ if (filtered.equals("") || serviceType.getSimpleName().toLowerCase().contains(filtered.toLowerCase())) {
if (serviceType.isAvailable()) {
possibleServicesModel.addRow(new Object[] { serviceType, "" });
}
@@ -741,6 +742,7 @@ public void updatesBegin() {
progressDialog.beginUpdates();
}
+ @SuppressWarnings("not.interned")
@Override
public void valueChanged(ListSelectionEvent e) {
Object o = e.getSource();
diff --git a/src/main/java/org/myrobotlab/swing/SecurityGui.java b/src/main/java/org/myrobotlab/swing/SecurityGui.java
index 2c02f8b362..66056262ef 100644
--- a/src/main/java/org/myrobotlab/swing/SecurityGui.java
+++ b/src/main/java/org/myrobotlab/swing/SecurityGui.java
@@ -69,6 +69,7 @@ public SecurityGui(final String boundServiceName, final SwingGui myService) {
set.addActionListener(this);
}
+ @SuppressWarnings("not.interned")
@Override
public void actionPerformed(ActionEvent event) {
Object o = event.getSource();
diff --git a/src/main/java/org/myrobotlab/swing/SerialGui.java b/src/main/java/org/myrobotlab/swing/SerialGui.java
index 1852b21613..961eb8b329 100644
--- a/src/main/java/org/myrobotlab/swing/SerialGui.java
+++ b/src/main/java/org/myrobotlab/swing/SerialGui.java
@@ -117,6 +117,7 @@ public SerialGui(final String boundServiceName, final SwingGui myService) {
monitor.addActionListener(this);
}
+ @SuppressWarnings("not.interned")
@Override
public void actionPerformed(ActionEvent e) {
Object o = e.getSource();
@@ -230,6 +231,7 @@ public void run() {
}
// onChange of ports
+ @SuppressWarnings("not.interned")
@Override
public void itemStateChanged(ItemEvent event) {
Object o = event.getSource();
diff --git a/src/main/java/org/myrobotlab/swing/ServiceGui.java b/src/main/java/org/myrobotlab/swing/ServiceGui.java
index 77ed2282f2..564c8dd6da 100644
--- a/src/main/java/org/myrobotlab/swing/ServiceGui.java
+++ b/src/main/java/org/myrobotlab/swing/ServiceGui.java
@@ -41,6 +41,7 @@
import javax.swing.JPanel;
import javax.swing.border.TitledBorder;
+import org.checkerframework.checker.formatter.qual.FormatMethod;
import org.myrobotlab.codec.CodecUtils;
import org.myrobotlab.framework.MRLListener;
import org.myrobotlab.framework.MethodCache;
@@ -121,14 +122,17 @@ public ServiceGui(final String boundServiceName, final SwingGui myService) {
// addTop(new JButton("save"), new JButton("load"));
}
+ @FormatMethod
public void info(String msg, Object... params) {
swingGui.info(msg, params);
}
+ @FormatMethod
public void warn(String msg, Object... params) {
swingGui.warn(msg, params);
}
+ @FormatMethod
public void error(String msg, Object... params) {
swingGui.error(msg, params);
}
diff --git a/src/main/java/org/myrobotlab/swing/ServoGui.java b/src/main/java/org/myrobotlab/swing/ServoGui.java
index 57faeba22e..b31487e30d 100644
--- a/src/main/java/org/myrobotlab/swing/ServoGui.java
+++ b/src/main/java/org/myrobotlab/swing/ServoGui.java
@@ -357,6 +357,7 @@ public void setSpeedControlEnabled(boolean b) {
}
// SwingGui's action processing section - data from user
+ @SuppressWarnings("not.interned")
@Override
public void actionPerformed(final ActionEvent event) {
SwingUtilities.invokeLater(new Runnable() {
diff --git a/src/main/java/org/myrobotlab/swing/ServoMixerGui.java b/src/main/java/org/myrobotlab/swing/ServoMixerGui.java
index 5834d3e355..b8e78f9ffc 100755
--- a/src/main/java/org/myrobotlab/swing/ServoMixerGui.java
+++ b/src/main/java/org/myrobotlab/swing/ServoMixerGui.java
@@ -103,6 +103,7 @@ public void refreshPanel() {
}
+ @SuppressWarnings("not.interned")
@Override
public void actionPerformed(ActionEvent event) {
Object o = event.getSource();
diff --git a/src/main/java/org/myrobotlab/swing/SolrGui.java b/src/main/java/org/myrobotlab/swing/SolrGui.java
index e97f9e227e..449cdd25d6 100755
--- a/src/main/java/org/myrobotlab/swing/SolrGui.java
+++ b/src/main/java/org/myrobotlab/swing/SolrGui.java
@@ -96,6 +96,7 @@ private void createSearchGuiLayout() {
public final static Logger log = LoggerFactory.getLogger(SolrGui.class.toString());
static final long serialVersionUID = 1L;
+ @SuppressWarnings("not.interned")
@Override
public void actionPerformed(ActionEvent event) {
// TODO Auto-generated method stub
diff --git a/src/main/java/org/myrobotlab/swing/SwingGuiGui.java b/src/main/java/org/myrobotlab/swing/SwingGuiGui.java
index 305e47ca57..8a7ee84ef1 100644
--- a/src/main/java/org/myrobotlab/swing/SwingGuiGui.java
+++ b/src/main/java/org/myrobotlab/swing/SwingGuiGui.java
@@ -470,6 +470,7 @@ public void run() {
});
}
+ @SuppressWarnings("not.interned")
@Override
public void actionPerformed(ActionEvent e) {
Object o = e.getSource();
diff --git a/src/main/java/org/myrobotlab/swing/ThingSpeakGui.java b/src/main/java/org/myrobotlab/swing/ThingSpeakGui.java
index 5b9ff61a2d..74b3ba955c 100644
--- a/src/main/java/org/myrobotlab/swing/ThingSpeakGui.java
+++ b/src/main/java/org/myrobotlab/swing/ThingSpeakGui.java
@@ -69,6 +69,7 @@ public ThingSpeakGui(final String boundServiceName, final SwingGui myService) {
display.add(input);
}
+ @SuppressWarnings("not.interned")
@Override
public void actionPerformed(ActionEvent event) {
Object o = event.getSource();
diff --git a/src/main/java/org/myrobotlab/swing/TwitterGui.java b/src/main/java/org/myrobotlab/swing/TwitterGui.java
index a7aa3d7803..496dbe70dd 100644
--- a/src/main/java/org/myrobotlab/swing/TwitterGui.java
+++ b/src/main/java/org/myrobotlab/swing/TwitterGui.java
@@ -80,6 +80,7 @@ public TwitterGui(final String boundServiceName, final SwingGui myService) {
display.add(tweetPanel, BorderLayout.SOUTH);
}
+ @SuppressWarnings("not.interned")
@Override
public void actionPerformed(ActionEvent event) {
Object o = event.getSource();
diff --git a/src/main/java/org/myrobotlab/swing/WebkitSpeechRecognitionGui.java b/src/main/java/org/myrobotlab/swing/WebkitSpeechRecognitionGui.java
index b4eee43df4..a1593ce86d 100644
--- a/src/main/java/org/myrobotlab/swing/WebkitSpeechRecognitionGui.java
+++ b/src/main/java/org/myrobotlab/swing/WebkitSpeechRecognitionGui.java
@@ -80,6 +80,7 @@ public WebkitSpeechRecognitionGui(final String boundServiceName, final SwingGui
}
+ @SuppressWarnings({"not.interned", "argument"})
@Override
public void actionPerformed(final ActionEvent event) {
SwingUtilities.invokeLater(new Runnable() {
diff --git a/src/main/java/org/myrobotlab/swing/abstracts/AbstractSpeechSynthesisGui.java b/src/main/java/org/myrobotlab/swing/abstracts/AbstractSpeechSynthesisGui.java
index 6e892cb917..f7292f8afc 100644
--- a/src/main/java/org/myrobotlab/swing/abstracts/AbstractSpeechSynthesisGui.java
+++ b/src/main/java/org/myrobotlab/swing/abstracts/AbstractSpeechSynthesisGui.java
@@ -258,6 +258,7 @@ protected String displayEffectFile(File file) {
return ret;
}
+ @SuppressWarnings("not.interned")
@Override
public void actionPerformed(ActionEvent event) {
SwingUtilities.invokeLater(new Runnable() {
diff --git a/src/main/java/org/myrobotlab/swing/opencv/OpenCVFilterAffineGui.java b/src/main/java/org/myrobotlab/swing/opencv/OpenCVFilterAffineGui.java
index 6198d33833..330626e020 100644
--- a/src/main/java/org/myrobotlab/swing/opencv/OpenCVFilterAffineGui.java
+++ b/src/main/java/org/myrobotlab/swing/opencv/OpenCVFilterAffineGui.java
@@ -87,6 +87,7 @@ public OpenCVFilterAffineGui(String boundFilterName, String boundServiceName, Sw
}
+ @SuppressWarnings("not.interned")
@Override
public void actionPerformed(ActionEvent event) {
// TODO Auto-generated method stub
@@ -115,6 +116,7 @@ public void run() {
}
+ @SuppressWarnings("not.interned")
@Override
public void stateChanged(ChangeEvent e) {
Object o = e.getSource();
diff --git a/src/main/java/org/myrobotlab/swing/opencv/OpenCVFilterCannyGui.java b/src/main/java/org/myrobotlab/swing/opencv/OpenCVFilterCannyGui.java
index 1aab3d41c2..b05d850f08 100644
--- a/src/main/java/org/myrobotlab/swing/opencv/OpenCVFilterCannyGui.java
+++ b/src/main/java/org/myrobotlab/swing/opencv/OpenCVFilterCannyGui.java
@@ -120,6 +120,7 @@ public void run() {
}
+ @SuppressWarnings("not.interned")
@Override
public void stateChanged(ChangeEvent e) {
diff --git a/src/main/java/org/myrobotlab/swing/opencv/OpenCVFilterDetectorGui.java b/src/main/java/org/myrobotlab/swing/opencv/OpenCVFilterDetectorGui.java
index c67ac1fd52..22c5de5501 100644
--- a/src/main/java/org/myrobotlab/swing/opencv/OpenCVFilterDetectorGui.java
+++ b/src/main/java/org/myrobotlab/swing/opencv/OpenCVFilterDetectorGui.java
@@ -48,6 +48,7 @@ public OpenCVFilterDetectorGui(String boundFilterName, String boundServiceName,
learn.addActionListener(this);
}
+ @SuppressWarnings("not.interned")
@Override
public void actionPerformed(ActionEvent e) {
Object o = e.getSource();
diff --git a/src/main/java/org/myrobotlab/swing/opencv/OpenCVFilterDilateGui.java b/src/main/java/org/myrobotlab/swing/opencv/OpenCVFilterDilateGui.java
index 242c4a133a..6e0816cc67 100644
--- a/src/main/java/org/myrobotlab/swing/opencv/OpenCVFilterDilateGui.java
+++ b/src/main/java/org/myrobotlab/swing/opencv/OpenCVFilterDilateGui.java
@@ -49,6 +49,7 @@ public OpenCVFilterDilateGui(String boundFilterName, String boundServiceName, Sw
}
+ @SuppressWarnings("not.interned")
@Override
public void actionPerformed(ActionEvent e) {
Object o = e.getSource();
diff --git a/src/main/java/org/myrobotlab/swing/opencv/OpenCVFilterErodeGui.java b/src/main/java/org/myrobotlab/swing/opencv/OpenCVFilterErodeGui.java
index 7dd3af4a00..7f67ce873e 100644
--- a/src/main/java/org/myrobotlab/swing/opencv/OpenCVFilterErodeGui.java
+++ b/src/main/java/org/myrobotlab/swing/opencv/OpenCVFilterErodeGui.java
@@ -47,6 +47,7 @@ public OpenCVFilterErodeGui(String boundFilterName, String boundServiceName, Swi
}
+ @SuppressWarnings("not.interned")
@Override
public void actionPerformed(ActionEvent e) {
Object o = e.getSource();
diff --git a/src/main/java/org/myrobotlab/swing/opencv/OpenCVFilterFaceDetectGui.java b/src/main/java/org/myrobotlab/swing/opencv/OpenCVFilterFaceDetectGui.java
index 37b20450b1..8e1b7b80cc 100644
--- a/src/main/java/org/myrobotlab/swing/opencv/OpenCVFilterFaceDetectGui.java
+++ b/src/main/java/org/myrobotlab/swing/opencv/OpenCVFilterFaceDetectGui.java
@@ -106,6 +106,7 @@ public void enableListeners(boolean b) {
}
}
+ @SuppressWarnings("not.interned")
@Override
public void actionPerformed(ActionEvent e) {
Object o = e.getSource();
diff --git a/src/main/java/org/myrobotlab/swing/opencv/OpenCVFilterFaceRecognizerGui.java b/src/main/java/org/myrobotlab/swing/opencv/OpenCVFilterFaceRecognizerGui.java
index ae3158cba4..4df3c1dc30 100644
--- a/src/main/java/org/myrobotlab/swing/opencv/OpenCVFilterFaceRecognizerGui.java
+++ b/src/main/java/org/myrobotlab/swing/opencv/OpenCVFilterFaceRecognizerGui.java
@@ -82,6 +82,7 @@ public OpenCVFilterFaceRecognizerGui(String boundFilterName, String boundService
display.add(jp2, gc);
}
+ @SuppressWarnings("not.interned")
@Override
public void actionPerformed(ActionEvent e) {
Object o = e.getSource();
diff --git a/src/main/java/org/myrobotlab/swing/opencv/OpenCVFilterInRangeGui.java b/src/main/java/org/myrobotlab/swing/opencv/OpenCVFilterInRangeGui.java
index f36961488c..3290d1eb5d 100644
--- a/src/main/java/org/myrobotlab/swing/opencv/OpenCVFilterInRangeGui.java
+++ b/src/main/java/org/myrobotlab/swing/opencv/OpenCVFilterInRangeGui.java
@@ -165,6 +165,7 @@ public void run() {
});
}
+ @SuppressWarnings("not.interned")
@Override
public void stateChanged(ChangeEvent e) {
Object o = e.getSource();
diff --git a/src/main/java/org/myrobotlab/swing/opencv/OpenCVFilterKinectDepthGui.java b/src/main/java/org/myrobotlab/swing/opencv/OpenCVFilterKinectDepthGui.java
index f1d458e579..38f08f0330 100644
--- a/src/main/java/org/myrobotlab/swing/opencv/OpenCVFilterKinectDepthGui.java
+++ b/src/main/java/org/myrobotlab/swing/opencv/OpenCVFilterKinectDepthGui.java
@@ -64,6 +64,7 @@ public OpenCVFilterKinectDepthGui(String boundFilterName, String boundServiceNam
clearSamplePoints.addActionListener(this);
}
+ @SuppressWarnings("not.interned")
@Override
public void actionPerformed(ActionEvent e) {
Object o = e.getSource();
diff --git a/src/main/java/org/myrobotlab/swing/opencv/OpenCVFilterKinectPointCloudGui.java b/src/main/java/org/myrobotlab/swing/opencv/OpenCVFilterKinectPointCloudGui.java
index 66ecf5ce36..80e274decb 100644
--- a/src/main/java/org/myrobotlab/swing/opencv/OpenCVFilterKinectPointCloudGui.java
+++ b/src/main/java/org/myrobotlab/swing/opencv/OpenCVFilterKinectPointCloudGui.java
@@ -55,6 +55,7 @@ public OpenCVFilterKinectPointCloudGui(String boundFilterName, String boundServi
display.add(flow, BorderLayout.CENTER);
}
+ @SuppressWarnings("not.interned")
@Override
public void actionPerformed(ActionEvent e) {
// OpenCVFilterKinectPointCloud filter = (OpenCVFilterKinectPointCloud)
diff --git a/src/main/java/org/myrobotlab/swing/opencv/OpenCVFilterLKOpticalTrackGui.java b/src/main/java/org/myrobotlab/swing/opencv/OpenCVFilterLKOpticalTrackGui.java
index 0cd4c944c5..d1d65fa7a9 100644
--- a/src/main/java/org/myrobotlab/swing/opencv/OpenCVFilterLKOpticalTrackGui.java
+++ b/src/main/java/org/myrobotlab/swing/opencv/OpenCVFilterLKOpticalTrackGui.java
@@ -124,6 +124,7 @@ public OpenCVFilterLKOpticalTrackGui(String boundFilterName, String boundService
myService.send(boundServiceName, "publishFilterState", boundFilterName);
}
+ @SuppressWarnings("not.interned")
@Override
public void actionPerformed(ActionEvent e) {
Object o = e.getSource();
diff --git a/src/main/java/org/myrobotlab/swing/opencv/OpenCVFilterMiniXceptionGui.java b/src/main/java/org/myrobotlab/swing/opencv/OpenCVFilterMiniXceptionGui.java
index b61a0347cb..8f949c584c 100755
--- a/src/main/java/org/myrobotlab/swing/opencv/OpenCVFilterMiniXceptionGui.java
+++ b/src/main/java/org/myrobotlab/swing/opencv/OpenCVFilterMiniXceptionGui.java
@@ -103,6 +103,7 @@ public void run() {
});
}
+ @SuppressWarnings("not.interned")
@Override
public void stateChanged(ChangeEvent e) {
OpenCVFilterMiniXception bf = (OpenCVFilterMiniXception) boundFilter.filter;
diff --git a/src/main/java/org/myrobotlab/swing/opencv/OpenCVFilterSURFGui.java b/src/main/java/org/myrobotlab/swing/opencv/OpenCVFilterSURFGui.java
index f443d08da1..5fac21e793 100644
--- a/src/main/java/org/myrobotlab/swing/opencv/OpenCVFilterSURFGui.java
+++ b/src/main/java/org/myrobotlab/swing/opencv/OpenCVFilterSURFGui.java
@@ -56,6 +56,7 @@ public OpenCVFilterSURFGui(String boundFilterName, String boundServiceName, Swin
display.add(j, gc);
}
+ @SuppressWarnings("not.interned")
@Override
public void actionPerformed(ActionEvent event) {
// TODO Auto-generated method stub
diff --git a/src/main/java/org/myrobotlab/swing/opencv/OpenCVFilterTrackerGui.java b/src/main/java/org/myrobotlab/swing/opencv/OpenCVFilterTrackerGui.java
index 719f4cce26..8793dd1588 100755
--- a/src/main/java/org/myrobotlab/swing/opencv/OpenCVFilterTrackerGui.java
+++ b/src/main/java/org/myrobotlab/swing/opencv/OpenCVFilterTrackerGui.java
@@ -71,6 +71,7 @@ public OpenCVFilterTrackerGui(String boundFilterName, String boundServiceName, S
}
+ @SuppressWarnings("not.interned")
@Override
public void actionPerformed(ActionEvent e) {
Object o = e.getSource();
diff --git a/src/main/java/org/myrobotlab/swing/opencv/OpenCVFilterYoloGui.java b/src/main/java/org/myrobotlab/swing/opencv/OpenCVFilterYoloGui.java
index 9192641b2d..05f672b92b 100644
--- a/src/main/java/org/myrobotlab/swing/opencv/OpenCVFilterYoloGui.java
+++ b/src/main/java/org/myrobotlab/swing/opencv/OpenCVFilterYoloGui.java
@@ -88,6 +88,7 @@ public void run() {
});
}
+ @SuppressWarnings("not.interned")
@Override
public void stateChanged(ChangeEvent e) {
OpenCVFilterYolo bf = (OpenCVFilterYolo) boundFilter.filter;
diff --git a/src/main/java/org/myrobotlab/swing/widget/AboutDialog.java b/src/main/java/org/myrobotlab/swing/widget/AboutDialog.java
index fe6fe25d8d..ef2766eba9 100644
--- a/src/main/java/org/myrobotlab/swing/widget/AboutDialog.java
+++ b/src/main/java/org/myrobotlab/swing/widget/AboutDialog.java
@@ -95,6 +95,7 @@ public AboutDialog(SwingGui gui) {
setVisible(true);
}
+ @SuppressWarnings("not.interned")
@Override
public void actionPerformed(ActionEvent e) {
Object source = e.getSource();
diff --git a/src/main/java/org/myrobotlab/swing/widget/ImageButton.java b/src/main/java/org/myrobotlab/swing/widget/ImageButton.java
index 280b05ada8..f0e77af082 100644
--- a/src/main/java/org/myrobotlab/swing/widget/ImageButton.java
+++ b/src/main/java/org/myrobotlab/swing/widget/ImageButton.java
@@ -77,6 +77,7 @@ public void deactivate() {
setIcon(icon);
}
+ @SuppressWarnings("not.interned")
public boolean isActive() {
return getIcon() == activatedIcon;
}
diff --git a/src/main/java/org/myrobotlab/swing/widget/Motor_Adafruit16CServoDriverGui.java b/src/main/java/org/myrobotlab/swing/widget/Motor_Adafruit16CServoDriverGui.java
index 8706211859..d507975243 100644
--- a/src/main/java/org/myrobotlab/swing/widget/Motor_Adafruit16CServoDriverGui.java
+++ b/src/main/java/org/myrobotlab/swing/widget/Motor_Adafruit16CServoDriverGui.java
@@ -69,6 +69,7 @@ public Motor_Adafruit16CServoDriverGui(SwingGui myService, String motorName, Str
}
+ @SuppressWarnings("not.interned")
@Override
public void actionPerformed(ActionEvent e) {
Object o = e.getSource();
diff --git a/src/main/java/org/myrobotlab/swing/widget/Motor_AdafruitMotorShieldGui.java b/src/main/java/org/myrobotlab/swing/widget/Motor_AdafruitMotorShieldGui.java
index 5103c7324c..f038937d0a 100644
--- a/src/main/java/org/myrobotlab/swing/widget/Motor_AdafruitMotorShieldGui.java
+++ b/src/main/java/org/myrobotlab/swing/widget/Motor_AdafruitMotorShieldGui.java
@@ -46,6 +46,7 @@ public Motor_AdafruitMotorShieldGui(SwingGui myService, String motorName, String
}
+ @SuppressWarnings("not.interned")
@Override
public void actionPerformed(ActionEvent e) {
Object o = e.getSource();
diff --git a/src/main/java/org/myrobotlab/swing/widget/Motor_ArduinoGui.java b/src/main/java/org/myrobotlab/swing/widget/Motor_ArduinoGui.java
index 118b9c23f0..0c56206802 100644
--- a/src/main/java/org/myrobotlab/swing/widget/Motor_ArduinoGui.java
+++ b/src/main/java/org/myrobotlab/swing/widget/Motor_ArduinoGui.java
@@ -69,6 +69,7 @@ public Motor_ArduinoGui(SwingGui myService, String motorName, String controllerN
}
+ @SuppressWarnings("not.interned")
@Override
public void actionPerformed(ActionEvent e) {
Object o = e.getSource();
diff --git a/src/main/java/org/myrobotlab/swing/widget/Motor_SaberToothGui.java b/src/main/java/org/myrobotlab/swing/widget/Motor_SaberToothGui.java
index caacc49af9..5f44aa69c5 100644
--- a/src/main/java/org/myrobotlab/swing/widget/Motor_SaberToothGui.java
+++ b/src/main/java/org/myrobotlab/swing/widget/Motor_SaberToothGui.java
@@ -46,6 +46,7 @@ public Motor_SaberToothGui(SwingGui myService, String motorName, String controll
}
+ @SuppressWarnings("not.interned")
@Override
public void actionPerformed(ActionEvent e) {
Object o = e.getSource();
diff --git a/src/main/java/org/myrobotlab/swing/widget/OpenCVListAdapter.java b/src/main/java/org/myrobotlab/swing/widget/OpenCVListAdapter.java
index 81f0bb4949..51a2e0261f 100644
--- a/src/main/java/org/myrobotlab/swing/widget/OpenCVListAdapter.java
+++ b/src/main/java/org/myrobotlab/swing/widget/OpenCVListAdapter.java
@@ -41,6 +41,7 @@ public OpenCVListAdapter(OpenCVGui opencvgui) {
popup.add(addMenuItem);
}
+ @SuppressWarnings("not.interned")
@Override
public void actionPerformed(ActionEvent e) {
Object o = e.getSource();
diff --git a/src/main/java/org/myrobotlab/swing/widget/OscopePinTrace.java b/src/main/java/org/myrobotlab/swing/widget/OscopePinTrace.java
index f6b79bada9..faad1831c2 100644
--- a/src/main/java/org/myrobotlab/swing/widget/OscopePinTrace.java
+++ b/src/main/java/org/myrobotlab/swing/widget/OscopePinTrace.java
@@ -167,6 +167,7 @@ public OscopePinTrace(Oscope oscope, PinDefinition pinDef, float hsv) {
}
+ @SuppressWarnings("not.interned")
@Override
public void actionPerformed(ActionEvent e) {
Object o = e.getSource();
@@ -333,7 +334,7 @@ public void update(PinData pinData) {
lastX = drawPointX;
}
- valueLabel.setText(String.format("%.2f", pinData.value));
+ valueLabel.setText(String.format("%.2f", (float) pinData.value));
// TODO - NOW IS THE TIME TO UPDATE BUFFERED IMAGES !!!
// TODO - optimization of shifting the raster data ?
diff --git a/src/main/java/org/myrobotlab/swing/widget/PinGui.java b/src/main/java/org/myrobotlab/swing/widget/PinGui.java
index 629e4f25b1..a64616e9c0 100644
--- a/src/main/java/org/myrobotlab/swing/widget/PinGui.java
+++ b/src/main/java/org/myrobotlab/swing/widget/PinGui.java
@@ -211,6 +211,7 @@ public void setBounds(int x, int y, int width, int height) {
display.setBounds(x, y, width, height);
}
+ @SuppressWarnings("not.interned")
@Override
public void actionPerformed(ActionEvent e) {
log.info("actionPerformed");
diff --git a/src/main/java/org/myrobotlab/swing/widget/PortGui.java b/src/main/java/org/myrobotlab/swing/widget/PortGui.java
index 627c749c00..1634e0c7ca 100644
--- a/src/main/java/org/myrobotlab/swing/widget/PortGui.java
+++ b/src/main/java/org/myrobotlab/swing/widget/PortGui.java
@@ -77,6 +77,7 @@ public void run() {
});
}
+ @SuppressWarnings("not.interned")
@Override
public void actionPerformed(final ActionEvent e) {
SwingUtilities.invokeLater(new Runnable() {
diff --git a/src/main/java/org/myrobotlab/swing/widget/ProgressDialog.java b/src/main/java/org/myrobotlab/swing/widget/ProgressDialog.java
index 84a8b08f5d..bd27258c74 100644
--- a/src/main/java/org/myrobotlab/swing/widget/ProgressDialog.java
+++ b/src/main/java/org/myrobotlab/swing/widget/ProgressDialog.java
@@ -94,6 +94,7 @@ public ProgressDialog(RuntimeGui parent) {
setSize(320, 300);
}
+ @SuppressWarnings("not.interned")
@Override
public void actionPerformed(ActionEvent event) {
Object source = event.getSource();
diff --git a/src/main/java/org/myrobotlab/swing/widget/StackTraceDialog.java b/src/main/java/org/myrobotlab/swing/widget/StackTraceDialog.java
index 745cb8c8e6..e87c204bcb 100755
--- a/src/main/java/org/myrobotlab/swing/widget/StackTraceDialog.java
+++ b/src/main/java/org/myrobotlab/swing/widget/StackTraceDialog.java
@@ -108,6 +108,7 @@ public void mouseExited(MouseEvent e) {
}
+ @SuppressWarnings("not.interned")
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
diff --git a/src/main/java/org/myrobotlab/swing/widget/Stepper_AdafruitMotorShieldGui.java b/src/main/java/org/myrobotlab/swing/widget/Stepper_AdafruitMotorShieldGui.java
index 6385f94cad..8fd99ac5df 100644
--- a/src/main/java/org/myrobotlab/swing/widget/Stepper_AdafruitMotorShieldGui.java
+++ b/src/main/java/org/myrobotlab/swing/widget/Stepper_AdafruitMotorShieldGui.java
@@ -45,6 +45,7 @@ public Stepper_AdafruitMotorShieldGui(SwingGui myService, String stepperName, St
}
+ @SuppressWarnings("not.interned")
@Override
public void actionPerformed(ActionEvent e) {
Object o = e.getSource();
diff --git a/src/main/java/org/myrobotlab/swing/widget/Stepper_ArduinoGui.java b/src/main/java/org/myrobotlab/swing/widget/Stepper_ArduinoGui.java
index 97d504896d..c238fc2c8c 100644
--- a/src/main/java/org/myrobotlab/swing/widget/Stepper_ArduinoGui.java
+++ b/src/main/java/org/myrobotlab/swing/widget/Stepper_ArduinoGui.java
@@ -64,6 +64,7 @@ public Stepper_ArduinoGui(SwingGui myService, String motorName, String controlle
}
+ @SuppressWarnings("not.interned")
@Override
public void actionPerformed(ActionEvent e) {
Object o = e.getSource();
diff --git a/src/main/java/org/saintandreas/gl/shaders/Program.java b/src/main/java/org/saintandreas/gl/shaders/Program.java
index 7e972e3837..791fc23b56 100755
--- a/src/main/java/org/saintandreas/gl/shaders/Program.java
+++ b/src/main/java/org/saintandreas/gl/shaders/Program.java
@@ -29,6 +29,7 @@
import java.util.HashMap;
import java.util.Map;
+import org.checkerframework.checker.interning.qual.UsesObjectEquals;
import org.saintandreas.gl.BufferUtils;
import org.saintandreas.gl.OpenGL;
import org.saintandreas.math.Matrix4f;
@@ -37,6 +38,7 @@
import org.saintandreas.resources.Resource;
import org.saintandreas.resources.ResourceManager;
+@UsesObjectEquals
public class Program {
// private static final Logger LOG = LoggerFactory.getLogger(Program.class);
diff --git a/src/main/java/org/saintandreas/math/Matrix3f.java b/src/main/java/org/saintandreas/math/Matrix3f.java
index ff2f6f2fcd..2651b01a4b 100755
--- a/src/main/java/org/saintandreas/math/Matrix3f.java
+++ b/src/main/java/org/saintandreas/math/Matrix3f.java
@@ -31,6 +31,8 @@
*/
package org.saintandreas.math;
+import org.checkerframework.checker.interning.qual.EqualsMethod;
+
/**
* Matrix3f
defines a 3x3 matrix. Matrix data is maintained
* internally and is accessible via the get and set methods. Convenience methods
@@ -549,16 +551,18 @@ public int hashCode() {
* the object to compare for equality
* @return true if they are equal
*/
+ @EqualsMethod
@Override
public boolean equals(Object o) {
- if (!(o instanceof Matrix3f) || o == null) {
- return false;
- }
-
if (this == o) {
return true;
}
+ if (!(o instanceof Matrix3f)) {
+ return false;
+ }
+
+
Matrix3f comp = (Matrix3f) o;
if (Float.compare(m00, comp.m00) != 0) {
return false;
diff --git a/src/main/java/org/saintandreas/math/Matrix4f.java b/src/main/java/org/saintandreas/math/Matrix4f.java
index da2ef0f6c7..46fde672f2 100755
--- a/src/main/java/org/saintandreas/math/Matrix4f.java
+++ b/src/main/java/org/saintandreas/math/Matrix4f.java
@@ -31,6 +31,8 @@
*/
package org.saintandreas.math;
+import org.checkerframework.checker.interning.qual.EqualsMethod;
+
import java.nio.ByteBuffer;
import java.nio.FloatBuffer;
@@ -1012,16 +1014,19 @@ public int hashCode() {
* the object to compare for equality
* @return true if they are equal
*/
+ @EqualsMethod
@Override
public boolean equals(Object o) {
- if (!(o instanceof Matrix4f) || o == null) {
- return false;
- }
-
if (this == o) {
return true;
}
+ if (!(o instanceof Matrix4f)) {
+ return false;
+ }
+
+
+
Matrix4f comp = (Matrix4f) o;
if (Float.compare(m00, comp.m00) != 0) {
return false;
diff --git a/src/main/java/org/saintandreas/math/Vector2f.java b/src/main/java/org/saintandreas/math/Vector2f.java
index 64c5e2ebea..37698ae75b 100755
--- a/src/main/java/org/saintandreas/math/Vector2f.java
+++ b/src/main/java/org/saintandreas/math/Vector2f.java
@@ -32,6 +32,8 @@
package org.saintandreas.math;
+import org.checkerframework.checker.interning.qual.EqualsMethod;
+
import javax.annotation.Nonnull;
/**
@@ -112,16 +114,17 @@ public String toString() {
* the object to compare for equality
* @return true if they are equal
*/
+ @EqualsMethod
@Override
public boolean equals(Object o) {
- if (!(o instanceof Vector2f)) {
- return false;
- }
-
if (this == o) {
return true;
}
+ if (!(o instanceof Vector2f)) {
+ return false;
+ }
+
Vector2f comp = (Vector2f) o;
if (Float.compare(x, comp.x) != 0)
return false;
diff --git a/src/main/java/org/saintandreas/math/Vector3f.java b/src/main/java/org/saintandreas/math/Vector3f.java
index 8c160ac24d..3013470b56 100755
--- a/src/main/java/org/saintandreas/math/Vector3f.java
+++ b/src/main/java/org/saintandreas/math/Vector3f.java
@@ -32,6 +32,8 @@
package org.saintandreas.math;
+import org.checkerframework.checker.interning.qual.EqualsMethod;
+
import javax.annotation.Nonnull;
/**
@@ -218,15 +220,18 @@ public float[] toArray() {
* the object to compare for equality
* @return true if they are equal
*/
+ @EqualsMethod
@Override
public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+
if (!(o instanceof Vector3f)) {
return false;
}
- if (this == o) {
- return true;
- }
+
Vector3f comp = (Vector3f) o;
if (Float.compare(x, comp.x) != 0)
diff --git a/src/main/java/org/saintandreas/math/Vector4.java b/src/main/java/org/saintandreas/math/Vector4.java
index b0dc008512..3b039664dc 100755
--- a/src/main/java/org/saintandreas/math/Vector4.java
+++ b/src/main/java/org/saintandreas/math/Vector4.java
@@ -32,6 +32,8 @@
package org.saintandreas.math;
+import org.checkerframework.checker.interning.qual.EqualsMethod;
+
/**
* Vector4f
defines a Vector for a four float value tuple.
* Vector4f
can represent any four dimensional value, such as a
@@ -106,15 +108,18 @@ public Vector4(float x, float y, float z, float w) {
* the object to compare for equality
* @return true if they are equal
*/
+ @EqualsMethod
@Override
public final boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+
if (!(o instanceof Vector4)) {
return false;
}
- if (this == o) {
- return true;
- }
+
@SuppressWarnings("unchecked")
Vector4 comp = (Vector4) o;
diff --git a/src/main/resources/resource/framework/pom.xml.template b/src/main/resources/resource/framework/pom.xml.template
index 818d800767..fb2c5c5fc1 100644
--- a/src/main/resources/resource/framework/pom.xml.template
+++ b/src/main/resources/resource/framework/pom.xml.template
@@ -167,6 +167,7 @@
+
@@ -320,7 +321,21 @@
11
true
true
- -parameters
+ -parameters
+
+
+
+
+
+ org.checkerframework.checker.interning.InterningChecker
+
+
+
+
+
+ org.checkerframework.checker.formatter.FormatterChecker
+
+