PageRenderTime 60ms CodeModel.GetById 30ms RepoModel.GetById 0ms app.codeStats 0ms

/tags/release-0.1-rc2/hive/external/ql/src/java/org/apache/hadoop/hive/ql/exec/DefaultUDFMethodResolver.java

#
Java | 62 lines | 15 code | 7 blank | 40 comment | 0 complexity | e4cf6bb9f2d9b506d78f6628a214c340 MD5 | raw file
Possible License(s): Apache-2.0, BSD-3-Clause, JSON, CPL-1.0
  1. /**
  2. * Licensed to the Apache Software Foundation (ASF) under one
  3. * or more contributor license agreements. See the NOTICE file
  4. * distributed with this work for additional information
  5. * regarding copyright ownership. The ASF licenses this file
  6. * to you under the Apache License, Version 2.0 (the
  7. * "License"); you may not use this file except in compliance
  8. * with the License. You may obtain a copy of the License at
  9. *
  10. * http://www.apache.org/licenses/LICENSE-2.0
  11. *
  12. * Unless required by applicable law or agreed to in writing, software
  13. * distributed under the License is distributed on an "AS IS" BASIS,
  14. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  15. * See the License for the specific language governing permissions and
  16. * limitations under the License.
  17. */
  18. package org.apache.hadoop.hive.ql.exec;
  19. import java.lang.reflect.Method;
  20. import java.util.List;
  21. import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
  22. /**
  23. * The default UDF Method resolver. This resolver is used for resolving the UDF
  24. * method that is to be used for evaluation given the list of the argument
  25. * types. The getEvalMethod goes through all the evaluate methods and returns
  26. * the one that matches the argument signature or is the closest match. Closest
  27. * match is defined as the one that requires the least number of arguments to be
  28. * converted. In case more than one matches are found, the method throws an
  29. * ambiguous method exception.
  30. */
  31. public class DefaultUDFMethodResolver implements UDFMethodResolver {
  32. /**
  33. * The class of the UDF.
  34. */
  35. private final Class<? extends UDF> udfClass;
  36. /**
  37. * Constructor. This constructor sets the resolver to be used for comparison
  38. * operators. See {@link UDFMethodResolver}
  39. */
  40. public DefaultUDFMethodResolver(Class<? extends UDF> udfClass) {
  41. this.udfClass = udfClass;
  42. }
  43. /**
  44. * Gets the evaluate method for the UDF given the parameter types.
  45. *
  46. * @param argClasses
  47. * The list of the argument types that need to matched with the
  48. * evaluate function signature.
  49. */
  50. @Override
  51. public Method getEvalMethod(List<TypeInfo> argClasses) throws UDFArgumentException {
  52. return FunctionRegistry.getMethodInternal(udfClass, "evaluate", false,
  53. argClasses);
  54. }
  55. }