summaryrefslogtreecommitdiffstats
path: root/tools/droiddoc/src/Converter.java
diff options
context:
space:
mode:
Diffstat (limited to 'tools/droiddoc/src/Converter.java')
-rw-r--r--tools/droiddoc/src/Converter.java744
1 files changed, 0 insertions, 744 deletions
diff --git a/tools/droiddoc/src/Converter.java b/tools/droiddoc/src/Converter.java
deleted file mode 100644
index 4014f7f..0000000
--- a/tools/droiddoc/src/Converter.java
+++ /dev/null
@@ -1,744 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed 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.
- */
-
-import com.sun.javadoc.*;
-import com.sun.tools.doclets.*;
-import org.clearsilver.HDF;
-import org.clearsilver.CS;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-
-public class Converter
-{
- private static RootDoc root;
-
- public static void makeInfo(RootDoc r)
- {
- root = r;
-
- int N, i;
-
- // create the objects
- ClassDoc[] classDocs = r.classes();
- N = classDocs.length;
- for (i=0; i<N; i++) {
- Converter.obtainClass(classDocs[i]);
- }
- ArrayList<ClassInfo> classesNeedingInit2 = new ArrayList<ClassInfo>();
- // fill in the fields that reference other classes
- while (mClassesNeedingInit.size() > 0) {
- i = mClassesNeedingInit.size()-1;
- ClassNeedingInit clni = mClassesNeedingInit.get(i);
- mClassesNeedingInit.remove(i);
-
- initClass(clni.c, clni.cl);
- classesNeedingInit2.add(clni.cl);
- }
- mClassesNeedingInit = null;
- for (ClassInfo cl: classesNeedingInit2) {
- cl.init2();
- }
-
- finishAnnotationValueInit();
-
- // fill in the "root" stuff
- mRootClasses = Converter.convertClasses(r.classes());
- }
-
- private static ClassInfo[] mRootClasses;
- public static ClassInfo[] rootClasses()
- {
- return mRootClasses;
- }
-
- public static ClassInfo[] allClasses() {
- return (ClassInfo[])mClasses.all();
- }
-
- private static void initClass(ClassDoc c, ClassInfo cl)
- {
- MethodDoc[] annotationElements;
- if (c instanceof AnnotationTypeDoc) {
- annotationElements = ((AnnotationTypeDoc)c).elements();
- } else {
- annotationElements = new MethodDoc[0];
- }
- cl.init(Converter.obtainType(c),
- Converter.convertClasses(c.interfaces()),
- Converter.convertTypes(c.interfaceTypes()),
- Converter.convertClasses(c.innerClasses()),
- Converter.convertMethods(c.constructors(false)),
- Converter.convertMethods(c.methods(false)),
- Converter.convertMethods(annotationElements),
- Converter.convertFields(c.fields(false)),
- Converter.convertFields(c.enumConstants()),
- Converter.obtainPackage(c.containingPackage()),
- Converter.obtainClass(c.containingClass()),
- Converter.obtainClass(c.superclass()),
- Converter.obtainType(c.superclassType()),
- Converter.convertAnnotationInstances(c.annotations())
- );
- cl.setHiddenMethods(Converter.getHiddenMethods(c.methods(false)));
- cl.setNonWrittenConstructors(Converter.convertNonWrittenConstructors(c.constructors(false)));
- cl.init3(Converter.convertTypes(c.typeParameters()), Converter.convertClasses(c.innerClasses(false)));
- }
-
- public static ClassInfo obtainClass(String className)
- {
- return Converter.obtainClass(root.classNamed(className));
- }
-
- public static PackageInfo obtainPackage(String packageName)
- {
- return Converter.obtainPackage(root.packageNamed(packageName));
- }
-
- private static TagInfo convertTag(Tag tag)
- {
- return new TextTagInfo(tag.name(), tag.kind(), tag.text(),
- Converter.convertSourcePosition(tag.position()));
- }
-
- private static ThrowsTagInfo convertThrowsTag(ThrowsTag tag,
- ContainerInfo base)
- {
- return new ThrowsTagInfo(tag.name(), tag.text(), tag.kind(),
- Converter.obtainClass(tag.exception()),
- tag.exceptionComment(), base,
- Converter.convertSourcePosition(tag.position()));
- }
-
- private static ParamTagInfo convertParamTag(ParamTag tag,
- ContainerInfo base)
- {
- return new ParamTagInfo(tag.name(), tag.kind(), tag.text(),
- tag.isTypeParameter(), tag.parameterComment(),
- tag.parameterName(),
- base,
- Converter.convertSourcePosition(tag.position()));
- }
-
- private static SeeTagInfo convertSeeTag(SeeTag tag, ContainerInfo base)
- {
- return new SeeTagInfo(tag.name(), tag.kind(), tag.text(), base,
- Converter.convertSourcePosition(tag.position()));
- }
-
- private static SourcePositionInfo convertSourcePosition(SourcePosition sp)
- {
- if (sp == null) {
- return null;
- }
- return new SourcePositionInfo(sp.file().toString(), sp.line(),
- sp.column());
- }
-
- public static TagInfo[] convertTags(Tag[] tags, ContainerInfo base)
- {
- int len = tags.length;
- TagInfo[] out = new TagInfo[len];
- for (int i=0; i<len; i++) {
- Tag t = tags[i];
- /*
- System.out.println("Tag name='" + t.name() + "' kind='"
- + t.kind() + "'");
- */
- if (t instanceof SeeTag) {
- out[i] = Converter.convertSeeTag((SeeTag)t, base);
- }
- else if (t instanceof ThrowsTag) {
- out[i] = Converter.convertThrowsTag((ThrowsTag)t, base);
- }
- else if (t instanceof ParamTag) {
- out[i] = Converter.convertParamTag((ParamTag)t, base);
- }
- else {
- out[i] = Converter.convertTag(t);
- }
- }
- return out;
- }
-
- public static ClassInfo[] convertClasses(ClassDoc[] classes)
- {
- if (classes == null) return null;
- int N = classes.length;
- ClassInfo[] result = new ClassInfo[N];
- for (int i=0; i<N; i++) {
- result[i] = Converter.obtainClass(classes[i]);
- }
- return result;
- }
-
- private static ParameterInfo convertParameter(Parameter p, SourcePosition pos)
- {
- if (p == null) return null;
- ParameterInfo pi = new ParameterInfo(p.name(), p.typeName(),
- Converter.obtainType(p.type()),
- Converter.convertSourcePosition(pos));
- return pi;
- }
-
- private static ParameterInfo[] convertParameters(Parameter[] p, MemberDoc m)
- {
- SourcePosition pos = m.position();
- int len = p.length;
- ParameterInfo[] q = new ParameterInfo[len];
- for (int i=0; i<len; i++) {
- q[i] = Converter.convertParameter(p[i], pos);
- }
- return q;
- }
-
- private static TypeInfo[] convertTypes(Type[] p)
- {
- if (p == null) return null;
- int len = p.length;
- TypeInfo[] q = new TypeInfo[len];
- for (int i=0; i<len; i++) {
- q[i] = Converter.obtainType(p[i]);
- }
- return q;
- }
-
- private Converter()
- {
- }
-
- private static class ClassNeedingInit
- {
- ClassNeedingInit(ClassDoc c, ClassInfo cl)
- {
- this.c = c;
- this.cl = cl;
- }
- ClassDoc c;
- ClassInfo cl;
- };
- private static ArrayList<ClassNeedingInit> mClassesNeedingInit
- = new ArrayList<ClassNeedingInit>();
-
- static ClassInfo obtainClass(ClassDoc o)
- {
- return (ClassInfo)mClasses.obtain(o);
- }
- private static Cache mClasses = new Cache()
- {
- protected Object make(Object o)
- {
- ClassDoc c = (ClassDoc)o;
- ClassInfo cl = new ClassInfo(
- c,
- c.getRawCommentText(),
- Converter.convertSourcePosition(c.position()),
- c.isPublic(),
- c.isProtected(),
- c.isPackagePrivate(),
- c.isPrivate(),
- c.isStatic(),
- c.isInterface(),
- c.isAbstract(),
- c.isOrdinaryClass(),
- c.isException(),
- c.isError(),
- c.isEnum(),
- (c instanceof AnnotationTypeDoc),
- c.isFinal(),
- c.isIncluded(),
- c.name(),
- c.qualifiedName(),
- c.qualifiedTypeName(),
- c.isPrimitive());
- if (mClassesNeedingInit != null) {
- mClassesNeedingInit.add(new ClassNeedingInit(c, cl));
- }
- return cl;
- }
- protected void made(Object o, Object r)
- {
- if (mClassesNeedingInit == null) {
- initClass((ClassDoc)o, (ClassInfo)r);
- ((ClassInfo)r).init2();
- }
- }
- ClassInfo[] all()
- {
- return (ClassInfo[])mCache.values().toArray(new ClassInfo[mCache.size()]);
- }
- };
-
- private static MethodInfo[] getHiddenMethods(MethodDoc[] methods){
- if (methods == null) return null;
- ArrayList<MethodInfo> out = new ArrayList<MethodInfo>();
- int N = methods.length;
- for (int i=0; i<N; i++) {
- MethodInfo m = Converter.obtainMethod(methods[i]);
- //System.out.println(m.toString() + ": ");
- //for (TypeInfo ti : m.getTypeParameters()){
- // if (ti.asClassInfo() != null){
- //System.out.println(" " +ti.asClassInfo().toString());
- //} else {
- //System.out.println(" null");
- //}
- //}
- if (m.isHidden()) {
- out.add(m);
- }
- }
- return out.toArray(new MethodInfo[out.size()]);
- }
-
- /**
- * Convert MethodDoc[] into MethodInfo[]. Also filters according
- * to the -private, -public option, because the filtering doesn't seem
- * to be working in the ClassDoc.constructors(boolean) call.
- */
- private static MethodInfo[] convertMethods(MethodDoc[] methods)
- {
- if (methods == null) return null;
- ArrayList<MethodInfo> out = new ArrayList<MethodInfo>();
- int N = methods.length;
- for (int i=0; i<N; i++) {
- MethodInfo m = Converter.obtainMethod(methods[i]);
- //System.out.println(m.toString() + ": ");
- //for (TypeInfo ti : m.getTypeParameters()){
- // if (ti.asClassInfo() != null){
- //System.out.println(" " +ti.asClassInfo().toString());
- //} else {
- //System.out.println(" null");
- //}
- //}
- if (m.checkLevel()) {
- out.add(m);
- }
- }
- return out.toArray(new MethodInfo[out.size()]);
- }
-
- private static MethodInfo[] convertMethods(ConstructorDoc[] methods)
- {
- if (methods == null) return null;
- ArrayList<MethodInfo> out = new ArrayList<MethodInfo>();
- int N = methods.length;
- for (int i=0; i<N; i++) {
- MethodInfo m = Converter.obtainMethod(methods[i]);
- if (m.checkLevel()) {
- out.add(m);
- }
- }
- return out.toArray(new MethodInfo[out.size()]);
- }
-
- private static MethodInfo[] convertNonWrittenConstructors(ConstructorDoc[] methods)
- {
- if (methods == null) return null;
- ArrayList<MethodInfo> out = new ArrayList<MethodInfo>();
- int N = methods.length;
- for (int i=0; i<N; i++) {
- MethodInfo m = Converter.obtainMethod(methods[i]);
- if (!m.checkLevel()) {
- out.add(m);
- }
- }
- return out.toArray(new MethodInfo[out.size()]);
- }
-
- private static MethodInfo obtainMethod(MethodDoc o)
- {
- return (MethodInfo)mMethods.obtain(o);
- }
- private static MethodInfo obtainMethod(ConstructorDoc o)
- {
- return (MethodInfo)mMethods.obtain(o);
- }
- private static Cache mMethods = new Cache()
- {
- protected Object make(Object o)
- {
- if (o instanceof AnnotationTypeElementDoc) {
- AnnotationTypeElementDoc m = (AnnotationTypeElementDoc)o;
- MethodInfo result = new MethodInfo(
- m.getRawCommentText(),
- Converter.convertTypes(m.typeParameters()),
- m.name(), m.signature(),
- Converter.obtainClass(m.containingClass()),
- Converter.obtainClass(m.containingClass()),
- m.isPublic(), m.isProtected(),
- m.isPackagePrivate(), m.isPrivate(),
- m.isFinal(), m.isStatic(), m.isSynthetic(),
- m.isAbstract(), m.isSynchronized(), m.isNative(), true,
- "annotationElement",
- m.flatSignature(),
- Converter.obtainMethod(m.overriddenMethod()),
- Converter.obtainType(m.returnType()),
- Converter.convertParameters(m.parameters(), m),
- Converter.convertClasses(m.thrownExceptions()),
- Converter.convertSourcePosition(m.position()),
- Converter.convertAnnotationInstances(m.annotations())
- );
- result.setVarargs(m.isVarArgs());
- result.init(Converter.obtainAnnotationValue(m.defaultValue(), result));
- return result;
- }
- else if (o instanceof MethodDoc) {
- MethodDoc m = (MethodDoc)o;
- MethodInfo result = new MethodInfo(
- m.getRawCommentText(),
- Converter.convertTypes(m.typeParameters()),
- m.name(), m.signature(),
- Converter.obtainClass(m.containingClass()),
- Converter.obtainClass(m.containingClass()),
- m.isPublic(), m.isProtected(),
- m.isPackagePrivate(), m.isPrivate(),
- m.isFinal(), m.isStatic(), m.isSynthetic(),
- m.isAbstract(), m.isSynchronized(), m.isNative(), false,
- "method",
- m.flatSignature(),
- Converter.obtainMethod(m.overriddenMethod()),
- Converter.obtainType(m.returnType()),
- Converter.convertParameters(m.parameters(), m),
- Converter.convertClasses(m.thrownExceptions()),
- Converter.convertSourcePosition(m.position()),
- Converter.convertAnnotationInstances(m.annotations())
- );
- result.setVarargs(m.isVarArgs());
- result.init(null);
- return result;
- }
- else {
- ConstructorDoc m = (ConstructorDoc)o;
- MethodInfo result = new MethodInfo(
- m.getRawCommentText(),
- Converter.convertTypes(m.typeParameters()),
- m.name(), m.signature(),
- Converter.obtainClass(m.containingClass()),
- Converter.obtainClass(m.containingClass()),
- m.isPublic(), m.isProtected(),
- m.isPackagePrivate(), m.isPrivate(),
- m.isFinal(), m.isStatic(), m.isSynthetic(),
- false, m.isSynchronized(), m.isNative(), false,
- "constructor",
- m.flatSignature(),
- null,
- null,
- Converter.convertParameters(m.parameters(), m),
- Converter.convertClasses(m.thrownExceptions()),
- Converter.convertSourcePosition(m.position()),
- Converter.convertAnnotationInstances(m.annotations())
- );
- result.setVarargs(m.isVarArgs());
- result.init(null);
- return result;
- }
- }
- };
-
-
- private static FieldInfo[] convertFields(FieldDoc[] fields)
- {
- if (fields == null) return null;
- ArrayList<FieldInfo> out = new ArrayList<FieldInfo>();
- int N = fields.length;
- for (int i=0; i<N; i++) {
- FieldInfo f = Converter.obtainField(fields[i]);
- if (f.checkLevel()) {
- out.add(f);
- }
- }
- return out.toArray(new FieldInfo[out.size()]);
- }
-
- private static FieldInfo obtainField(FieldDoc o)
- {
- return (FieldInfo)mFields.obtain(o);
- }
- private static FieldInfo obtainField(ConstructorDoc o)
- {
- return (FieldInfo)mFields.obtain(o);
- }
- private static Cache mFields = new Cache()
- {
- protected Object make(Object o)
- {
- FieldDoc f = (FieldDoc)o;
- return new FieldInfo(f.name(),
- Converter.obtainClass(f.containingClass()),
- Converter.obtainClass(f.containingClass()),
- f.isPublic(), f.isProtected(),
- f.isPackagePrivate(), f.isPrivate(),
- f.isFinal(), f.isStatic(), f.isTransient(), f.isVolatile(),
- f.isSynthetic(),
- Converter.obtainType(f.type()),
- f.getRawCommentText(), f.constantValue(),
- Converter.convertSourcePosition(f.position()),
- Converter.convertAnnotationInstances(f.annotations())
- );
- }
- };
-
- private static PackageInfo obtainPackage(PackageDoc o)
- {
- return (PackageInfo)mPackagees.obtain(o);
- }
- private static Cache mPackagees = new Cache()
- {
- protected Object make(Object o)
- {
- PackageDoc p = (PackageDoc)o;
- return new PackageInfo(p, p.name(),
- Converter.convertSourcePosition(p.position()));
- }
- };
-
- private static TypeInfo obtainType(Type o)
- {
- return (TypeInfo)mTypes.obtain(o);
- }
- private static Cache mTypes = new Cache()
- {
- protected Object make(Object o)
- {
- Type t = (Type)o;
- String simpleTypeName;
- if (t instanceof ClassDoc) {
- simpleTypeName = ((ClassDoc)t).name();
- } else {
- simpleTypeName = t.simpleTypeName();
- }
- TypeInfo ti = new TypeInfo(t.isPrimitive(), t.dimension(),
- simpleTypeName, t.qualifiedTypeName(),
- Converter.obtainClass(t.asClassDoc()));
- return ti;
- }
- protected void made(Object o, Object r)
- {
- Type t = (Type)o;
- TypeInfo ti = (TypeInfo)r;
- if (t.asParameterizedType() != null) {
- ti.setTypeArguments(Converter.convertTypes(
- t.asParameterizedType().typeArguments()));
- }
- else if (t instanceof ClassDoc) {
- ti.setTypeArguments(Converter.convertTypes(((ClassDoc)t).typeParameters()));
- }
- else if (t.asTypeVariable() != null) {
- ti.setBounds(null, Converter.convertTypes((t.asTypeVariable().bounds())));
- ti.setIsTypeVariable(true);
- }
- else if (t.asWildcardType() != null) {
- ti.setIsWildcard(true);
- ti.setBounds(Converter.convertTypes(t.asWildcardType().superBounds()),
- Converter.convertTypes(t.asWildcardType().extendsBounds()));
- }
- }
- protected Object keyFor(Object o)
- {
- Type t = (Type)o;
- String keyString = o.getClass().getName() + "/" + o.toString() + "/";
- if (t.asParameterizedType() != null){
- keyString += t.asParameterizedType().toString() +"/";
- if (t.asParameterizedType().typeArguments() != null){
- for(Type ty : t.asParameterizedType().typeArguments()){
- keyString += ty.toString() + "/";
- }
- }
- }else{
- keyString += "NoParameterizedType//";
- }
- if (t.asTypeVariable() != null){
- keyString += t.asTypeVariable().toString() +"/";
- if (t.asTypeVariable().bounds() != null){
- for(Type ty : t.asTypeVariable().bounds()){
- keyString += ty.toString() + "/";
- }
- }
- }else{
- keyString += "NoTypeVariable//";
- }
- if (t.asWildcardType() != null){
- keyString += t.asWildcardType().toString() +"/";
- if (t.asWildcardType().superBounds() != null){
- for(Type ty : t.asWildcardType().superBounds()){
- keyString += ty.toString() + "/";
- }
- }
- if (t.asWildcardType().extendsBounds() != null){
- for(Type ty : t.asWildcardType().extendsBounds()){
- keyString += ty.toString() + "/";
- }
- }
- }else{
- keyString += "NoWildCardType//";
- }
-
-
-
- return keyString;
- }
- };
-
-
-
- private static MemberInfo obtainMember(MemberDoc o)
- {
- return (MemberInfo)mMembers.obtain(o);
- }
- private static Cache mMembers = new Cache()
- {
- protected Object make(Object o)
- {
- if (o instanceof MethodDoc) {
- return Converter.obtainMethod((MethodDoc)o);
- }
- else if (o instanceof ConstructorDoc) {
- return Converter.obtainMethod((ConstructorDoc)o);
- }
- else if (o instanceof FieldDoc) {
- return Converter.obtainField((FieldDoc)o);
- }
- else {
- return null;
- }
- }
- };
-
- private static AnnotationInstanceInfo[] convertAnnotationInstances(AnnotationDesc[] orig)
- {
- int len = orig.length;
- AnnotationInstanceInfo[] out = new AnnotationInstanceInfo[len];
- for (int i=0; i<len; i++) {
- out[i] = Converter.obtainAnnotationInstance(orig[i]);
- }
- return out;
- }
-
-
- private static AnnotationInstanceInfo obtainAnnotationInstance(AnnotationDesc o)
- {
- return (AnnotationInstanceInfo)mAnnotationInstances.obtain(o);
- }
- private static Cache mAnnotationInstances = new Cache()
- {
- protected Object make(Object o)
- {
- AnnotationDesc a = (AnnotationDesc)o;
- ClassInfo annotationType = Converter.obtainClass(a.annotationType());
- AnnotationDesc.ElementValuePair[] ev = a.elementValues();
- AnnotationValueInfo[] elementValues = new AnnotationValueInfo[ev.length];
- for (int i=0; i<ev.length; i++) {
- elementValues[i] = obtainAnnotationValue(ev[i].value(),
- Converter.obtainMethod(ev[i].element()));
- }
- return new AnnotationInstanceInfo(annotationType, elementValues);
- }
- };
-
-
- private abstract static class Cache
- {
- void put(Object key, Object value)
- {
- mCache.put(key, value);
- }
- Object obtain(Object o)
- {
- if (o == null ) {
- return null;
- }
- Object k = keyFor(o);
- Object r = mCache.get(k);
- if (r == null) {
- r = make(o);
- mCache.put(k, r);
- made(o, r);
- }
- return r;
- }
- protected HashMap<Object,Object> mCache = new HashMap<Object,Object>();
- protected abstract Object make(Object o);
- protected void made(Object o, Object r)
- {
- }
- protected Object keyFor(Object o) { return o; }
- Object[] all() { return null; }
- }
-
- // annotation values
- private static HashMap<AnnotationValue,AnnotationValueInfo> mAnnotationValues = new HashMap();
- private static HashSet<AnnotationValue> mAnnotationValuesNeedingInit = new HashSet();
-
- private static AnnotationValueInfo obtainAnnotationValue(AnnotationValue o, MethodInfo element)
- {
- if (o == null) {
- return null;
- }
- AnnotationValueInfo v = mAnnotationValues.get(o);
- if (v != null) return v;
- v = new AnnotationValueInfo(element);
- mAnnotationValues.put(o, v);
- if (mAnnotationValuesNeedingInit != null) {
- mAnnotationValuesNeedingInit.add(o);
- } else {
- initAnnotationValue(o, v);
- }
- return v;
- }
-
- private static void initAnnotationValue(AnnotationValue o, AnnotationValueInfo v) {
- Object orig = o.value();
- Object converted;
- if (orig instanceof Type) {
- // class literal
- converted = Converter.obtainType((Type)orig);
- }
- else if (orig instanceof FieldDoc) {
- // enum constant
- converted = Converter.obtainField((FieldDoc)orig);
- }
- else if (orig instanceof AnnotationDesc) {
- // annotation instance
- converted = Converter.obtainAnnotationInstance((AnnotationDesc)orig);
- }
- else if (orig instanceof AnnotationValue[]) {
- AnnotationValue[] old = (AnnotationValue[])orig;
- AnnotationValueInfo[] array = new AnnotationValueInfo[old.length];
- for (int i=0; i<array.length; i++) {
- array[i] = Converter.obtainAnnotationValue(old[i], null);
- }
- converted = array;
- }
- else {
- converted = orig;
- }
- v.init(converted);
- }
-
- private static void finishAnnotationValueInit()
- {
- int depth = 0;
- while (mAnnotationValuesNeedingInit.size() > 0) {
- HashSet<AnnotationValue> set = mAnnotationValuesNeedingInit;
- mAnnotationValuesNeedingInit = new HashSet();
- for (AnnotationValue o: set) {
- AnnotationValueInfo v = mAnnotationValues.get(o);
- initAnnotationValue(o, v);
- }
- depth++;
- }
- mAnnotationValuesNeedingInit = null;
- }
-}