[hg] main/contrib: #165870 - [67cat] ClassNotFoundException: org...

  • From: Petr Hejl < >
  • To:
  • Subject: [hg] main/contrib: #165870 - [67cat] ClassNotFoundException: org...
  • Date: Mon, 12 Aug 2013 00:54:12 -0700

changeset 5cf7e57fd0eb in main/contrib ((none))
details: http://hg.netbeans.org/main/contrib/rev/5cf7e57fd0eb
description:
        #165870 - [67cat] ClassNotFoundException: 
org.netbeans.modules.hudsonfindbugs.FindBugsProjectLookupProvider - removing 
plugin

diffstat:

 hudsonfindbugs/build.xml                                                     
                 |     5 -
 hudsonfindbugs/manifest.mf                                                   
                 |     6 -
 hudsonfindbugs/nbproject/project.properties                                  
                 |     2 -
 hudsonfindbugs/nbproject/project.xml                                         
                 |   104 -
 hudsonfindbugs/src/org/netbeans/modules/hudsonfindbugs/Bundle.properties     
                 |     8 -
 
hudsonfindbugs/src/org/netbeans/modules/hudsonfindbugs/FindBugsTaskScanner.java
               |   331 -
 
hudsonfindbugs/src/org/netbeans/modules/hudsonfindbugs/J2seFindBugsQueryProvider.java
         |    90 -
 
hudsonfindbugs/src/org/netbeans/modules/hudsonfindbugs/NBMFindBugsQueryProvider.java
          |    99 -
 
hudsonfindbugs/src/org/netbeans/modules/hudsonfindbugs/api/FindBugsQuery.java 
                |   107 -
 hudsonfindbugs/src/org/netbeans/modules/hudsonfindbugs/layer.xml             
                 |    12 -
 hudsonfindbugs/src/org/netbeans/modules/hudsonfindbugs/messages.xml          
                 |  6095 ----------
 
hudsonfindbugs/src/org/netbeans/modules/hudsonfindbugs/spi/FindBugsQueryImplementation.java
   |    68 -
 
hudsonfindbugs/test/unit/src/org/netbeans/modules/hudsonfindbugs/FindBugsTaskScannerTest.java
 |   109 -
 hudsonfindbugs/test/unit/src/org/netbeans/modules/hudsonfindbugs/err.xml     
                 |    48 -
 14 files changed, 0 insertions(+), 7084 deletions(-)

diffs (truncated from 7156 to 3000 lines):

diff --git a/hudsonfindbugs/build.xml b/hudsonfindbugs/build.xml
deleted file mode 100644
--- a/hudsonfindbugs/build.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project basedir="." default="netbeans" name="contrib/hudsonfindbugs">
-    <description>Builds, tests, and runs the project 
org.netbeans.modules.hudsonfindbugs</description>
-    <import file="../../nbbuild/templates/projectized.xml"/>
-</project>
diff --git a/hudsonfindbugs/manifest.mf b/hudsonfindbugs/manifest.mf
deleted file mode 100644
--- a/hudsonfindbugs/manifest.mf
+++ /dev/null
@@ -1,6 +0,0 @@
-Manifest-Version: 1.0
-OpenIDE-Module: org.netbeans.modules.hudsonfindbugs
-OpenIDE-Module-Layer: org/netbeans/modules/hudsonfindbugs/layer.xml
-OpenIDE-Module-Localizing-Bundle: 
org/netbeans/modules/hudsonfindbugs/Bundle.properties
-OpenIDE-Module-Specification-Version: 1.10
-
diff --git a/hudsonfindbugs/nbproject/project.properties 
b/hudsonfindbugs/nbproject/project.properties
deleted file mode 100644
--- a/hudsonfindbugs/nbproject/project.properties
+++ /dev/null
@@ -1,2 +0,0 @@
-javac.compilerargs=-Xlint -Xlint:-serial
-javac.source=1.5
diff --git a/hudsonfindbugs/nbproject/project.xml 
b/hudsonfindbugs/nbproject/project.xml
deleted file mode 100644
--- a/hudsonfindbugs/nbproject/project.xml
+++ /dev/null
@@ -1,104 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://www.netbeans.org/ns/project/1";>
-    <type>org.netbeans.modules.apisupport.project</type>
-    <configuration>
-        <data xmlns="http://www.netbeans.org/ns/nb-module-project/3";>
-            
<code-name-base>org.netbeans.modules.hudsonfindbugs</code-name-base>
-            <module-dependencies>
-                <dependency>
-                    
<code-name-base>org.netbeans.api.annotations.common</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <release-version>1</release-version>
-                        <specification-version>1.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    
<code-name-base>org.netbeans.modules.apisupport.project</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <release-version>1</release-version>
-                        <specification-version>1.33</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    
<code-name-base>org.netbeans.modules.java.j2seproject</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <release-version>1</release-version>
-                        <specification-version>1.34</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    
<code-name-base>org.netbeans.modules.project.ant</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <release-version>1</release-version>
-                        <specification-version>1.17</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    
<code-name-base>org.netbeans.modules.projectapi</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <release-version>1</release-version>
-                        <specification-version>1.23</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    
<code-name-base>org.netbeans.spi.tasklist</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <release-version>1</release-version>
-                        <specification-version>1.0</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.filesystems</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>7.3</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.util</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>8.0</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.util.lookup</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>8.0</specification-version>
-                    </run-dependency>
-                </dependency>
-            </module-dependencies>
-            <test-dependencies>
-                <test-type>
-                    <name>unit</name>
-                    <test-dependency>
-                        
<code-name-base>org.netbeans.libs.junit4</code-name-base>
-                        <compile-dependency/>
-                    </test-dependency>
-                    <test-dependency>
-                        
<code-name-base>org.netbeans.modules.nbjunit</code-name-base>
-                        <recursive/>
-                        <compile-dependency/>
-                    </test-dependency>
-                </test-type>
-            </test-dependencies>
-            <public-packages/>
-        </data>
-    </configuration>
-</project>
diff --git 
a/hudsonfindbugs/src/org/netbeans/modules/hudsonfindbugs/Bundle.properties 
b/hudsonfindbugs/src/org/netbeans/modules/hudsonfindbugs/Bundle.properties
deleted file mode 100644
--- a/hudsonfindbugs/src/org/netbeans/modules/hudsonfindbugs/Bundle.properties
+++ /dev/null
@@ -1,8 +0,0 @@
-MSG_NbFindBugs=FindBugs Tasks for NetBeans.org
-dOpenIDE-Module-Display-Category=Developing NetBeans
-OpenIDE-Module-Display-Category=Quality
-OpenIDE-Module-Long-Description=\
-    Searches for FindBugs results for netbeans.org standard modules from a 
daily builder and displays them in the task list for opened module projects. \
-    See: http://wiki.netbeans.org/wiki/view/FindBugsTest
-OpenIDE-Module-Name=FindBugs Tasks for NetBeans.org
-OpenIDE-Module-Short-Description=Show FindBugs results in task list.
diff --git 
a/hudsonfindbugs/src/org/netbeans/modules/hudsonfindbugs/FindBugsTaskScanner.java
 
