Skip to content
Snippets Groups Projects
Commit 76e49b4f authored by jeffliu's avatar jeffliu
Browse files

[115141] The API Scanner should be able to run from within the Eclipse workspace

parent ff5aca05
No related branches found
No related tags found
No related merge requests found
...@@ -151,26 +151,62 @@ public class API2ComponentAPI implements IClassVisitor ...@@ -151,26 +151,62 @@ public class API2ComponentAPI implements IClassVisitor
public List getImplClasses(String interfaceName) public List getImplClasses(String interfaceName)
{ {
List list = new ArrayList(); List list = new ArrayList();
getImplClasses(interfaceName, list);
return list;
}
private void getImplClasses(String interfaceName, List list)
{
List implClasses = (List)interface2ImplClasses.get(interfaceName); List implClasses = (List)interface2ImplClasses.get(interfaceName);
if (implClasses != null) if (implClasses != null)
{ {
list.addAll(implClasses); list.addAll(implClasses);
for (Iterator it = implClasses.iterator(); it.hasNext();) for (Iterator it = implClasses.iterator(); it.hasNext();)
getSubClasses((String)it.next(), list); {
String className = (String)it.next();
if (interface2ImplClasses.get(className) != null)
getImplClasses(className, list);
else
{
getSubClasses(className, list);
getSuperClasses(className, list);
}
}
} }
return list;
} }
private void getSubClasses(String superClassName, List list) private void getSuperClasses(String className, List list)
{ {
List subClasses = (List)super2SubClasses.get(superClassName); ClassHierarchyInfo info = (ClassHierarchyInfo)super2SubClasses.get(className);
if (subClasses != null) if (info != null)
{ {
list.addAll(subClasses); String superClassName = info.getSuperClass();
for (Iterator it = subClasses.iterator(); it.hasNext();) while (superClassName != null)
getSubClasses((String)it.next(), list); {
list.add(superClassName);
superClassName = null;
info = (ClassHierarchyInfo)super2SubClasses.get(superClassName);
if (info != null)
superClassName = info.getSuperClass();
}
}
}
private void getSubClasses(String className, List list)
{
ClassHierarchyInfo info = (ClassHierarchyInfo)super2SubClasses.get(className);
if (info != null)
{
List subClasses = info.getSubClass();
if (subClasses != null)
{
list.addAll(subClasses);
for (Iterator it = subClasses.iterator(); it.hasNext();)
getSubClasses((String)it.next(), list);
}
} }
} }
private Map pluginId2CompXML = new HashMap(); private Map pluginId2CompXML = new HashMap();
public void execute() public void execute()
...@@ -259,27 +295,27 @@ public class API2ComponentAPI implements IClassVisitor ...@@ -259,27 +295,27 @@ public class API2ComponentAPI implements IClassVisitor
if (readInterface) if (readInterface)
{ {
String superClassName = new String(reader.getSuperclassName()).replace('/', '.'); String superClassName = new String(reader.getSuperclassName()).replace('/', '.');
List subClasses = (List)super2SubClasses.get(superClassName); ClassHierarchyInfo info = new ClassHierarchyInfo();
if (subClasses == null) info.setSuperClass(superClassName);
super2SubClasses.put(className, info);
info = (ClassHierarchyInfo)super2SubClasses.get(superClassName);
if (info == null)
{ {
subClasses = new ArrayList(1); info = new ClassHierarchyInfo();
super2SubClasses.put(superClassName, subClasses); super2SubClasses.put(superClassName, info);
} }
subClasses.add(className); info.addSubClass(className);
if (!reader.isInterface()) char[][] names = reader.getInterfaceNames();
for (int j = 0; j < names.length; j++)
{ {
char[][] names = reader.getInterfaceNames(); String interfaceName = new String(names[j]).replace('/', '.');
for (int j = 0; j < names.length; j++) List implClasses = (List)interface2ImplClasses.get(interfaceName);
if (implClasses == null)
{ {
String interfaceName = new String(names[j]).replace('/', '.'); implClasses = new ArrayList(1);
List implClasses = (List)interface2ImplClasses.get(interfaceName); interface2ImplClasses.put(interfaceName, implClasses);
if (implClasses == null)
{
implClasses = new ArrayList(1);
interface2ImplClasses.put(interfaceName, implClasses);
}
implClasses.add(className);
} }
implClasses.add(className);
} }
} }
if (!isSkipAPIGen() && isAPI) if (!isSkipAPIGen() && isAPI)
...@@ -545,6 +581,34 @@ public class API2ComponentAPI implements IClassVisitor ...@@ -545,6 +581,34 @@ public class API2ComponentAPI implements IClassVisitor
} }
} }
private class ClassHierarchyInfo
{
private String superClass;
private List subClass;
public List getSubClass()
{
return subClass;
}
public void addSubClass(String subClass)
{
if (this.subClass == null)
this.subClass = new ArrayList(1);
this.subClass.add(subClass);
}
public String getSuperClass()
{
return superClass;
}
public void setSuperClass(String superClass)
{
this.superClass = superClass;
}
}
public static void main(String[] args) public static void main(String[] args)
{ {
CommandOptionParser optionParser = new CommandOptionParser(args); CommandOptionParser optionParser = new CommandOptionParser(args);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment