@Override public TupleRule<?, ?> deepCopy() { checkClassToCopy(PojoTupleRule.class); PojoTupleRule copy = new PojoTupleRule(getName(), pojoClass, getNodeRuleFactory()); copy.setHandler(getHandler()); copy.setRequired(isRequired()); return copy; } }
@Override public TupleRule<?, ?> getRuleForTuple(NodeTuple nodeTuple) { if (rules.isEmpty()) { addRulesFor(pojoClass); } return super.getRuleForTuple(nodeTuple); }
@Override public List<ValidationResult> validateKey(ScalarNode key) { List<ValidationResult> validationResults = super.validateKey(key); if (getParentTupleRule() instanceof MapTupleRule) { ((MapTupleRule)getParentTupleRule()).checkDuplicate(key, validationResults); } return validationResults; }
private TupleRule<?, ?> createScalarRule(Field declaredField, Scalar scalar) { TupleRule<?, ?> tupleRule; if (scalar.rule() != TupleRule.class) { tupleRule = createInstanceOfTupleRule(scalar.rule(), declaredField.getName(), declaredField.getType()); } else { if (ReflectionUtils.isPojo(declaredField.getType())) { tupleRule = new PojoTupleRule(declaredField.getName(), declaredField.getType()); } else { tupleRule = new SimpleRule(declaredField.getName(), declaredField.getType()); } } return tupleRule; }
public PojoTupleRule(String fieldName, Class<?> pojoClass, NodeRuleFactory nodeRuleFactory) { this(fieldName, pojoClass); setNodeRuleFactory(nodeRuleFactory); }
private TupleRule<?, ?> createScalarRule(Field declaredField, Scalar scalar) { TupleRule<?, ?> tupleRule; if (scalar.rule() != TupleRule.class) { tupleRule = createInstanceOfTupleRule(scalar.rule(), declaredField.getName(), declaredField.getType()); } else { if (ReflectionUtils.isPojo(declaredField.getType())) { tupleRule = new PojoTupleRule(declaredField.getName(), declaredField.getType()); } else { tupleRule = new SimpleRule(declaredField.getName(), declaredField.getType()); } } return tupleRule; }
public PojoTupleRule(String fieldName, Class<?> pojoClass, NodeRuleFactory nodeRuleFactory) { this(fieldName, pojoClass); setNodeRuleFactory(nodeRuleFactory); }
@Override public TupleRule<?, ?> deepCopy() { checkClassToCopy(PojoTupleRule.class); PojoTupleRule copy = new PojoTupleRule(getName(), pojoClass, getNodeRuleFactory()); copy.setHandler(getHandler()); copy.setRequired(isRequired()); return copy; } }
@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 TupleRule<?, ?> getRuleForTuple(NodeTuple nodeTuple) { if (rules.isEmpty()) { addRulesFor(pojoClass); } return super.getRuleForTuple(nodeTuple); }
@Override public List<ValidationResult> validateKey(ScalarNode key) { List<ValidationResult> validationResults = super.validateKey(key); if (getParentTupleRule() instanceof MapTupleRule) { ((MapTupleRule)getParentTupleRule()).checkDuplicate(key, validationResults); } return validationResults; }
@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 void addRulesFor(Class<?> pojoClass) { super.addRulesFor(pojoClass); SimpleRule typeRule = (SimpleRule) getRuleByFieldName("type"); rules.put("minLength", new EnumModifierRule("minLength", Arrays.asList("string"), typeRule)); rules.put("maxLength", new EnumModifierRule("maxLength", Arrays.asList("string"), typeRule)); rules.put("minimum", new EnumModifierRule("minimum", Arrays.asList("integer", "number"), typeRule)); rules.put("maximum", new EnumModifierRule("maximum", Arrays.asList("integer", "number"), typeRule)); }
tupleRule = new PojoTupleRule(declaredField.getName(), declaredField.getType());
@Override public void addRulesFor(Class<?> pojoClass) { super.addRulesFor(pojoClass); SimpleRule typeRule = (SimpleRule) getRuleByFieldName("type"); rules.put("minLength", new EnumModifierRule("minLength", Arrays.asList("string"), typeRule)); rules.put("maxLength", new EnumModifierRule("maxLength", Arrays.asList("string"), typeRule)); rules.put("minimum", new EnumModifierRule("minimum", Arrays.asList("integer", "number"), typeRule)); rules.put("maximum", new EnumModifierRule("maximum", Arrays.asList("integer", "number"), typeRule)); }
tupleRule = new PojoTupleRule(declaredField.getName(), declaredField.getType());
@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 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 TupleRule<?, ?> getRuleForTuple(NodeTuple nodeTuple) { if (nodeTuple.getValueNode().getNodeId() == NodeId.sequence) { return new SequenceTupleRule(fieldName, valueType, getNodeRuleFactory()); } else { //TODO add it to a list to invoke onRuleEnd on all the rules created if (ReflectionUtils.isPojo(valueType)) { return new PojoTupleRule(fieldName, valueType, getNodeRuleFactory()); } return new SimpleRule(fieldName, valueType); } }
@Override public TupleRule<?, ?> getRuleForTuple(NodeTuple nodeTuple) { if (nodeTuple.getValueNode().getNodeId() == NodeId.sequence) { return new SequenceTupleRule(fieldName, valueType, getNodeRuleFactory()); } else { //TODO add it to a list to invoke onRuleEnd on all the rules created if (ReflectionUtils.isPojo(valueType)) { return new PojoTupleRule(fieldName, valueType, getNodeRuleFactory()); } return new SimpleRule(fieldName, valueType); } }