@Override public TupleRule<?, ?> deepCopy() { checkClassToCopy(MapTupleRule.class); MapTupleRule copy = new MapTupleRule(getName(), valueType); copy.setHandler(getHandler()); copy.setInnerTupleHandler(innerTupleHandler); copy.setNodeRuleFactory(getNodeRuleFactory()); return copy; }
protected DefaultTupleRule getScalarRule() { return new SimpleRule(getFieldName(), getValueType()); }
@Override public TupleRule<?, ?> getRuleForTuple(NodeTuple nodeTuple) { TupleRule<?, ?> tupleRule; if (ReflectionUtils.isPojo(valueType)) { tupleRule = new PojoTupleRule(fieldName, valueType, getNodeRuleFactory()); } else { tupleRule = getScalarRule(); } if (innerTupleHandler != null && !innerTupleHandler.handles(nodeTuple)) { return new UnknownTupleRule<Node, Node>(nodeTuple.getKeyNode().toString()); } tupleRule.setParentTupleRule(this); return tupleRule; }
@Override public NodeRule<?> getItemRule() { if (itemType instanceof Class<?>) { //TODO add it to a list to invoke onRuleEnd on all the rules created if (!ReflectionUtils.isPojo((Class) itemType)) { return getScalarRule(); } return new PojoTupleRule("", (Class<?>) itemType, getNodeRuleFactory()); } if (itemType instanceof ParameterizedType) { ParameterizedType pItemType = (ParameterizedType) itemType; if (Map.class.isAssignableFrom((Class<?>) pItemType.getRawType())) { //sequence of maps return new MapTupleRule((Class<?>) pItemType.getActualTypeArguments()[1], getNodeRuleFactory()); } } throw new IllegalArgumentException("Sequence item type not supported: " + itemType); }
@Override public List<ValidationResult> validateKey(ScalarNode key) { List<ValidationResult> validationResults = super.validateKey(key); if (getParentTupleRule() instanceof MapTupleRule) { ((MapTupleRule)getParentTupleRule()).checkDuplicate(key, validationResults); } return validationResults; }
public void checkDuplicate(ScalarNode key, List<ValidationResult> validationResults) { if (keys.contains(key.getValue())) { validationResults.add(ValidationResult.createErrorResult(getDuplicateRuleMessage(getName()), key)); } else { keys.add(key.getValue()); } } }
@Override public TupleRule<?, ?> getRuleForTuple(NodeTuple nodeTuple) { if (nodeTuple.getKeyNode().getNodeId() == scalar && nodeTuple.getValueNode().getNodeId() == scalar) { String schemaKey = ((ScalarNode) nodeTuple.getKeyNode()).getValue(); ScalarNode valueNode = (ScalarNode) nodeTuple.getValueNode(); schemas.put(schemaKey, valueNode); } return super.getRuleForTuple(nodeTuple); } }
@Override public TupleRule<?, ?> getRuleForTuple(NodeTuple nodeTuple) { TupleRule<?, ?> tupleRule; if (ReflectionUtils.isPojo(valueType)) { tupleRule = new PojoTupleRule(fieldName, valueType, getNodeRuleFactory()); } else { tupleRule = getScalarRule(); } if (innerTupleHandler != null && !innerTupleHandler.handles(nodeTuple)) { return new UnknownTupleRule<Node, Node>(nodeTuple.getKeyNode().toString()); } tupleRule.setParentTupleRule(this); return tupleRule; }
@Override public NodeRule<?> getItemRule() { if (itemType instanceof Class<?>) { //TODO add it to a list to invoke onRuleEnd on all the rules created if (!ReflectionUtils.isPojo((Class) itemType)) { return getScalarRule(); } return new PojoTupleRule("", (Class<?>) itemType, getNodeRuleFactory()); } if (itemType instanceof ParameterizedType) { ParameterizedType pItemType = (ParameterizedType) itemType; if (Map.class.isAssignableFrom((Class<?>) pItemType.getRawType())) { //sequence of maps return new MapTupleRule((Class<?>) pItemType.getActualTypeArguments()[1], getNodeRuleFactory()); } } throw new IllegalArgumentException("Sequence item type not supported: " + itemType); }
@Override public List<ValidationResult> validateKey(ScalarNode key) { List<ValidationResult> validationResults = super.validateKey(key); if (getParentTupleRule() instanceof MapTupleRule) { ((MapTupleRule)getParentTupleRule()).checkDuplicate(key, validationResults); } return validationResults; }
public void checkDuplicate(ScalarNode key, List<ValidationResult> validationResults) { if (keys.contains(key.getValue())) { validationResults.add(ValidationResult.createErrorResult(getDuplicateRuleMessage(getName()), key)); } else { keys.add(key.getValue()); } } }
@Override public TupleRule<?, ?> getRuleForTuple(NodeTuple nodeTuple) { if (nodeTuple.getKeyNode().getNodeId() == scalar && nodeTuple.getValueNode().getNodeId() == scalar) { String schemaKey = ((ScalarNode) nodeTuple.getKeyNode()).getValue(); ScalarNode valueNode = (ScalarNode) nodeTuple.getValueNode(); schemas.put(schemaKey, valueNode); } return super.getRuleForTuple(nodeTuple); } }
@Override public TupleRule<?, ?> deepCopy() { checkClassToCopy(MapTupleRule.class); MapTupleRule copy = new MapTupleRule(getName(), valueType); copy.setHandler(getHandler()); copy.setInnerTupleHandler(innerTupleHandler); copy.setNodeRuleFactory(getNodeRuleFactory()); return copy; }
protected DefaultTupleRule getScalarRule() { return new SimpleRule(getFieldName(), getValueType()); }
tupleRule = new MapTupleRule(declaredField.getName(), (Class) valueType);
tupleRule = new MapTupleRule(declaredField.getName(), (Class) valueType);