|
22 | 22 |
|
23 | 23 | import com.fasterxml.jackson.core.JsonToken;
|
24 | 24 | import com.norconex.commons.lang.flow.module.FlowDeserializer.FlowDeserContext;
|
| 25 | +import com.norconex.commons.lang.flow.module.FlowSerializer.FlowSerContext; |
25 | 26 | import com.norconex.commons.lang.function.Predicates;
|
26 | 27 |
|
27 | 28 | import lombok.Data;
|
@@ -75,9 +76,75 @@ private void readObject(FlowDeserContext ctx, Predicates<T> preds)
|
75 | 76 | FlowUtil.logClose(ctx, p.getCurrentName());
|
76 | 77 | }
|
77 | 78 |
|
| 79 | + @SuppressWarnings("unchecked") |
78 | 80 | @Override
|
79 |
| - public void write() throws IOException { |
80 |
| - // TODO Auto-generated method stub |
| 81 | + public void write(Predicate<T> predicate, FlowSerContext ctx) |
| 82 | + throws IOException { |
| 83 | + var gen = ctx.getGen(); |
| 84 | + |
| 85 | + gen.writeFieldName(isAny() ? "anyOf" : "allOf"); |
| 86 | +// gen.writeStartObject(); |
| 87 | + |
| 88 | + var predicateGroup = (Predicates<T>) predicate; |
| 89 | + gen.writeStartArray(); |
| 90 | + for (Predicate<T> pred : predicateGroup) { |
| 91 | + gen.writeStartObject(); |
| 92 | + if (pred instanceof Predicates<T> chidPredGroup) { |
| 93 | + if (chidPredGroup.isAny()) { |
| 94 | + // anyOf |
| 95 | + ((ConditionGroupHandler<T>) Statement.ANYOF.handler()) |
| 96 | + .write(chidPredGroup, ctx); |
| 97 | + } else { |
| 98 | + // allOf |
| 99 | + ((ConditionGroupHandler<T>) Statement.ALLOF.handler()) |
| 100 | + .write(chidPredGroup, ctx); |
| 101 | + } |
| 102 | + } else { |
| 103 | + // condition |
| 104 | + ((ConditionHandler<T>) Statement.CONDITION.handler()).write( |
| 105 | + pred, ctx); |
| 106 | + } |
| 107 | + gen.writeEndObject(); |
| 108 | + } |
| 109 | + gen.writeEndArray(); |
| 110 | + |
| 111 | + |
| 112 | + |
| 113 | +// if (predicate instanceof Predicates<T> predicateGroup) { |
| 114 | +// if (predicateGroup.isAny()) { |
| 115 | +// // anyOf |
| 116 | +// ((ConditionGroupHandler<T>) Statement.ANYOF.handler()).write( |
| 117 | +// predicateGroup, ctx); |
| 118 | +// } else { |
| 119 | +// // allOf |
| 120 | +// ((ConditionGroupHandler<T>) Statement.ALLOF.handler()).write( |
| 121 | +// predicateGroup, ctx); |
| 122 | +// } |
| 123 | +// } else { |
| 124 | +// // condition |
| 125 | +// ((ConditionHandler<T>) Statement.CONDITION.handler()).write( |
| 126 | +// predicate, ctx); |
| 127 | +// } |
| 128 | + |
| 129 | +// gen.writeEndObject(); |
81 | 130 |
|
| 131 | +// var preds = (Predicates<T>) obj; |
| 132 | +// for (Predicate<T> pred : preds) { |
| 133 | +// if (pred instanceof Predicates<T> pgroup) { |
| 134 | +// if (pgroup.isAny()) { |
| 135 | +// gen.writeFieldName(Statement.ANYOF.toString()); |
| 136 | +// ((ConditionGroupHandler<T>) Statement.ANYOF.handler()).write( |
| 137 | +// pgroup, ctx); |
| 138 | +// } else { |
| 139 | +// gen.writeFieldName(Statement.ALLOF.toString()); |
| 140 | +// ((ConditionGroupHandler<T>) Statement.ALLOF.handler()).write( |
| 141 | +// pgroup, ctx); |
| 142 | +// } |
| 143 | +// } else { |
| 144 | +// gen.writeFieldName(Statement.CONDITION.toString()); |
| 145 | +// ((ConditionHandler<T>) Statement.CONDITION.handler()).write( |
| 146 | +// pred, ctx); |
| 147 | +// } |
| 148 | +// } |
82 | 149 | }
|
83 | 150 | }
|
0 commit comments