b/hudsonfindbugs/src/org/netbeans/modules/hudsonfindbugs/FindBugsTaskScanner.java
deleted file mode 100644
--- 
a/hudsonfindbugs/src/org/netbeans/modules/hudsonfindbugs/FindBugsTaskScanner.java
+++ /dev/null
@@ -1,331 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common
- * Development and Distribution License("CDDL") (collectively, the
- * "License"). You may not use this file except in compliance with the
- * License. You can obtain a copy of the License at
- * http://www.netbeans.org/cddl-gplv2.html
- * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
- * specific language governing permissions and limitations under the
- * License.  When distributing the software, include this License Header
- * Notice in each file and include the License file at
- * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun in the GPL Version 2 section of the License file that
- * accompanied this code. If applicable, add the following below the
- * License Header, with the fields enclosed by brackets [] replaced by
- * your own identifying information:
- * "Portions Copyrighted [year] [name of copyright owner]"
- * 
- * If you wish your version of this file to be governed by only the CDDL
- * or only the GPL Version 2, indicate your decision by adding
- * "[Contributor] elects to include this software in this distribution
- * under the [CDDL or GPL Version 2] license." If you do not indicate a
- * single choice of license, a recipient has the option to distribute
- * your version of this file under either the CDDL, the GPL Version 2 or
- * to extend the choice of license to its licensees as provided above.
- * However, if you add GPL Version 2 code and therefore, elected the GPL
- * Version 2 license, then the option applies only if the new code is
- * made subject to such option by the copyright holder.
- * 
- * Contributor(s):
- * 
- * Portions Copyrighted 2007 Sun Microsystems, Inc.
- */
-
-package org.netbeans.modules.hudsonfindbugs;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.lang.ref.Reference;
-import java.lang.ref.SoftReference;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.parsers.SAXParser;
-import javax.xml.parsers.SAXParserFactory;
-import org.netbeans.api.project.FileOwnerQuery;
-import org.netbeans.api.project.Project;
-import org.netbeans.modules.hudsonfindbugs.api.FindBugsQuery;
-import org.netbeans.spi.tasklist.PushTaskScanner;
-import org.netbeans.spi.tasklist.Task;
-import org.netbeans.spi.tasklist.TaskScanningScope;
-import org.openide.filesystems.FileObject;
-import org.openide.filesystems.FileUtil;
-import org.openide.util.Exceptions;
-import org.openide.util.NbBundle;
-import org.openide.util.RequestProcessor;
-import org.xml.sax.Attributes;
-import org.xml.sax.SAXException;
-import org.xml.sax.helpers.DefaultHandler;
-
-/**
- *
- * @author Jaroslav Tulach 
< >
- */
-final class FindBugsTaskScanner extends PushTaskScanner {
-    private static final RequestProcessor RP = new RequestProcessor("Hudson 
FindBugs for NetBeans"); // NOI18N
-    private static final Logger LOG = 
Logger.getLogger(FindBugsTaskScanner.class.getName());
-        
-    FindBugsTaskScanner() {
-        super(
-            NbBundle.getMessage(FindBugsTaskScanner.class, "MSG_NbFindBugs"),
-            "description", 
-            "huh"
-        );
-    }
-    
-    public static FindBugsTaskScanner create() {
-        return new FindBugsTaskScanner();
-    }
-
-    
-    @Override
-    public void setScope(TaskScanningScope scope, Callback callback) {
-        if (scope == null) {
-            ParseRequest req = new ParseRequest();
-            req.callback = callback;
-            RP.post(req);
-            return;
-        } else {
-            Collection<Project> projects = (Collection<Project>) 
scope.getLookup().lookupAll(Project.class);
-            if ((projects == null) || (projects.isEmpty())) {
-                FileObject file = scope.getLookup().lookup(FileObject.class);
-                if (file != null) {
-                    ParseRequest req = new ParseRequest();
-                    Project project = FileOwnerQuery.getOwner(file);
-                    URL url = FindBugsQuery.getFindBugsUrl(project);
-                    if (url != null) {
-                        req.projectRoot = file;
-                        req.url = url;
-                        req.callback = callback;
-                        req.scanner = this;
-                        RP.post(req);
-                    }
-                }
-            } else {            
-                for (Project project : projects) {
-                    ParseRequest req = new ParseRequest();
-                    URL url = FindBugsQuery.getFindBugsUrl(project);
-                    if (url == null) {
-                        continue;
-                    }
-                    req.projectRoot = project.getProjectDirectory();
-                    req.url = url;
-                    req.callback = callback;
-                    req.scanner = this;
-                    RP.post(req);
-                }
-            }
-        }
-    }
-
-    
-    
-    final void parse(URL errors, FileObject project, 
Map<FileObject,List<Task>> cummulate) 
-    throws IOException, SAXException, ParserConfigurationException {
-        SAXParser sax = SAXParserFactory.newInstance().newSAXParser();       
 
-        InputStream is = errors.openStream();
-        try {
-            Parse p = new Parse(project, cummulate);
-            sax.parse(is, p);
-        } finally {
-            is.close();
-        }
-        
-    }
-
-    private static final class ParseRequest implements Runnable {
-        FindBugsTaskScanner scanner;
-        FileObject projectRoot;
-        Callback callback;
-        URL url;
-
-        public void run() {
-            if (url == null) {
-                if (callback != null) {
-                    callback.clearAllTasks();
-                }
-                return;
-            }
-            
-            callback.started();
-            Map<FileObject, List<Task>> map = new HashMap<FileObject, 
List<Task>>();
-            try {
-                scanner.parse(url, projectRoot, map);
-                for (Map.Entry<FileObject, List<Task>> entry : 
map.entrySet()) {
-                    callback.setTasks(entry.getKey(), entry.getValue());
-                }
-            } catch (IOException ex) {
-                LOG.info(ex.getMessage());
-                LOG.log(Level.FINE, ex.getMessage(), ex);
-            } catch (SAXException ex) {
-                Exceptions.printStackTrace(ex);
-            } catch (ParserConfigurationException ex) {
-                Exceptions.printStackTrace(ex);
-            } finally {
-                callback.finished();
-            }
-        }
-    }
-    
-    private static final class Parse extends DefaultHandler {
-        private final FileObject scope;
-        private final Map<FileObject,List<Task>> cummulate;
-        
-        private String type;
-        private int priority;
-        private String category;
-        private int line;
-        private FileObject src;
-        private Project project;
-        
-        public Parse(FileObject scope, Map<FileObject,List<Task>> cummulate) 
{
-            this.scope = scope;
-            this.cummulate = cummulate;
-            if (!scope.isFolder()) {
-                this.project = FileOwnerQuery.getOwner(scope);
-            }
-        }
-
-        @Override
-        public void startDocument () {
-            this.line = -1;
-            this.src = null;
-        }
-        
-        @Override
-        public void startElement(String uri, String localName, String name, 
Attributes attributes) throws SAXException {
-            if ("BugInstance".equals(name)) {
-                type = attributes.getValue("type");
-                priority = Integer.valueOf(attributes.getValue("priority"));
-                category = attributes.getValue("category");
-                return;
-            }
-            if ("SourceLine".equals(name)) {
-                String lineNumberStr = attributes.getValue("start");
-                if (lineNumberStr != null) {
-                    line = Integer.valueOf(attributes.getValue("start"));
-                }
-                String sourcePath = attributes.getValue("sourcepath");
-                if (scope.isFolder()) {
-                    src = scope.getFileObject("src/" + sourcePath);
-                } else {
-                    File sourceFile = FileUtil.toFile(scope);
-                    if (sourceFile.getAbsolutePath().indexOf(sourcePath) > 
-1) {
-                        src = scope;
-                    }
-                }
-            }
-        }
-
-        @Override
-        public void endElement(String uri, String localName, String name) 
throws SAXException {            
-            if ("BugInstance".equals(name)) {
-                if (src != null) {
-                    Task t = Task.create(src, "warning", 
Msgs.getLocalizedMessage(type), line);
-                    List<Task> arr = cummulate.get(src);
-                    if (arr == null) {
-                        arr = new ArrayList<Task>();
-                        cummulate.put(src, arr);
-                    }
-                    arr.add(t);
-                }
-                type = null;
-                priority = -1;
-                category = null;
-                src = null;
-                line = -1;
-                return;
-            }
-        }
-    } // end of Parse
-    
-    private static final class Msgs extends DefaultHandler {
-        private static Reference<Map<String,String>> map;
-        static {
-            map = new SoftReference<Map<String, String>>(null);
-        }
-        
-
-        
-        public static String getLocalizedMessage(String msg) {
-            Map<String,String> m = map.get();
-            if (m == null) {
-                m = new HashMap<String, String>();
-                
-                InputStream is = 
Msgs.class.getResourceAsStream("messages.xml");
-                try {
-                    SAXParser sax = 
SAXParserFactory.newInstance().newSAXParser();
-                    Msgs p = new Msgs(m);
-                    sax.parse(is, p);
-                } catch (SAXException ex) {
-                    Exceptions.printStackTrace(ex);
-                } catch (ParserConfigurationException ex) {
-                    Exceptions.printStackTrace(ex);
-                } catch (IOException ex) {
-                    Exceptions.printStackTrace(ex);
-                } finally {
-                    try {
-                        is.close();
-                    } catch (IOException ex) {
-                        Exceptions.printStackTrace(ex);
-                    }
-                }
-                map = new SoftReference<Map<String, String>>(m);
-            }
-            
-            
-            String r = m.get(msg);
-            return r != null ? r : msg;
-        }
-        
-        
-        private String type;
-        private StringBuilder text;
-        private Map<String,String> push;
-
-        private Msgs(Map<String,String> map) {
-            this.push = map;
-        }
-        
-        @Override
-        public void startElement(String uri, String localName, String name, 
Attributes attributes) throws SAXException {
-            if ("BugPattern".equals(name)) {
-                type = attributes.getValue("type");
-                return;
-            }
-            text = new StringBuilder();
-        }
-
-        @Override
-        public void endElement(String uri, String localName, String name) 
throws SAXException {
-            if ("BugPattern".equals(name)) {
-                type = null;
-                return;
-            }
-            if ("ShortDescription".equals(name) && type != null) {
-                push.put(type, text.toString());
-                return;
-            }
-        }
-
-        @Override
-        public void characters(char[] ch, int start, int length) throws 
SAXException {
-            if (text != null) {
-                text.append(ch, start, length);
-            }
-        }
-    } // end of Msgs
-}
diff --git 
a/hudsonfindbugs/src/org/netbeans/modules/hudsonfindbugs/J2seFindBugsQueryProvider.java
 
b/hudsonfindbugs/src/org/netbeans/modules/hudsonfindbugs/J2seFindBugsQueryProvider.java
deleted file mode 100644
--- 
a/hudsonfindbugs/src/org/netbeans/modules/hudsonfindbugs/J2seFindBugsQueryProvider.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common
- * Development and Distribution License("CDDL") (collectively, the
- * "License"). You may not use this file except in compliance with the
- * License. You can obtain a copy of the License at
- * http://www.netbeans.org/cddl-gplv2.html
- * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
- * specific language governing permissions and limitations under the
- * License.  When distributing the software, include this License Header
- * Notice in each file and include the License file at
- * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun in the GPL Version 2 section of the License file that
- * accompanied this code. If applicable, add the following below the
- * License Header, with the fields enclosed by brackets [] replaced by
- * your own identifying information:
- * "Portions Copyrighted [year] [name of copyright owner]"
- * 
- * If you wish your version of this file to be governed by only the CDDL
- * or only the GPL Version 2, indicate your decision by adding
- * "[Contributor] elects to include this software in this distribution
- * under the [CDDL or GPL Version 2] license." If you do not indicate a
- * single choice of license, a recipient has the option to distribute
- * your version of this file under either the CDDL, the GPL Version 2 or
- * to extend the choice of license to its licensees as provided above.
- * However, if you add GPL Version 2 code and therefore, elected the GPL
- * Version 2 license, then the option applies only if the new code is
- * made subject to such option by the copyright holder.
- * 
- * Contributor(s):
- * 
- * Portions Copyrighted 2007 Sun Microsystems, Inc.
- */
-
-package org.netbeans.modules.hudsonfindbugs;
-
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-import org.netbeans.api.annotations.common.CheckForNull;
-import org.netbeans.api.project.Project;
-import org.netbeans.modules.hudsonfindbugs.spi.FindBugsQueryImplementation;
-import org.netbeans.modules.java.j2seproject.api.J2SEPropertyEvaluator;
-import org.netbeans.spi.project.ProjectServiceProvider;
-
-/**
- *
- * @author Martin Grebac
- */
-@ProjectServiceProvider(service=FindBugsQueryImplementation.class, 
projectType="org-netbeans-modules-java-j2seproject")
-public final class J2seFindBugsQueryProvider implements 
FindBugsQueryImplementation {
-
-    private static final Logger LOG = 
Logger.getLogger(J2seFindBugsQueryProvider.class.getName());
-
-    private final Project project;
-
-    public J2seFindBugsQueryProvider(Project project) {
-        this.project = project;
-    }
-    
-    @CheckForNull
-    public URL getFindBugsUrl(boolean remote) {
-        if (!remote) {
-            return null;
-        }
-
-        URL url = null;
-        String urlValue = null;
-        // TODO when the provider is only in project's lookup this condition 
is not necessary.
-        J2SEPropertyEvaluator eval = 
project.getLookup().lookup(J2SEPropertyEvaluator.class);
-        if (eval != null) {
-            try {
-                urlValue = 
eval.evaluator().getProperty(FINDBUGS_PROJECT_PROPERTY);
-                if (urlValue != null) {
-                    url = new URL(urlValue);
-                }
-            } catch (MalformedURLException ex) {
-                LOG.log(Level.INFO, "URL incorrect: {0} {1}", new Object[] 
{urlValue, ex.getLocalizedMessage()});
-            }
-        }
-        return url;
-    }
-
-}
\ No newline at end of file
diff --git 
a/hudsonfindbugs/src/org/netbeans/modules/hudsonfindbugs/NBMFindBugsQueryProvider.java
 
b/hudsonfindbugs/src/org/netbeans/modules/hudsonfindbugs/NBMFindBugsQueryProvider.java
deleted file mode 100644
--- 
a/hudsonfindbugs/src/org/netbeans/modules/hudsonfindbugs/NBMFindBugsQueryProvider.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common
- * Development and Distribution License("CDDL") (collectively, the
- * "License"). You may not use this file except in compliance with the
- * License. You can obtain a copy of the License at
- * http://www.netbeans.org/cddl-gplv2.html
- * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
- * specific language governing permissions and limitations under the
- * License.  When distributing the software, include this License Header
- * Notice in each file and include the License file at
- * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun in the GPL Version 2 section of the License file that
- * accompanied this code. If applicable, add the following below the
- * License Header, with the fields enclosed by brackets [] replaced by
- * your own identifying information:
- * "Portions Copyrighted [year] [name of copyright owner]"
- * 
- * If you wish your version of this file to be governed by only the CDDL
- * or only the GPL Version 2, indicate your decision by adding
- * "[Contributor] elects to include this software in this distribution
- * under the [CDDL or GPL Version 2] license." If you do not indicate a
- * single choice of license, a recipient has the option to distribute
- * your version of this file under either the CDDL, the GPL Version 2 or
- * to extend the choice of license to its licensees as provided above.
- * However, if you add GPL Version 2 code and therefore, elected the GPL
- * Version 2 license, then the option applies only if the new code is
- * made subject to such option by the copyright holder.
- * 
- * Contributor(s):
- * 
- * Portions Copyrighted 2007 Sun Microsystems, Inc.
- */
-
-package org.netbeans.modules.hudsonfindbugs;
-
-import java.io.File;
-import java.net.MalformedURLException;
-import java.net.URL;
-import org.netbeans.api.annotations.common.CheckForNull;
-import org.netbeans.api.project.Project;
-import org.netbeans.modules.apisupport.project.spi.NbModuleProvider;
-import org.netbeans.modules.hudsonfindbugs.spi.FindBugsQueryImplementation;
-import org.netbeans.spi.project.ProjectServiceProvider;
-import org.openide.filesystems.FileUtil;
-import org.openide.util.Exceptions;
-
-/**
- *
- * @author Martin Grebac
- */
-@ProjectServiceProvider(service=FindBugsQueryImplementation.class, 
projectType="org-netbeans-modules-apisupport-project")
-public final class NBMFindBugsQueryProvider implements 
FindBugsQueryImplementation {
-
-    private final static String NB_HUDSON_FBUGS_URLROOT = 
-            
"http://qa-findbugs.netbeans.org/job/FindBugsResults/lastSuccessfulBuild/artifact/";;
-
-    private final Project project;
-
-    public NBMFindBugsQueryProvider(Project project) {
-        this.project = project;
-    }
-    
-    @CheckForNull
-    public URL getFindBugsUrl(boolean remote) {
-        URL url = null;
-        NbModuleProvider prov = 
project.getLookup().lookup(NbModuleProvider.class);
-        if (prov != null) {
-            if (!remote) {
-                File nbbuild = new 
File(FileUtil.toFile(project.getProjectDirectory()).getParentFile(), 
"nbbuild");
-                if (nbbuild.isDirectory()) {
-                    File findbugsFile = new File(nbbuild, "build" + 
File.separator + "findbugs" + File.separator
-                            + prov.getCodeNameBase().replace('.', '-') + 
".xml");
-                    if (findbugsFile.exists() && findbugsFile.isFile() && 
findbugsFile.canRead()) {
-                        try {
-                            return findbugsFile.toURI().toURL();
-                        } catch (MalformedURLException ex) {
-                            Exceptions.printStackTrace(ex);
-                        }
-                    }
-                }
-            }
-
-            try {
-                String urlStr = NB_HUDSON_FBUGS_URLROOT + 
prov.getCodeNameBase().replace('.', '-') + ".xml";
-                url = new URL(urlStr);
-            } catch (MalformedURLException ex) {
-                Exceptions.printStackTrace(ex);
-            }
-        }
-        return url;
-    }
-
-}
\ No newline at end of file
diff --git 
a/hudsonfindbugs/src/org/netbeans/modules/hudsonfindbugs/api/FindBugsQuery.java
 
b/hudsonfindbugs/src/org/netbeans/modules/hudsonfindbugs/api/FindBugsQuery.java
deleted file mode 100644
--- 
a/hudsonfindbugs/src/org/netbeans/modules/hudsonfindbugs/api/FindBugsQuery.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- *
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common
- * Development and Distribution License("CDDL") (collectively, the
- * "License"). You may not use this file except in compliance with the
- * License. You can obtain a copy of the License at
- * http://www.netbeans.org/cddl-gplv2.html
- * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
- * specific language governing permissions and limitations under the
- * License.  When distributing the software, include this License Header
- * Notice in each file and include the License file at
- * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun in the GPL Version 2 section of the License file that
- * accompanied this code. If applicable, add the following below the
- * License Header, with the fields enclosed by brackets [] replaced by
- * your own identifying information:
- * "Portions Copyrighted [year] [name of copyright owner]"
- *
- * Contributor(s):
- *
- * The Original Software is NetBeans. The Initial Developer of the Original
- * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
- * Microsystems, Inc. All Rights Reserved.
- *
- * If you wish your version of this file to be governed by only the CDDL
- * or only the GPL Version 2, indicate your decision by adding
- * "[Contributor] elects to include this software in this distribution
- * under the [CDDL or GPL Version 2] license." If you do not indicate a
- * single choice of license, a recipient has the option to distribute
- * your version of this file under either the CDDL, the GPL Version 2 or
- * to extend the choice of license to its licensees as provided above.
- * However, if you add GPL Version 2 code and therefore, elected the GPL
- * Version 2 license, then the option applies only if the new code is
- * made subject to such option by the copyright holder.
- */
-
-package org.netbeans.modules.hudsonfindbugs.api;
-
-import java.net.URL;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-import org.netbeans.api.annotations.common.CheckForNull;
-import org.netbeans.api.annotations.common.NonNull;
-import org.netbeans.api.project.Project;
-import org.netbeans.modules.hudsonfindbugs.spi.FindBugsQueryImplementation;
-import org.openide.util.Parameters;
-
-/**
- * Find the Hudson FindBugs scan result files for projects. Files may be 
located either on 
- * remote server or built locally. IDE-wide proxy settings are used to fetch 
the remote resource.
- *  
- * @author Martin Grebac
- */
-public class FindBugsQuery {
-    
-    private static final Logger LOG = 
Logger.getLogger(FindBugsQuery.class.getName());
-            
-    private FindBugsQuery() {}
-
-    /**
-     * Find the URL for FindBugs Hudson plugin
-     * @param project The project for which FindBugs URL is requested
-     * @param remote Whether remote server URL is requested, or URL for 
local copy
-     * @return URL to findbugs file for project 'project' or null if the url 
is not defined. Note the physical resource 
-     * itself might not exist.
-     */
-    @CheckForNull
-    public static URL getFindBugsUrl(@NonNull Project project, boolean 
remote) {
-        Parameters.notNull("project", project);
-        FindBugsQueryImplementation query = 
project.getLookup().lookup(FindBugsQueryImplementation.class);
-        if (query != null) {
-            URL url = query.getFindBugsUrl(remote);
-            LOG.log(Level.FINE, "getFindBugsUrl({0}, {1}) -> {2}", new 
Object[] {project.getProjectDirectory(), remote, url});
-            return url;
-        }
-        LOG.log(Level.FINE, "No FBugs query implementation found, returning 
null for: ", project.getProjectDirectory());
-        return null;
-    }
-
-    /**
-     * Find the fastest access URL for FindBugs results. 
-     * @param project The project for which FindBugs URL is requested
-     * @return Local file if present, otherwise remote file. Null if the url 
is not defined. Note the physical resource 
-     * itself might not exist.
-     */
-    @CheckForNull
-    public static URL getFindBugsUrl(@NonNull Project project) {
-        Parameters.notNull("project", project);
-        FindBugsQueryImplementation query = 
project.getLookup().lookup(FindBugsQueryImplementation.class);
-        if (query != null) {
-            URL url = query.getFindBugsUrl(false);
-            if (url == null) {
-                url = query.getFindBugsUrl(true);
-            }
-            LOG.log(Level.FINE, "getFindBugsUrl({0}) -> {1}", new Object[] 
{project.getProjectDirectory(), url});
-            return url;
-        }
-        LOG.log(Level.FINE, "No FBugs query implementation found, returning 
null for: ", project.getProjectDirectory());
-        return null;
-    }
-    
-}
diff --git a/hudsonfindbugs/src/org/netbeans/modules/hudsonfindbugs/layer.xml 
b/hudsonfindbugs/src/org/netbeans/modules/hudsonfindbugs/layer.xml
deleted file mode 100644
--- a/hudsonfindbugs/src/org/netbeans/modules/hudsonfindbugs/layer.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE filesystem PUBLIC "-//NetBeans//DTD Filesystem 1.1//EN" 
"http://www.netbeans.org/dtds/filesystem-1_1.dtd";>
-<filesystem>
-    <folder name="TaskList">
-        <folder name="Scanners">
-            <file name="NetBeansFindBugs.instance">
-                <attr name="instanceOf" 
stringvalue="org.netbeans.spi.tasklist.FileTaskScanner"/>
-                <attr name="instanceCreate" 
methodvalue="org.netbeans.modules.hudsonfindbugs.FindBugsTaskScanner.create"/>
-            </file>
-        </folder>
-    </folder>
-</filesystem>
diff --git 
a/hudsonfindbugs/src/org/netbeans/modules/hudsonfindbugs/messages.xml 
b/hudsonfindbugs/src/org/netbeans/modules/hudsonfindbugs/messages.xml
deleted file mode 100644
--- a/hudsonfindbugs/src/org/netbeans/modules/hudsonfindbugs/messages.xml
+++ /dev/null
@@ -1,6095 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<MessageCollection xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
-                  xsi:noNamespaceSchemaLocation="messagecollection.xsd">
-
-  <!--
-  **********************************************************************
-  Plugin information
-  **********************************************************************
-  -->
-  <Plugin>
-    <ShortDescription>Default FindBugs plugin</ShortDescription>
-    <Details>
-<![CDATA[
-<p>
-This plugin contains all of the standard FindBugs detectors.
-</p>
-]]>
-    </Details>
-  </Plugin>
-
-  <!--
-  **********************************************************************
-  Categories (replacing the BugCategoryDescriptions.properties file)
-  **********************************************************************
-   -->
-
-  <BugCategory category="CORRECTNESS">
-    <Description>Correctness</Description>
-    <Abbreviation>C</Abbreviation>
-    <Details>Probable bug - an apparent coding mistake
-            resulting in code that was probably not what the
-            developer intended. We strive for a low false positive 
rate.</Details>
-  </BugCategory>
-
-  <BugCategory category="BAD_PRACTICE">
-    <Description>Bad practice</Description>
-    <Abbreviation>B</Abbreviation>
-    <Details>Violations of recommended and essential
-            coding practice. Examples include hash code and equals
-            problems, cloneable idiom, dropped exceptions,  
-            Serializable problems, and misuse of finalize.
-            We strive to make this analysis accurate,
-            although some groups may
-            not care about some of the bad practices.</Details>
-  </BugCategory>
-
-  <BugCategory category="STYLE">
-    <Description>Dodgy</Description>
-    <Abbreviation>D</Abbreviation>
-    <Details>code that is confusing, anomalous, or
-            written in a way that leads itself to errors.
-            Examples include dead local stores, switch fall through,
-            unconfirmed casts, and redundant null check of value
-            known to be null.
-            More false positives accepted.
-            In previous versions of FindBugs, this category was known as 
Style.
-</Details>
-  </BugCategory>
-
-  <BugCategory category="PERFORMANCE">
-    <Description>Performance</Description>
-    <Abbreviation>P</Abbreviation>
-    <Details>code that is not necessarily incorrect but may be 
inefficient</Details>
-  </BugCategory>
-
-  <BugCategory category="MALICIOUS_CODE">
-    <Description>Malicious code vulnerability</Description>
-    <Abbreviation>V</Abbreviation>
-    <Details>code that is vulnerable to attacks from untrusted code</Details>
-  </BugCategory>
-
-  <BugCategory category="MT_CORRECTNESS">
-    <Description>Multithreaded correctness</Description>
-    <Abbreviation>M</Abbreviation>
-    <Details>code flaws having to do with threads, locks, and 
volatiles</Details>
-  </BugCategory>
-
-  <BugCategory category="I18N">
-    <Description>Internationalization</Description>
-    <Abbreviation>I</Abbreviation>
-    <Details>code flaws having to do with internationalization and 
locale</Details>
-    <!-- DM_CONVERT_CASE is the only core bug pattern in this category -->
-  </BugCategory>
-
-
-  <!--
-  **********************************************************************
-  Detectors
-  **********************************************************************
-   -->
-
-       <Detector 
class="edu.umd.cs.findbugs.detect.SynchronizeAndNullCheckField">
-     <Details>
-<![CDATA[
-<p> This detector looks for a field that is synchronized on and then null 
checked.</p>
-]]>
-     </Details>
-   </Detector>
-
-
-  <Detector class="edu.umd.cs.findbugs.detect.CheckImmutableAnnotation">
-    <Details>
-<![CDATA[
-<p> Looks for violations of the rules for classes annotated as 
net.jcip.annotations.Immutable.</p>
-]]>
-    </Details>
-  </Detector>
-  <Detector class="edu.umd.cs.findbugs.detect.VarArgsProblems">
-    <Details>
-<![CDATA[
-<p> Looks for problems with arising from Java 1.5 var args.</p>
-]]>
-    </Details>
-  </Detector>
-  <Detector class="edu.umd.cs.findbugs.detect.NoteJCIPAnnotation">
-    <Details>
-<![CDATA[
-<p> Record annotations from the net.jcip.annotations package.</p>
-]]>
-    </Details>
-  </Detector>
-  <Detector class="edu.umd.cs.findbugs.detect.NoteSuppressedWarnings">
-    <Details>
-<![CDATA[
-<p> Suppresses warnings based on use of the 
edu.umd.cs.findbugs.annotations.NoteSuppressWarnings annotation.</p>
-]]>
-    </Details>
-  </Detector>
-  <Detector class="edu.umd.cs.findbugs.detect.NoteAnnotationRetention">
-    <Details>
-<![CDATA[
-<p> Records annotation retention.</p>
-]]>
-    </Details>
-  </Detector>
-  <Detector class="edu.umd.cs.findbugs.detect.Methods">
-    <Details>
-<![CDATA[
-<p> Builds of database of all methods defined in analyzed classes, for use
-by other detectors.</p>
-]]>
-    </Details>
-  </Detector>
-  <Detector class="edu.umd.cs.findbugs.detect.CalledMethods">
-    <Details>
-<![CDATA[
-<p> Builds of database of all methods invoked in analyzed classes, for use
-by other detectors.</p>
-]]>
-    </Details>
-  </Detector>
-  <Detector 
class="edu.umd.cs.findbugs.detect.ConfusionBetweenInheritedAndOuterMethod">
-    <Details>
-<![CDATA[
-<p> Looks for potential confusion between inherited and outer methods.</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.NoteCheckReturnValue">
-    <Details>
-<![CDATA[
-<p> Looks for annotations to check return values of a method.
-</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector 
class="edu.umd.cs.findbugs.detect.NoteCheckReturnValueAnnotations">
-    <Details>
-<![CDATA[
-<p> Looks for annotations to check return values of a method.
-</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.NoteNonNullAnnotations">
-   <Details>
-      <![CDATA[
-      <p>
-      Looks for @NonNull annotations on methods, fields, and parameters.
-      These can be used by the FindNullDeref detector to generate warnings
-      when a possibly-null value is used in a context where only
-      non-null values should be used.
-      </p>
-      ]]>
-   </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.NoteUnconditionalParamDerefs">
-   <Details>
-      <![CDATA[
-      <p>
-      Analyze all methods in the application to determine which
-      dereference parameters unconditionally.  This information is used in
-      a later analysis pass to find call sites where null values may
-      be passed to those methods.
-      </p>
-      <p>
-      This is a slow detector.
-      </p>
-      ]]>
-   </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.NoteNonnullReturnValues">
-   <Details>
-      <![CDATA[
-      <p>
-      Analyze all methods in the application to determine which
-       methods always return nonnull values.
-      </p>
-      ]]>
-   </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.BadUseOfReturnValue">
-    <Details>
-<![CDATA[
-<p> Looks for cases where the return value of a function is discarded
-after being checked for non-null.  </p>
-
-]]>
-    </Details>
-  </Detector>
-  <Detector class="edu.umd.cs.findbugs.detect.InheritanceUnsafeGetResource">
-    <Details>
-<![CDATA[
-<p> Looks for uses of this.getClass().getResource(...), which can give
-unexpected results if the class is extended by a class in
-another package. It is a fast detector</p>
-
-]]>
-    </Details>
-  </Detector>
-  <Detector class="edu.umd.cs.findbugs.detect.InfiniteRecursiveLoop">
-    <Details>
-<![CDATA[
-<p> Looks for an infinite recursive loop. It is a fast detector.</p>
-]]>
-    </Details>
-  </Detector>
-  <Detector class="edu.umd.cs.findbugs.detect.InfiniteLoop">
-    <Details>
-<![CDATA[
-<p> Looks for an infinite loop. It is a fast detector.</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.InfiniteRecursiveLoop2">
-   <Details>
-<![CDATA[
-<p>Looks for an infinite recursive loop. It is a slow detector.</p>
-]]>
-   </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.VolatileUsage">
-    <Details>
-<![CDATA[
-<p> Looks for bug patterns in the usage of volatile fields. It is a fast 
detector.</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.EmptyZipFileEntry">
-    <Details>
-<![CDATA[
-<p> This looks for creation of empty zip file entries. It is a moderately 
fast detector.</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector 
class="edu.umd.cs.findbugs.detect.UncallableMethodOfAnonymousClass">
-    <Details>
-<![CDATA[
-<p> This detector looks for anonymous inner classes that define methods
-that are probably intended to but do not override methods in a superclass.
-</p>
-]]>
-    </Details>
-  </Detector>
-  
-  <Detector class="edu.umd.cs.findbugs.detect.DontUseEnum">
-    <Details>
-<![CDATA[
-<p>Checks that fields and methods don't use the name assert or enum as they 
are keywords in Java 5.</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.URLProblems">
-    <Details>
-<![CDATA[
-<p> The equals and hashCode method on <code>java.net.URL</code> resolve
-the domain name. As a result, these operations can be very expensive, and 
this
-detector looks for places where those methods might be invoked.
-</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.FinalizerNullsFields">
-       <Details>
-<![CDATA[
-<p> This detector looks for finalizers that null out fields of a class.  
-This does not help the garbage collector in any way, the nulling out of 
fields has no effect.
-</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.TestingGround">
-    <Details>
-<![CDATA[
-<p> This detector is just a hook for testing new detectors.
-Normally, this detector does nothing.</p>
-]]>
-    </Details>
-  </Detector>
-
-
-  <Detector class="edu.umd.cs.findbugs.detect.HugeSharedStringConstants">
-    <Details>
-<![CDATA[
-<p> This detector looks for string constants that are duplicated across 
multiple classfiles.
-</p>
-]]>
-    </Details>
-  </Detector>
-
-
-
- <Detector class="edu.umd.cs.findbugs.detect.DoInsideDoPrivileged">
-    <Details>
-<![CDATA[
-<p> Look for code that should be executed inside doPrivileged blocks.</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.ResolveAllReferences">
-    <Details>
-<![CDATA[
-<p> Checks that all references call be resolved.  </p>
-]]>
-    </Details>
-  </Detector>
-
-
-  <Detector class="edu.umd.cs.findbugs.detect.SwitchFallthrough">
-    <Details>
-<![CDATA[
-<p> This detector looks for switch statements containing fall through.
-It is a fast detector.</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.FindFieldSelfAssignment">
-    <Details>
-<![CDATA[
-<p> This detector looks for places where a field is assigned
-by reading the value of the same field.  It is a fast detector.</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.FindSelfComparison">
-    <Details>
-<![CDATA[
-<p> This detector looks for places where a value is compared with itself.</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.FindSelfComparison2">
-    <Details>
-<![CDATA[
-<p> This detector looks for places where a value is compared with itself.</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.FindNonShortCircuit">
-    <Details>
-<![CDATA[
-<p> This detector looks for suspicious uses of non-short-circuiting
-boolean operators (<code>|</code> and <code>&amp;</code> instead of
-<code>||</code> and <code>&amp;&amp;</code>).</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector 
class="edu.umd.cs.findbugs.detect.DontCatchIllegalMonitorStateException">
-    <Details>
-<![CDATA[
-<p> This detector looks for try-catch blocks that catch an 
IllegalMonitorStateException.</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.FindFloatMath">
-    <Details>
-<![CDATA[
-<p> This detector looks for uses of floating point math. It is a moderately 
fast detector.</p>
-]]>
-    </Details>
-  </Detector>
-  <Detector class="edu.umd.cs.findbugs.detect.CloneIdiom">
-    <Details>
-<![CDATA[
-<p> This detector looks for violations of the idioms for writing
-cloneable classes. It is a fast detector.</p>
-]]>
-    </Details>
-  </Detector>
-  <Detector class="edu.umd.cs.findbugs.detect.ComparatorIdiom">
-    <Details>
-<![CDATA[
-<p> This detector looks for violations of the idioms for writing
-classes that implement <code>Comparator</code>. It is a fast detector.</p>
-]]>
-    </Details>
-  </Detector>
-  <Detector class="edu.umd.cs.findbugs.detect.DroppedException">
-    <Details>
-<![CDATA[
-<p> This detector looks for code where an exception is caught,
-but nothing is done to handle the exception.  It is a fast detector.</p>
-]]>
-    </Details>
-  </Detector>
-  <Detector class="edu.umd.cs.findbugs.detect.LoadOfKnownNullValue">
-    <Details>
-<![CDATA[
-<p> Looks for loads of values known to be null.
-</p>
-]]>
-    </Details>
-  </Detector>
-  <Detector class="edu.umd.cs.findbugs.detect.DumbMethodInvocations">
-    <Details>
-<![CDATA[
-<p> This detector looks for bad arguments being passed to methods
-(e.g., substring(0)).
-</p>
-]]>
-    </Details>
-  </Detector>
-  <Detector class="edu.umd.cs.findbugs.detect.DumbMethods">
-    <Details>
-<![CDATA[
-<p> This detector looks for calls to pointless methods,
-such as the no-argument String constructor.
-It is a fast detector.</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.NumberConstructor">
-    <Details>
-<![CDATA[
-<p> Looks for calls to Number constructors with primitive arguments.
-It is a fast detector</p>                      
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.FindDoubleCheck" >
-    <Details>
-<![CDATA[
-<p> This detector looks for instances of double checked locking.
-It is a fast detector.</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.FindFinalizeInvocations" >
-    <Details>
-<![CDATA[
-<p> This detector looks for calls to finalize() and other finalizer-related
-issues.  It is a fast detector.</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.FindHEmismatch" >
-    <Details>
-<![CDATA[
-<p> This detector looks for problems in the definition of the hashCode() and 
equals()
-methods.  It is a fast detector.</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.FindNakedNotify" >
-    <Details>
-<![CDATA[
-<p> This detector looks for calls to notify() that don't seem
-to modify mutable object state.  It is a fast detector.</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.FindReturnRef" >
-    <Details>
-<![CDATA[
-<p> This detector looks for methods that return mutable static data.
-It is a fast detector.</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.FindRunInvocations" >
-    <Details>
-<![CDATA[
-<p> This detector looks for calls to Thread.run().  It is a fast
-detector.</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.FindSpinLoop" >
-    <Details>
-<![CDATA[
-<p> This detector looks for loops that spin reading from a field.
-It is a fast detector.</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.FindTwoLockWait" >
-    <Details>
-<![CDATA[
-<p> This detector looks for calls to wait() with two (or more) locks held.
-It is a slow detector.</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.FindUnconditionalWait" >
-    <Details>
-<![CDATA[
-<p> This detector looks for calls to wait() not in a conditional or loop.
-It is a fast detector.</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.FindUninitializedGet" >
-    <Details>
-<![CDATA[
-<p> This detector looks for reads of uninitialized fields in constructors.
-It is a fast detector.</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.FindUnsyncGet" >
-    <Details>
-<![CDATA[
-<p> This detector looks for get and set methods where the get is 
unsynchronized
-while the set is synchronized.  It is a fast detector.</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.InitializationChain" >
-    <Details>
-<![CDATA[
-<p> This detector looks for potentially circular class initialization
-dependencies.  It is a fast detector.</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.IteratorIdioms" >
-    <Details>
-<![CDATA[
-<p> This iterator looks for problems in how Iterator classes are defined.
-It is a fast detector.</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.LockedFields" >
-    <Details>
-<![CDATA[
-<p> This detector looks for fields that are accessed in an inconsistent 
manner
-with respect to locking.  It is a fast detector.</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.EqStringTest" >
-    <Details>
-<![CDATA[
-<p> This detector looks for comparisons of String objects using the == or !=
-operators.
- It is a fast detector.</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.MutableLock" >
-    <Details>
-<![CDATA[
-<p> This detector looks for synchronization on objects read from
-modified fields.  It is a fast detector.</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.MutableStaticFields" >
-    <Details>
-<![CDATA[
-<p> This detector looks for static fields that may be modified by
-malicious code.  It is a fast detector.</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.Naming" >
-    <Details>
-<![CDATA[
-<p> This detector looks for suspiciously-named methods.  It is a fast 
detector.</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.ReadReturnShouldBeChecked" >
-    <Details>
-<![CDATA[
-<p> This detector looks for calls to InputStream.read() or 
InputStream.skip() where the
-return value is ignored.  It is a fast detector.</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.SerializableIdiom" >
-    <Details>
-<![CDATA[
-<p> This detector looks for potential problems in the implementation
-of Serializable classes.  It is a fast detector.</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.StartInConstructor" >
-    <Details>
-<![CDATA[
-<p> This detector looks for constructors that start threads.  It is a fast 
detector.</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.FindBadForLoop" >
-    <Details>
-<![CDATA[
-<p> This detector looks for incorrect for loops.
-</p>
-]]>
-    </Details>
-  </Detector>
-  <Detector class="edu.umd.cs.findbugs.detect.UnreadFields" >
-    <Details>
-<![CDATA[
-<p> This detector looks for fields whose value is never read.  It is a fast 
detector.</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.WaitInLoop" >
-    <Details>
-<![CDATA[
-<p> This detector looks for calls to wait() that are not in a loop.
-It is a fast detector.</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.BCPMethodReturnCheck" >
-    <Details>
-<![CDATA[
-<p> This detector looks for calls to methods where the return value
-is suspiciously ignored.  It is a slow detector.</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.FindNullDeref">
-    <Details>
-<![CDATA[
-<p> This detector looks for places where a null pointer exception might
-occur.  It also looks for redundant comparisons of reference values against
-null.  It is a slow detector.</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.FindOpenStream">
-    <Details>
-<![CDATA[
-<p> This detector looks for IO stream objects which do not escape the
-method and do not appear to be closed on all paths out of the method.
-It is a slow detector.</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.PreferZeroLengthArrays">
-    <Details>
-<![CDATA[
-<p> This detector looks for methods that return either arrays or an explicit 
null reference.
-Returning a zero length array is generally preferred in this context to 
returning a null reference.
-It is a fast detector.</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.FindUselessControlFlow">
-    <Details>
-<![CDATA[
-<p> This detector looks for control flow statements which have no effect.
-It is a fast detector.</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.FindUnreleasedLock">
-    <Details>
-<![CDATA[
-<p> This detector looks for JSR-166 (<code>java.util.concurrent</code>)
-locks which are acquired, but not released on all paths out of the 
method.&nbsp;
-It is a moderately fast detector.&nbsp; Note that in order to use this
-detector, you need to have the <code>java.util.concurrent</code> package
-in the auxiliary classpath (or be analyzing the package itself).</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.FindRefComparison">
-    <Details>
-<![CDATA[
-<p> This detector looks for places where two reference values are compared
-with the == or != operator, and the class is of a type (such as 
<code>java.lang.String</code>)
-where comparing reference values is generally an error.  It is a slow 
detector.</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.FindMismatchedWaitOrNotify">
-    <Details>
-<![CDATA[
-<p> This detector looks for calls to wait(), notify(), or notifyAll()
-which do not appear to be made on an object which is currently locked.&nbsp;
-It is a moderately fast detector.&nbsp; <b>This detector is disabled because
-it is still under development, and produces too many false positives.</b></p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.FindEmptySynchronizedBlock" >
-    <Details>
-<![CDATA[
-<p> This detector looks for empty synchronized blocks.</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.FindInconsistentSync2" >
-    <Details>
-<![CDATA[
-<p> This detector looks for fields that are accessed in an inconsistent 
manner
-with respect to locking.  It is a slow detector.</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.FindLocalSelfAssignment2">
-    <Details>
-<![CDATA[
-<p> This detector looks for self assignments of local variables.
-It is a fast detector.</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.IncompatMask">
-    <Details>
-<![CDATA[
-<p> This detector looks for suspicious bitwise logical expressions.
-It is a fast detector.</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.LazyInit">
-    <Details>
-<![CDATA[
-<p> This detector looks for lazy field initialization where the
-field is not volatile.  It is a moderately fast detector.</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.FindJSR166LockMonitorenter">
-    <Details>
-<![CDATA[
-<p> This detector looks for ordinary synchronization performed
-on JSR166 locks.  It is a moderately fast detector.</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.FindUncalledPrivateMethods">
-    <Details>
-<![CDATA[
-<p> This detector looks for private methods that are never called.
-It is a fast detector.</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.StringConcatenation">
-    <Details>
-<![CDATA[
-<p> This detector looks for String concatenation in loops using +.
-It is a fast detector.</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.InefficientToArray">
-    <Details>
-<![CDATA[
-<p> This detector looks for code that converts Collections to arrays
-using the toArray() method that takes a prototype array, passing
-an array argument which is zero-length.
-It is a fast detector.</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.InvalidJUnitTest">
-    <Details>
-<![CDATA[
-<p> This detector looks for JUnit tests that are malformed.
-It is a fast detector.</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.BadlyOverriddenAdapter">
-    <Details>
-<![CDATA[
-<p> This detector looks for code that extends an Adapter class and overrides 
a Listener
-method with the wrong signature. It is a fast detector.</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.BadResultSetAccess">
-    <Details>
-<![CDATA[
-<p> This detector looks for calls to getXXX or setXXX methods of a result 
set where the
-field index is 0. As ResultSet fields start at index 1, this is always a 
mistake.
-It is a fast detector.</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.SuperfluousInstanceOf">
-    <Details>
-<![CDATA[
-<p> This detector looks for type checks using the instanceof operator where 
the determination
-can be done statically. It is a fast detector.</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.BadAppletConstructor">
-    <Details>
-<![CDATA[
-<p>
-This detector looks for Applet constructors that call methods in the parent
-Applet that rely on the Applet stub. Since this stub isn't initialized until 
just
-before the init() method, these methods will fail in the constructor. It is 
a fast detector.
-</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.UseObjectEquals">
-    <Details>
-<![CDATA[
-<p>
-This detector looks calls to equals(java.lang.Object) on arrays, or final 
classes that do not
-override the equals method in the Object class. This means that equals 
semantics is the same as
-==, and probably a mistake.
-</p>
-]]>
-    </Details>
-  </Detector>
-  <Detector class="edu.umd.cs.findbugs.detect.SuspiciousThreadInterrupted">
-    <Details>
-<![CDATA[
-<p>
-This detector looks for calls to Thread.interrupted() from a non static 
context. If it is called from
-Thread.currentThread().interrupted(), then it is just a useless exercise, 
just use Thread.interrupted().
-However if it is called on an arbitrary thread object, it is most probably 
an error, as interrupted()
-is always called on the current thread.
-</p>
-]]>
-    </Details>
-  </Detector>
-
-<Detector class="edu.umd.cs.findbugs.detect.FindSqlInjection">
-<Details>
-<![CDATA[
-<p>
-This detector uses data flow analysis to look for invocations of execute 
methods
-on SQL statements in switch something other than a constant string is passed 
as an argument.
-</p>
-]]>
-    </Details>
-  </Detector>
-
-<Detector class="edu.umd.cs.findbugs.detect.FindDeadLocalStores">
-<Details>
-<![CDATA[
-<p>
-This detector looks for assignments to local variables that
-are never subsequently read. It is a moderately fast detector.
-</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.FindMaskedFields">
-    <Details>
-<![CDATA[
-<p> This detector looks for class level fields that are masked by
-local fields defined in methods.
-It is a fast detector.</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.WrongMapIterator">
-    <Details>
-<![CDATA[
-<p> This detector looks for accessing the value of a Map entry, using a key 
that was retrieved from
-a keySet iterator. It is a fast detector.</p>
-]]>
-   </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.InstantiateStaticClass">
-    <Details>
-<![CDATA[
-<p> This detector looks for code that creates objects based on classes that 
only define static methods.
-It is a fast detector.</p>
-]]>
-   </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.RuntimeExceptionCapture">
-     <Details>
-<![CDATA[
-<p> This detector looks for catch clauses that catch Exception,
-when no code in the block throws Exception. </p>
-]]>
-     </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.FindFloatEquality">
-      <Details>
-<![CDATA[
-<p> Looks for floating point equality expressions. A fast detector. </p>
-]]>
-      </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.FindUnsatisfiedObligation">
-    <Details>
-<![CDATA[
-<p>This detector looks for I/O streams and database resources that
-are not cleaned up on all paths out of a method.  This is a slow 
detector.</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.UnnecessaryMath">
-    <Details>
-<![CDATA[
-<p>This detector looks for code that calls java.lang.Math static methods on 
constant values,
-where the resultant value is a statically known constant. It is faster, and 
sometimes more
-accurate, to use the constant instead.</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.FindCircularDependencies">
-    <Details>
-<![CDATA[
-<p>This detector looks circular dependencies among classes. It is a fast 
detector.</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.RedundantInterfaces">
-    <Details>
-<![CDATA[
-<p>This detector looks for classes that declare they implement the same 
interface
-as a super class. This is redundant, if a superclass implements an 
interface, so does
-the subclass.</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.MultithreadedInstanceAccess">
-    <Details>
-<![CDATA[
-<p>This detector looks for potential problems in implementing the Struts 
framework.
-It is a fast detector.</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.PublicSemaphores">
-    <Details>
-<![CDATA[
-<p>This detector looks for public classes that synchronize and use wait(), 
notify() or notifyAll()
-on <b>this</b>. This exposes a synchronization implementation as a public 
artifact of the class.
-Clients of the class may use an instance of the class as it's own 
synchronizing object, and cause
-havoc to the base implementation.
-It is a fast detector.</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.MethodReturnCheck">
-    <Details>
-<![CDATA[
-<p> This detector looks for calls to methods where the return value
-is suspiciously ignored.  It is a fast detector.</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.IDivResultCastToDouble">
-    <Details>
-<![CDATA[
-<p>
-This detector looks for places where the result of integer division is
-cast to double. Often, what was meant was to cast the integer operands
-to double and then perform the division.  It is a fast detector.
-</p>
-]]>
-    </Details>
-  </Detector>
-  <Detector class="edu.umd.cs.findbugs.detect.FindBadCast">
-    <Details>
-<![CDATA[
-<p>
-This detector looks for bad casts of object references.
-</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.FindBadCast2">
-    <Details>
-<![CDATA[
-<p>
-This detector looks for bad casts of object references using data flow 
analysis.
-</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector 
class="edu.umd.cs.findbugs.detect.FindNonSerializableStoreIntoSession">
-    <Details>
-<![CDATA[
-<p>
-This detector looks for stores of non Serializable objects into Http 
sessions.
-</p>
-]]>
-    </Details>
-  </Detector>
-  <Detector 
class="edu.umd.cs.findbugs.detect.FindNonSerializableValuePassedToWriteObject">
-    <Details>
-<![CDATA[
-<p>
-This detector looks for stores of non Serializable objects passed to the 
writeObject method of
-an ObjectOutput.
-</p>
-]]>
-    </Details>
-  </Detector>
-
-
-
-
-  <Detector class="edu.umd.cs.findbugs.detect.BadSyntaxForRegularExpression">
-    <Details>
-<![CDATA[
-<p> This detector looks for regular expressions that have invalid syntax.  
</p>
-]]>
-    </Details>
-  </Detector>
-  <Detector class="edu.umd.cs.findbugs.detect.FindPuzzlers">
-    <Details>
-<![CDATA[
-<p> This detector problems looks for miscellaneous small errors
-mentioned by Joshua Bloch and Neal Gafter in
-their work on Programming Puzzlers.
-  </p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.FindSleepWithLockHeld">
-   <Details>
-      <![CDATA[
-      <p>
-         This detector looks for calls to Thread.sleep() made with
-         a lock held.  It is a slow detector.
-      </p>
-      ]]>
-   </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.DuplicateBranches">
-    <Details>
-<![CDATA[
-<p> This detector looks for if/else or switch statements that have the
-same code for two branches, thus rendering the test useless. This often
-is caused by copying and pasting the two branches, causing incorrect logic
-for the one branch.</p><p>It is a fast detector.</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.InefficientMemberAccess">
-   <Details>
-<![CDATA[
-<p> This detector looks for internal classes that write to member variables 
of the
-owning class, when that member variable is private. In this case, a special 
compiler
-generated accessor method needs to be used to write to this variable. 
Relaxing the
-visibility to protected will allow the field to be directly written.</p>
-<p>It is a fast detector.</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.XMLFactoryBypass">
-   <Details>
-<![CDATA[
-<p> This detector looks for direct allocations of implementations of XML 
interfaces.
-This ties the code to a specific implementation, rather than using the 
supplied
-factory pattern to create these objects.</p>
-<p>It is a fast detector.</p>
-]]>
-    </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.FindBadEqualsImplementation">
-   <Details>
-      <![CDATA[
-      <p>
-      This detector looks for equals(Object) method implementations which
-      unconditionally dereference their parameter.  This violates the 
contract
-      defined by java.lang.Object.equals(), which states that if the 
parameter
-      is null, the method must return null.
-      </p>
-      <p>It is a slow detector.</p>
-      ]]>
-   </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.UselessSubclassMethod">
-   <Details>
-      <![CDATA[
-      <p>
-      This detector looks for subclasses that implement methods defined in 
the super
-      class, that only pass the parameters untouched to the parent class 
method.
-      These methods can just be removed.
-      </p>
-      <p>It is a fast detector.</p>
-      ]]>
-   </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.ConfusedInheritance">
-   <Details>
-      <![CDATA[
-      <p>
-      This detector for final classes that declare protected members. As this
-      class can not be derived from, the use of protected access for members 
is
-      incorrect. The access should be changed to public or private to 
represent
-      the correct intention of the field. This was probably caused by a 
change in
-      use for this class, without completely changing all of the class to 
the new
-      paradigm.
-      </p>
-      <p>It is a fast detector.</p>
-      ]]>
-   </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.QuestionableBooleanAssignment">
-   <Details>
-      <![CDATA[
-      <p>
-      This detector looks for simple assignments of literal boolean values 
to variables in 
-      conditional expressions.
-      </p>
-      <p>It is a fast detector.</p>
-      ]]>
-   </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.TrainNullReturnValues">
-   <Details>
-      <![CDATA[
-      <p>
-      TrainNullReturnValues determines which methods may return null and 
saves
-      them to a file.  The resulting file may be used in a subsequent
-      pass to improve the precision of the null-dereference detector.
-      Since this is just a training pass, no warnings are reported.
-      </p>
-      <p>
-      This is a slow detector.
-      </p>
-      ]]>
-   </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.TrainUnconditionalDerefParams">
-   <Details>
-      <![CDATA[
-      <p>
-      TrainUnconditionalParamDerefs determines which methods may
-      unconditionally dereference parameters and saves them to a file.
-      The resulting file may be used in a subsequent
-      pass to improve the precision of the null-dereference detector.
-      Since this is just a training pass, no warnings are reported.
-      </p>
-      <p>
-      This is a slow detector.
-      </p>
-      ]]>
-   </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.TrainFieldStoreTypes">
-   <Details>
-      <![CDATA[
-      <p>
-      TrainFieldStoreTypes analyzes the types stored into fields
-      and stores them to a database.  The database may be used in a later
-      pass to make type analysis more precise.
-      </p>
-      <p>
-      This is a slow detector.
-      </p>
-      ]]>
-   </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.TrainNonNullAnnotations">
-   <Details>
-      <![CDATA[
-      <p>
-      TrainNonNullAnnotations collects @NonNull and @PossiblyNull annotations
-      and stores them to database files.  This is a fast detector.
-      </p>
-      ]]>
-   </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.CheckCalls">
-   <Details>
-      <![CDATA[
-      <p>This detector is just for debugging method call resolution in 
FindBugs.
-      Don't enable it.</p>
-      ]]>
-   </Details>
-  </Detector>
-
-  <Detector class="edu.umd.cs.findbugs.detect.FindBugsSummaryStats">
-    <Details>
-<![CDATA[
-<p> This detector just collects summary statistics information about the 
analysis process. </p>
-]]>
-    </Details>
-  </Detector>
-  
-  <Detector class="edu.umd.cs.findbugs.detect.TestASM">
-    <Details>
-    <![CDATA[
-    <p>
-    This detector is a code example showing how to write a FindBugs
-    detector using the ASM bytecode analysis framework.
-    </p>
-    ]]>
-    </Details>
-  </Detector>
-
-  <Detector 
class="edu.umd.cs.findbugs.detect.FindUnrelatedTypesInGenericContainer">
-    <Details>
-    <![CDATA[
-    <p> This detector looks at the arguments of calls to generic 
-    container methods that receive a <code>java.lang.Object</code>
-    to see if the argument's type is related to the container's 
-    parameter. Arguments with unrelated class types are never going 
-    to be in the container. For example, if <code>foo</code> is a 
-    <code>List&lt;String&gt;</code> and <code>bar</code> is a 
-    <code>StringBuffer</code>, the call <code>foo.contains(bar)</code>
-    will always return false. This is a fast detector. 
-    </p>
-    ]]>
-    </Details>
-  </Detector>
-
-<Detector class="edu.umd.cs.findbugs.detect.StaticCalendarDetector">
-<Details>
-<![CDATA[
-<p>This detector warns about static fields of type java.util.Calendar or 
java.text.DateFormat (and subclasses) because
- Calendars are inherently unsafe for multithreaded use.
-It is a fast detector.</p>
-]]>
-</Details>
-</Detector>
-
-  <!--
-  **********************************************************************
-  BugPatterns
-  **********************************************************************
-   -->
-
-  <BugPattern type="SW_SWING_METHODS_INVOKED_IN_SWING_THREAD">
-    <ShortDescription>Certain swing methods needs to be invoked in Swing 
thread</ShortDescription>
-    <LongDescription>Call to swing method in {1} needs to be performed in 
Swing event thread</LongDescription>
-    <Details>
-<![CDATA[
-<p>(<a 
href="http://java.sun.com/developer/JDCTechTips/2003/tt1208.html#1";>From JDC 
Tech Tip</a>): The Swing methods
-show(), setVisible(), and pack() will create the associated peer for the 
frame.
-With the creation of the peer, the system creates the event dispatch thread.
-This makes things problematic because the event dispatch thread could be 
notifying
-listeners while pack and validate are still processing. This situation could 
result in
-two threads going through the Swing component-based GUI -- it's a serious 
flaw that
-could result in deadlocks or other related threading issues. A pack call 
causes
-components to be realized. As they are being realized (that is, not 
necessarily
-visible), they could trigger listener notification on the event dispatch 
thread.</p>
-
-]]>
-    </Details>
-  </BugPattern>
-
-
-  <BugPattern type="IL_INFINITE_LOOP">
-    <ShortDescription>An apparent infinite loop</ShortDescription>
-    <LongDescription>There is an apparent infinite loop in 
{1}</LongDescription>
-    <Details>
-<![CDATA[
-<p>This loop doesn't seem to have a way to terminate (other than by perhaps
-throwing an exception).</p>
-]]>
-    </Details>
-  </BugPattern>
-
-  <BugPattern type="IL_INFINITE_RECURSIVE_LOOP">
-    <ShortDescription>An apparent infinite recursive loop</ShortDescription>
-    <LongDescription>There is an apparent infinite recursive loop in 
{1}</LongDescription>
-    <Details>
-<![CDATA[
-<p>This method unconditionally invokes itself. This would seem to indicate
-an infinite recursive loop that will result in a stack overflow.</p>
-]]>
-    </Details>
-  </BugPattern>
-
-
-  <BugPattern type="IL_CONTAINER_ADDED_TO_ITSELF">
-    <ShortDescription>A container is added to itself</ShortDescription>
-    <LongDescription>A container is added to itself in {1}</LongDescription>
-    <Details>
-<![CDATA[
-<p>A container is added to itself. As a result, computing the hashCode of 
this
-set will throw a StackOverflowException.
-</p>
-]]>
-    </Details>
-  </BugPattern>
-
-
-
-
-  <BugPattern type="VO_VOLATILE_REFERENCE_TO_ARRAY">
-    <ShortDescription>A volatile reference to an array doesn't treat the 
array elements as volatile</ShortDescription>
-    <LongDescription>{1} is a volatile reference to an array; the array 
elements are non-volatile</LongDescription>
-    <Details>
-<![CDATA[
-<p>This declares a volatile reference to an array, which might not be what
-you want. With a volatile reference to an array, reads and writes of
-the reference to the array are treated as volatile, but the array elements
-are non-volatile. To get volatile array elements, you will need to use
-one of the atomic array classes in java.util.concurrent (provided
-in Java 5.0).</p>
-]]>
-    </Details>
-  </BugPattern>
-
-  <BugPattern type="UI_INHERITANCE_UNSAFE_GETRESOURCE">
-    <ShortDescription>Usage of GetResource may be unsafe if class is 
extended</ShortDescription>
-    <LongDescription>Usage of GetResource in {1} may be unsafe if class is 
extended</LongDescription>
-    <Details>
-<![CDATA[
-<p>Calling <code>this.getClass().getResource(...)</code> could give
-results other than expected if this class is extended by a class in
-another package.</p>
-]]>
-    </Details>
-  </BugPattern>
-
-   <BugPattern type="NP_SYNC_AND_NULL_CHECK_FIELD">
-     <ShortDescription>Synchronize and null check on the same 
field.</ShortDescription>
-     <LongDescription>In {1} the field {2.givenClass} is synchronized on and 
then checked if null.</LongDescription>
-     <Details>
-<![CDATA[
-<p>Since field is synchronized on, it seems not likely to be null.
-If it is null and then synchronized on a NullPointerException will be
-thrown and the check would be pointless. Better to synchronize on 
-another field.</p>
-
-]]>
-     </Details>
-   </BugPattern>
-
-
-  <BugPattern type="TESTING">
-    <ShortDescription>Testing</ShortDescription>
-    <LongDescription>Test warning generated in {1}</LongDescription>
-    <Details>
-<![CDATA[
-<p>This bug pattern is only generated by new, incompletely implemented
-bug detectors.</p>
-]]>
-    </Details>
-  </BugPattern>
-  <BugPattern type="UNKNOWN">
-    <ShortDescription>Unknown bug pattern</ShortDescription>
-    <LongDescription>Unknown bug pattern BUG_PATTERN in {1}</LongDescription>
-    <Details>
-<![CDATA[
-<p>A warning was recorded, but findbugs can't find the description of this 
bug pattern
-and so can't describe it. This should occur only in cases of a bug in 
FindBugs or its configuration,
-or perhaps if an analysis was generated using a plugin, but that plugin is 
not currently loaded.
-.</p>
-]]>
-    </Details>
-  </BugPattern>
-
-
-  <BugPattern type="AM_CREATES_EMPTY_ZIP_FILE_ENTRY">
-    <ShortDescription>Creates an empty zip file entry</ShortDescription>
-    <LongDescription>Empty zip file entry created in {1}</LongDescription>
-    <Details>
-<![CDATA[
-<p>The code calls <code>putNextEntry()</code>, immediately
-followed by a call to <code>closeEntry()</code>. This results
-in an empty ZipFile entry. The contents of the entry
-should be written to the ZipFile between the calls to
-<code>putNextEntry()</code> and
-<code>closeEntry()</code>.</p>
-]]>
-    </Details>
-  </BugPattern>
-
-  <BugPattern type="AM_CREATES_EMPTY_JAR_FILE_ENTRY">
-    <ShortDescription>Creates an empty jar file entry</ShortDescription>
-    <LongDescription>Empty jar file entry created in {1}</LongDescription>
-    <Details>
-<![CDATA[
-<p>The code calls <code>putNextEntry()</code>, immediately
-followed by a call to <code>closeEntry()</code>. This results
-in an empty JarFile entry. The contents of the entry
-should be written to the JarFile between the calls to
-<code>putNextEntry()</code> and
-<code>closeEntry()</code>.</p>
-]]>
-    </Details>
-  </BugPattern>
-
-  <BugPattern type="IMSE_DONT_CATCH_IMSE">
-    <ShortDescription>Dubious catching of 
IllegalMonitorStateException</ShortDescription>
-    <LongDescription>Dubious catching of IllegalMonitorStateException in 
{1}</LongDescription>
-    <Details>
-<![CDATA[
-<p>IllegalMonitorStateException is generally only
-   thrown in case of a design flaw in your code (calling wait or
-   notify on an object you do not hold a lock on).</p>
-]]>
-    </Details>
-  </BugPattern>
-
-
-  <BugPattern type="FL_MATH_USING_FLOAT_PRECISION">
-    <ShortDescription>Method performs math using floating point 
precision</ShortDescription>
-    <LongDescription>{1} performs math using floating point 
precision</LongDescription>
-    <Details>
-<![CDATA[
-<p>
-   The method performs math operations using floating point precision.
-   Floating point precision is very imprecise. For example,
-   16777216.0f + 1.0f = 16777216.0f. Consider using double math instead.</p>
-]]>
-    </Details>
-  </BugPattern>
-
-  <BugPattern type="CN_IDIOM">
-    <ShortDescription>Class implements Cloneable but does not define or use 
clone method</ShortDescription>
-    <LongDescription>Class {0} implements Cloneable but does not define or 
use clone method</LongDescription>
-    <Details>
-<![CDATA[
-<p>
-   Class implements Cloneable but does not define or
-   use the clone method.</p>
-]]>
-    </Details>
-  </BugPattern>
-
-  <BugPattern type="CN_IDIOM_NO_SUPER_CALL">
-    <ShortDescription>clone method does not call 
super.clone()</ShortDescription>
-    <LongDescription>{1} does not call super.clone()</LongDescription>
-    <Details>
-<![CDATA[
-<p> This non-final class defines a clone() method that does not call 
super.clone().
-If this class ("<i>A</i>") is extended by a subclass ("<i>B</i>"),
-and the subclass <i>B</i> calls super.clone(), then it is likely that
-<i>B</i>'s clone() method will return an object of type <i>A</i>,
-which violates the standard contract for clone().</p>
-
-<p> If all clone() methods call super.clone(), then they are guaranteed
-to use Object.clone(), which always returns an object of the correct 
type.</p>
-]]>
-    </Details>
-  </BugPattern>
-
-
-  <BugPattern type="NM_FUTURE_KEYWORD_USED_AS_IDENTIFIER">
-    <ShortDescription>Use of identifier that is a keyword in later versions 
of Java</ShortDescription>
-    <LongDescription>{1} uses {2} for a variable name, which is a keyword in 
later versions of Java</LongDescription>
-    <Details>
-<![CDATA[
-<p>The identifier is a word that is reserversed as a keyword in later 
versions of Java, and your code will need to be changed
-in order to compile it in later versions of Java.</p>
-
-]]>
-    </Details>
-  </BugPattern>
-   <BugPattern type="NM_FUTURE_KEYWORD_USED_AS_MEMBER_IDENTIFIER">
-    <ShortDescription>Use of identifier that is a keyword in later versions 
of Java</ShortDescription>
-    <LongDescription>{1} conflicts with a keyword in a more recent version 
of Java</LongDescription>
-    <Details>
-<![CDATA[
-<p>This identifier is used as a keyword in later versions of Java. This 
code, and 
-any code that references this API, 
-will need to be changed  in order to compile it in later versions of 
Java.</p>
-
-]]>
-    </Details>
-  </BugPattern>
-  
-
-  <BugPattern type="DE_MIGHT_DROP">
-    <ShortDescription>Method might drop exception</ShortDescription>
-    <LongDescription>{1} might drop {2}</LongDescription>
-    <Details>
-<![CDATA[
-  <p> This method might drop an exception.&nbsp; In general, exceptions
-  should be handled or reported in some way, or they should be thrown
-  out of the method.</p>
-]]>
-    </Details>
-  </BugPattern>
-  <BugPattern type="DE_MIGHT_IGNORE">
-    <ShortDescription>Method might ignore exception</ShortDescription>
-    <LongDescription>{1} might ignore {2}</LongDescription>
-    <Details>
-<![CDATA[
-  <p> This method might ignore an exception.&nbsp; In general, exceptions
-  should be handled or reported in some way, or they should be thrown
-  out of the method.</p>
-]]>
-    </Details>
-  </BugPattern>
-
-<BugPattern type="DP_DO_INSIDE_DO_PRIVILEGED">
-    <ShortDescription>Method invoked that should be only be invoked inside a 
doPrivileged block</ShortDescription>
-    <LongDescription>{1} invokes {2}, which should be invoked from within a 
doPrivileged block</LongDescription>
-    <Details>
-<![CDATA[
-  <p> This code invokes a method that requires a security permission check.
-  If this code will be granted security permissions, but might be invoked by 
code that does not
-  have security permissions, then the invocation needs to occur inside a 
doPrivileged block.</p>
-]]>
-    </Details>
-  </BugPattern>
-<BugPattern type="DP_DO_INSIDE_DO_PRIVILEDGED"> <!-- misspelled for backward 
compatibility -->
-    <ShortDescription>Method invoked that should be only be invoked inside a 
doPrivileged block</ShortDescription>
-    <LongDescription>{1} invokes {2}, which should be invoked from within a 
doPrivileged block</LongDescription>
-    <Details>
-<![CDATA[
-  <p> This code invokes a method that requires a security permission check.
-  If this code will be granted security permissions, but might be invoked by 
code that does not
-  have security permissions, then the invocation needs to occur inside a 
doPrivileged block.</p>
-]]>
-    </Details>
-  </BugPattern>
-
-<BugPattern type="DP_CREATE_CLASSLOADER_INSIDE_DO_PRIVILEGED">
-    <ShortDescription>Classloaders should only be created inside 
doPrivileged block</ShortDescription>
-    <LongDescription>{1} creates a {2} classloader, which should be 
performed within a doPrivileged block</LongDescription>
-    <Details>
-<![CDATA[
-  <p> This code creates a classloader,  which requires a security manager.
-  If this code will be granted security permissions, but might be invoked by 
code that does not
-  have security permissions, then the classloader creation  needs to occur 
inside a doPrivileged block.</p>
-]]>
-    </Details>
-  </BugPattern>
-<BugPattern type="DP_CREATE_CLASSLOADER_INSIDE_DO_PRIVILEDGED"> <!-- 
misspelled for backward compatibility -->
-    <ShortDescription>Classloaders should only be created inside 
doPrivileged block</ShortDescription>
-    <LongDescription>{1} creates a {2} classloader, which should be 
performed within a doPrivileged block</LongDescription>
-    <Details>
-<![CDATA[
-  <p> This code creates a classloader,  which requires a security manager.
-  If this code will be granted security permissions, but might be invoked by 
code that does not
-  have security permissions, then the classloader creation  needs to occur 
inside a doPrivileged block.</p>
-]]>
-    </Details>
-  </BugPattern>
-
-  <BugPattern type="JCIP_FIELD_ISNT_FINAL_IN_IMMUTABLE_CLASS">
-    <ShortDescription>Fields of immutable classes should be 
final</ShortDescription>
-    <LongDescription>{1.givenClass} should be final since {0} is marked as 
Immutable.  </LongDescription>
-    <Details>
-<![CDATA[
-  <p> The class is annotated with net.jcip.annotations.Immutable, and the 
rules for that annotation require
-that all fields are final.
-   .</p>
-]]>
-    </Details>
-  </BugPattern>
-
-  <BugPattern type="DMI_THREAD_PASSED_WHERE_RUNNABLE_EXPECTED">
-    <ShortDescription>Thread passed where Runnable 
expected</ShortDescription>
-    <LongDescription>Thread passed where Runnable expected in 
{1}</LongDescription>
-    <Details>
-<![CDATA[
-  <p> A Thread object is passed as a parameter to a method where 
-a Runnable is expected. This is rather unusual, and may indicate a logic 
error
-or cause unexpected behavior.
-   </p>
-]]>
-    </Details>
-  </BugPattern>
-  <BugPattern type="DMI_COLLECTION_OF_URLS">
-    <ShortDescription>Maps and sets of URLs can be performance 
hogs</ShortDescription>
-    <LongDescription>{1} is or uses a map or set of URLs, which can be a 
performance hog</LongDescription>
-    <Details>
-<![CDATA[
-  <p> This method or field is or uses a Map or Set of URLs. Since both the 
equals and hashCode
-method of URL perform domain name resolution, this can result in a big 
performance hit.
-See <a 
href="http://michaelscharf.blogspot.com/2006/11/javaneturlequals-and-hashcode-make.html";>http://michaelscharf.blogspot.com/2006/11/javaneturlequals-and-hashcode-make.html</a>
 for more information.
-Consider using <code>java.net.URI</code> instead.
-   </p>
-]]>
-    </Details>
-  </BugPattern>
-  <BugPattern type="DMI_BLOCKING_METHODS_ON_URL">
-    <ShortDescription>The equals and hashCode methods of URL are 
blocking</ShortDescription>
-    <LongDescription>{1} invokes {2}, which blocks to do domain name 
resolution</LongDescription>
-    <Details>
-<![CDATA[
-  <p> The equals and hashCode
-method of URL perform domain name resolution, this can result in a big 
performance hit.
-See <a 
href="http://michaelscharf.blogspot.com/2006/11/javaneturlequals-and-hashcode-make.html";>http://michaelscharf.blogspot.com/2006/11/javaneturlequals-and-hashcode-make.html</a>
 for more information.
-Consider using <code>java.net.URI</code> instead.
-   </p>
-]]>
-    </Details>
-  </BugPattern>
-  <BugPattern type="DMI_ANNOTATION_IS_NOT_VISIBLE_TO_REFLECTION">
-    <ShortDescription>Can't use reflection to check for presence of 
annotation with default retention</ShortDescription>
-    <LongDescription>{1} uses reflection to check for the presence of an 
annotation that has default retention</LongDescription>
-    <Details>
-<![CDATA[
-  <p> Unless an annotation has itself been annotated with a @Retention other 
than the default
-of source-only retention, the annotation isn't retained in the classfile and 
can't be observed using reflection
-       (e.g., by using the isAnnotationPresent method).
-   .</p>
-]]>
-    </Details>
-  </BugPattern>
-
-
-  <BugPattern type="DM_EXIT">
-    <ShortDescription>Method invokes System.exit(...)</ShortDescription>
-    <LongDescription>{1} invokes System.exit(...), which shuts down the 
entire virtual machine</LongDescription>
-    <Details>
-<![CDATA[
-  <p> Invoking System.exit shuts down the entire Java virtual machine. This
-   should only been done when it is appropriate. Such calls make it
-   hard or impossible for your code to be invoked by other code.
-   Consider throwing a RuntimeException instead.</p>
-]]>
-    </Details>
-  </BugPattern>
-
-
-  <BugPattern type="DM_RUN_FINALIZERS_ON_EXIT">
-    <ShortDescription>Method invokes dangerous method runFinalizersOnExit  
</ShortDescription>
-    <LongDescription>{1} invokes dangerous method 
runFinalizersOnExit</LongDescription>
-    <Details>
-<![CDATA[
-  <p> <em>Never call System.runFinalizersOnExit
-or Runtime.runFinalizersOnExit for any reason: they are among the most
-dangerous methods in the Java libraries.</em> -- Joshua Bloch</p>
-]]>
-    </Details>
-  </BugPattern>
-
-  <BugPattern type="DM_STRING_CTOR">
-    <ShortDescription>Method invokes inefficient new String(String) 
constructor</ShortDescription>
-    <LongDescription>{1} invokes inefficient new String(String) 
constructor</LongDescription>
-    <Details>
-<![CDATA[
-  <p> Using the <code>java.lang.String(String)</code> constructor wastes 
memory
-  because the object so constructed will be functionally indistinguishable
-  from the <code>String</code> passed as a parameter.&nbsp; Just use the
-  argument <code>String</code> directly.</p>
-]]>
-    </Details>
-  </BugPattern>
-
-
-  <BugPattern type="DM_STRING_VOID_CTOR">
-    <ShortDescription>Method invokes inefficient new String() 
constructor</ShortDescription>
-    <LongDescription>{1} invokes inefficient new String() 
constructor</LongDescription>
-    <Details>
-<![CDATA[
-  <p> Creating a new <code>java.lang.String</code> object using the
-  no-argument constructor wastes memory because the object so created will
-  be functionally indistinguishable from the empty string constant
-  <code>""</code>.&nbsp; Java guarantees that identical string constants
-  will be represented by the same <code>String</code> object.&nbsp; 
Therefore,
-  you should just use the empty string constant directly.</p>
-]]>
-    </Details>
-  </BugPattern>
-  <BugPattern type="DM_STRING_TOSTRING">
-    <ShortDescription>Method invokes toString() method on a 
String</ShortDescription>
-    <LongDescription>Method {1} invokes toString() method on a 
String</LongDescription>
-    <Details>
-<![CDATA[
-  <p> Calling <code>String.toString()</code> is just a redundant operation.
-  Just use the String.</p>
-]]>
-    </Details>
-  </BugPattern>
-  <BugPattern type="DM_GC">
-    <ShortDescription>Explicit garbage collection; extremely dubious except 
in benchmarking code</ShortDescription>
-    <LongDescription>{1} forces garbage collection; extremely dubious except 
in benchmarking code</LongDescription>
-    <Details>
-<![CDATA[
-  <p> Code explicitly invokes garbage collection.
-  Except for specific use in benchmarking, this is very dubious.</p>
-  <p>In the past, situations where people have explicitly invoked
-  the garbage collector in routines such as close or finalize methods
-  has led to huge performance black holes. Garbage collection
-   can be expensive. Any situation that forces hundreds or thousands
-   of garbage collections will bring the machine to a crawl.</p>
-]]>
-    </Details>
-  </BugPattern>
-  <BugPattern type="DM_BOOLEAN_CTOR">
-    <ShortDescription>Method invokes inefficient Boolean constructor; use 
Boolean.valueOf(...) instead</ShortDescription>
-    <LongDescription>{1} invokes inefficient Boolean constructor; use 
Boolean.valueOf(...) instead</LongDescription>
-    <Details>
-<![CDATA[
-  <p> Creating new instances of <code>java.lang.Boolean</code> wastes
-  memory, since <code>Boolean</code> objects are immutable and there are
-  only two useful values of this type.&nbsp; Use the 
<code>Boolean.valueOf()</code>
-  method (or Java 1.5 autoboxing) to create <code>Boolean</code> objects 
instead.</p>
-]]>
-    </Details>
-  </BugPattern>
-
-  <BugPattern type="DM_NUMBER_CTOR">
-    <ShortDescription>Method invokes inefficient Number constructor; use 
static valueOf instead</ShortDescription>
-    <LongDescription>Method {1} invokes inefficient {3} constructor; use {4} 
instead</LongDescription>
-    <Details>
-      <![CDATA[
-      <p>
-      Using <code>new Integer(int)</code> is guaranteed to always result in 
a new object whereas
-      <code>Integer.valueOf(int)</code> allows caching of values to be done 
by the compiler, class library, or JVM.
-      Using of cached values avoids object allocation and the code will be 
faster.
-      </p>
-      <p>
-      Values between -128 and 127 are guaranteed to have corresponding 
cached instances
-      and using <code>valueOf</code> is approximately 3.5 times faster than 
using constructor.
-      For values outside the constant range the performance of both styles 
is the same.
-      </p>
-      <p>
-      Unless the class must be compatible with JVMs predating Java 1.5,
-      use either autoboxing or the <code>valueOf()</code> method when 
creating instances of
-      <code>Long</code>, <code>Integer</code>, <code>Short</code>, 
<code>Character</code>, and <code>Byte</code>.
-      </p>
-      ]]>
-    </Details>
-  </BugPattern>
-  <BugPattern type="DM_FP_NUMBER_CTOR">
-    <ShortDescription>Method invokes inefficient floating-point Number 
constructor; use static valueOf instead</ShortDescription>
-    <LongDescription>Method {1} invokes inefficient {3} constructor; use {4} 
instead</LongDescription>
-    <Details>
-      <![CDATA[
-      <p>
-      Using <code>new Double(double)</code> is guaranteed to always result 
in a new object whereas
-      <code>Double.valueOf(double)</code> allows caching of values to be 
done by the compiler, class library, or JVM.
-      Using of cached values avoids object allocation and the code will be 
faster.
-      </p>
-      <p>
-      Unless the class must be compatible with JVMs predating Java 1.5,
-      use either autoboxing or the <code>valueOf()</code> method when 
creating instances of <code>Double</code> and <code>Float</code>.
-      </p>
-      ]]>
-    </Details>
-  </BugPattern>
-
-  <BugPattern type="DM_STRING_EMPTY_EQUALS">
-    <ShortDescription>Method invokes inefficient String.equals(""); use 
String.length() == 0 instead</ShortDescription>
-    <LongDescription>Method {1} invokes inefficient String.equals(""); use 
String.length() == 0 instead</LongDescription>
-    <Details>
-<![CDATA[
-  <p> An object is compared to the empty String object using the equals() 
method here.
-      Checking that the String object's length is zero may be faster, and 
removes String constants from the class file.</p>
-]]>
-    </Details>
-  </BugPattern>
-  <BugPattern type="DM_CONVERT_CASE">
-    <ShortDescription>Consider using Locale parameterized version of invoked 
method</ShortDescription>
-    <LongDescription>Use of non-localized String.toUpperCase() or 
String.toLowerCase</LongDescription>
-    <Details>
-<![CDATA[
-  <p> A String is being converted to upper or lowercase, using the 
platform's default encoding. This may
-      result in improper conversions when used with international 
characters. Use the </p>
-      <table><tr><td>String.toUpperCase( Locale l 
)</td></tr><tr><td>String.toLowerCase( Locale l )</td></tr></table>
-      <p>versions instead.</p>
-]]>
-    </Details>
-  </BugPattern>
-
-
-  <BugPattern type="BX_UNBOXED_AND_COERCED_FOR_TERNARY_OPERATOR">
-    <ShortDescription>Primitive value is unboxed and coerced for ternary 
operator</ShortDescription>
-    <LongDescription>Primitive value is unboxed and coerced for ternary 
operator in {1}</LongDescription>
-    <Details>
-<![CDATA[
-  <p>A wrapped primative value is unboxed and converted to another primative 
type as part of the
-evaluation of a conditional ternary operator (the <code> b ? e1 : e2</code> 
operator). The
-semantics of Java mandate that if <code>e1</code> and <code>e2</code> are 
wrapped
-numeric values, the values are unboxed and converted/coerced to their common 
 type (e.g,
-if <code>e1</code> is of type <code>Integer</code> 
-and <code>e2</code> is of type <code>Float</code>, then <code>e1</code> is 
unboxed,
-converted to a floating point value, and boxed. See JLS Section 15.25.
-</p>
-]]>
-    </Details>
-  </BugPattern>
-  <BugPattern type="BX_BOXING_IMMEDIATELY_UNBOXED">
-    <ShortDescription>Primitive value is boxed and then immediately 
unboxed</ShortDescription>
-    <LongDescription>Primitive value is boxed and then immediately unboxed 
in {1}</LongDescription>
-    <Details>
-<![CDATA[
-  <p>A primitive is boxed, and then immediately unboxed. This probably is 
due to a manual
-       boxing in a place where  an unboxed value is required, thus forcing 
the compiler
-to immediately undue the work of the boxing.
-</p>
-]]>
-    </Details>
-  </BugPattern>
-
-
-
-  <BugPattern type="BX_BOXING_IMMEDIATELY_UNBOXED_TO_PERFORM_COERCION">
-    <ShortDescription>Primitive value is boxed then unboxed to perform 
primative coercion</ShortDescription>
-    <LongDescription>Primitive value is boxed then unboxed to perform 
primative coercion in {1}</LongDescription>
-    <Details>
-<![CDATA[
-  <p>A primitive boxed value constructed and  then immediately converted 
into a different primitive type
-(e.g., <code>new Double(d).intValue()</code>). Just perform direct primitive 
coercion (e.g., <code>(int) d</code>).</p>
-]]>
-    </Details>
-  </BugPattern>
-  <BugPattern type="DM_BOXED_PRIMITIVE_TOSTRING">
-    <ShortDescription>Method allocates a boxed primitive just to call 
toString</ShortDescription>
-    <LongDescription>Primitive boxed just to call toString in 
{1}</LongDescription>
-    <Details>
-<![CDATA[
-  <p>A boxed primitive is allocated just to call toString(). It is more 
effective to just use the static
-  form of toString which takes the primitive value. So,</p>
-  <table>
-     <tr><th>Replace...</th><th>With this...</th></tr>
-     <tr><td>new Integer(1).toString()</td><td>Integer.toString(1)</td></tr>
-     <tr><td>new Long(1).toString()</td><td>Long.toString(1)</td></tr>
-     <tr><td>new Float(1.0).toString()</td><td>Float.toString(1.0)</td></tr>
-     <tr><td>new 
Double(1.0).toString()</td><td>Double.toString(1.0)</td></tr>
-     <tr><td>new Byte(1).toString()</td><td>Byte.toString(1)</td></tr>
-     <tr><td>new Short(1).toString()</td><td>Short.toString(1)</td></tr>
-     <tr><td>new 
Boolean(true).toString()</td><td>Boolean.toString(true)</td></tr>
-  </table>
-]]>
-    </Details>
-  </BugPattern>
-
-
-  <BugPattern type="DM_NEW_FOR_GETCLASS">
-    <ShortDescription>Method allocates an object, only to get the class 
object</ShortDescription>
-    <LongDescription>Method {1} allocates an object, only to get the class 
object</LongDescription>
-    <Details>
-<![CDATA[
-  <p>This method allocates an object just to call getClass() on it, in order 
to
-  retrieve the Class object for it. It is simpler to just access the .class 
property of the class.</p>
-]]>
-    </Details>
-  </BugPattern>
-
-  <BugPattern type="DM_MONITOR_WAIT_ON_CONDITION">
-   <ShortDescription>Monitor wait() called on Condition</ShortDescription>
-   <LongDescription>Monitor wait() called on a Condition in 
{1}</LongDescription>
-   <Details>
-      <![CDATA[
-      <p>
-      This method calls <code>wait()</code> on a
-      <code>java.util.concurrent.locks.Condition</code> object.&nbsp;
-      Waiting for a <code>Condition</code> should be done using one of the 
<code>await()</code>
-      methods defined by the <code>Condition</code> interface.
-      </p>
-      ]]>
-   </Details>
-  </BugPattern>
-
-  <BugPattern type="RV_01_TO_INT">
-    <ShortDescription>Random value from 0 to 1 is coerced to the integer 
0</ShortDescription>
-    <LongDescription>Method {1} uses generates a random value from 0 to 1 
and then coerces that value to the integer 0</LongDescription>
-    <Details>
-<![CDATA[
-  <p>A random value from 0 to 1 is being coerced to the integer value 0. You 
probably
-want to multiple the random value by something else before coercing it to an 
integer, or use the Random.nextInt(n) method.
-</p>
-]]>
-    </Details>
-  </BugPattern>
-
-  <BugPattern type="DM_NEXTINT_VIA_NEXTDOUBLE">
-    <ShortDescription>Use the nextInt method of Random rather than 
nextDouble to generate a random integer</ShortDescription>
-    <LongDescription>Method {1} uses the nextDouble method of Random to 
generate a random integer; using nextInt is more efficient</LongDescription>
-    <Details>
-<![CDATA[
-  <p>If r is a java.util.Random, you can generate a random number from 0 to 
n-1
-using r.nextInt(n) Rather than using (int)(r.nextDouble() * n).
-</p>
-]]>
-    </Details>
-  </BugPattern>
-
-
-
-  <BugPattern type="SQL_NONCONSTANT_STRING_PASSED_TO_EXECUTE">
-    <ShortDescription>Nonconstant string passed to execute method on an SQL 
statement</ShortDescription>
-    <LongDescription>Method {1} passes a nonconstant String to an execute 
method on an SQL statement</LongDescription>
-    <Details>
-<![CDATA[
-  <p>The method invokes the execute method on an SQL statement with a String 
that seems
-to be dynamically generated. Consider using
-a prepared statement instead. It is more efficient and less vulnerable to
-SQL injection attacks.
-</p>
-]]>
-    </Details>
-  </BugPattern>
-
-  <BugPattern 
type="SQL_PREPARED_STATEMENT_GENERATED_FROM_NONCONSTANT_STRING">
-    <ShortDescription>A prepared statement is generated from a nonconstant 
String</ShortDescription>
-    <LongDescription>A prepared statement is generated from a nonconstant 
String at {1} </LongDescription>
-    <Details>
-<![CDATA[
-  <p>The code creates an SQL prepared statement from a nonconstant String.
-If unchecked, tainted data from a user is used in building this String, SQL 
injection could
-be used to make the prepared statement do something unexpected and 
undesirable.
-</p>
-]]>
-    </Details>
-  </BugPattern>
-
-  <BugPattern type="DM_USELESS_THREAD">
-    <ShortDescription>A thread was created using the default empty run 
method</ShortDescription>
-    <LongDescription>Method {1} creates a thread using the default empty run 
method</LongDescription>
-    <Details>
-<![CDATA[
-  <p>This method creates a thread without specifying a run method either by 
deriving from the Thread class, or
-  by passing a Runnable object. This thread, then, does nothing but waste 
time.
-</p>
-]]>
-    </Details>
-  </BugPattern>
-
-  <BugPattern type="DC_DOUBLECHECK">
-    <ShortDescription>Possible double check of field</ShortDescription>
-    <LongDescription>Possible doublecheck on {2} in {1}</LongDescription>
-    <Details>
-<![CDATA[
-  <p> This method may contain an instance of double-checked locking.&nbsp;
-  This idiom is not correct according to the semantics of the Java memory
-  model.&nbsp; For more information, see the web page
-  <a 
href="http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html";
-  
>http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html</a>.</p>
-]]>
-    </Details>
-  </BugPattern>
-
-  <BugPattern type="FI_FINALIZER_NULLS_FIELDS">
-    <ShortDescription>Finalizer nulls fields</ShortDescription>
-    <LongDescription>{3} is set to null inside finalize 
method</LongDescription>
-       <Details>
-<![CDATA[
-  <p> This finalizer nulls out fields.  This is usually an error, as it does 
not aid garbage collection,
-  and the object is going to be garbage collected anyway.  
-]]>
-       </Details>
-   </BugPattern>
-  <BugPattern type="FI_FINALIZER_ONLY_NULLS_FIELDS">
-    <ShortDescription>Finalizer only nulls fields</ShortDescription>
-    <LongDescription>{1} only nulls fields</LongDescription>
-       <Details>
-<![CDATA[
-  <p> This finalizer does nothing except null out fields. This is completely 
pointless, and requires that
-the object be garbage collected, finalized, and then garbage collected 
again. You should just remove the finalize
-method.
-]]>
-       </Details>
-   </BugPattern>
-
-  <BugPattern type="FI_PUBLIC_SHOULD_BE_PROTECTED">
-    <ShortDescription>Finalizer should be protected, not 
public</ShortDescription>
-    <LongDescription>{1} is public; should be protected</LongDescription>
-    <Details>
-<![CDATA[
-  <p> A class's <code>finalize()</code> method should have protected access,
-   not public.</p>
-]]>
-    </Details>
-  </BugPattern>
-
-  <BugPattern type="FI_EMPTY">
-    <ShortDescription>Empty finalizer should be deleted</ShortDescription>
-    <LongDescription>{1} is empty and should be deleted</LongDescription>
-    <Details>
-<![CDATA[
-  <p> Empty <code>finalize()</code> methods are useless, so they should
-  be deleted.</p>
-]]>
-    </Details>
-  </BugPattern>
-
-  <BugPattern type="FI_NULLIFY_SUPER">
-    <ShortDescription>Finalizer nullifies superclass 
finalizer</ShortDescription>
-    <LongDescription>{1} is nullifying {2}.finalize(); is this 
intended?</LongDescription>
-    <Details>
-<![CDATA[
-  <p> This empty <code>finalize()</code> method explicitly negates the
-  effect of any finalizer defined by its superclass.&nbsp; Any finalizer
-  actions defined for the superclass will not be performed.&nbsp;
-  Unless this is intended, delete this method.</p>
-]]>
-    </Details>
-  </BugPattern>
-
-  <BugPattern type="FI_USELESS">
-    <ShortDescription>Finalizer does nothing but call superclass 
finalizer</ShortDescription>
-    <LongDescription>{1} does nothing except call super.finalize(); delete 
it</LongDescription>
-    <Details>
-<![CDATA[
-  <p> The only thing this <code>finalize()</code> method does is call
-  the superclass's <code>finalize()</code> method, making it
-  redundant.&nbsp; Delete it.</p>
-]]>
-    </Details>
-  </BugPattern>
-
-  <BugPattern type="FI_MISSING_SUPER_CALL">
-    <ShortDescription>Finalizer does not call superclass 
finalizer</ShortDescription>
-    <LongDescription>{1} missing call to super.finalize(), so {2}.finalize() 
doesn't get called</LongDescription>
-    <Details>
-<![CDATA[
-  <p> This <code>finalize()</code> method does not make a call to its
-  superclass's <code>finalize()</code> method.&nbsp; So, any finalizer
-  actions defined for the superclass will not be performed.&nbsp;
-  Add a call to <code>super.finalize()</code>.</p>
-]]>
-    </Details>
-  </BugPattern>
-
-  <BugPattern type="FI_EXPLICIT_INVOCATION">
-    <ShortDescription>Explicit invocation of finalizer</ShortDescription>
-    <LongDescription>{1} explicitly invokes {2}</LongDescription>
-    <Details>
-<![CDATA[
-  <p> This method contains an explicit invocation of the 
<code>finalize()</code>
-  method on an object.&nbsp; Because finalizer methods are supposed to be
-  executed once, and only by the VM, this is a bad idea.</p>
-<p>If a connected set of objects beings finalizable, then the VM will invoke 
the
-finalize method on all the finalizable object, possibly at the same time in 
different threads.
-Thus, it is a particularly bad idea, in the finalize method for a class X, 
invoke finalize
-on objects referenced by X, because they may already be getting finalized in 
a separate thread.
-]]>
-    </Details>
-  </BugPattern>
-
-  <BugPattern type="EQ_DONT_DEFINE_EQUALS_FOR_ENUM">
-    <ShortDescription>Covariant equals() method defined for 
enum</ShortDescription>
-    <LongDescription>enum {0} defines 
equals({0.givenClass})</LongDescription>
-    <Details>
-<![CDATA[
-  <p> This class defines an enumeration, and equality on enumerations are 
defined
-using object identity. Definine a covariant equals method for an enumeration
-value is exceptionally bad practice, since it would likely result
-in having two different enumeration values that compare as equals using
-the covariant enum method, and as not equal when compared normally.
-Don't do it.
-</p>
-]]>
-    </Details>
-  </BugPattern>
-  <BugPattern type="EQ_SELF_USE_OBJECT">
-    <ShortDescription>Covariant equals() method defined, 
Object.equals(Object) inherited</ShortDescription>
-    <LongDescription>{0} defines equals({0.givenClass}) method and uses 
Object.equals(Object)</LongDescription>
-    <Details>
-<![CDATA[
-  <p> This class defines a covariant version of the <code>equals()</code>
-  method, but inherits the normal <code>equals(Object)</code> method
-  defined in the base <code>java.lang.Object</code> class.&nbsp;
-  The class should probably define a non-covariant version of 
<code>equals()</code>.&nbsp;
-  (I.e., a method with the signature <code>boolean 
equals(java.lang.Object)</code>.</p>
-]]>
-    </Details>
-  </BugPattern>
-  <BugPattern type="EQ_SELF_NO_OBJECT">
-    <ShortDescription>Covariant equals() method defined</ShortDescription>
-    <LongDescription>{0} defines equals({0.givenClass}) method but not 
equals(Object)</LongDescription>
-    <Details>
-<![CDATA[
-  <p> This class defines a covariant version of <code>equals()</code>.&nbsp;
-  To correctly override the <code>equals()</code> method in
-  <code>java.lang.Object</code>, the parameter of <code>equals()</code>
-  must have type <code>java.lang.Object</code>.</p>
-]]>
-    </Details>
-  </BugPattern>
-  <BugPattern type="HSC_HUGE_SHARED_STRING_CONSTANT">
-   <ShortDescription>Huge string constants is duplicated across multiple 
class files</ShortDescription>

[hg] main/contrib: #165870 - [67cat] ClassNotFoundException: org...

Petr Hejl 08/12/2013

Project Features

About this Project

Contrib was started in November 2009, is owned by Jiří Kovalský, and has 254 members.
By use of this website, you agree to the NetBeans Policies and Terms of Use (revision 20131025.e7cbc9d). © 2013, Oracle Corporation and/or its affiliates. Sponsored by Oracle logo
 
 
Close
loading
Please Confirm
Close