Skip to content

Commit ded3842

Browse files
authored
fix: BlueId calculation for nested structures (#7)
- Update BlueIdCalculator to correctly handle nested maps and lists - Adjust test cases to reflect correct BlueId calculation - Update default Blue IDs to match new calculation method - Fix sample Blue files to use correct type BlueIds
1 parent ceea214 commit ded3842

7 files changed

Lines changed: 291 additions & 295 deletions

File tree

src/main/java/blue/language/preprocess/Preprocessor.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818

1919
public class Preprocessor {
2020

21-
public static final String DEFAULT_BLUE_BLUE_ID = "8Na7RPBKK2rkDR1iUBhMjmUg5BAku3YfihLCeN3SYcuD";
21+
public static final String DEFAULT_BLUE_BLUE_ID = "FREHAAGDZSzpnoTUoCQ86bBmxbVCULMjvx9JZM6fyqT1";
2222

2323
private TransformationProcessorProvider processorProvider;
2424
private NodeProvider nodeProvider;
@@ -79,8 +79,8 @@ public Node preprocess(Node document, Node defaultBlue) {
7979

8080
public static TransformationProcessorProvider getStandardProvider() {
8181
return new TransformationProcessorProvider() {
82-
private static final String REPLACE_INLINE_TYPES = "648mybP3oHoi8kx6HvYzw6Jtuz6BjUpGPk1r2DpCq7e4";
83-
private static final String INFER_BASIC_TYPES = "45nboJisxsXXE2UBA2cY7V56roZ13u9MtCMcvv4iYrFp";
82+
private static final String REPLACE_INLINE_TYPES = "27B7fuxQCS1VAptiCPc2RMkKoutP5qxkh3uDxZ7dr6Eo";
83+
private static final String INFER_BASIC_TYPES = "FGYuTXwaoSKfZmpTysLTLsb8WzSqf43384rKZDkXhxD4";
8484

8585
@Override
8686
public Optional<TransformationProcessor> getProcessor(Node transformation) {

src/main/java/blue/language/utils/BlueIdCalculator.java

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,8 @@ public String calculate(Object object) {
3838
} else if (cleanedObject instanceof List) {
3939
return calculateList((List<Object>) cleanedObject);
4040
}
41-
throw new IllegalArgumentException("Object must be a String, Number, Boolean, List or Map - found " + cleanedObject.getClass());
41+
throw new IllegalArgumentException(
42+
"Object must be a String, Number, Boolean, List or Map - found " + cleanedObject.getClass());
4243
}
4344

4445
private String calculateMap(Map<String, Object> map) {
@@ -49,16 +50,11 @@ private String calculateMap(Map<String, Object> map) {
4950
Map<String, Object> hashes = new LinkedHashMap<>();
5051
for (Map.Entry<String, Object> entry : map.entrySet()) {
5152
String key = entry.getKey();
52-
Object value = entry.getValue();
53-
5453
if (OBJECT_NAME.equals(key) || OBJECT_VALUE.equals(key) || OBJECT_DESCRIPTION.equals(key)) {
55-
hashes.put(key, value);
56-
} else if (value instanceof Map) {
57-
hashes.put(key, calculateMap((Map<String, Object>) value));
58-
} else if (value instanceof List) {
59-
hashes.put(key, calculateList((List<Object>) value));
54+
hashes.put(key, entry.getValue());
6055
} else {
61-
hashes.put(key, calculate(value));
56+
String blueId = calculate(entry.getValue());
57+
hashes.put(key, Collections.singletonMap("blueId", blueId));
6258
}
6359
}
6460
return hashProvider.apply(hashes);
@@ -75,7 +71,10 @@ private String calculateList(List<Object> list) {
7571
Object lastElement = list.get(list.size() - 1);
7672
String hashOfLastElement = calculate(lastElement);
7773

78-
return hashProvider.apply(Arrays.asList(hashOfSubList, hashOfLastElement));
74+
List<Map<String, String>> result = Arrays.asList(
75+
Collections.singletonMap("blueId", hashOfSubList),
76+
Collections.singletonMap("blueId", hashOfLastElement));
77+
return hashProvider.apply(result);
7978
}
8079

8180
private Object cleanStructure(Object obj) {
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
- type:
2-
blueId: 648mybP3oHoi8kx6HvYzw6Jtuz6BjUpGPk1r2DpCq7e4
2+
blueId: 27B7fuxQCS1VAptiCPc2RMkKoutP5qxkh3uDxZ7dr6Eo
33
mappings:
44
Text: F92yo19rCcbBoBSpUA5LRxpfDejJDAaP1PRxxbWAraVP
55
Double: 68ryJtnmui4j5rCZWUnkZ3DChtmEb7Z9F8atn1mBSM3L
@@ -8,4 +8,4 @@
88
List: G8wmfjEqugPEEXByMYWJXiEdbLToPRWNQEekNxrxfQWB
99
Dictionary: 294NBTj2mFRL3RB4kDRUSckwGg7Kzj6T8CTAFeR1kcSA
1010
- type:
11-
blueId: 45nboJisxsXXE2UBA2cY7V56roZ13u9MtCMcvv4iYrFp
11+
blueId: FGYuTXwaoSKfZmpTysLTLsb8WzSqf43384rKZDkXhxD4

src/test/java/blue/language/provider/ClasspathBasedNodeProviderTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ void setUp() throws IOException {
2020

2121
@Test
2222
void testFetchByBlueId() {
23-
String knownBlueId = "EiLsQj1LpMu8j6fC3KZg1Emdt94QZMdgKzS9ftXB8zov";
23+
String knownBlueId = "8RTziohyZKuSMrybq9NfH1RroL91uwmAahV5KwfgiXKX";
2424
List<Node> nodes = provider.fetchByBlueId(knownBlueId);
2525
assertNotNull(nodes);
2626
assertFalse(nodes.isEmpty());

0 commit comments

Comments
 (0)