fix: decode null / empty values

This commit is contained in:
REAndroid 2023-05-01 19:55:22 +02:00
parent d5c3f7563e
commit fea0583f61

View File

@ -1,4 +1,4 @@
/*
/*
* Copyright (C) 2022 github.com/REAndroid
*
* Licensed under the Apache License, Version 2.0 (the "License");
@ -29,7 +29,7 @@ import java.util.Iterator;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ValueDecoder {
public class ValueDecoder {
public static String escapeSpecialCharacter(String text){
if(text==null || text.length()==0){
@ -64,7 +64,7 @@ import java.util.regex.Pattern;
return null;
}
if("@empty".equals(txt)){
return new EncodeResult(ValueType.NULL, 0);
return new EncodeResult(ValueType.NULL, 1);
}
if("@null".equals(txt)){
return new EncodeResult(ValueType.REFERENCE, 0);
@ -354,8 +354,8 @@ import java.util.regex.Pattern;
return decodeIntEntry(store, parentEntry, valueType, data);
}
public static String decodeIntEntry(EntryStore store, Entry parentEntry, ValueType valueType, int data){
if(valueType==ValueType.NULL){
return "@empty";
if(valueType == ValueType.NULL){
return decodeNull(data);
}
if(valueType==ValueType.STRING){
return decodeIntEntryString(parentEntry, data);
@ -474,6 +474,8 @@ import java.util.regex.Pattern;
return decodeHex(data);
case INT_DEC:
return decodeInt(data);
case NULL:
return decodeNull(data);
}
return null;
}
@ -713,6 +715,12 @@ import java.util.regex.Pattern;
private static String decodeInt(int rawVal){
return String.valueOf(rawVal);
}
private static String decodeNull(int data){
if(data == 1){
return "@empty";
}
return "@null";
}
private static String decodeBoolean(int data){
if(data == 0xFFFFFFFF){
@ -824,4 +832,4 @@ import java.util.regex.Pattern;
private static final Pattern PATTERN_HEX = Pattern.compile("^0x[0-9a-fA-F]+$");
public static final Pattern PATTERN_REFERENCE = Pattern.compile("^([?@])(([^\\s:@?/]+:)?)([^\\s:@?/]+)/([^\\s:@?/]+)$");
public static final Pattern PATTERN_HEX_REFERENCE = Pattern.compile("^([?@])(0x[0-9a-f]{7,8})$");
}
}