protected static void setImplicitTypes(Value val1, Value val2, Class<?> expected, Resolver resolver) { Class<?> c1 = val1.getType(); Class<?> c2 = val2.getType(); boolean o1 = c1 == TYPE_OBJECT; boolean o2 = c2 == TYPE_OBJECT; if (o1 && !o2) { val1.setImplicitType(c2); if (val1.getMetaData() == null && !val1.isXPath()) val1.setMetaData(val2.getMetaData()); } else if (!o1 && o2) { val2.setImplicitType(c1); if (val2.getMetaData() == null && !val1.isXPath()) val2.setMetaData(val1.getMetaData()); } else if (o1 && o2 && expected != null) { // we never expect a pc type, so don't bother with metadata val1.setImplicitType(expected); val2.setImplicitType(expected); } else if (isNumeric(val1.getType()) != isNumeric(val2.getType())) { if (resolver.getConfiguration().getCompatibilityInstance(). getQuotedNumbersInQueries()) convertTypesQuotedNumbers(val1, val2); else convertTypes(val1, val2); } // convertLiteralToAvoidCast(val1, val2); }
protected static void setImplicitTypes(Value val1, Value val2, Class<?> expected, Resolver resolver) { Class<?> c1 = val1.getType(); Class<?> c2 = val2.getType(); boolean o1 = c1 == TYPE_OBJECT; boolean o2 = c2 == TYPE_OBJECT; if (o1 && !o2) { val1.setImplicitType(c2); if (val1.getMetaData() == null && !val1.isXPath()) val1.setMetaData(val2.getMetaData()); } else if (!o1 && o2) { val2.setImplicitType(c1); if (val2.getMetaData() == null && !val1.isXPath()) val2.setMetaData(val1.getMetaData()); } else if (o1 && o2 && expected != null) { // we never expect a pc type, so don't bother with metadata val1.setImplicitType(expected); val2.setImplicitType(expected); } else if (isNumeric(val1.getType()) != isNumeric(val2.getType())) { if (resolver.getConfiguration().getCompatibilityInstance(). getQuotedNumbersInQueries()) convertTypesQuotedNumbers(val1, val2); else convertTypes(val1, val2); } // convertLiteralToAvoidCast(val1, val2); }
protected static void setImplicitTypes(Value val1, Value val2, Class<?> expected, Resolver resolver) { Class<?> c1 = val1.getType(); Class<?> c2 = val2.getType(); boolean o1 = c1 == TYPE_OBJECT; boolean o2 = c2 == TYPE_OBJECT; if (o1 && !o2) { val1.setImplicitType(c2); if (val1.getMetaData() == null && !val1.isXPath()) val1.setMetaData(val2.getMetaData()); } else if (!o1 && o2) { val2.setImplicitType(c1); if (val2.getMetaData() == null && !val1.isXPath()) val2.setMetaData(val1.getMetaData()); } else if (o1 && o2 && expected != null) { // we never expect a pc type, so don't bother with metadata val1.setImplicitType(expected); val2.setImplicitType(expected); } else if (isNumeric(val1.getType()) != isNumeric(val2.getType())) { if (resolver.getConfiguration().getCompatibilityInstance(). getQuotedNumbersInQueries()) convertTypesQuotedNumbers(val1, val2); else convertTypes(val1, val2); } // convertLiteralToAvoidCast(val1, val2); }
protected static void setImplicitTypes(Value val1, Value val2, Class<?> expected, Resolver resolver) { Class<?> c1 = val1.getType(); Class<?> c2 = val2.getType(); boolean o1 = c1 == TYPE_OBJECT; boolean o2 = c2 == TYPE_OBJECT; if (o1 && !o2) { val1.setImplicitType(c2); if (val1.getMetaData() == null && !val1.isXPath()) val1.setMetaData(val2.getMetaData()); } else if (!o1 && o2) { val2.setImplicitType(c1); if (val2.getMetaData() == null && !val1.isXPath()) val2.setMetaData(val1.getMetaData()); } else if (o1 && o2 && expected != null) { // we never expect a pc type, so don't bother with metadata val1.setImplicitType(expected); val2.setImplicitType(expected); } else if (isNumeric(val1.getType()) != isNumeric(val2.getType())) { if (resolver.getConfiguration().getCompatibilityInstance(). getQuotedNumbersInQueries()) convertTypesQuotedNumbers(val1, val2); else convertTypes(val1, val2); } // convertLiteralToAvoidCast(val1, val2); }
/** * Set the implicit types of the given values based on the fact that * they're used together, and based on the operator type. */ protected void setImplicitTypes(Value val1, Value val2, Class expected) { Class c1 = val1.getType(); Class c2 = val2.getType(); boolean o1 = c1 == TYPE_OBJECT; boolean o2 = c2 == TYPE_OBJECT; if (o1 && !o2) { val1.setImplicitType(c2); if (val1.getMetaData() == null && !val1.isXPath()) val1.setMetaData(val2.getMetaData()); } else if (!o1 && o2) { val2.setImplicitType(c1); if (val2.getMetaData() == null && !val1.isXPath()) val2.setMetaData(val1.getMetaData()); } else if (o1 && o2 && expected != null) { // we never expect a pc type, so don't bother with metadata val1.setImplicitType(expected); val2.setImplicitType(expected); } else if (isNumeric(val1.getType()) != isNumeric(val2.getType())) { if (resolver.getConfiguration().getCompatibilityInstance(). getQuotedNumbersInQueries()) convertTypesQuotedNumbers(val1, val2); else convertTypes(val1, val2); } }