Your message dated Mon, 18 May 2020 07:03:42 +0000
with message-id <[email protected]>
and subject line Bug#960632: fixed in plm 2.6+repack-4
has caused the Debian Bug report #960632,
regarding src:plm: Please add support to build against libjson-simple-java >= 3
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)


-- 
960632: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=960632
Debian Bug Tracking System
Contact [email protected] with problems
--- 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 ---
--- Begin Message ---
Source: plm
Source-Version: 2.6+repack-4
Done: Martin Quinson <[email protected]>

We believe that the bug you reported is fixed in the latest version of
plm, which is due to be installed in the Debian FTP archive.

A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to [email protected],
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Martin Quinson <[email protected]> (supplier of updated plm package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing [email protected])


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

Format: 1.8
Date: Mon, 18 May 2020 08:33:40 +0200
Source: plm
Architecture: source
Version: 2.6+repack-4
Distribution: unstable
Urgency: medium
Maintainer: Martin Quinson <[email protected]>
Changed-By: Martin Quinson <[email protected]>
Closes: 960632
Changes:
 plm (2.6+repack-4) unstable; urgency=medium
 .
   [ Gilles Filippini ]
   * Build against json-simple 2 or 3, depending on what's available.
     (Closes: #960632).
 .
   [ Martin Quinson ]
   * Java 7 was hardcoded in the launcher script :(
   * d/changelog: Trim trailing whitespace.
   * d/control: Point vcs-git to salsa, and update upstream homepage.
   * d/control: Add Vcs-Browser field
   * d/control: Bump debhelper from deprecated 8 to 12.
   * d/control: Change priority extra to priority optional.
   * d/copyright: Fix case (Upstream-name => Upstream-Name).
   * d/rule: no need for --with=quilt, with '3.0 (quilt)' source format.
   * Set debhelper-compat version in Build-Depends.
   * Set upstream metadata fields: Bug-Database, Bug-Submit.
Checksums-Sha1:
 eeee89e8fc847b501ec680ffe882d4e3f5fc6060 2151 plm_2.6+repack-4.dsc
 2344f0b9cd861df9999403232736db7de20ff3e5 51780 plm_2.6+repack-4.debian.tar.xz
 4084ae88dfccb8de645043fec87f13c7aa628c5a 13269 plm_2.6+repack-4_amd64.buildinfo
Checksums-Sha256:
 b0c710de2aa959a6977e26b526b7f9ac0524674b76a18edd5481575494fb993b 2151 
plm_2.6+repack-4.dsc
 0de2809a59afaac045a8ee90a3dd87c7790d29bd0ca1f470a661ceeb44fc7ad8 51780 
plm_2.6+repack-4.debian.tar.xz
 6fe0f1f293cfce60a8857751395bf5742da5d02c2872eac5bd441ce3a758cffd 13269 
plm_2.6+repack-4_amd64.buildinfo
Files:
 a3588ed2e2c8e475f4728e5b6a329f75 2151 java optional plm_2.6+repack-4.dsc
 c17e79c626b926a5d3326bb1b4dc6d3b 51780 java optional 
plm_2.6+repack-4.debian.tar.xz
 1d93da4fbc6fb74466c9d60088438560 13269 java optional 
plm_2.6+repack-4_amd64.buildinfo

-----BEGIN PGP SIGNATURE-----

iQJIBAEBCgAyFiEET76cTupS7xPVQWYSmL2XJE9zvqcFAl7CL0UUHG1xdWluc29u
QGRlYmlhbi5vcmcACgkQmL2XJE9zvqeNaw//VRW+RWaiIJvRkko6RwTwp8WWwkFH
LVDPxGLFNhf4LHLxZ4Mye68xyVWMioMIZlc06rNxRqzOphBSi4hpqoMTsj2JnPKq
N49SSPczb3sf7X/3ygl8MhYw5TE3uEkqsDqDLaCUpqGuHoNfk2gylyhJSQU7DQIh
vN4E4NUBpi0vV/Bvg87Qc/5fYiYEWFxIhr81QPucH/I+1WYrHBMy6M0ZphDn/fnv
fvGUTuut9fQ8MJDAQ8B/dk8xBFBWemE54Cj5aPFryS39SiqS/C96wsY8b380FJtI
0s6J+fWdyxGcSsGFJqP6pWdHMRFzHI7XuHX0NNfegFp4Qf0xAhQWdwYYYrBcalwX
50vcTk+VqH0YSAVx5MWzDhMsE1cz0gBeKfW3LFju/0cAmPc+gFIvhMaWsY0+uL56
WCtiQ3ynjr5X02UHvYZtU1IxYPcwisNm5ddUbmfHqmfjvlqTEMMZ3Q5x/1Te/zGS
xFf28P/s+8wkI+Psmnk0XBUsVHRpoB+9f4PuwiuF1S56rJYCXSlsQuYJYBp19u0K
NgTatmWhzHpJvvOGCdy1+wZqdPpJsUQBFCDhMPH/O5m6PDHdl1aN/5RQvCPvBoy2
EoKepmkLSA8EdslpZmV3CBCBVwHZqkeQKo3phRQWZ5lmFls/PXA8BvYa/ed6lrC2
46W0AmpuMhMglws=
=pjQa
-----END PGP SIGNATURE-----

--- End Message ---

Reply via email to