/* * Copyright 2008 CoreMedia AG * * 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. */ package net.jangaroo.joodoc; import com.sun.tools.javac.util.List; import com.sun.tools.javac.util.ListBuffer; import com.sun.tools.javadoc.*; import net.jangaroo.jooc.Jooc; import net.jangaroo.jooc.CompilationUnit; import net.jangaroo.jooc.AnalyzeContext; import java.io.File; import java.util.ArrayList; /** * Created by IntelliJ IDEA. * User: htewis * Date: 19.07.2004 * Time: 15:49:16 * To change this template use File | Settings | File Templates. */ public class JoodocTool extends Jooc { private com.sun.tools.javadoc.Messager messager; //private final JoodocClassReader reader; public JoodocTool(Messager messager) { this.messager = messager; //this.reader=JoodocClassReader.instance0(new com.sun.tools.javac.v8.util.Context()); } public RootDocImpl getRootDocImpl(String docLocale, String encoding, ModifierFilter showAccess, List list, List optionList, boolean breakiterator, List list2, List list3, boolean flag) { ListBuffer listbuffer = new ListBuffer(); ListBuffer listbuffer1 = new ListBuffer(); ListBuffer listbuffer2 = new ListBuffer(); for (List list4 = list; list4.nonEmpty(); list4 = list4.tail) { String s2 = (String) list4.head; if (s2.endsWith(JS2_SUFFIX) && (new File(s2)).exists()) { messager.notice("main.Loading_source_file", s2); processSource(s2); continue; } if (isValidPackageName(s2)) { listbuffer = listbuffer.append(s2); continue; } if (s2.endsWith(JS2_SUFFIX)) messager.error(null, "main.file_not_found", s2); else messager.error(null, "main.illegal_package_name", s2); } ArrayList units = getCompilationUnits(); for (int i = 0; i < units.size(); i++) { CompilationUnit unit = (CompilationUnit) units.get(i); unit.analyze(new AnalyzeContext()); // searchSubPackages(list2, listbuffer, list3); //for(List list5 = listbuffer.toList(); list5.nonEmpty(); list5 = list5.tail) // parsePackageClasses((String)list5.head, listbuffer2, list3); // } return new RootDocImpl(new Context(getCompilationUnits()),optionList); } boolean isValidPackageName (String s) { int i; while ((i = s.indexOf('.')) != -1) { if (!isValidClassName(s.substring(0, i))) return false; s = s.substring(i + 1); } return isValidClassName(s); } private static boolean isValidClassName(String s) { if(s.length() < 1) return false; if(!Character.isJavaIdentifierStart(s.charAt(0))) return false; for(int i = 1; i < s.length(); i++) if(!Character.isJavaIdentifierPart(s.charAt(i))) return false; return true; } /*private void searchSubPackages(List list, ListBuffer listbuffer, List list1) { for(List list2 = list; list2.nonEmpty(); list2 = list2.tail) searchSubPackages((String)list2.head, listbuffer, list1); }*/ /* private void searchSubPackages(String s, ListBuffer listbuffer, List list) { if(list.contains(s)) return; String s1 = reader.sourceClassPath + File.pathSeparatorChar + reader.classPath; int i = s1.length(); int j = 0; String s2 = s.replace('.', File.separatorChar); boolean flag = false; int k; for(; j < i; j = k + 1) { k = s1.indexOf(File.pathSeparatorChar, j); String s3 = s1.substring(j, k); File file = new File(s3, s2); String as[] = file.list(); if(as == null) continue; for(int l = 0; l < as.length; l++) { if(!flag && (isValidJooSourceFile(as[l])) && !listbuffer.contains(s)) { listbuffer.append(s); flag = true; continue; } if((new File(file.getPath(), as[l])).isDirectory()) searchSubPackages(s + "." + as[l], listbuffer, list); } } }*/ private static boolean isValidJooSourceFile(String s) { if(!s.endsWith(JS2_SUFFIX)) { return false; } else { String s1 = s.substring(0, s.length() - JS2_SUFFIX.length()); return isValidClassName(s1); } } /* private void parsePackageClasses(String s, ListBuffer listbuffer, List list) { if(list.contains(s)) return; boolean flag = false; String s1 = reader.sourceClassPath; if(s1 == null) s1 = reader.classPath; int i = s1.length(); int j = 0; messager.notice("main.Loading_source_files_for_package", s); s = s.replace('.', File.separatorChar); int k; for(; j < i; j = k + 1) { k = s1.indexOf(File.separatorChar, j); String s2 = s1.substring(j, k); File file = new File(s2, s); String as[] = file.list(); if(as == null) continue; String s3 = file.getAbsolutePath(); if(!s3.endsWith(File.separator)) s3 = s3 + File.separator; for(int l = 0; l < as.length; l++) if(isValidJooSourceFile(as[l])) { String s4 = s3 + as[l]; listbuffer.append(parse(s4)); flag = true; } } if(!flag) messager.warning(null, "main.no_source_files_for_package", s.replace(File.separatorChar, '.')); }*/ }