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 2002 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.core.windows.awt;
043:
044: import java.io.InputStream;
045: import junit.framework.*;
046: import org.netbeans.junit.*;
047: import org.openide.cookies.InstanceCookie;
048:
049: import org.openide.filesystems.*;
050: import org.openide.loaders.*;
051:
052: /** Checks the consistence of Services/JavaHelp folder.
053: *
054: * @author Stanislav Aubrecht
055: */
056: public class ValidateLayerJavaHelpTest extends NbTestCase {
057:
058: /** Creates a new instance of ValidateLayerJavaHelpTest */
059: public ValidateLayerJavaHelpTest(String name) {
060: super (name);
061: }
062:
063: //
064: // override in subclasses
065: //
066:
067: protected String rootName() {
068: return "Services/JavaHelp";
069: }
070:
071: /** Allowes to skip filest that are know to be broken */
072: protected boolean skipFile(FileObject fo) {
073: // ignore these files, there are helpers for Helpset ordering
074: return fo.hasExt("txt");
075: }
076:
077: protected boolean correctInstance(Object obj) {
078: if (obj instanceof javax.help.HelpSet) {
079: return true;
080: }
081:
082: return false;
083: }
084:
085: //
086: // the test
087: //
088:
089: public void testContentCorrect() throws Exception {
090: java.util.ArrayList errors = new java.util.ArrayList();
091:
092: DataFolder df = DataFolder.findFolder(Repository.getDefault()
093: .getDefaultFileSystem().findResource(rootName()));
094: verifyHelpSets(df, errors);
095:
096: if (!errors.isEmpty()) {
097: fail("Some files do not provide valid helpsets " + errors);
098: }
099: }
100:
101: private void verifyHelpSets(DataFolder f, java.util.ArrayList errors)
102: throws Exception {
103: DataObject[] arr = f.getChildren();
104: for (int i = 0; i < arr.length; i++) {
105: if (arr[i] instanceof DataFolder) {
106: verifyHelpSets((DataFolder) arr[i], errors);
107: continue;
108: }
109: FileObject file = arr[i].getPrimaryFile();
110:
111: if (skipFile(file)) {
112: continue;
113: }
114:
115: Object url = file.getURL();
116:
117: InstanceCookie ic = (InstanceCookie) arr[i]
118: .getCookie(InstanceCookie.class);
119: if (ic == null) {
120: errors
121: .add("\n File "
122: + file
123: + " does not have instance cookie, url: "
124: + url);
125: continue;
126: }
127:
128: try {
129: Object obj = ic.instanceCreate();
130: if (correctInstance(obj)) {
131: continue;
132: }
133: errors.add("\n File " + arr[i].getPrimaryFile()
134: + " does not provide correct instance: " + obj
135: + " url: " + url);
136: } catch (Exception ex) {
137: errors.add("\n File " + arr[i].getPrimaryFile()
138: + " cannot be read " + ex + " url: " + url);
139: }
140: }
141: }
142: }
|