ASTERIXDB-1459: Enable Debugging for Generated Functions

Generate classes as nested classes of original class (including
package) to enable debugging.

Change-Id: I0e7816864b91b2ce0e474137b20c9fee2e35c25c
Reviewed-on: https://asterix-gerrit.ics.uci.edu/1030
Sonar-Qube: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Tested-by: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Integration-Tests: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Reviewed-by: abdullah alamoudi <bamousaa@gmail.com>
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/staticcodegen/CodeGenUtil.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/staticcodegen/CodeGenUtil.java
index 1da88a1..87a9a84 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/staticcodegen/CodeGenUtil.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/staticcodegen/CodeGenUtil.java
@@ -43,11 +43,8 @@
     private final static String EVALUATOR_FACTORY = "EvaluatorFactory";
     private final static String EVALUATOR = "Evaluator";
     private final static String INNER = "Inner";
-    private final static String DESCRIPTOR = "Descriptor";
-    private final static String ACCESSOR = "Accessor";
     private final static String DOLLAR = "$";
-    private final static String PKG_SUFFIX = "/generated";
-    private final static String ASTERIXDB_PREFIX = "org/apache/asterix";
+    private final static String NESTED_CLASSNAME_PREFIX = "_";
 
     /**
      * The callback interface for a caller to determine what it needs to do for
@@ -165,7 +162,9 @@
         int index = nameMappings.size() - 1;
         for (; index >= 0; --index) {
             Pair<String, String> entry = nameMappings.get(index);
-            result = result.replace(entry.getLeft(), entry.getRight());
+            if (result.contains(entry.getLeft())) {
+                return result.replace(entry.getLeft(), entry.getRight());
+            }
         }
         return result;
     }
@@ -179,7 +178,7 @@
      *            the original evaluator factory class name.
      * @param suffixForGeneratedClass,
      *            the suffix for the generated class.
-     * @param factoryIndex,
+     * @param factoryCounter,
      *            the counter for the generated class.
      * @param nameMappings,
      *            class names that needs to be rewritten in the generated byte code.
@@ -235,7 +234,7 @@
      *            the name of the original evaluator class.
      * @param suffixForGeneratedClass,
      *            the suffix for the generated class.
-     * @param evalIndex,
+     * @param evalCounter,
      *            the counter for the generated class.
      * @param nameMappings,
      *            class names that needs to be rewritten in the generated byte code.
@@ -368,30 +367,23 @@
      *            the original class, i.e., the source of the generated class.
      * @param suffix,
      *            the suffix for the generated class.
-     * @param evalCounter,
+     * @param counter,
      *            a counter that appearing at the end of the name of the generated class.
      * @return the name of the generated class.
      */
     private static String getGeneratedClassName(String originalClassName, String suffix, int counter) {
         StringBuilder sb = new StringBuilder();
-        int end = originalClassName.indexOf(DESCRIPTOR);
-        if (end < 0) {
-            end = originalClassName.indexOf(ACCESSOR);
-        }
-        if (end < 0) {
-            end = originalClassName.indexOf(DOLLAR);
-        }
+        int end = originalClassName.indexOf(DOLLAR);
         if (end < 0) {
             end = originalClassName.length();
         }
 
         String name = originalClassName.substring(0, end);
-        String lastName = name.substring(ASTERIXDB_PREFIX.length());
-
-        sb.append(ASTERIXDB_PREFIX);
-        sb.append(PKG_SUFFIX);
-        sb.append(lastName);
+        sb.append(name);
+        sb.append(DOLLAR);
+        sb.append(NESTED_CLASSNAME_PREFIX);
         sb.append(suffix);
+
         if (counter > 0) {
             sb.append(counter);
         }