KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > openide > filesystems > MIMESupport48486Test


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 Microsystems, Inc. Portions Copyright 1997-2006 Sun
17    * Microsystems, Inc. All Rights Reserved.
18    */

19
20 package org.openide.filesystems;
21
22 import org.netbeans.junit.MockServices;
23 import org.netbeans.junit.NbTestCase;
24 import org.openide.util.Lookup;
25 import org.openide.util.RequestProcessor;
26
27 /**
28  * Simulate deadlock from issue 48486.
29  *
30  * @author Radek Matous
31  */

32 public class MIMESupport48486Test extends NbTestCase {
33     /**
34      * filesystem containing created instances
35      */

36     private FileSystem lfs;
37     private FileObject mimeFo;
38
39     /**
40      * Creates new DataFolderTest
41      */

42     public MIMESupport48486Test(String JavaDoc name) {
43         super(name);
44     }
45
46     /**
47      * Setups variables.
48      */

49     protected void setUp() throws Exception JavaDoc {
50         TestUtilHid.destroyLocalFileSystem(getName());
51         lfs = TestUtilHid.createLocalFileSystem(getName(), new String JavaDoc[]{"A.opqr", });
52         mimeFo = lfs.findResource("A.opqr");
53         assertNotNull(mimeFo);
54         MockServices.setServices(MamaResolver.class);
55         Lookup.getDefault().lookup(MamaResolver.class).fo = mimeFo;
56     }
57
58     public void testMimeResolverDeadlock() throws Exception JavaDoc {
59         mimeFo.getMIMEType();
60     }
61
62     public static final class MamaResolver extends MIMEResolver implements Runnable JavaDoc {
63         boolean isRecursiveCall = false;
64         FileObject fo = null;
65
66         public void run() {
67             assert this.fo != null;
68             isRecursiveCall = true;
69             fo.getMIMEType();
70         }
71
72         public String JavaDoc findMIMEType(FileObject fo) {
73             if (!isRecursiveCall) {
74                 RequestProcessor.getDefault().post(this).waitFinished();
75             }
76             return null;
77         }
78     }
79
80 }
81
Popular Tags