@Override public void serviceInit(Configuration conf) throws Exception { Constructor<?> cons; try { if (conf instanceof TajoConf) { this.conf = (TajoConf) conf; } else { throw new TajoInternalError("conf must be a TajoConf instance"); } Class<?> storeClass = this.conf.getClass(CatalogConstants.STORE_CLASS, DerbyStore.class); LOG.info("Catalog Store Class: " + storeClass.getCanonicalName()); cons = storeClass.getConstructor(new Class[] {Configuration.class}); this.store = (CatalogStore) cons.newInstance(this.conf); initBuiltinFunctions(builtingFuncs); } catch (Throwable t) { LOG.error("CatalogServer initialization failed", t); throw new TajoInternalError(t); } super.serviceInit(conf); }
private Method getEvaluateMethod(TajoDataTypes.DataType[] tajoParamTypes, Class<?> clazz) { Constructor constructor = clazz.getConstructors()[0]; try { instance = constructor.newInstance(); } catch (InstantiationException | IllegalAccessException | InvocationTargetException e) { throw new TajoInternalError(e); } for (Method m : clazz.getMethods()) { if (m.getName().equals("evaluate")) { Class[] methodParamTypes = m.getParameterTypes(); if (checkParamTypes(methodParamTypes, tajoParamTypes)) { return m; } } } throw new TajoInternalError( new UndefinedFunctionException(String.format("Hive UDF (%s)", clazz.getSimpleName()))); }