/** * Creates a pair of {@link PrimitiveValue} instances from the given {@link TypedObjectNode}s. * * @param node1 * first node, can be <code>null</code> * @param node2 * second node, can be <code>null</code> * @return pair of primitive values, never <code>null</code> (and values not null) * @throws FilterEvaluationException */ protected Pair<PrimitiveValue, PrimitiveValue> getPrimitiveValues( TypedObjectNode node1, TypedObjectNode node2 ) throws FilterEvaluationException { PrimitiveValue primitive1 = getPrimitiveValue( node1 ); PrimitiveValue primitive2 = getPrimitiveValue( node2 ); return new Pair<PrimitiveValue, PrimitiveValue>( primitive1, primitive2 ); }
private PrimitiveValue getPrimitiveValue( TypedObjectNode node ) { if ( node == null ) { return new PrimitiveValue( "null" ); } if ( node instanceof PrimitiveValue ) { return (PrimitiveValue) node; } if ( node instanceof Property ) { return getPrimitiveValue( ( (Property) node ).getValue() ); } if ( node instanceof ElementNode ) { ElementNode elNode = (ElementNode) node; List<TypedObjectNode> children = elNode.getChildren(); if ( children == null || children.isEmpty() ) { return new PrimitiveValue( "null" ); } return getPrimitiveValue( children.get( 0 ) ); } return new PrimitiveValue( node.toString() ); }