KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > netbeans > test > j2ee > hints > HintsUtils


1 /*
2  * The contents of this file are subject to the terms of the Common Development
3  * and Distribution License (the License). You may not use this file except in
4  * compliance with the License.
5  *
6  * You can obtain a copy of the License at http://www.netbeans.org/cddl.html
7  * or http://www.netbeans.org/cddl.txt.
8  *
9  * When distributing Covered Code, include this CDDL Header Notice in each file
10  * and include the License file at http://www.netbeans.org/cddl.txt.
11  * If applicable, add the following below the CDDL Header, with the fields
12  * enclosed by brackets [] replaced by your own identifying information:
13  * "Portions Copyrighted [year] [name of copyright owner]"
14  *
15  * The Original Software is NetBeans. The Initial Developer of the Original
16  * Software is Sun Micro//Systems, Inc. Portions Copyright 1997-2006 Sun
17  * Micro//Systems, Inc. All Rights Reserved.
18  */

19 package org.netbeans.test.j2ee.hints;
20
21 import java.io.BufferedOutputStream JavaDoc;
22 import java.io.File JavaDoc;
23 import java.io.FileOutputStream JavaDoc;
24 import java.io.PrintStream JavaDoc;
25 import java.util.ArrayList JavaDoc;
26 import java.util.Collection JavaDoc;
27 import javax.swing.text.StyledDocument JavaDoc;
28 import org.netbeans.jellytools.EditorOperator;
29 import org.netbeans.jellytools.JellyTestCase;
30 import org.netbeans.jellytools.NbDialogOperator;
31 import org.netbeans.jellytools.actions.SaveAllAction;
32 import org.netbeans.junit.diff.LineDiff;
33 import org.netbeans.modules.j2ee.verification.HintsManager;
34 import org.netbeans.modules.j2ee.verification.JEEVerificationHint;
35 import org.netbeans.modules.j2ee.verification.JEEVerificationProblemMark;
36 import org.openide.cookies.EditorCookie;
37 import org.openide.filesystems.FileObject;
38 import org.openide.filesystems.FileUtil;
39 import org.openide.loaders.DataObject;
40 import org.openide.util.RequestProcessor;
41
42 /**
43  *
44  * @author js201828
45  */

