git://git.nikiroo.be
/
nikiroo-utils.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix StringJustifier error with dashes (-)
[nikiroo-utils.git]
/
src
/
be
/
nikiroo
/
utils
/
serial
/
Importer.java
diff --git
a/src/be/nikiroo/utils/serial/Importer.java
b/src/be/nikiroo/utils/serial/Importer.java
index d21f1dd341c9085af11a08015a05c5fb04fc5c14..e7285c42ca329c7a6e84c73fba0189c228493781 100644
(file)
--- a/
src/be/nikiroo/utils/serial/Importer.java
+++ b/
src/be/nikiroo/utils/serial/Importer.java
@@
-26,6
+26,9
@@
public class Importer {
private String currentFieldName;
private String currentFieldName;
+ /**
+ * Create a new {@link Importer}.
+ */
public Importer() {
map = new HashMap<String, Object>();
map.put("NULL", null);
public Importer() {
map = new HashMap<String, Object>();
map.put("NULL", null);
@@
-53,27
+56,33
@@
public class Importer {
* because it is not compatible with this code
* @throws ClassNotFoundException
* if a class described in the serialised data cannot be found
* because it is not compatible with this code
* @throws ClassNotFoundException
* if a class described in the serialised data cannot be found
+ * @throws IOException
+ * if the content cannot be read (for instance, corrupt data)
*/
public Importer read(String data) throws NoSuchFieldException,
*/
public Importer read(String data) throws NoSuchFieldException,
- NoSuchMethodException, ClassNotFoundException {
+ NoSuchMethodException, ClassNotFoundException
, IOException
{
+ Scanner scan = new Scanner(data);
try {
try {
- Scanner scan = new Scanner(data);
scan.useDelimiter("\n");
while (scan.hasNext()) {
String line = scan.next();
if (line.startsWith("ZIP:")) {
scan.useDelimiter("\n");
while (scan.hasNext()) {
String line = scan.next();
if (line.startsWith("ZIP:")) {
- line = StringUtils.unzip64(line.substring("ZIP:".length()));
+ try {
+ line = StringUtils.unzip64(line.substring("ZIP:"
+ .length()));
+ } catch (IOException e) {
+ throw new IOException(
+ "Internal error when decoding ZIP content: input may be corrupt");
+ }
read(line);
} else {
processLine(line);
}
}
read(line);
} else {
processLine(line);
}
}
+ } finally {
scan.close();
scan.close();
- } catch (IOException e) {
- throw new NoSuchMethodException(
- "Internal error when decoding ZIP content: input may be corrupt");
}
return this;
}
return this;
@@
-96,9
+105,11
@@
public class Importer {
* because it is not compatible with this code
* @throws ClassNotFoundException
* if a class described in the serialised data cannot be found
* because it is not compatible with this code
* @throws ClassNotFoundException
* if a class described in the serialised data cannot be found
+ * @throws IOException
+ * if the content cannot be read (for instance, corrupt data)
*/
private boolean processLine(String line) throws NoSuchFieldException,
*/
private boolean processLine(String line) throws NoSuchFieldException,
- NoSuchMethodException, ClassNotFoundException {
+ NoSuchMethodException, ClassNotFoundException
, IOException
{
// Defer to latest child if any
if (child != null) {
if (child.processLine(line)) {
// Defer to latest child if any
if (child != null) {
if (child.processLine(line)) {
@@
-143,7
+154,8
@@
public class Importer {
if (line.endsWith(":")) {
// field value is compound
currentFieldName = line.substring(0, line.length() - 1);
if (line.endsWith(":")) {
// field value is compound
currentFieldName = line.substring(0, line.length() - 1);
- } else if (line.startsWith(":") || !line.contains(":")) {
+ } else if (line.startsWith(":") || !line.contains(":")
+ || line.startsWith("\"") || CustomSerializer.isCustom(line)) {
// not a field value but a direct value
me = SerialUtils.decode(line);
} else {
// not a field value but a direct value
me = SerialUtils.decode(line);
} else {