Skip to content

Commit 5e5f881

Browse files
committed
Extract field path separator into shared constant.
1 parent d835ff4 commit 5e5f881

File tree

3 files changed

+14
-7
lines changed

3 files changed

+14
-7
lines changed

metafix/src/main/java/org/metafacture/metafix/FixMethod.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ public void apply(final Metafix metafix, final Record record, final List<String>
170170
final String field = params.get(0);
171171
final Value newValue = newArray(params.subList(1, params.size()).stream().map(Value::new));
172172
record.set(field, newValue);
173-
newValue.asArray().forEach(value -> value.withPathSet(newValue.getPath() + "." + value.getPath()));
173+
newValue.asArray().forEach(value -> value.withPathSet(newValue.getPath() + Value.FIELD_PATH_SEPARATOR + value.getPath()));
174174
}
175175
},
176176
add_field {

metafix/src/main/java/org/metafacture/metafix/FixPath.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,10 @@
3434
/*package-private*/ class FixPath {
3535

3636
private static final String ASTERISK = "*";
37+
38+
private static final String INDEX_SUBPATH_PATTERN = Value.FIELD_PATH_SEPARATOR_PATTERN + "\\d" + Value.FIELD_PATH_SEPARATOR_PATTERN;
39+
private static final String ASTERISK_SUBPATH = Value.FIELD_PATH_SEPARATOR + ASTERISK + Value.FIELD_PATH_SEPARATOR;
40+
3741
private String[] path;
3842

3943
/*package-private*/ FixPath(final String path) {
@@ -111,7 +115,7 @@ private Value findInValue(final Value value, final String[] p) {
111115

112116
@Override
113117
public String toString() {
114-
return String.join(".", path);
118+
return String.join(Value.FIELD_PATH_SEPARATOR, path);
115119
}
116120

117121
/*package-private*/ int size() {
@@ -141,7 +145,9 @@ else if (value.getPath() != null && hasWildcard()) {
141145
}
142146

143147
private boolean matches(final String thatPath) {
144-
return thatPath != null && thatPath.replaceAll("\\.\\d+\\.", ".*.").equals(String.join(".", this.path));
148+
return thatPath != null && thatPath
149+
.replaceAll(INDEX_SUBPATH_PATTERN, ASTERISK_SUBPATH)
150+
.equals(String.join(Value.FIELD_PATH_SEPARATOR, this.path));
145151
}
146152

147153
private String[] replaceInPath(final String find, final int i) {

metafix/src/main/java/org/metafacture/metafix/Value.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,8 @@
5252
*/
5353
public class Value implements JsonValue { // checkstyle-disable-line ClassDataAbstractionCoupling
5454

55-
private static final String FIELD_PATH_SEPARATOR = "\\.";
55+
public static final String FIELD_PATH_SEPARATOR = ".";
56+
/*package-private*/ static final String FIELD_PATH_SEPARATOR_PATTERN = Pattern.quote(FIELD_PATH_SEPARATOR);
5657

5758
private final Array array;
5859
private final Hash hash;
@@ -409,7 +410,7 @@ public void toJson(final JsonGenerator jsonGenerator) {
409410
}
410411

411412
/*package-private*/ static String[] split(final String fieldPath) {
412-
return fieldPath.split(FIELD_PATH_SEPARATOR);
413+
return fieldPath.split(FIELD_PATH_SEPARATOR_PATTERN);
413414
}
414415

415416
/**
@@ -431,7 +432,7 @@ private Value withPathAppend(final int i) {
431432
}
432433

433434
private Value withPathAppend(final String field) {
434-
return withPathSet(path == null || path.isEmpty() ? field : path + "." + field);
435+
return withPathSet(path == null || path.isEmpty() ? field : path + FIELD_PATH_SEPARATOR + field);
435436
}
436437

437438
/*package-private*/ Value copy() {
@@ -574,7 +575,7 @@ protected <T> Map<T, Collection<String>> retainFields(final Collection<String> f
574575
final Map<T, Collection<String>> retainFields = new HashMap<>();
575576

576577
fields.forEach(p -> {
577-
final String[] parts = p.split(FIELD_PATH_SEPARATOR, 2);
578+
final String[] parts = p.split(FIELD_PATH_SEPARATOR_PATTERN, 2);
578579

579580
function.apply(parts[0]).forEach(f -> {
580581
final Collection<String> retainNested = retainFields.computeIfAbsent(f, k -> new HashSet<>());

0 commit comments

Comments
 (0)