protected void initializeQueryService() { try { String usingPool = TestConfig.tab().stringAt(CQUtilPrms.QueryServiceUsingPool, "false"); boolean queryServiceUsingPool = Boolean.valueOf(usingPool).booleanValue(); if (queryServiceUsingPool) { Pool pool = PoolHelper.createPool(CQUtilPrms.getQueryServicePoolName()); qService = pool.getQueryService(); Log.getLogWriter() .info("Initializing QueryService using Pool. PoolName: " + pool.getName()); } else { qService = CacheHelper.getCache().getQueryService(); Log.getLogWriter().info("Initializing QueryService using Cache."); } } catch (Exception e) { throw new TestException(TestHelper.getStackTrace(e)); } }
public static Object element(Object arg, ExecutionContext context) throws FunctionDomainException, TypeMismatchException { if (arg == null || arg == QueryService.UNDEFINED) return QueryService.UNDEFINED; if (arg instanceof Collection) { Collection c = (Collection) arg; // for remote distinct queries, the result of sub query could contain a // mix of String and PdxString which could be duplicates, so convert all // PdxStrings to String if (context.isDistinct() && ((DefaultQuery) context.getQuery()).isRemoteQuery()) { Set tempResults = new HashSet(); for (Object o : c) { if (o instanceof PdxString) { o = ((PdxString) o).toString(); } tempResults.add(o); } c.clear(); c.addAll(tempResults); tempResults = null; } checkSingleton(c.size()); return c.iterator().next(); } // not a Collection, must be an array Class clazz = arg.getClass(); if (!clazz.isArray()) throw new TypeMismatchException( LocalizedStrings.Functions_THE_ELEMENT_FUNCTION_CANNOT_BE_APPLIED_TO_AN_OBJECT_OF_TYPE_0 .toLocalizedString(clazz.getName())); // handle arrays if (arg instanceof Object[]) { Object[] a = (Object[]) arg; if (((DefaultQuery) context.getQuery()).isRemoteQuery() && context.isDistinct()) { for (int i = 0; i < a.length; i++) { if (a[i] instanceof PdxString) { a[i] = ((PdxString) a[i]).toString(); } } } checkSingleton(a.length); return a[0]; } if (arg instanceof int[]) { int[] a = (int[]) arg; checkSingleton(a.length); return Integer.valueOf(a[0]); } if (arg instanceof long[]) { long[] a = (long[]) arg; checkSingleton(a.length); return Long.valueOf(a[0]); } if (arg instanceof boolean[]) { boolean[] a = (boolean[]) arg; checkSingleton(a.length); return Boolean.valueOf(a[0]); } if (arg instanceof byte[]) { byte[] a = (byte[]) arg; checkSingleton(a.length); return Byte.valueOf(a[0]); } if (arg instanceof char[]) { char[] a = (char[]) arg; checkSingleton(a.length); return new Character(a[0]); } if (arg instanceof double[]) { double[] a = (double[]) arg; checkSingleton(a.length); return Double.valueOf(a[0]); } if (arg instanceof float[]) { float[] a = (float[]) arg; checkSingleton(a.length); return new Float(a[0]); } if (arg instanceof short[]) { short[] a = (short[]) arg; checkSingleton(a.length); return new Short(a[0]); } // did I miss something? throw new TypeMismatchException( LocalizedStrings.Functions_THE_ELEMENT_FUNCTION_CANNOT_BE_APPLIED_TO_AN_OBJECT_OF_TYPE_0 .toLocalizedString(clazz.getName())); }