46 public class HintsUtils extends JellyTestCase {
47     public static boolean CREATE_GOLDENFILES = false;// Boolean.getBoolean("create.goldenfiles");
48

49     public HintsUtils(String JavaDoc s) {
50         super(s);
51     }
52     
53     protected File JavaDoc refFile;
54     File JavaDoc logFile;
55     
56     protected PrintStream JavaDoc log = null;
57     protected PrintStream JavaDoc ref = null;
58     protected PrintStream JavaDoc golden = null;
59     
60     protected void setUp() {
61         prepareProject();
62         try {
63             //logs and refs
64
refFile = new File JavaDoc(getWorkDir(), getName() + ".ref");
65             logFile = new File JavaDoc(getWorkDir(), getName() + ".log");
66             ref = new PrintStream JavaDoc(new BufferedOutputStream JavaDoc(new FileOutputStream JavaDoc(refFile)));
67             log = new PrintStream JavaDoc(new BufferedOutputStream JavaDoc(new FileOutputStream JavaDoc(logFile)));
68             if (CREATE_GOLDENFILES) { //generates golden files
69
File JavaDoc f;
70                 //generate goldenfile name
71
f=getDataDir();
72                 ArrayList JavaDoc names=new ArrayList JavaDoc();
73                 names.add("goldenfiles");
74                 while (!f.getName().equals("test")) {
75                     if (!f.getName().equals("sys") && !f.getName().equals("work") &&!f.getName().equals("tests")) {
76                         names.add(f.getName());
77                     }
78                     f=f.getParentFile();
79                 }
80                 for (int i=names.size()-1;i > -1;i--) {
81                     f=new File JavaDoc(f,(String JavaDoc)(names.get(i)));
82                 }
83                 f=new File JavaDoc(f, getClass().getName().replace('.', File.separatorChar));
84                 f=new File JavaDoc(f, getName()+".pass");
85                 if (!f.getParentFile().exists()) {
86                     f.getParentFile().mkdirs();
87                 }
88                 golden=new PrintStream JavaDoc(new BufferedOutputStream JavaDoc(new FileOutputStream JavaDoc(f)));
89                 log("Passive mode: generate golden file into "+f.getAbsolutePath());
90             }
91         } catch (Exception JavaDoc e) {
92             e.printStackTrace();
93             assertTrue(e.toString(), false);
94         }
95     }
96     
97     public void prepareProject() {
98     }
99     
100     protected void tearDown() {
101         EditorOperator.closeDiscardAll();
102         ref.close();
103         log.close();
104         if (logFile.length()==0) logFile.delete();
105         if (CREATE_GOLDENFILES && golden != null) {
106             golden.close();
107             assertTrue("Passive mode", false);
108         }
109         if(!CREATE_GOLDENFILES) {
110             try {
111                 assertFile("Golden file differs ", refFile, getGoldenFile(), getWorkDir(), new LineDiff(false, true));
112             } catch (Exception JavaDoc ex) {
113                 ex.printStackTrace(log);
114                 assertTrue(ex.toString(), false);
115             }
116         }
117     }
118     
119     protected String JavaDoc hintTest(File JavaDoc testedFile, int number, final String JavaDoc str){//retuns changed file; number gives a position of choosen hint
120
String JavaDoc result = new String JavaDoc(); // b - true => wait for a dialog; b-false => doesn't wait for dialog
121
try{
122             FileObject fileToTest = FileUtil.toFileObject(testedFile);
123             DataObject dataToTest;
124             dataToTest = DataObject.find(fileToTest);
125             EditorCookie editorCookie = (EditorCookie) dataToTest.getCookie(EditorCookie.class);
126             final StyledDocument JavaDoc doc = (StyledDocument JavaDoc)editorCookie.openDocument();
127             editorCookie.open();
128             // 1s for inicialization of editor
129
Thread.currentThread().sleep(1000);
130             final int num = number;
131             RequestProcessor.Task task = RequestProcessor.getDefault().create(new Runnable JavaDoc(){
132                 public void run() {
133                     Collection JavaDoc<JEEVerificationProblemMark> problems = (Collection JavaDoc<JEEVerificationProblemMark>) doc.getProperty("jee.problem_scaning.result");
134                     if (problems != null){
135                         synchronized(problems){
136                             for (JEEVerificationProblemMark problem : problems){
137                                 JEEVerificationHint hints[] = HintsManager.getHintsForProblem(problem);
138                                 JEEVerificationHint pom=null;
139                                 if (hints.length>num) pom=hints[num];
140                                 else if (hints.length>0) pom= hints[hints.length-1];
141                                 if (hints.length>0){
142                                     final JEEVerificationHint hint= pom;
143                                     new Thread JavaDoc(new Runnable JavaDoc(){
144                                         public void run(){
145                                             hint.implement();
146                                         }
147                                     }).start();
148                                     try {
149                                         Thread.currentThread().sleep(1000);
150                                         if (str.length()!=0){
151                                             new NbDialogOperator(str).ok();
152                                             Thread.currentThread().sleep(1000);
153                                         }
154                                     } catch (InterruptedException JavaDoc ex) {
155                                         ex.printStackTrace(log);
156                                     }
157                                 }
158                             }
159                         }
160                     }else{
161                         assertTrue("failedgetRef(). to read 'jee.problem_scaning.result' document property", false);
162                     }
163                 }
164             });
165             task.schedule(10000);
166             task.waitFinished();
167             result=doc.getText(0, doc.getLength());
168         }catch(Exception JavaDoc e){
169             e.printStackTrace(log);
170         }
171         return result;
172     }
173     
174     
175     public void EntityTest(File JavaDoc testedFile, File JavaDoc modifiedFile, int number, String JavaDoc str){// number gives a position of choosen hint
176
try{
177             FileObject modifiedObject = FileUtil.toFileObject(modifiedFile);
178             DataObject modifiedData = DataObject.find(modifiedObject);
179             EditorCookie modifiedEditorCookie = (EditorCookie) modifiedData.getCookie(EditorCookie.class);
180             StyledDocument JavaDoc doc = (StyledDocument JavaDoc)modifiedEditorCookie.openDocument();
181             modifiedEditorCookie.open();
182             String JavaDoc result = hintTest(testedFile, number, str);
183             if (CREATE_GOLDENFILES){
184                 golden.println(result);
185                 golden.println(doc.getText(0,doc.getLength()));
186             }
187             ref.println(result);
188             ref.println(doc.getText(0,doc.getLength()));
189         }catch(Exception JavaDoc e){
190             e.printStackTrace(log);
191         }
192     }
193     
194     public void WebServiceTest(File JavaDoc testedFile, String JavaDoc str){
195         String JavaDoc result = hintTest(testedFile, 0, str);
196         if (CREATE_GOLDENFILES) golden.println(result);
197         ref.println(result);
198     }
199     
200     
201 }
202
203
Popular Tags