# HG changeset patch # User Sam Harwell # Date 1359399864 21600 # Node ID b35f3097be3946ab9f4a5b4ebb4e4971a98febe7 # Parent a130a527872579054bb5b653f4a5249193afd47e Add common annotations to several fields and methods in the Project API, Project UI API, and Project UI modules diff -r a130a5278725 -r b35f3097be39 projectapi/src/org/netbeans/api/project/ProjectUtils.java --- a/projectapi/src/org/netbeans/api/project/ProjectUtils.java Fri Aug 03 08:53:28 2012 -0500 +++ b/projectapi/src/org/netbeans/api/project/ProjectUtils.java Mon Jan 28 13:04:24 2013 -0600 @@ -60,6 +60,7 @@ import javax.swing.Icon; import javax.swing.event.ChangeListener; import org.netbeans.api.annotations.common.NonNull; +import org.netbeans.api.annotations.common.NullAllowed; import org.netbeans.modules.projectapi.AuxiliaryConfigBasedPreferencesProvider; import org.netbeans.modules.projectapi.AuxiliaryConfigImpl; import org.netbeans.spi.project.AuxiliaryConfiguration; @@ -97,7 +98,7 @@ * @return some information about it * @see Project#getLookup */ - public static ProjectInformation getInformation(Project p) { + public static ProjectInformation getInformation(@NonNull Project p) { Lookup l = p.getLookup(); ProjectInformation pi = l.lookup(ProjectInformation.class); return new AnnotateIconProxyProjectInformation(pi != null ? pi : new BasicInformation(p)); @@ -112,7 +113,7 @@ * @return a list of sources for it * @see Project#getLookup */ - public static Sources getSources(Project p) { + public static Sources getSources(@NonNull Project p) { Lookup l = p.getLookup(); Sources s = l.lookup(Sources.class); if (s != null) { @@ -181,7 +182,7 @@ * @return {@link Preferences} for the given project * @since 1.16 */ - public static Preferences getPreferences(Project project, Class clazz, boolean shared) { + public static Preferences getPreferences(@NonNull Project project, @NonNull Class clazz, boolean shared) { Parameters.notNull("project", project); Parameters.notNull("clazz", clazz); @@ -195,7 +196,7 @@ * @param master the original master project (for use with candidate param) * @param candidate a candidate added subproject for master, or null */ - private static boolean visit(Map encountered, Project curr, Project master, Project candidate) { + private static boolean visit(@NonNull Map encountered, @NonNull Project curr, Project master, @NullAllowed Project candidate) { if (encountered.containsKey(curr)) { if (encountered.get(curr)) { return false; @@ -376,7 +377,7 @@ * @return an auxiliary configuration handle * @since org.netbeans.modules.projectapi/1 1.17 */ - public static AuxiliaryConfiguration getAuxiliaryConfiguration(Project project) { + public static AuxiliaryConfiguration getAuxiliaryConfiguration(@NonNull Project project) { Parameters.notNull("project", project); return new AuxiliaryConfigImpl(project); } @@ -395,7 +396,7 @@ * @throws IOException if no such directory could be created * @since org.netbeans.modules.projectapi/1 1.26 */ - public static FileObject getCacheDirectory(Project project, Class owner) throws IOException { + public static FileObject getCacheDirectory(@NonNull Project project, @NonNull Class owner) throws IOException { FileObject d; CacheDirectoryProvider cdp = project.getLookup().lookup(CacheDirectoryProvider.class); if (cdp != null) { diff -r a130a5278725 -r b35f3097be39 projectapi/src/org/netbeans/modules/projectapi/AuxiliaryConfigBasedPreferencesProvider.java --- a/projectapi/src/org/netbeans/modules/projectapi/AuxiliaryConfigBasedPreferencesProvider.java Fri Aug 03 08:53:28 2012 -0500 +++ b/projectapi/src/org/netbeans/modules/projectapi/AuxiliaryConfigBasedPreferencesProvider.java Mon Jan 28 13:04:24 2013 -0600 @@ -61,6 +61,7 @@ import java.util.prefs.AbstractPreferences; import java.util.prefs.BackingStoreException; import java.util.prefs.Preferences; +import org.netbeans.api.annotations.common.NonNull; import org.netbeans.api.project.Project; import org.netbeans.api.project.ProjectManager; import org.netbeans.api.project.ProjectUtils; @@ -323,7 +324,7 @@ modified = true; } - public static String findCNBForClass(Class cls) { + public static String findCNBForClass(@NonNull Class cls) { String absolutePath; ModuleInfo owner = Modules.getDefault().ownerOf(cls); if (owner != null) { diff -r a130a5278725 -r b35f3097be39 projectui/src/org/netbeans/modules/project/ui/NewFileWizard.java --- a/projectui/src/org/netbeans/modules/project/ui/NewFileWizard.java Fri Aug 03 08:53:28 2012 -0500 +++ b/projectui/src/org/netbeans/modules/project/ui/NewFileWizard.java Mon Jan 28 13:04:24 2013 -0600 @@ -47,6 +47,7 @@ import java.beans.PropertyChangeListener; import java.text.MessageFormat; import javax.swing.JComponent; +import org.netbeans.api.annotations.common.NonNull; import org.netbeans.api.project.Project; import org.netbeans.api.project.ProjectUtils; import org.netbeans.api.project.Sources; @@ -62,18 +63,21 @@ public final class NewFileWizard extends TemplateWizard { + @NonNull private Project currP; private MessageFormat format; // private String[] recommendedTypes; + + @NonNull private Project getCurrentProject() { return currP; } - private void setCurrentProject(Project p) { + private void setCurrentProject(@NonNull Project p) { this.currP = p; } - public NewFileWizard(Project project /*, String recommendedTypes[] */) { + public NewFileWizard(@NonNull Project project /*, String recommendedTypes[] */) { setCurrentProject(project); putProperty(ProjectChooserFactory.WIZARD_KEY_PROJECT, getCurrentProject()); format = new MessageFormat(NbBundle.getBundle(NewFileWizard.class).getString("LBL_NewFileWizard_MessageFormat")); diff -r a130a5278725 -r b35f3097be39 projectui/src/org/netbeans/modules/project/ui/OpenProjectList.java --- a/projectui/src/org/netbeans/modules/project/ui/OpenProjectList.java Fri Aug 03 08:53:28 2012 -0500 +++ b/projectui/src/org/netbeans/modules/project/ui/OpenProjectList.java Mon Jan 28 13:04:24 2013 -0600 @@ -956,7 +956,8 @@ LOAD.exit(); } } - + + @NonNull public Project[] getOpenProjects() { return ProjectManager.mutex().readAccess(new Mutex.Action() { public @Override Project[] run() { @@ -1087,7 +1088,7 @@ // Used from NewFile action - public List getTemplatesLRU( Project project, PrivilegedTemplates priv ) { + public List getTemplatesLRU( @NonNull Project project, PrivilegedTemplates priv ) { List pLRU = getTemplateNamesLRU( project, priv ); List templates = new ArrayList(); for( Iterator it = pLRU.iterator(); it.hasNext(); ) { @@ -1264,7 +1265,7 @@ this.icon = icon; } } - public static List prepareTemplates(Project project, Lookup lookup) { + public static List prepareTemplates(@NonNull Project project, @NonNull Lookup lookup) { // check the action context for recommmended/privileged templates.. PrivilegedTemplates privs = lookup.lookup(PrivilegedTemplates.class); final List items = new ArrayList(); @@ -1353,7 +1354,7 @@ OpenProjectListSettings.getInstance().setMainProjectURL( mainRoot ); } - private ArrayList getTemplateNamesLRU( final Project project, PrivilegedTemplates priv ) { + private ArrayList getTemplateNamesLRU( @NonNull final Project project, PrivilegedTemplates priv ) { // First take recently used templates and try to find those which // are supported by the project. diff -r a130a5278725 -r b35f3097be39 projectui/src/org/netbeans/modules/project/ui/ProjectChooserFactoryImpl.java --- a/projectui/src/org/netbeans/modules/project/ui/ProjectChooserFactoryImpl.java Fri Aug 03 08:53:28 2012 -0500 +++ b/projectui/src/org/netbeans/modules/project/ui/ProjectChooserFactoryImpl.java Mon Jan 28 13:04:24 2013 -0600 @@ -46,6 +46,7 @@ import java.io.File; import javax.swing.JFileChooser; +import org.netbeans.api.annotations.common.NonNull; import org.netbeans.api.project.Project; import org.netbeans.modules.project.uiapi.ProjectChooserFactory; import org.netbeans.api.project.SourceGroup; @@ -65,7 +66,7 @@ return ProjectChooserAccessory.createProjectChooser( false ); } - public @Override WizardDescriptor.Panel createSimpleTargetChooser(Project project, SourceGroup[] folders, + public @Override WizardDescriptor.Panel createSimpleTargetChooser(@NonNull Project project, @NonNull SourceGroup[] folders, WizardDescriptor.Panel bottomPanel, boolean freeFileExtension) { return new SimpleTargetChooserPanel(project, folders, bottomPanel, false, freeFileExtension); } diff -r a130a5278725 -r b35f3097be39 projectui/src/org/netbeans/modules/project/ui/SimpleTargetChooserPanel.java --- a/projectui/src/org/netbeans/modules/project/ui/SimpleTargetChooserPanel.java Fri Aug 03 08:53:28 2012 -0500 +++ b/projectui/src/org/netbeans/modules/project/ui/SimpleTargetChooserPanel.java Mon Jan 28 13:04:24 2013 -0600 @@ -49,6 +49,7 @@ import javax.swing.JPanel; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; +import org.netbeans.api.annotations.common.NonNull; import org.netbeans.api.project.Project; import org.netbeans.api.project.SourceGroup; import static org.netbeans.modules.project.ui.Bundle.*; @@ -69,7 +70,9 @@ private final ChangeSupport changeSupport = new ChangeSupport(this); private SimpleTargetChooserPanelGUI gui; + @NonNull private Project project; + @NonNull private SourceGroup[] folders; private WizardDescriptor.Panel bottomPanel; private WizardDescriptor wizard; @@ -77,7 +80,7 @@ private boolean freeFileExtension; @SuppressWarnings("LeakingThisInConstructor") - SimpleTargetChooserPanel(Project project, SourceGroup[] folders, + SimpleTargetChooserPanel(@NonNull Project project, @NonNull SourceGroup[] folders, WizardDescriptor.Panel bottomPanel, boolean isFolder, boolean freeFileExtension) { this.folders = folders; this.project = project; diff -r a130a5278725 -r b35f3097be39 projectui/src/org/netbeans/modules/project/ui/SimpleTargetChooserPanelGUI.java --- a/projectui/src/org/netbeans/modules/project/ui/SimpleTargetChooserPanelGUI.java Fri Aug 03 08:53:28 2012 -0500 +++ b/projectui/src/org/netbeans/modules/project/ui/SimpleTargetChooserPanelGUI.java Mon Jan 28 13:04:24 2013 -0600 @@ -56,6 +56,9 @@ import javax.swing.event.ChangeListener; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; +import org.netbeans.api.annotations.common.CheckForNull; +import org.netbeans.api.annotations.common.NonNull; +import org.netbeans.api.annotations.common.NullAllowed; import org.netbeans.api.project.Project; import org.netbeans.api.project.ProjectUtils; import org.netbeans.api.project.SourceGroup; @@ -79,17 +82,19 @@ private static final Dimension PREF_DIM = new Dimension(500, 340); private final ListCellRenderer CELL_RENDERER = new GroupCellRenderer(); - + + @NonNull private Project project; private String expectedExtension; private final ChangeSupport changeSupport = new ChangeSupport(this); + @NonNull private SourceGroup[] folders; private boolean isFolder; private boolean freeFileExtension; @SuppressWarnings("LeakingThisInConstructor") @Messages("LBL_SimpleTargetChooserPanel_Name=Name and Location") - public SimpleTargetChooserPanelGUI( Project project, SourceGroup[] folders, Component bottomPanel, boolean isFolder, boolean freeFileExtension) { + public SimpleTargetChooserPanelGUI( @NonNull Project project, @NonNull SourceGroup[] folders, Component bottomPanel, boolean isFolder, boolean freeFileExtension) { this.project = project; this.folders = folders.clone(); this.isFolder = isFolder; @@ -123,7 +128,7 @@ "LBL_TargetChooser_CreatedFile_Label=&Created File:", "# sample folder name", "LBL_folder_name=folder" }) - final void initValues(FileObject template, FileObject preselectedFolder, String documentName) { + final void initValues(FileObject template, @NullAllowed FileObject preselectedFolder, String documentName) { assert project != null; projectTextField.setText(ProjectUtils.getInformation(project).getDisplayName()); @@ -206,7 +211,8 @@ public SourceGroup getTargetGroup() { return (SourceGroup)locationComboBox.getSelectedItem(); } - + + @CheckForNull public String getTargetFolder() { String folderName = folderTextField.getText().trim(); @@ -392,6 +398,7 @@ private javax.swing.JSeparator targetSeparator; // End of variables declaration//GEN-END:variables + @CheckForNull private SourceGroup getPreselectedGroup( SourceGroup[] groups, FileObject folder ) { for( int i = 0; folder != null && i < groups.length; i++ ) { if( FileUtil.isParentOf( groups[i].getRootFolder(), folder ) diff -r a130a5278725 -r b35f3097be39 projectui/src/org/netbeans/modules/project/ui/TemplateChooserPanel.java --- a/projectui/src/org/netbeans/modules/project/ui/TemplateChooserPanel.java Fri Aug 03 08:53:28 2012 -0500 +++ b/projectui/src/org/netbeans/modules/project/ui/TemplateChooserPanel.java Mon Jan 28 13:04:24 2013 -0600 @@ -49,6 +49,7 @@ import java.awt.event.ActionListener; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; +import org.netbeans.api.annotations.common.NonNull; import org.netbeans.api.project.Project; import org.netbeans.modules.project.uiapi.ProjectChooserFactory; import org.netbeans.spi.project.ui.templates.support.Templates; @@ -73,11 +74,12 @@ private final ChangeSupport changeSupport = new ChangeSupport(this); private TemplateChooserPanelGUI gui; + @NonNull private Project project; // private String[] recommendedTypes; private WizardDescriptor wizard; - TemplateChooserPanel( Project p /*, String recommendedTypes[] */ ) { + TemplateChooserPanel( @NonNull Project p /*, String recommendedTypes[] */ ) { this.project = p; /* this.recommendedTypes = recommendedTypes; */ } diff -r a130a5278725 -r b35f3097be39 projectui/src/org/netbeans/modules/project/ui/TemplateChooserPanelGUI.java --- a/projectui/src/org/netbeans/modules/project/ui/TemplateChooserPanelGUI.java Fri Aug 03 08:53:28 2012 -0500 +++ b/projectui/src/org/netbeans/modules/project/ui/TemplateChooserPanelGUI.java Mon Jan 28 13:04:24 2013 -0600 @@ -110,7 +110,7 @@ projectsComboBox.setRenderer (projectCellRenderer); } - public void readValues (Project p, String category, String template) { + public void readValues (@NonNull Project p, String category, String template) { assert p != null : "Project can not be null"; //NOI18N boolean wf; synchronized (this) { diff -r a130a5278725 -r b35f3097be39 projectui/src/org/netbeans/modules/project/ui/actions/ActionsUtil.java --- a/projectui/src/org/netbeans/modules/project/ui/actions/ActionsUtil.java Fri Aug 03 08:53:28 2012 -0500 +++ b/projectui/src/org/netbeans/modules/project/ui/actions/ActionsUtil.java Mon Jan 28 13:04:24 2013 -0600 @@ -53,6 +53,7 @@ import java.util.Set; import java.util.logging.Level; import java.util.logging.Logger; +import org.netbeans.api.annotations.common.NonNull; import org.netbeans.api.project.FileOwnerQuery; import org.netbeans.api.project.Project; import org.netbeans.spi.project.ActionProvider; @@ -76,6 +77,7 @@ * have the command supported it will return array including the project. If there * is one project with the command disabled it will return empty array. */ + @NonNull public static Project[] getProjectsFromLookup( Lookup lookup, String command ) { // First find out whether there is a project directly in the Lookup Set result = new LinkedHashSet(); // XXX or use OpenProjectList.projectByDisplayName? diff -r a130a5278725 -r b35f3097be39 projectui/src/org/netbeans/modules/project/ui/actions/NewFile.java --- a/projectui/src/org/netbeans/modules/project/ui/actions/NewFile.java Fri Aug 03 08:53:28 2012 -0500 +++ b/projectui/src/org/netbeans/modules/project/ui/actions/NewFile.java Mon Jan 28 13:04:24 2013 -0600 @@ -63,6 +63,7 @@ import javax.swing.JMenu; import javax.swing.JMenuItem; import javax.swing.JPopupMenu.Separator; +import org.netbeans.api.annotations.common.NonNull; import org.netbeans.api.project.Project; import org.netbeans.modules.project.ui.NewFileWizard; import org.netbeans.modules.project.ui.NoProjectNew; @@ -91,7 +92,7 @@ @Messages({ "LBL_NewFileAction_Name=&New File...", "LBL_NewFileAction_PopupName=New", - "#{0} Name of the template", "LBL_NewFileAction_Template_PopupName={0}..." + "# {0} - Name of the template", "LBL_NewFileAction_Template_PopupName={0}..." }) public class NewFile extends ProjectAction implements PropertyChangeListener, Popup { @@ -239,6 +240,7 @@ // Private methods --------------------------------------------------------- + @NonNull private Project preselectedProject( Lookup context ) { Project preselectedProject = null; @@ -298,7 +300,7 @@ "LBL_NewFileAction_File_PopupName=Other...", "NewFile.please_wait=Please wait..." }) - private void fillSubMenu(final JMenu menuItem, final Project project) { + private void fillSubMenu(final JMenu menuItem, @NonNull final Project project) { menuItem.removeAll(); JMenuItem wait = new JMenuItem(NewFile_please_wait()); wait.setEnabled(false); diff -r a130a5278725 -r b35f3097be39 projectuiapi/src/org/netbeans/modules/project/uiapi/ProjectChooserFactory.java --- a/projectuiapi/src/org/netbeans/modules/project/uiapi/ProjectChooserFactory.java Fri Aug 03 08:53:28 2012 -0500 +++ b/projectuiapi/src/org/netbeans/modules/project/uiapi/ProjectChooserFactory.java Mon Jan 28 13:04:24 2013 -0600 @@ -46,12 +46,13 @@ import java.io.File; import javax.swing.JFileChooser; +import org.netbeans.api.annotations.common.NonNull; import org.netbeans.api.project.Project; import org.netbeans.api.project.SourceGroup; import org.openide.WizardDescriptor; /** - * Factory to be implemented bu the ui implementation + * Factory to be implemented by the UI implementation * @author Petr Hrebejk */ public interface ProjectChooserFactory { @@ -70,7 +71,7 @@ public JFileChooser createProjectChooser(); - public WizardDescriptor.Panel createSimpleTargetChooser(Project project, SourceGroup[] folders, + public WizardDescriptor.Panel createSimpleTargetChooser(@NonNull Project project, @NonNull SourceGroup[] folders, WizardDescriptor.Panel bottomPanel, boolean freeFileExtension); } diff -r a130a5278725 -r b35f3097be39 projectuiapi/src/org/netbeans/spi/project/ui/templates/support/Templates.java --- a/projectuiapi/src/org/netbeans/spi/project/ui/templates/support/Templates.java Fri Aug 03 08:53:28 2012 -0500 +++ b/projectuiapi/src/org/netbeans/spi/project/ui/templates/support/Templates.java Mon Jan 28 13:04:24 2013 -0600 @@ -45,6 +45,7 @@ package org.netbeans.spi.project.ui.templates.support; import java.io.IOException; +import org.netbeans.api.annotations.common.NonNull; import org.netbeans.api.project.FileOwnerQuery; import org.netbeans.api.project.Project; import org.netbeans.api.project.SourceGroup; @@ -267,7 +268,7 @@ * @return a builder which can be used to customize and then create the target chooser * @since org.netbeans.modules.projectuiapi/1 1.45 */ - public static SimpleTargetChooserBuilder buildSimpleTargetChooser(Project project, SourceGroup[] folders) { + public static SimpleTargetChooserBuilder buildSimpleTargetChooser(@NonNull Project project, @NonNull SourceGroup[] folders) { Parameters.notNull("project", project); Parameters.notNull("folders", folders); return new SimpleTargetChooserBuilder(project, folders); @@ -279,11 +280,13 @@ * @since org.netbeans.modules.projectuiapi/1 1.45 */ public static final class SimpleTargetChooserBuilder { + @NonNull final Project project; + @NonNull final SourceGroup[] folders; WizardDescriptor.Panel bottomPanel; boolean freeFileExtension; - SimpleTargetChooserBuilder(Project project, SourceGroup[] folders) { + SimpleTargetChooserBuilder(@NonNull Project project, @NonNull SourceGroup[] folders) { this.project = project; this.folders = folders; }