You are viewing a plain text version of this content. The canonical link for it is here.
Posted to hcatalog-commits@incubator.apache.org by ha...@apache.org on 2011/08/30 06:18:18 UTC

svn commit: r1163097 [7/7] - in /incubator/hcatalog/trunk: ./ src/test/e2e/ src/test/e2e/hcatalog/ src/test/e2e/hcatalog/conf/ src/test/e2e/hcatalog/data/ src/test/e2e/hcatalog/deployers/ src/test/e2e/hcatalog/drivers/ src/test/e2e/hcatalog/paramfiles/...

Added: incubator/hcatalog/trunk/src/test/e2e/hcatalog/udfs/java/org/apache/hcatalog/utils/Util.java
URL: http://svn.apache.org/viewvc/incubator/hcatalog/trunk/src/test/e2e/hcatalog/udfs/java/org/apache/hcatalog/utils/Util.java?rev=1163097&view=auto
==============================================================================
--- incubator/hcatalog/trunk/src/test/e2e/hcatalog/udfs/java/org/apache/hcatalog/utils/Util.java (added)
+++ incubator/hcatalog/trunk/src/test/e2e/hcatalog/udfs/java/org/apache/hcatalog/utils/Util.java Tue Aug 30 06:18:16 2011
@@ -0,0 +1,105 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.hcatalog.utils;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+
+public class Util {
+
+    static Map<String, Class<?>> typeMap = new HashMap<String, Class<?>>();
+    
+    static{
+        typeMap.put("tinyint", Byte.class);
+        typeMap.put("smallint", Short.class);
+        typeMap.put("int", Integer.class);
+        typeMap.put("bigint", Long.class);
+        typeMap.put("float", Float.class);
+        typeMap.put("double", Double.class);
+        typeMap.put("string", String.class);
+        typeMap.put("boolean", Boolean.class);
+        typeMap.put("struct<num:int,str:string,dbl:double>", List.class);
+        typeMap.put("map<string,string>", Map.class);
+        typeMap.put("array<map<string,string>>", List.class);
+    }
+    
+    public static void die(String expectedType, Object o) throws IOException {
+        throw new IOException("Expected " + expectedType + ", got " +  
+              o.getClass().getName());
+    }
+    
+    
+    public static String check(String type, Object o) throws IOException {
+        if(o == null) {
+            return "null";
+        }
+        if(check(typeMap.get(type), o)) {
+            if(type.equals("map<string,string>")) {
+                Map<String, String> m = (Map<String, String>) o;
+                check(m);
+            } else if(type.equals("array<map<string,string>>")) {
+                List<Map<String, String>> listOfMaps = (List<Map<String, String>>) o;
+                for(Map<String, String> m: listOfMaps) {
+                    check(m);
+                }
+            } else if(type.equals("struct<num:int,str:string,dbl:double>")) {
+                List<Object> l = (List<Object>) o;
+                if(!check(Integer.class, l.get(0)) ||
+                        !check(String.class, l.get(1)) ||
+                                !check(Double.class, l.get(2))) {
+                    die("struct<num:int,str:string,dbl:double>", l);
+                }
+            }
+        } else {
+            die(typeMap.get(type).getName(), o);
+        }
+        return o.toString();
+    }
+    
+    /**
+   * @param m
+   * @throws IOException 
+   */
+  public static void check(Map<String, String> m) throws IOException {
+      if(m == null) {
+          return;
+      }
+      for(Entry<String, String> e: m.entrySet()) {
+          // just access key and value to ensure they are correct
+          if(!check(String.class, e.getKey())) {
+              die("String", e.getKey());
+          }
+          if(!check(String.class, e.getValue())) {
+              die("String", e.getValue());
+          }
+      }
+      
+  }
+
+  public static boolean check(Class<?> expected, Object actual) {
+        if(actual == null) {
+            return true;
+        }
+        return expected.isAssignableFrom(actual.getClass());
+    }
+    
+}