--- Begin Message ---
Package: src:plm
Version: 2.6+repack-3
Severity: normal
Tags: patch
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
Hi,
I'd like to transition json-simple 3.1.1 to unstable, but plm is a blocker
since it builds against libjson-simple-java << 3 only.
The json-simple classes used by plm were deprecated in version 2.0.0 [1]. There
were removed in versions 3.x [2].
[1] https://github.com/cliftonlabs/json-simple/blob/json-simple-2.0.0/README.txt
[2] https://github.com/cliftonlabs/json-simple/blob/json-simple-3.0.1/CHANGELOG
Please find attached a patch proposal to use the current json-simple classes.
I've tested that the package builds correctly against libjson-simple-java
version 2.3.0-1 from unstable and version 3.1.1-1~exp2 currently in
experimental. But I don't known how to test the package afterward.
Thanks in advance for considering.
_g.
- -- System Information:
Debian Release: buster/sid
Architecture: amd64 (x86_64)
Foreign Architectures: i386
Kernel: Linux 5.6.0-1-amd64 (SMP w/4 CPU cores)
Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8),
LANGUAGE=fr_FR.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled
-----BEGIN PGP SIGNATURE-----
iQEzBAEBCgAdFiEEoJObzArDE05WtIyR7+hsbH/+z4MFAl69t9gACgkQ7+hsbH/+
z4O/Ogf/TKcl0DykVQuRlbDexYENp672j8+2ux7ztFhFNUhS/zgB30Z1hZxXtRhk
QS++/PUSF0KleNtCK+d00Pjs4q9PzYrZhbyCz47fGukncjICF+wPr3cerrEy3w57
5iv5PF9B7u0Jbfjsuf5BOnRTFdCc+FvsqkB3BIg8kMmwJtSU/aAq5sJgw6VijIxU
wIJ9/QNUwYvUYlWPb/NQnGXyjX55b9SRNW+VeGB9OXUkRl2qlzpdeKLqBlXi2+bZ
d6Sy0p0FR88El+DyiOxFFUj9FO8iiQFrDBS2xhLcU3CknEjEctkJrX9K9fbWtMrr
a7Jf8TJl5BSzHrv17bRwZkddpMXwDg==
=SniR
-----END PGP SIGNATURE-----
diff -Nru plm-2.6+repack/debian/changelog plm-2.6+repack/debian/changelog
--- plm-2.6+repack/debian/changelog 2016-09-18 16:39:19.000000000 +0200
+++ plm-2.6+repack/debian/changelog 2020-05-14 18:05:12.000000000 +0200
@@ -1,3 +1,10 @@
+plm (2.6+repack-3.1) UNRELEASED; urgency=medium
+
+ * Non-maintainer upload.
+ * Tentative patch to build against json-simple 3
+
+ -- Gilles Filippini <[email protected]> Thu, 14 May 2020 18:05:12 +0200
+
plm (2.6+repack-3) unstable; urgency=medium
* Add run-time dependencies on default-jdk, jython and jruby.
diff -Nru plm-2.6+repack/debian/patches/json-simple-3.patch
plm-2.6+repack/debian/patches/json-simple-3.patch
--- plm-2.6+repack/debian/patches/json-simple-3.patch 1970-01-01
01:00:00.000000000 +0100
+++ plm-2.6+repack/debian/patches/json-simple-3.patch 2020-05-14
18:05:12.000000000 +0200
@@ -0,0 +1,595 @@
+Description: Migrate away from deprecated json-simple 1.x classes
+ See json-simple 2.0.0 changelog:
+ > * Deprecated JSONParse and JSONValue in favor of Jsoner.
+ > * Deprecated JSONStreamAware and JSONAware in favor of Jsonable.
+ > * Deprecated JSONObject in favor of JsonObject.
+ > * Deprecated JSONArray in favor of JsonArray.
+ .
+ This patch uses the new json-simple Json* classes. It is compatible with
+ both 2.x and 3.x json-simple releases, with a few ajustments regarding
+ backward incompatible changes in json-simple 3.x:
+ - The package name, changed to com.github.cliftonlabs.json_simple
+ - The exception DeserializationExcetpion renamed as JsonException
+ These two changes are handled using place-holders @JSON_SIMPLE_PACKAGE@
+ and @JSON_EXCETPION@ which are substituted at build time by debian/rules.
+ .
+ With these tricks the package is compatible with json-simple 2.x and 3.x.
+Author: Gilles Filippini <[email protected]>
+Index: plm-2.6+repack/src/plm/core/model/Course.java
+===================================================================
+--- plm-2.6+repack.orig/src/plm/core/model/Course.java
++++ plm-2.6+repack/src/plm/core/model/Course.java
+@@ -4,9 +4,9 @@ import java.io.IOException;
+ import java.util.ArrayList;
+ import java.util.Map;
+
+-import org.json.simple.JSONArray;
+-import org.json.simple.JSONObject;
+-import org.json.simple.JSONValue;
++import @[email protected];
++import @[email protected];
++import @[email protected];
+
+ /**
+ * Class to manage course data online
+@@ -50,7 +50,7 @@ public abstract class Course {
+ * A user password is set to push data, a teacher password to
administrate course
+ */
+ public ServerAnswer create() {
+- JSONObject jsonObject = new JSONObject();
++ JsonObject jsonObject = new JsonObject();
+ jsonObject.put("action", "new");
+ jsonObject.put("course", courseId);
+ jsonObject.put("password", password);
+@@ -72,7 +72,7 @@ public abstract class Course {
+ * and by exercise
+ */
+ public String refresh() {
+- JSONObject jsonObject = new JSONObject();
++ JsonObject jsonObject = new JsonObject();
+ jsonObject.put("action", "refresh");
+ jsonObject.put("course", courseId);
+ jsonObject.put("teacher_password", teacherPassword);
+@@ -99,7 +99,7 @@ public abstract class Course {
+ * removed
+ */
+ public String delete() {
+- JSONObject jsonObject = new JSONObject();
++ JsonObject jsonObject = new JsonObject();
+ jsonObject.put("action", "remove");
+ jsonObject.put("course", courseId);
+ jsonObject.put("teacher_password", teacherPassword);
+@@ -120,7 +120,7 @@ public abstract class Course {
+ public ArrayList<String> getAllCoursesId() {
+ String response = "";
+ ArrayList<String> coursesId = new ArrayList<String>();
+- JSONObject jsonObject = new JSONObject();
++ JsonObject jsonObject = new JsonObject();
+ jsonObject.put("action", "allids");
+
+ try {
+@@ -130,7 +130,7 @@ public abstract class Course {
+ }
+
+ if (response != null && !response.isEmpty()) {
+- JSONArray arrayResult = (JSONArray) JSONValue.parse(response);
++ JsonArray arrayResult = Jsoner.deserialize(response, (JsonArray)
null);
+ for (Object anArrayResult : arrayResult) {
+ coursesId.add((String) anArrayResult);
+ }
+@@ -158,7 +158,7 @@ public abstract class Course {
+ String answer = "";
+ ArrayList<String> students = new ArrayList<String>();
+
+- JSONObject jsonObject = new JSONObject();
++ JsonObject jsonObject = new JsonObject();
+ jsonObject.put("action", filter);
+ jsonObject.put("course", courseId);
+ jsonObject.put("teacher_password", teacherPassword);
+@@ -172,7 +172,7 @@ public abstract class Course {
+
+ try {
+ if (!answer.isEmpty()) {
+- JSONArray arrayResult = (JSONArray) JSONValue.parse(answer);
++ JsonArray arrayResult = Jsoner.deserialize(answer,
(JsonArray) null);
+ for (Object result : arrayResult)
+ students.add((String) result);
+ }
+Index: plm-2.6+repack/src/plm/core/model/HelpAppEngine.java
+===================================================================
+--- plm-2.6+repack.orig/src/plm/core/model/HelpAppEngine.java
++++ plm-2.6+repack/src/plm/core/model/HelpAppEngine.java
+@@ -8,7 +8,7 @@ import java.net.MalformedURLException;
+ import java.net.URL;
+ import java.net.URLConnection;
+
+-import org.json.simple.JSONObject;
++import @[email protected];
+
+ /**
+ * Implementation of HelpServer that sends requests to an App Engine server
+@@ -63,7 +63,7 @@ public class HelpAppEngine extends HelpS
+ public void setStatus(boolean isRequestingHelp){
+ super.setStatus(isRequestingHelp);
+
+- JSONObject jsonObject = new JSONObject();
++ JsonObject jsonObject = new JsonObject();
+ jsonObject.put("username", username);
+ jsonObject.put("action", "help");
+ jsonObject.put("course", Game.getInstance().getCourseID());
+Index: plm-2.6+repack/src/plm/core/model/ServerUserData.java
+===================================================================
+--- plm-2.6+repack.orig/src/plm/core/model/ServerUserData.java
++++ plm-2.6+repack/src/plm/core/model/ServerUserData.java
+@@ -6,9 +6,9 @@ import java.util.HashMap;
+ import java.util.List;
+ import java.util.Map;
+
+-import org.json.simple.JSONArray;
+-import org.json.simple.JSONObject;
+-import org.json.simple.JSONValue;
++import @[email protected];
++import @[email protected];
++import @[email protected];
+
+ /**
+ * Class that contains the data sent by the server
+@@ -78,10 +78,10 @@ public class ServerUserData {
+ public static Map<String, ServerUserData> parse(String answer) {
+ Map<String, ServerUserData> data = new HashMap<String,
ServerUserData>();
+
+- JSONObject dataMap = (JSONObject) JSONValue.parse(answer);
++ JsonObject dataMap = Jsoner.deserialize(answer, (JsonObject) null);
+ // for each user
+ for (Object user : dataMap.keySet()) {
+- JSONObject userMap = (JSONObject) dataMap.get(user);
++ JsonObject userMap = (JsonObject) dataMap.get(user);
+ ServerUserData sud = new ServerUserData();
+ sud.setUsername((String) userMap.get("username"));
+
+@@ -94,10 +94,10 @@ public class ServerUserData {
+ String lastLeaveString = (String)userMap.get("lastLeave");
+ sud.setLastLeave(lastLeaveString == null ? null : new
Date(lastLeaveString));
+
+- JSONArray exercisesArray = (JSONArray) userMap.get("exercises");
++ JsonArray exercisesArray = (JsonArray) userMap.get("exercises");
+ // for each exercise done by the user
+ for (Object anExercisesArray : exercisesArray) {
+- JSONObject exerciseMap = (JSONObject) anExercisesArray;
++ JsonObject exerciseMap = (JsonObject) anExercisesArray;
+ ServerExerciseData sed = new ServerExerciseData();
+ sed.setName((String) exerciseMap.get("name"));
+ sed.setLang((String) exerciseMap.get("lang"));
+Index: plm-2.6+repack/src/plm/core/model/session/SessionDB.java
+===================================================================
+--- plm-2.6+repack.orig/src/plm/core/model/session/SessionDB.java
++++ plm-2.6+repack/src/plm/core/model/session/SessionDB.java
+@@ -4,9 +4,9 @@ import java.util.HashMap;
+ import java.util.Map;
+ import java.util.Set;
+
+-import org.json.simple.JSONObject;
+-import org.json.simple.parser.JSONParser;
+-import org.json.simple.parser.ParseException;
++import @[email protected];
++import @[email protected];
++import @JSON_SIMPLE_PACKAGE@.@JSON_EXCEPTION@;
+
+ import plm.core.lang.ProgrammingLanguage;
+ import plm.core.model.Game;
+@@ -154,7 +154,7 @@ public class SessionDB {
+
+
+ public String lessonSummary(String lesson) {
+- JSONObject result = new JSONObject();
++ JsonObject result = new JsonObject();
+
+ Map<ProgrammingLanguage, Integer> possibleL =
possibleExercises.get(lesson);
+ for (ProgrammingLanguage pl: possibleL.keySet())
+@@ -166,15 +166,14 @@ public class SessionDB {
+ if (passedL.get(pl)!=0)
+ result.put("passed"+pl.getLang(),
passedL.get(pl));
+
+- return result.toJSONString();
++ return result.toJson();
+ }
+
+ public void lessonSummaryParse(String lesson, String JSONString) {
+- JSONParser parser = new JSONParser();
+- JSONObject data;
++ JsonObject data;
+ try {
+- data = (JSONObject) parser.parse(JSONString);
+- } catch (ParseException e) {
++ data = (JsonObject) Jsoner.deserialize(JSONString);
++ } catch (@JSON_EXCEPTION@ e) {
+ System.out.println("Ignoring invalid lesson summary
(parse error: "+e.getLocalizedMessage()+").");
+ return;
+ }
+Index: plm-2.6+repack/src/plm/core/model/session/ZipSessionKit.java
+===================================================================
+--- plm-2.6+repack.orig/src/plm/core/model/session/ZipSessionKit.java
++++ plm-2.6+repack/src/plm/core/model/session/ZipSessionKit.java
+@@ -13,9 +13,9 @@ import java.util.zip.ZipOutputStream;
+
+ import javax.swing.JOptionPane;
+
+-import org.json.simple.JSONObject;
+-import org.json.simple.JSONValue;
+-import org.json.simple.parser.ParseException;
++import @[email protected];
++import @[email protected];
++import @JSON_SIMPLE_PACKAGE@.@JSON_EXCEPTION@;
+
+ import plm.core.lang.ProgrammingLanguage;
+ import plm.core.model.Game;
+@@ -50,15 +50,15 @@ public class ZipSessionKit implements IS
+ storeLesson(path, lesson);
+
+ /* Save the per lesson summaries */
+- JSONObject allLessons = new JSONObject();
++ JsonObject allLessons = new JsonObject();
+ for (String lessonName :
this.game.studentWork.getLessonsNames()) {
+- JSONObject allLangs = new JSONObject();
++ JsonObject allLangs = new JsonObject();
+ for (ProgrammingLanguage lang:
Game.getProgrammingLanguages()) {
+ int possible =
Game.getInstance().studentWork.getPossibleExercises(lessonName, lang);
+ int passed =
Game.getInstance().studentWork.getPassedExercises(lessonName, lang);
+
+ if (possible>0) {
+- JSONObject oneLang = new JSONObject();
++ JsonObject oneLang = new JsonObject();
+ oneLang.put("possible",possible);
+ oneLang.put("passed",passed);
+ allLangs.put(lang.getLang(),oneLang);
+@@ -77,7 +77,7 @@ public class ZipSessionKit implements IS
+ zos.setLevel(Deflater.BEST_COMPRESSION);
+
+ zos.putNextEntry(new ZipEntry("passed"));
+- zos.write(allLessons.toJSONString().getBytes());
++ zos.write(allLessons.toJson().getBytes());
+ zos.closeEntry();
+ } catch (IOException ex) { // FileNotFoundException or
IOException
+ // It's ok to loose this data as it will be recomputed
when the lessons are actually loaded
+@@ -142,25 +142,25 @@ public class ZipSessionKit implements IS
+ // now parse it
+ Object value = null;
+ try {
+- value = JSONValue.parseWithException(content);
+- } catch (ParseException e) {
++ value = Jsoner.deserialize(content);
++ } catch (@JSON_EXCEPTION@ e) {
+ System.err.println("Parse error while reading the
scores from disk:");
+ e.printStackTrace();
+ }
+- if (! (value instanceof JSONObject)) {
+- System.err.println("Retrieved passed-values is not a
JSONObject: "+value);
++ if (! (value instanceof JsonObject)) {
++ System.err.println("Retrieved passed-values is not a
JsonObject: "+value);
+ return;
+ }
+- JSONObject allLessons = (JSONObject) value;
++ JsonObject allLessons = (JsonObject) value;
+ for (Object lessonName: allLessons.keySet()) {
+- JSONObject allLangs = (JSONObject)
allLessons.get(lessonName);
++ JsonObject allLangs = (JsonObject)
allLessons.get(lessonName);
+ for (Object langName: allLangs.keySet()) {
+ ProgrammingLanguage lang = null;
+ for (ProgrammingLanguage
l:Game.getProgrammingLanguages())
+ if (l.getLang().equals(langName))
+ lang = l;
+
+- JSONObject oneLang = (JSONObject)
allLangs.get(langName);
++ JsonObject oneLang = (JsonObject)
allLangs.get(langName);
+ int possible =
Integer.parseInt(""+oneLang.get("possible"));
+ int passed =
Integer.parseInt(""+oneLang.get("passed"));
+
Game.getInstance().studentWork.setPossibleExercises((String) lessonName, lang,
possible);
+Index: plm-2.6+repack/src/plm/core/model/tracking/GitSpy.java
+===================================================================
+--- plm-2.6+repack.orig/src/plm/core/model/tracking/GitSpy.java
++++ plm-2.6+repack/src/plm/core/model/tracking/GitSpy.java
+@@ -10,7 +10,7 @@ import java.util.List;
+ import org.eclipse.jgit.api.errors.GitAPIException;
+ import org.eclipse.jgit.lib.NullProgressMonitor;
+ import org.eclipse.jgit.lib.ProgressMonitor;
+-import org.json.simple.JSONObject;
++import @[email protected];
+
+ import plm.core.UserSwitchesListener;
+ import plm.core.lang.ProgrammingLanguage;
+@@ -101,7 +101,7 @@ public class GitSpy implements ProgressS
+ createFiles(exo);
+ checkSuccess(exo);
+
+- String commitMsg = writeCommitMessage(exo, null,
"executed", new JSONObject());
++ String commitMsg = writeCommitMessage(exo, null,
"executed", new JsonObject());
+ String userUUID =
Game.getInstance().getUsers().getCurrentUser().getUserUUIDasString();
+ String userBranch = "PLM"+GitUtils.sha1(userUUID);
+
+@@ -122,7 +122,7 @@ public class GitSpy implements ProgressS
+ createFiles(lastExo);
+
+ try {
+- String commitMsg = writeCommitMessage(lastExo,
exo, "switched", new JSONObject());
++ String commitMsg = writeCommitMessage(lastExo,
exo, "switched", new JsonObject());
+ String userUUID =
Game.getInstance().getUsers().getCurrentUser().getUserUUIDasString();
+ String userBranch =
"PLM"+GitUtils.sha1(userUUID);
+
+@@ -138,7 +138,7 @@ public class GitSpy implements ProgressS
+ try {
+ deleteFiles(exo);
+
+- String commitMsg = writeCommitMessage(exo, null,
"reverted", new JSONObject());
++ String commitMsg = writeCommitMessage(exo, null,
"reverted", new JsonObject());
+ String userUUID =
Game.getInstance().getUsers().getCurrentUser().getUserUUIDasString();
+ String userBranch = "PLM"+GitUtils.sha1(userUUID);
+
+@@ -185,7 +185,7 @@ public class GitSpy implements ProgressS
+ * Helper methods
+ */
+ @SuppressWarnings("unchecked")
+- private String writeCommitMessage(Exercise exoFrom, Exercise exoTo,
String evt_type, JSONObject logmsg) {
++ private String writeCommitMessage(Exercise exoFrom, Exercise exoTo,
String evt_type, JsonObject logmsg) {
+
+ ExecutionProgress lastResult = exoFrom.lastResult;
+
+@@ -230,7 +230,7 @@ public class GitSpy implements ProgressS
+ */
+ @SuppressWarnings("unchecked")
+ private String writePLMStartedOrLeavedCommitMessage(String kind) {
+- JSONObject jsonObject = new JSONObject();
++ JsonObject jsonObject = new JsonObject();
+
+ // Retrieve the feedback informations
+ jsonObject.put("java", System.getProperty("java.version") + "
(VM: " + System.getProperty("java.vm.name") + "; version: " +
System.getProperty("java.vm.version") + ")");
+@@ -363,7 +363,7 @@ public class GitSpy implements ProgressS
+ e.printStackTrace();
+ }
+
+- JSONObject msg = new JSONObject();
++ JsonObject msg = new JsonObject();
+ msg.put("studentInput", studentInput);
+ String commitMsg = writeCommitMessage(lastExo, null, evt_type,
msg);
+ String userUUID =
Game.getInstance().getUsers().getCurrentUser().getUserUUIDasString();
+@@ -396,7 +396,7 @@ public class GitSpy implements ProgressS
+ e.printStackTrace();
+ }
+
+- JSONObject msg = new JSONObject();
++ JsonObject msg = new JsonObject();
+ msg.put("id", id);
+ String commitMsg = writeCommitMessage(lastExo, null, "readTip",
msg);
+ String userUUID =
Game.getInstance().getUsers().getCurrentUser().getUserUUIDasString();
+Index: plm-2.6+repack/src/plm/core/model/tracking/ServerSpy.java
+===================================================================
+--- plm-2.6+repack.orig/src/plm/core/model/tracking/ServerSpy.java
++++ plm-2.6+repack/src/plm/core/model/tracking/ServerSpy.java
+@@ -1,6 +1,6 @@
+ package plm.core.model.tracking;
+
+-import org.json.simple.JSONObject;
++import @[email protected];
+
+ import plm.core.model.Game;
+ import plm.core.model.lesson.ExecutionProgress;
+@@ -32,7 +32,7 @@ public abstract class ServerSpy implemen
+ @SuppressWarnings("unchecked")
+ @Override
+ public void executed(Exercise exo) {
+- JSONObject jsonObject = new JSONObject();
++ JsonObject jsonObject = new JsonObject();
+
+ Game game = Game.getInstance();
+ ExecutionProgress lastResult = exo.lastResult;
+@@ -70,7 +70,7 @@ public abstract class ServerSpy implemen
+ @SuppressWarnings("unchecked")
+ @Override
+ public void switched(Exercise exo) {
+- JSONObject jsonObject = new JSONObject();
++ JsonObject jsonObject = new JsonObject();
+
+ Game game = Game.getInstance();
+ ExecutionProgress lastResult = exo.lastResult;
+@@ -88,7 +88,7 @@ public abstract class ServerSpy implemen
+ @SuppressWarnings("unchecked")
+ @Override
+ public void reverted(Exercise exo) {
+- JSONObject jsonObject = new JSONObject();
++ JsonObject jsonObject = new JsonObject();
+
+ Game game = Game.getInstance();
+ ExecutionProgress lastResult = exo.lastResult;
+@@ -109,7 +109,7 @@ public abstract class ServerSpy implemen
+ @SuppressWarnings("unchecked")
+ @Override
+ public void heartbeat() {
+- JSONObject jsonObject = new JSONObject();
++ JsonObject jsonObject = new JsonObject();
+ Game game = Game.getInstance();
+ jsonObject.put("username", username);
+ jsonObject.put("action", "heartbeat");
+@@ -122,7 +122,7 @@ public abstract class ServerSpy implemen
+ @SuppressWarnings("unchecked")
+ @Override
+ public String join() {
+- JSONObject jsonObject = new JSONObject();
++ JsonObject jsonObject = new JsonObject();
+ Game game = Game.getInstance();
+ jsonObject.put("username", username);
+ jsonObject.put("action", "join");
+@@ -135,7 +135,7 @@ public abstract class ServerSpy implemen
+ @SuppressWarnings("unchecked")
+ @Override
+ public void leave() {
+- JSONObject jsonObject = new JSONObject();
++ JsonObject jsonObject = new JsonObject();
+ Game game = Game.getInstance();
+ jsonObject.put("username", username);
+ jsonObject.put("action", "leave");
+Index: plm-2.6+repack/src/plm/core/model/User.java
+===================================================================
+--- plm-2.6+repack.orig/src/plm/core/model/User.java
++++ plm-2.6+repack/src/plm/core/model/User.java
+@@ -6,10 +6,10 @@ import java.util.LinkedHashMap;
+ import java.util.Objects;
+ import java.util.UUID;
+
+-import org.json.simple.JSONStreamAware;
+-import org.json.simple.JSONValue;
++import @[email protected];
++import @[email protected];
+
+-public class User implements JSONStreamAware {
++public class User implements Jsonable {
+ private String username;
+ private boolean lastUsed;
+ private UUID userUUID;
+@@ -27,12 +27,16 @@ public class User implements JSONStreamA
+ }
+
+ @SuppressWarnings({ "unchecked", "rawtypes" })
+- public void writeJSONString(Writer out) throws IOException {
++ public void toJson(Writer out) throws IOException {
+ LinkedHashMap obj = new LinkedHashMap();
+ obj.put("username", username);
+ obj.put("lastUsed", lastUsed);
+ obj.put("userUUID", String.valueOf(userUUID));
+- JSONValue.writeJSONString(obj, out);
++ Jsoner.serialize(obj, out);
++ }
++
++ public String toJson() {
++ return toString();
+ }
+
+ @Override
+Index: plm-2.6+repack/src/plm/core/model/Users.java
+===================================================================
+--- plm-2.6+repack.orig/src/plm/core/model/Users.java
++++ plm-2.6+repack/src/plm/core/model/Users.java
+@@ -15,10 +15,10 @@ import java.util.Map;
+ import java.util.UUID;
+ import java.util.Vector;
+
+-import org.json.simple.JSONArray;
+-import org.json.simple.parser.ContainerFactory;
+-import org.json.simple.parser.JSONParser;
+-import org.json.simple.parser.ParseException;
++import @[email protected];
++import @[email protected];
++import @[email protected];
++import @JSON_SIMPLE_PACKAGE@.@JSON_EXCEPTION@;
+
+ import plm.core.UserSwitchesListener;
+ import plm.core.utils.FileUtils;
+@@ -174,42 +174,32 @@ public class Users {
+ System.err.println(Game.i18n.tr("A new PLM user has
been created for you!"));
+ System.err.println(user);
+ } else {
+- JSONParser parser = new JSONParser();
+- ContainerFactory containerFactory = new
ContainerFactory() {
+- public List creatArrayContainer() {
+- return new LinkedList();
+- }
+-
+- public Map createObjectContainer() {
+- return new LinkedHashMap();
+- }
+- };
+ try {
+- List json = (List) parser.parse(new
FileReader(userDBFile), containerFactory);
++ JsonArray json = Jsoner.deserializeMany(new
FileReader(userDBFile));
+ Iterator iter = json.iterator();
+
+ while (iter.hasNext()) {
+- LinkedHashMap entry = (LinkedHashMap)
iter.next();
++ JsonObject entry = (JsonObject)
iter.next();
+ String username = (String)
entry.get("username");
+ boolean lastUsed = (Boolean)
entry.get("lastUsed");
+ UUID userUUID =
UUID.fromString((String) entry.get("userUUID"));
+ usersList.add(new User(username,
lastUsed, userUUID));
+ }
+
+- } catch (ParseException | IOException pe) {
++ } catch (@JSON_EXCEPTION@ | IOException pe) {
+ System.out.println(pe);
+ }
+ }
+ }
+
+ /**
+- * Write the ArrayList of User in the JSONArray users. Doing so means
that we update the plm.users file with the
++ * Write the ArrayList of User in the JsonArray users. Doing so means
that we update the plm.users file with the
+ * latest changes. This method should always be called after using a
Setter from User.
+ */
+ @SuppressWarnings("unchecked")
+ public void flushUsersToFile() {
+ FileWriter fwUser;
+- JSONArray users = new JSONArray();
++ JsonArray users = new JsonArray();
+
+ try {
+ fwUser = new FileWriter(userDBFile);
+@@ -220,7 +210,7 @@ public class Users {
+ }
+
+ StringWriter out = new StringWriter();
+- users.writeJSONString(out);
++ users.toJson(out);
+ // System.out.println(out.toString());
+
+ bwUser.write(out.toString());
+Index: plm-2.6+repack/src/plm/core/ui/action/HelpMe.java
+===================================================================
+--- plm-2.6+repack.orig/src/plm/core/ui/action/HelpMe.java
++++ plm-2.6+repack/src/plm/core/ui/action/HelpMe.java
+@@ -19,9 +19,9 @@ import javax.swing.ImageIcon;
+ import javax.swing.JOptionPane;
+ import javax.swing.JToggleButton;
+
+-import org.json.simple.JSONValue;
+-import org.json.simple.parser.JSONParser;
+-import org.json.simple.parser.ParseException;
++import @[email protected];
++import @[email protected];
++import @JSON_SIMPLE_PACKAGE@.@JSON_EXCEPTION@;
+ import org.xnap.commons.i18n.I18n;
+ import org.xnap.commons.i18n.I18nFactory;
+
+@@ -49,7 +49,7 @@ public class HelpMe extends AbstractGame
+ public void actionPerformed(ActionEvent e) {
+ isRequestingHelp = !isRequestingHelp;
+
+- LinkedHashMap<String,String> obj = new
LinkedHashMap<String,String>();
++ JsonObject obj = new JsonObject();
+ obj.put("uuid",
Game.getInstance().getUsers().getCurrentUser().getUserUUIDasString());
+ try {
+ obj.put("hostname",
InetAddress.getLocalHost().getHostName());
+@@ -81,7 +81,7 @@ public class HelpMe extends AbstractGame
+ if (!isRequestingHelp) {
+ obj.put("callID", lastCallID + "");
+ }
+- String payload = JSONValue.toJSONString(obj);
++ String payload = obj.toJson();
+ String urlStr = Game.getProperty("plm.play.server.url") +
"callHelp";
+
+ String line;
+@@ -106,8 +106,7 @@ public class HelpMe extends AbstractGame
+ br.close();
+ connection.disconnect();
+
+- JSONParser parser = new JSONParser();
+- Object objResponse =
parser.parse(jsonString.toString());
++ Object objResponse =
Jsoner.deserialize(jsonString.toString());
+ @SuppressWarnings("unchecked")
+ Map<String,String> map = (Map<String,String>)
objResponse;
+
+@@ -138,7 +137,7 @@ public class HelpMe extends AbstractGame
+ break;
+ }
+
+- } catch (IOException | ParseException ex) {
++ } catch (IOException | @JSON_EXCEPTION@ ex) {
+ isRequestingHelp = false;
+ ((JToggleButton)
e.getSource()).setText(isRequestingHelp ? i18n.tr("Cancel call") :
i18n.tr("Call for Help"));
+ ((JToggleButton)
e.getSource()).setIcon(ResourcesCache.getIcon("img/btn-alert-" +
(isRequestingHelp ? "on" : "off") + ".png"));
diff -Nru plm-2.6+repack/debian/patches/series
plm-2.6+repack/debian/patches/series
--- plm-2.6+repack/debian/patches/series 2016-09-18 16:39:19.000000000
+0200
+++ plm-2.6+repack/debian/patches/series 2020-05-14 18:05:12.000000000
+0200
@@ -1,3 +1,4 @@
system-ant-tasks
no-github
jython-fixes
+json-simple-3.patch
diff -Nru plm-2.6+repack/debian/rules plm-2.6+repack/debian/rules
--- plm-2.6+repack/debian/rules 2016-09-18 16:39:19.000000000 +0200
+++ plm-2.6+repack/debian/rules 2020-05-14 18:05:12.000000000 +0200
@@ -13,9 +13,32 @@
httppath=/usr/share/java/httpclient.jar:/usr/share/java/httpcore.jar:/usr/share/java/commons-logging.jar:/usr/share/java/httpmime.jar
export CLASSPATH=$(depspath):$(gitpath):$(langpath):$(httppath):$(scalapath):.
+JSON_SIMPLE_VERSION = $(shell dpkg -l libjson-simple-java | grep '^ii' | awk
'{print $$3}')
+JSON_SIMPLE_3 = $(shell dpkg --compare-versions '$(JSON_SIMPLE_VERSION)' '>'
'3.1.1-1~' && echo yes || echo no)
+ifeq (yes,$(JSON_SIMPLE_3))
+JSON_SIMPLE_PACKAGE = com.github.cliftonlabs.json_simple
+JSON_EXCEPTION = JsonException
+else
+JSON_SIMPLE_PACKAGE = org.json.simple
+JSON_EXCEPTION = DeserializationException
+endif
+
%:
dh $@ --with javahelper --with quilt
+override_dh_auto_clean:
+ dh_auto_clean
+ find . -type f -name \*.java.json-simple \
+ -exec sh -c 'file={} && mv $$file $${file%.json-simple}' \; -print
+
+override_dh_auto_build:
+ find . -type f -name \*.java -exec grep -q 'import
@JSON_SIMPLE_PACKAGE@' {} \; \
+ -exec sed -i.json-simple \
+ -e 's,@JSON_SIMPLE_PACKAGE@,$(JSON_SIMPLE_PACKAGE),' \
+ -e 's/@JSON_EXCEPTION@/$(JSON_EXCEPTION)/' \
+ {} \; -print
+ dh_auto_build
+
override_dh_auto_install:
dh_install
--- End Message ---