001: /*
002: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
003: *
004: * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
005: *
006: * The contents of this file are subject to the terms of either the GNU
007: * General Public License Version 2 only ("GPL") or the Common
008: * Development and Distribution License("CDDL") (collectively, the
009: * "License"). You may not use this file except in compliance with the
010: * License. You can obtain a copy of the License at
011: * http://www.netbeans.org/cddl-gplv2.html
012: * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
013: * specific language governing permissions and limitations under the
014: * License. When distributing the software, include this License Header
015: * Notice in each file and include the License file at
016: * nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this
017: * particular file as subject to the "Classpath" exception as provided
018: * by Sun in the GPL Version 2 section of the License file that
019: * accompanied this code. If applicable, add the following below the
020: * License Header, with the fields enclosed by brackets [] replaced by
021: * your own identifying information:
022: * "Portions Copyrighted [year] [name of copyright owner]"
023: *
024: * Contributor(s):
025: *
026: * The Original Software is NetBeans. The Initial Developer of the Original
027: * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
028: * Microsystems, Inc. All Rights Reserved.
029: *
030: * If you wish your version of this file to be governed by only the CDDL
031: * or only the GPL Version 2, indicate your decision by adding
032: * "[Contributor] elects to include this software in this distribution
033: * under the [CDDL or GPL Version 2] license." If you do not indicate a
034: * single choice of license, a recipient has the option to distribute
035: * your version of this file under either the CDDL, the GPL Version 2 or
036: * to extend the choice of license to its licensees as provided above.
037: * However, if you add GPL Version 2 code and therefore, elected the GPL
038: * Version 2 license, then the option applies only if the new code is
039: * made subject to such option by the copyright holder.
040: */
041:
042: package org.netbeans.modules.javadoc.search;
043:
044: import java.io.File;
045: import java.util.List;
046: import java.util.LinkedList;
047: import org.netbeans.junit.NbTestCase;
048: import org.openide.filesystems.LocalFileSystem;
049: import org.openide.filesystems.FileObject;
050:
051: /**
052: *
053: * @author Jan Pokorsky
054: */
055: public final class SearchThreadJdk12Test extends NbTestCase {
056:
057: private LocalFileSystem fs;
058: private static final String JDK14_INDEX_PATH = "docs_jdk14/api/index-files";
059: private static final String JDK15_INDEX_PATH = "docs_jdk15/api/index-files";
060:
061: public SearchThreadJdk12Test(String testName) {
062: super (testName);
063: }
064:
065: protected void setUp() throws Exception {
066: File dataFile = getDataDir();
067: assertNotNull("missing data file", dataFile);
068: fs = new LocalFileSystem();
069: fs.setRootDirectory(dataFile);
070: }
071:
072: public void testSearchInJDK14_Class() throws Exception {
073: FileObject idxFolder = fs.findResource(JDK14_INDEX_PATH);
074: assertNotNull(idxFolder);
075:
076: String toFind = "DataFlavor";
077: MyDocIndexItemConsumer diiConsumer = new MyDocIndexItemConsumer();
078: SearchThreadJdk12 search = new SearchThreadJdk12(toFind,
079: idxFolder, diiConsumer, true);
080: search.run(); // not go() since we do not want to post the task to another thread
081: assertTrue("not finished", diiConsumer.isFinished);
082: assertEquals("search result", 6, diiConsumer.l.size());
083:
084: // class DataFlavor
085: DocIndexItem dii = (DocIndexItem) diiConsumer.l.get(0);
086: assertEquals("field", "DataFlavor", dii.getField());
087: assertEquals("declaring class", "DataFlavor", dii
088: .getDeclaringClass());
089: assertEquals("remark",
090: " - class java.awt.datatransfer.DataFlavor.", dii
091: .getRemark());
092: assertEquals("package", "java.awt.datatransfer.", dii
093: .getPackage());
094: assertTrue("url", dii.getURL().toString().endsWith(
095: "api/java/awt/datatransfer/DataFlavor.html"));
096: // constructor
097: dii = (DocIndexItem) diiConsumer.l.get(1);
098: assertEquals("field", "DataFlavor()", dii.getField());
099: assertEquals("declaring class", "DataFlavor", dii
100: .getDeclaringClass());
101: assertEquals(
102: "remark",
103: " - Constructor for class java.awt.datatransfer.DataFlavor",
104: dii.getRemark());
105: assertEquals("package", "java.awt.datatransfer.", dii
106: .getPackage());
107: assertTrue(
108: "url",
109: dii
110: .getURL()
111: .toString()
112: .endsWith(
113: "api/java/awt/datatransfer/DataFlavor.html#DataFlavor()"));
114: }
115:
116: public void testSearchInJDK14_Interface() throws Exception {
117: FileObject idxFolder = fs.findResource(JDK14_INDEX_PATH);
118: assertNotNull(idxFolder);
119:
120: String toFind = "DatabaseMetaData";
121: MyDocIndexItemConsumer diiConsumer = new MyDocIndexItemConsumer();
122: SearchThreadJdk12 search = new SearchThreadJdk12(toFind,
123: idxFolder, diiConsumer, true);
124: search.run(); // not go() since we do not want to post the task to another thread
125: assertTrue("not finished", diiConsumer.isFinished);
126: assertEquals("search result", 1, diiConsumer.l.size());
127:
128: // DatabaseMetaData
129: DocIndexItem dii = (DocIndexItem) diiConsumer.l.get(0);
130: assertEquals("field", "DatabaseMetaData", dii.getField());
131: assertEquals("declaring class", "DatabaseMetaData", dii
132: .getDeclaringClass());
133: assertEquals("remark",
134: " - interface java.sql.DatabaseMetaData.", dii
135: .getRemark());
136: assertEquals("package", "java.sql.", dii.getPackage());
137: assertTrue("url", dii.getURL().toString().endsWith(
138: "api/java/sql/DatabaseMetaData.html"));
139: }
140:
141: public void testSearchInJDK14_Exception() throws Exception {
142: FileObject idxFolder = fs.findResource(JDK14_INDEX_PATH);
143: assertNotNull(idxFolder);
144:
145: String toFind = "DataFormatException";
146: MyDocIndexItemConsumer diiConsumer = new MyDocIndexItemConsumer();
147: SearchThreadJdk12 search = new SearchThreadJdk12(toFind,
148: idxFolder, diiConsumer, true);
149: search.run(); // not go() since we do not want to post the task to another thread
150: assertTrue("not finished", diiConsumer.isFinished);
151: assertEquals("search result", 3, diiConsumer.l.size());
152:
153: // DataFormatException
154: DocIndexItem dii = (DocIndexItem) diiConsumer.l.get(0);
155: assertEquals("field", "DataFormatException", dii.getField());
156: assertEquals("declaring class", "DataFormatException", dii
157: .getDeclaringClass());
158: assertEquals("remark",
159: " - exception java.util.zip.DataFormatException.", dii
160: .getRemark());
161: assertEquals("package", "java.util.zip.", dii.getPackage());
162: assertTrue("url", dii.getURL().toString().endsWith(
163: "api/java/util/zip/DataFormatException.html"));
164:
165: // DataFormatException(String) - constructor
166: dii = (DocIndexItem) diiConsumer.l.get(2);
167: assertEquals("field", "DataFormatException(String)", dii
168: .getField());
169: assertEquals("declaring class", "DataFormatException", dii
170: .getDeclaringClass());
171: assertEquals(
172: "remark",
173: " - Constructor for class java.util.zip.DataFormatException",
174: dii.getRemark());
175: assertEquals("package", "java.util.zip.", dii.getPackage());
176: assertTrue(
177: "url",
178: dii
179: .getURL()
180: .toString()
181: .endsWith(
182: "api/java/util/zip/DataFormatException.html#DataFormatException(java.lang.String)"));
183: }
184:
185: public void testSearchInJDK14_Method() throws Exception {
186: FileObject idxFolder = fs.findResource(JDK14_INDEX_PATH);
187: assertNotNull(idxFolder);
188:
189: String toFind = "damageLineRange";
190: MyDocIndexItemConsumer diiConsumer = new MyDocIndexItemConsumer();
191: SearchThreadJdk12 search = new SearchThreadJdk12(toFind,
192: idxFolder, diiConsumer, true);
193: search.run(); // not go() since we do not want to post the task to another thread
194: assertTrue("not finished", diiConsumer.isFinished);
195: assertEquals("search result", 1, diiConsumer.l.size());
196:
197: // damageLineRange(int, int, Shape, Component)
198: DocIndexItem dii = (DocIndexItem) diiConsumer.l.get(0);
199: assertEquals("field",
200: "damageLineRange(int, int, Shape, Component)", dii
201: .getField());
202: assertEquals("declaring class", "PlainView", dii
203: .getDeclaringClass());
204: assertEquals("remark",
205: " - Method in class javax.swing.text.PlainView", dii
206: .getRemark());
207: assertEquals("package", "javax.swing.text.", dii.getPackage());
208: assertTrue(
209: "url",
210: dii
211: .getURL()
212: .toString()
213: .endsWith(
214: "api/javax/swing/text/PlainView.html#damageLineRange(int, int, java.awt.Shape, java.awt.Component)"));
215: }
216:
217: public void testSearchInJDK14_Variables() throws Exception {
218: FileObject idxFolder = fs.findResource(JDK14_INDEX_PATH);
219: assertNotNull(idxFolder);
220:
221: String toFind = "darkShadow";
222: MyDocIndexItemConsumer diiConsumer = new MyDocIndexItemConsumer();
223: SearchThreadJdk12 search = new SearchThreadJdk12(toFind,
224: idxFolder, diiConsumer, true);
225: search.run(); // not go() since we do not want to post the task to another thread
226: assertTrue("not finished", diiConsumer.isFinished);
227: assertEquals("search result", 4, diiConsumer.l.size());
228:
229: // darkShadow
230: DocIndexItem dii = (DocIndexItem) diiConsumer.l.get(0);
231: assertEquals("field", "darkShadow", dii.getField());
232: assertEquals("declaring class", "BasicBorders.ButtonBorder",
233: dii.getDeclaringClass());
234: assertEquals(
235: "remark",
236: " - Variable in class javax.swing.plaf.basic.BasicBorders.ButtonBorder",
237: dii.getRemark());
238: assertEquals("package", "javax.swing.plaf.basic.", dii
239: .getPackage());
240: assertTrue(
241: "url",
242: dii
243: .getURL()
244: .toString()
245: .endsWith(
246: "api/javax/swing/plaf/basic/BasicBorders.ButtonBorder.html#darkShadow"));
247:
248: // darkShadowColor - static variable
249: dii = (DocIndexItem) diiConsumer.l.get(3);
250: assertEquals("field", "darkShadowColor", dii.getField());
251: assertEquals("declaring class", "MetalSliderUI", dii
252: .getDeclaringClass());
253: assertEquals(
254: "remark",
255: " - Static variable in class javax.swing.plaf.metal.MetalSliderUI",
256: dii.getRemark());
257: assertEquals("package", "javax.swing.plaf.metal.", dii
258: .getPackage());
259: assertTrue(
260: "url",
261: dii
262: .getURL()
263: .toString()
264: .endsWith(
265: "api/javax/swing/plaf/metal/MetalSliderUI.html#darkShadowColor"));
266: }
267:
268: public void testSearchInJDK15_Class() throws Exception {
269: FileObject idxFolder = fs.findResource(JDK15_INDEX_PATH);
270: assertNotNull(idxFolder);
271:
272: String toFind = "DataFlavor";
273: MyDocIndexItemConsumer diiConsumer = new MyDocIndexItemConsumer();
274: SearchThreadJdk12 search = new SearchThreadJdk12(toFind,
275: idxFolder, diiConsumer, true);
276: search.run(); // not go() since we do not want to post the task to another thread
277: assertTrue("not finished", diiConsumer.isFinished);
278: assertEquals("search result", 6, diiConsumer.l.size());
279:
280: // class DataFlavor
281: DocIndexItem dii = (DocIndexItem) diiConsumer.l.get(0);
282: assertEquals("field", "DataFlavor", dii.getField());
283: assertEquals("declaring class", "java.awt.datatransfer", dii
284: .getDeclaringClass());
285: assertEquals("remark", " - Class in java.awt.datatransfer", dii
286: .getRemark());
287: assertEquals("package", "java.awt.datatransfer.", dii
288: .getPackage());
289: assertTrue("url", dii.getURL().toString().endsWith(
290: "api/java/awt/datatransfer/DataFlavor.html"));
291: // constructor
292: dii = (DocIndexItem) diiConsumer.l.get(1);
293: assertEquals("field", "DataFlavor()", dii.getField());
294: assertEquals("declaring class", "DataFlavor", dii
295: .getDeclaringClass());
296: assertEquals(
297: "remark",
298: " - Constructor for class java.awt.datatransfer.DataFlavor",
299: dii.getRemark());
300: assertEquals("package", "java.awt.datatransfer.", dii
301: .getPackage());
302: assertTrue(
303: "url",
304: dii
305: .getURL()
306: .toString()
307: .endsWith(
308: "api/java/awt/datatransfer/DataFlavor.html#DataFlavor()"));
309: }
310:
311: public void testSearchInJDK15_GenericClass_54244() throws Exception {
312: // see issue #54244
313: FileObject idxFolder = fs.findResource(JDK15_INDEX_PATH);
314: assertNotNull(idxFolder);
315:
316: String toFind = "DemoHashMap";
317: MyDocIndexItemConsumer diiConsumer = new MyDocIndexItemConsumer();
318: SearchThreadJdk12 search = new SearchThreadJdk12(toFind,
319: idxFolder, diiConsumer, true);
320: search.run(); // not go() since we do not want to post the task to another thread
321: assertTrue("not finished", diiConsumer.isFinished);
322: assertEquals("search result", 2, diiConsumer.l.size());
323:
324: // class DemoHashMap<K,V>
325: DocIndexItem dii = (DocIndexItem) diiConsumer.l.get(0);
326: assertEquals("field", "DemoHashMap", dii.getField());
327: assertEquals("declaring class", "java.util", dii
328: .getDeclaringClass());
329: assertEquals("remark", " - Class in java.util", dii.getRemark());
330: assertEquals("package", "java.util.", dii.getPackage());
331: assertTrue("url", dii.getURL().toString().endsWith(
332: "api/java/util/DemoHashMap.html"));
333: // generic constructor DemoHashMap(Map<? extends K, ? extends V>)
334: dii = (DocIndexItem) diiConsumer.l.get(1);
335: assertEquals("field",
336: "DemoHashMap(Map<? extends K, ? extends V>)", dii
337: .getField());
338: assertEquals("declaring class", "DemoHashMap", dii
339: .getDeclaringClass());
340: assertEquals("remark",
341: " - Constructor for class java.util.DemoHashMap", dii
342: .getRemark());
343: assertEquals("package", "java.util.", dii.getPackage());
344: assertTrue(
345: "url",
346: dii
347: .getURL()
348: .toString()
349: .endsWith(
350: "api/java/util/DemoHashMap.html#DemoHashMap(java.util.Map)"));
351: }
352:
353: public void testSearchInJDK15_Method() throws Exception {
354: FileObject idxFolder = fs.findResource(JDK15_INDEX_PATH);
355: assertNotNull(idxFolder);
356:
357: String toFind = "damageLineRange";
358: MyDocIndexItemConsumer diiConsumer = new MyDocIndexItemConsumer();
359: SearchThreadJdk12 search = new SearchThreadJdk12(toFind,
360: idxFolder, diiConsumer, true);
361: search.run(); // not go() since we do not want to post the task to another thread
362: assertTrue("not finished", diiConsumer.isFinished);
363: assertEquals("search result", 1, diiConsumer.l.size());
364:
365: // damageLineRange(int, int, Shape, Component)
366: DocIndexItem dii = (DocIndexItem) diiConsumer.l.get(0);
367: assertEquals("field",
368: "damageLineRange(int, int, Shape, Component)", dii
369: .getField());
370: assertEquals("declaring class", "PlainView", dii
371: .getDeclaringClass());
372: assertEquals("remark",
373: " - Method in class javax.swing.text.PlainView", dii
374: .getRemark());
375: assertEquals("package", "javax.swing.text.", dii.getPackage());
376: assertTrue(
377: "url",
378: dii
379: .getURL()
380: .toString()
381: .endsWith(
382: "api/javax/swing/text/PlainView.html#damageLineRange(int, int, java.awt.Shape, java.awt.Component)"));
383: }
384:
385: public void testSearchInJDK15_Variables() throws Exception {
386: FileObject idxFolder = fs.findResource(JDK15_INDEX_PATH);
387: assertNotNull(idxFolder);
388:
389: String toFind = "darkShadow";
390: MyDocIndexItemConsumer diiConsumer = new MyDocIndexItemConsumer();
391: SearchThreadJdk12 search = new SearchThreadJdk12(toFind,
392: idxFolder, diiConsumer, true);
393: search.run(); // not go() since we do not want to post the task to another thread
394: assertTrue("not finished", diiConsumer.isFinished);
395: assertEquals("search result", 4, diiConsumer.l.size());
396:
397: // darkShadow
398: DocIndexItem dii = (DocIndexItem) diiConsumer.l.get(0);
399: assertEquals("field", "darkShadow", dii.getField());
400: assertEquals("declaring class", "BasicBorders.ButtonBorder",
401: dii.getDeclaringClass());
402: assertEquals(
403: "remark",
404: " - Variable in class javax.swing.plaf.basic.BasicBorders.ButtonBorder",
405: dii.getRemark());
406: assertEquals("package", "javax.swing.plaf.basic.", dii
407: .getPackage());
408: assertTrue(
409: "url",
410: dii
411: .getURL()
412: .toString()
413: .endsWith(
414: "api/javax/swing/plaf/basic/BasicBorders.ButtonBorder.html#darkShadow"));
415:
416: // darkShadowColor - static variable
417: dii = (DocIndexItem) diiConsumer.l.get(3);
418: assertEquals("field", "darkShadowColor", dii.getField());
419: assertEquals("declaring class", "MetalSliderUI", dii
420: .getDeclaringClass());
421: assertEquals(
422: "remark",
423: " - Static variable in class javax.swing.plaf.metal.MetalSliderUI",
424: dii.getRemark());
425: assertEquals("package", "javax.swing.plaf.metal.", dii
426: .getPackage());
427: assertTrue(
428: "url",
429: dii
430: .getURL()
431: .toString()
432: .endsWith(
433: "api/javax/swing/plaf/metal/MetalSliderUI.html#darkShadowColor"));
434: }
435:
436: public void testSearchInJDK15_Exception() throws Exception {
437: FileObject idxFolder = fs.findResource(JDK15_INDEX_PATH);
438: assertNotNull(idxFolder);
439:
440: String toFind = "DataFormatException";
441: MyDocIndexItemConsumer diiConsumer = new MyDocIndexItemConsumer();
442: SearchThreadJdk12 search = new SearchThreadJdk12(toFind,
443: idxFolder, diiConsumer, true);
444: search.run(); // not go() since we do not want to post the task to another thread
445: assertTrue("not finished", diiConsumer.isFinished);
446: assertEquals("search result", 3, diiConsumer.l.size());
447:
448: // DataFormatException
449: DocIndexItem dii = (DocIndexItem) diiConsumer.l.get(0);
450: assertEquals("field", "DataFormatException", dii.getField());
451: assertEquals("declaring class", "java.util.zip", dii
452: .getDeclaringClass());
453: assertEquals("remark", " - Exception in java.util.zip", dii
454: .getRemark());
455: assertEquals("package", "java.util.zip.", dii.getPackage());
456: assertTrue("url", dii.getURL().toString().endsWith(
457: "api/java/util/zip/DataFormatException.html"));
458:
459: // DataFormatException(String) - constructor
460: dii = (DocIndexItem) diiConsumer.l.get(2);
461: assertEquals("field", "DataFormatException(String)", dii
462: .getField());
463: assertEquals("declaring class", "DataFormatException", dii
464: .getDeclaringClass());
465: assertEquals(
466: "remark",
467: " - Constructor for exception java.util.zip.DataFormatException",
468: dii.getRemark());
469: assertEquals("package", "java.util.zip.", dii.getPackage());
470: assertTrue(
471: "url",
472: dii
473: .getURL()
474: .toString()
475: .endsWith(
476: "api/java/util/zip/DataFormatException.html#DataFormatException(java.lang.String)"));
477: }
478:
479: public void testSearchInJDK15_Interface() throws Exception {
480: FileObject idxFolder = fs.findResource(JDK15_INDEX_PATH);
481: assertNotNull(idxFolder);
482:
483: String toFind = "DatabaseMetaData";
484: MyDocIndexItemConsumer diiConsumer = new MyDocIndexItemConsumer();
485: SearchThreadJdk12 search = new SearchThreadJdk12(toFind,
486: idxFolder, diiConsumer, true);
487: search.run(); // not go() since we do not want to post the task to another thread
488: assertTrue("not finished", diiConsumer.isFinished);
489: assertEquals("search result", 1, diiConsumer.l.size());
490:
491: // DatabaseMetaData
492: DocIndexItem dii = (DocIndexItem) diiConsumer.l.get(0);
493: assertEquals("field", "DatabaseMetaData", dii.getField());
494: assertEquals("declaring class", "java.sql", dii
495: .getDeclaringClass());
496: assertEquals("remark", " - Interface in java.sql", dii
497: .getRemark());
498: assertEquals("package", "java.sql.", dii.getPackage());
499: assertTrue("url", dii.getURL().toString().endsWith(
500: "api/java/sql/DatabaseMetaData.html"));
501: }
502:
503: public void testSearchInJDK15_Enum() throws Exception {
504: FileObject idxFolder = fs.findResource(JDK15_INDEX_PATH);
505: assertNotNull(idxFolder);
506:
507: String toFind = "DemoMemoryType";
508: MyDocIndexItemConsumer diiConsumer = new MyDocIndexItemConsumer();
509: SearchThreadJdk12 search = new SearchThreadJdk12(toFind,
510: idxFolder, diiConsumer, true);
511: search.run(); // not go() since we do not want to post the task to another thread
512: assertTrue("not finished", diiConsumer.isFinished);
513: assertEquals("search result", 1, diiConsumer.l.size());
514:
515: // DemoMemoryType
516: DocIndexItem dii = (DocIndexItem) diiConsumer.l.get(0);
517: assertEquals("field", "DemoMemoryType", dii.getField());
518: assertEquals("declaring class", "java.lang.management", dii
519: .getDeclaringClass());
520: assertEquals("remark", " - Enum in java.lang.management", dii
521: .getRemark());
522: assertEquals("package", "java.lang.management.", dii
523: .getPackage());
524: assertTrue("url", dii.getURL().toString().endsWith(
525: "api/java/lang/management/DemoMemoryType.html"));
526: }
527:
528: public void testSearchInJDK15_AnnotationType() throws Exception {
529: FileObject idxFolder = fs.findResource(JDK15_INDEX_PATH);
530: assertNotNull(idxFolder);
531:
532: String toFind = "Deprecated";
533: MyDocIndexItemConsumer diiConsumer = new MyDocIndexItemConsumer();
534: SearchThreadJdk12 search = new SearchThreadJdk12(toFind,
535: idxFolder, diiConsumer, true);
536: search.run(); // not go() since we do not want to post the task to another thread
537: assertTrue("not finished", diiConsumer.isFinished);
538: assertEquals("search result", 1, diiConsumer.l.size());
539:
540: // Deprecated
541: DocIndexItem dii = (DocIndexItem) diiConsumer.l.get(0);
542: assertEquals("field", "Deprecated", dii.getField());
543: assertEquals("declaring class", "java.lang", dii
544: .getDeclaringClass());
545: assertEquals("remark", " - Annotation Type in java.lang", dii
546: .getRemark());
547: assertEquals("package", "java.lang.", dii.getPackage());
548: assertTrue("url", dii.getURL().toString().endsWith(
549: "api/java/lang/Deprecated.html"));
550: }
551:
552: private static final class MyDocIndexItemConsumer implements
553: IndexSearchThread.DocIndexItemConsumer {
554: boolean isFinished = false;
555: List l = new LinkedList();
556:
557: public void addDocIndexItem(DocIndexItem dii) {
558: // try {
559: // System.out.println("dc: " + dii.getDeclaringClass() + ", field: " + dii.getField() +
560: // ", pkg: " + dii.getPackage() + ", remark: " + dii.getRemark() + ", url: " + dii.getURL().toString());
561: // } catch (Exception e) {
562: // e.printStackTrace();
563: // }
564: l.add(dii);
565: }
566:
567: public void indexSearchThreadFinished(IndexSearchThread ist) {
568: // System.out.println("-------------------------------");
569: isFinished = true;
570: }
571: }
572: }
|