Modified old doclava to use LinkedLists instead of arrays

Functioning java parsing as well. Needs to be wired up into doclava proper.

Change-Id: Ifa38ca7312e6c23a8f663a9d0638afb9a29bf19d
diff --git a/src/com/google/doclava/AnnotationInstanceInfo.java b/src/com/google/doclava/AnnotationInstanceInfo.java
index bb498d7..822d9cb 100644
--- a/src/com/google/doclava/AnnotationInstanceInfo.java
+++ b/src/com/google/doclava/AnnotationInstanceInfo.java
@@ -16,41 +16,83 @@
 
 package com.google.doclava;
 
-public class AnnotationInstanceInfo {
+import java.util.ArrayList;
+import java.util.Arrays;
+
+public class AnnotationInstanceInfo implements Resolvable {
   private ClassInfo mType;
-  private AnnotationValueInfo[] mElementValues;
+  private String mName; // for temp purposes
+  private ArrayList<AnnotationValueInfo> mElementValues;
+  private ArrayList<Resolution> mResolutions;
+
+  public AnnotationInstanceInfo() {
+      mType = null;
+      mElementValues = new ArrayList<AnnotationValueInfo>();
+    }
 
   public AnnotationInstanceInfo(ClassInfo type, AnnotationValueInfo[] elementValues) {
     mType = type;
-    mElementValues = elementValues;
+    mElementValues = new ArrayList<AnnotationValueInfo>(Arrays.asList(elementValues));
   }
 
   ClassInfo type() {
     return mType;
   }
 
-  AnnotationValueInfo[] elementValues() {
+  public void setClass(ClassInfo cl) {
+      mType = cl;
+  }
+
+  public void setClassName(String name) {
+      mName = name;
+  }
+
+  ArrayList<AnnotationValueInfo> elementValues() {
     return mElementValues;
   }
 
+  public void addElementValue(AnnotationValueInfo info) {
+      mElementValues.add(info);
+  }
+
   @Override
   public String toString() {
     StringBuilder str = new StringBuilder();
     str.append("@");
-    str.append(mType.qualifiedName());
+    if (mType == null) {
+        str.append(mName);
+    } else {
+        str.append(mType.qualifiedName());
+    }
     str.append("(");
-    AnnotationValueInfo[] values = mElementValues;
-    final int N = values.length;
-    for (int i = 0; i < N; i++) {
-      AnnotationValueInfo value = values[i];
-      str.append(value.element().name());
-      str.append("=");
+
+    for (AnnotationValueInfo value : mElementValues) {
+      if (value.element() != null) {
+          str.append(value.element().name());
+          str.append("=");
+      }
+
       str.append(value.valueString());
-      if (i != N - 1) {
+      if (value != mElementValues.get(mElementValues.size()-1)) {
         str.append(",");
       }
     }
     str.append(")");
     return str.toString();
   }
+
+  public void addResolution(Resolution resolution) {
+      if (mResolutions == null) {
+          mResolutions = new ArrayList<Resolution>();
+      }
+
+      mResolutions.add(resolution);
+  }
+
+  public void printResolutions() {
+      System.out.println("Resolutions for Annotation:");
+      for (Resolution r : mResolutions) {
+          System.out.println(r);
+      }
+  }
 }