From 9e4ebd4425404a3c00ed373e10d8c507f59d4fb8 Mon Sep 17 00:00:00 2001 From: Matt Hill Date: Tue, 15 Dec 2015 21:40:17 -0500 Subject: [PATCH] Catching JSON exceptions and raising an AlprException if anything goes wrong in the Java binding --- .../java/src/com/openalpr/jni/Alpr.java | 24 ++++++++++++++----- .../src/com/openalpr/jni/AlprCoordinate.java | 3 ++- .../src/com/openalpr/jni/AlprException.java | 9 +++++++ .../java/src/com/openalpr/jni/AlprPlate.java | 3 ++- .../src/com/openalpr/jni/AlprPlateResult.java | 3 ++- .../openalpr/jni/AlprRegionOfInterest.java | 3 ++- .../src/com/openalpr/jni/AlprResults.java | 3 ++- 7 files changed, 37 insertions(+), 11 deletions(-) create mode 100644 src/bindings/java/src/com/openalpr/jni/AlprException.java diff --git a/src/bindings/java/src/com/openalpr/jni/Alpr.java b/src/bindings/java/src/com/openalpr/jni/Alpr.java index 4532b88..ce49488 100644 --- a/src/bindings/java/src/com/openalpr/jni/Alpr.java +++ b/src/bindings/java/src/com/openalpr/jni/Alpr.java @@ -1,5 +1,7 @@ package com.openalpr.jni; +import com.openalpr.jni.json.JSONException; + public class Alpr { static { // Load the OpenALPR library at runtime @@ -36,17 +38,27 @@ public class Alpr { return is_loaded(); } - public AlprResults recognize(String imageFile) + public AlprResults recognize(String imageFile) throws AlprException { - String json = native_recognize(imageFile); - return new AlprResults(json); + try { + String json = native_recognize(imageFile); + return new AlprResults(json); + } catch (JSONException e) + { + throw new AlprException("Unable to parse ALPR results"); + } } - public AlprResults recognize(byte[] imageBytes) + public AlprResults recognize(byte[] imageBytes) throws AlprException { - String json = native_recognize(imageBytes); - return new AlprResults(json); + try { + String json = native_recognize(imageBytes); + return new AlprResults(json); + } catch (JSONException e) + { + throw new AlprException("Unable to parse ALPR results"); + } } diff --git a/src/bindings/java/src/com/openalpr/jni/AlprCoordinate.java b/src/bindings/java/src/com/openalpr/jni/AlprCoordinate.java index 2b0055e..3943c3f 100644 --- a/src/bindings/java/src/com/openalpr/jni/AlprCoordinate.java +++ b/src/bindings/java/src/com/openalpr/jni/AlprCoordinate.java @@ -1,13 +1,14 @@ package com.openalpr.jni; +import com.openalpr.jni.json.JSONException; import com.openalpr.jni.json.JSONObject; public class AlprCoordinate { private final int x; private final int y; - AlprCoordinate(JSONObject coordinateObj) + AlprCoordinate(JSONObject coordinateObj) throws JSONException { x = coordinateObj.getInt("x"); y = coordinateObj.getInt("y"); diff --git a/src/bindings/java/src/com/openalpr/jni/AlprException.java b/src/bindings/java/src/com/openalpr/jni/AlprException.java new file mode 100644 index 0000000..4049490 --- /dev/null +++ b/src/bindings/java/src/com/openalpr/jni/AlprException.java @@ -0,0 +1,9 @@ +package com.openalpr.jni; + + +public class AlprException extends Exception { + + public AlprException(String s) { + super(s); + } +} diff --git a/src/bindings/java/src/com/openalpr/jni/AlprPlate.java b/src/bindings/java/src/com/openalpr/jni/AlprPlate.java index 60f3b1a..8919b5f 100644 --- a/src/bindings/java/src/com/openalpr/jni/AlprPlate.java +++ b/src/bindings/java/src/com/openalpr/jni/AlprPlate.java @@ -1,6 +1,7 @@ package com.openalpr.jni; +import com.openalpr.jni.json.JSONException; import com.openalpr.jni.json.JSONObject; public class AlprPlate { @@ -8,7 +9,7 @@ public class AlprPlate { private final float overall_confidence; private final boolean matches_template; - AlprPlate(JSONObject plateObj) + AlprPlate(JSONObject plateObj) throws JSONException { characters = plateObj.getString("plate"); overall_confidence = (float) plateObj.getDouble("confidence"); diff --git a/src/bindings/java/src/com/openalpr/jni/AlprPlateResult.java b/src/bindings/java/src/com/openalpr/jni/AlprPlateResult.java index d2501d8..75073ff 100644 --- a/src/bindings/java/src/com/openalpr/jni/AlprPlateResult.java +++ b/src/bindings/java/src/com/openalpr/jni/AlprPlateResult.java @@ -2,6 +2,7 @@ package com.openalpr.jni; import com.openalpr.jni.json.JSONArray; +import com.openalpr.jni.json.JSONException; import com.openalpr.jni.json.JSONObject; import java.util.ArrayList; @@ -30,7 +31,7 @@ public class AlprPlateResult { private final int regionConfidence; private final String region; - AlprPlateResult(JSONObject plateResult) + AlprPlateResult(JSONObject plateResult) throws JSONException { requested_topn = plateResult.getInt("requested_topn"); diff --git a/src/bindings/java/src/com/openalpr/jni/AlprRegionOfInterest.java b/src/bindings/java/src/com/openalpr/jni/AlprRegionOfInterest.java index 2f2788a..28ba8c1 100644 --- a/src/bindings/java/src/com/openalpr/jni/AlprRegionOfInterest.java +++ b/src/bindings/java/src/com/openalpr/jni/AlprRegionOfInterest.java @@ -1,5 +1,6 @@ package com.openalpr.jni; +import com.openalpr.jni.json.JSONException; import com.openalpr.jni.json.JSONObject; @@ -9,7 +10,7 @@ public class AlprRegionOfInterest { private final int width; private final int height; - AlprRegionOfInterest(JSONObject roiObj) + AlprRegionOfInterest(JSONObject roiObj) throws JSONException { x = roiObj.getInt("x"); y = roiObj.getInt("y"); diff --git a/src/bindings/java/src/com/openalpr/jni/AlprResults.java b/src/bindings/java/src/com/openalpr/jni/AlprResults.java index e8e8bc9..4b31506 100644 --- a/src/bindings/java/src/com/openalpr/jni/AlprResults.java +++ b/src/bindings/java/src/com/openalpr/jni/AlprResults.java @@ -1,6 +1,7 @@ package com.openalpr.jni; import com.openalpr.jni.json.JSONArray; +import com.openalpr.jni.json.JSONException; import com.openalpr.jni.json.JSONObject; import java.util.ArrayList; @@ -16,7 +17,7 @@ public class AlprResults { private List regionsOfInterest; - AlprResults(String json) + AlprResults(String json) throws JSONException { JSONObject jobj = new JSONObject(json);