package jdepend.parse.impl; import java.io.PrintWriter; import java.util.ArrayList; import java.util.List; import jdepend.framework.file.AnalyzeData; import jdepend.metadata.JavaClass; import jdepend.parse.ParseConfigurator; import jdepend.parse.ParseListener; import com.jacob.activeX.ActiveXComponent; import com.jacob.com.Dispatch; public class CSharpClassBuilder extends AbstractClassBuilder { private PackageFilter filter; private int countClasses = -1; private List<JavaClass> classes; public CSharpClassBuilder(ParseConfigurator conf) { this.setConf(conf); this.filter = conf.getPackageFilter(); } @Override public List<JavaClass> build(AnalyzeData data) { if (this.classes == null || this.getConf().getEveryClassBuild()) { classes = new ArrayList<JavaClass>(); // 调用C#代码 ActiveXComponent builder = new ActiveXComponent("parse.Builder"); this.classes = (List<JavaClass>) Dispatch.call(builder, "build", new Object[] { classes }).toJavaObject(); // (new JavaClassRelationCreator(this.getConf())).create(classes); this.onClassBuild(classes); } return this.classes; } @Override public PackageFilter getFilter() { return this.filter; } @Override public void addParseListener(ParseListener listener) { // TODO Auto-generated method stub } @Override public void setWriter(PrintWriter writer) { // TODO Auto-generated method stub } }