diff --git a/j2ee.archive/nbproject/project.xml b/j2ee.archive/nbproject/project.xml --- a/j2ee.archive/nbproject/project.xml +++ b/j2ee.archive/nbproject/project.xml @@ -164,6 +164,15 @@ + org.netbeans.modules.java.api.common + + + + 0-1 + 1.18 + + + org.netbeans.modules.java.project diff --git a/j2ee.archive/src/org/netbeans/modules/j2ee/archive/project/ArchiveProject.java b/j2ee.archive/src/org/netbeans/modules/j2ee/archive/project/ArchiveProject.java --- a/j2ee.archive/src/org/netbeans/modules/j2ee/archive/project/ArchiveProject.java +++ b/j2ee.archive/src/org/netbeans/modules/j2ee/archive/project/ArchiveProject.java @@ -42,10 +42,8 @@ package org.netbeans.modules.j2ee.archive.project; import java.beans.PropertyChangeListener; -import java.beans.PropertyChangeSupport; import java.io.File; import java.io.IOException; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; @@ -74,6 +72,7 @@ import org.netbeans.modules.j2ee.deployment.devmodules.spi.J2eeModuleImplementation2; import org.netbeans.modules.j2ee.deployment.devmodules.spi.J2eeModuleProvider; import org.netbeans.modules.j2ee.metadata.model.api.MetadataModel; +import org.netbeans.modules.java.api.common.ant.ProjectInfoImpl; import org.netbeans.modules.web.api.webmodule.WebProjectConstants; import org.netbeans.spi.java.classpath.support.ClassPathSupport; import org.netbeans.spi.project.AuxiliaryConfiguration; @@ -83,7 +82,6 @@ import org.netbeans.spi.project.support.ant.AntProjectHelper; import org.netbeans.spi.project.support.ant.GeneratedFilesHelper; import org.netbeans.spi.project.support.ant.PropertyEvaluator; -import org.netbeans.spi.project.support.ant.PropertyUtils; import org.netbeans.spi.project.ui.PrivilegedTemplates; import org.netbeans.spi.project.ui.RecommendedTemplates; import org.openide.ErrorManager; @@ -196,22 +194,8 @@ /** Return configured project name. */ public String getName() { - return (String) ProjectManager.mutex().readAccess(new Mutex.Action() { - @Override - public String run() { - Element data = updateHelper.getPrimaryConfigurationData(true); - // XXX replace by XMLUtil when that has findElement, findText, etc. - NodeList nl = data.getElementsByTagNameNS(ArchiveProjectType.PROJECT_CONFIGURATION_NS, NAME_LIT); - if (nl.getLength() == 1) { - nl = nl.item(0).getChildNodes(); - if (nl.getLength() == 1 && nl.item(0).getNodeType() == Node.TEXT_NODE) { - return ((Text) nl.item(0)).getNodeValue(); - } - } - return "BINARCHIVE???"; // NOI18N - } - }); - + ProjectInformation info = lookup.lookup(ProjectInformation.class); + return info.getName(); } public ArchiveProjectProperties getArchiveProjectProperties() { @@ -226,9 +210,10 @@ private final class HelpfulLookup extends Lookup { private boolean verbose = Boolean.getBoolean("archiveproject.lookup.verbose"); - + + ProjectInfoImpl projectInfo = new Info(ArchiveProject.this, helper, updateHelper, ArchiveProjectType.PROJECT_CONFIGURATION_NS, ARCHIVE_PROJECT_ICON); Lookup inner = LookupProviderSupport.createCompositeLookup(Lookups.fixed(new Object[] { - new Info(), + projectInfo, helper.createAuxiliaryConfiguration(), helper.createCacheDirectoryProvider(), helper.createGlobFileBuiltQuery(eval, new String[] {"${src.dir}/*.java"}, @@ -311,64 +296,23 @@ return ret; } } - //when #110886 gets implemented, this class is obsolete - private final class Info implements ProjectInformation { - - private PropertyChangeSupport pcs = new PropertyChangeSupport(this); - private WeakReference cachedName = null; - - Info() {} - - void firePropertyChange(String prop) { - pcs.firePropertyChange(prop, null, null); - synchronized (pcs) { - cachedName = null; - } + + private final class Info extends ProjectInfoImpl { + + private final UpdateHelper updateHelper; + + public Info(Project project, AntProjectHelper projectHelper, UpdateHelper updateHelper, String configurationNameSpace, Icon icon) { + super(project, projectHelper, configurationNameSpace, icon); + this.updateHelper = updateHelper; } - + @Override - public String getName() { - return PropertyUtils.getUsablePropertyName(getDisplayName()); + protected Element getPrimaryConfigurationData(boolean shared) { + return updateHelper.getPrimaryConfigurationData(true); } - - @Override - public String getDisplayName() { - synchronized (pcs) { - if (cachedName != null) { - String dn = cachedName.get(); - if (dn != null) { - return dn; - } - } - } - String dn = ArchiveProject.this.getNamedProjectAttribute(NAME_LIT); - synchronized (pcs) { - cachedName = new WeakReference(dn); - } - return dn; - } - - @Override - public Icon getIcon() { - return ARCHIVE_PROJECT_ICON; - } - - @Override - public Project getProject() { - return ArchiveProject.this; - } - - @Override - public void addPropertyChangeListener(PropertyChangeListener listener) { - pcs.addPropertyChangeListener(listener); - } - - @Override - public void removePropertyChangeListener(PropertyChangeListener listener) { - pcs.removePropertyChangeListener(listener); - } + } - + private final class MyAntProvider implements AntArtifactProvider { // TODO - Need to fix for ejb-jar/app-client/resource-adapter cases @Override diff --git a/j2ee.archive/src/org/netbeans/modules/j2ee/archive/project/UpdateHelper.java b/j2ee.archive/src/org/netbeans/modules/j2ee/archive/project/UpdateHelper.java --- a/j2ee.archive/src/org/netbeans/modules/j2ee/archive/project/UpdateHelper.java +++ b/j2ee.archive/src/org/netbeans/modules/j2ee/archive/project/UpdateHelper.java @@ -44,13 +44,9 @@ import java.io.IOException; import javax.swing.JButton; import org.netbeans.spi.project.support.ant.GeneratedFilesHelper; -import org.w3c.dom.Comment; import org.w3c.dom.Document; import org.w3c.dom.Element; -import org.w3c.dom.NamedNodeMap; -import org.w3c.dom.Node; import org.w3c.dom.NodeList; -import org.w3c.dom.Text; import org.openide.DialogDisplayer; import org.openide.ErrorManager; import org.openide.NotifyDescriptor; diff --git a/j2ee.clientproject/nbproject/project.xml b/j2ee.clientproject/nbproject/project.xml --- a/j2ee.clientproject/nbproject/project.xml +++ b/j2ee.clientproject/nbproject/project.xml @@ -206,7 +206,7 @@ 0-1 - 1.15 + 1.18 diff --git a/j2ee.clientproject/src/org/netbeans/modules/j2ee/clientproject/AppClientProject.java b/j2ee.clientproject/src/org/netbeans/modules/j2ee/clientproject/AppClientProject.java --- a/j2ee.clientproject/src/org/netbeans/modules/j2ee/clientproject/AppClientProject.java +++ b/j2ee.clientproject/src/org/netbeans/modules/j2ee/clientproject/AppClientProject.java @@ -88,6 +88,7 @@ import org.netbeans.modules.j2ee.spi.ejbjar.CarImplementation; import org.netbeans.modules.j2ee.spi.ejbjar.CarImplementation2; import org.netbeans.modules.java.api.common.SourceRoots; +import org.netbeans.modules.java.api.common.ant.ProjectInfoImpl; import org.netbeans.modules.java.api.common.ant.UpdateHelper; import org.netbeans.modules.java.api.common.ant.UpdateImplementation; import org.netbeans.modules.java.api.common.project.ProjectProperties; @@ -106,9 +107,7 @@ import org.netbeans.spi.project.ant.AntBuildExtenderImplementation; import org.netbeans.spi.project.support.LookupProviderSupport; import org.netbeans.spi.project.support.ant.AntBasedProjectRegistration; -import org.netbeans.spi.project.support.ant.AntProjectEvent; import org.netbeans.spi.project.support.ant.AntProjectHelper; -import org.netbeans.spi.project.support.ant.AntProjectListener; import org.netbeans.spi.project.support.ant.EditableProperties; import org.netbeans.spi.project.support.ant.GeneratedFilesHelper; import org.netbeans.spi.project.support.ant.ProjectXmlSavedHook; @@ -153,7 +152,7 @@ sharedNamespace=AppClientProjectType.PROJECT_CONFIGURATION_NAMESPACE, privateNamespace=AppClientProjectType.PRIVATE_CONFIGURATION_NAMESPACE ) -public final class AppClientProject implements Project, AntProjectListener, FileChangeListener { +public final class AppClientProject implements Project, FileChangeListener { private final Icon CAR_PROJECT_ICON = ImageUtilities.loadImageIcon("org/netbeans/modules/j2ee/clientproject/ui/resources/appclient.gif", false); // NOI18N @@ -216,7 +215,6 @@ getClassPathUiSupportCallback()); classPathExtender = new ClassPathExtender(cpMod, ProjectProperties.JAVAC_CLASSPATH, ClassPathSupportCallbackImpl.ELEMENT_INCLUDED_LIBRARIES); lookup = createLookup(aux, cpProvider); - helper.addAntProjectListener(this); } private ClassPathModifier.Callback createClassPathModifierCallback() { @@ -297,8 +295,9 @@ SubprojectProvider spp = refHelper.createSubprojectProvider(); FileEncodingQueryImplementation encodingQuery = QuerySupport.createFileEncodingQuery(evaluator(), AppClientProjectProperties.SOURCE_ENCODING); AppClientSources sources = new AppClientSources(this, helper, evaluator(), getSourceRoots(), getTestSourceRoots()); + ProjectInfoImpl projectInfo = new ProjectInfoImpl(this, helper, AppClientProjectType.PROJECT_CONFIGURATION_NAMESPACE, CAR_PROJECT_ICON); Lookup base = Lookups.fixed(new Object[] { - new Info(), + projectInfo, aux, helper.createCacheDirectoryProvider(), helper.createAuxiliaryProperties(), @@ -354,19 +353,6 @@ return this.cpProvider; } - public void configurationXmlChanged(AntProjectEvent ev) { - if (ev.getPath().equals(AntProjectHelper.PROJECT_XML_PATH)) { - // Could be various kinds of changes, but name & displayName might have changed. - Info info = (Info)getLookup().lookup(ProjectInformation.class); - info.firePropertyChange(ProjectInformation.PROP_NAME); - info.firePropertyChange(ProjectInformation.PROP_DISPLAY_NAME); - } - } - - public void propertiesChanged(AntProjectEvent ev) { - // currently ignored (probably better to listen to evaluator() if you need to) - } - // Package private methods ------------------------------------------------- /** @@ -587,73 +573,6 @@ } // Private innerclasses ---------------------------------------------------- - //when #110886 gets implemented, this class is obsolete - private final class Info implements ProjectInformation { - - private final PropertyChangeSupport pcs = new PropertyChangeSupport(this); - - private WeakReference cachedName = null; - - Info() {} - - void firePropertyChange(String prop) { - pcs.firePropertyChange(prop, null, null); - synchronized (pcs) { - cachedName = null; - } - } - - public String getName() { - return PropertyUtils.getUsablePropertyName(getDisplayName()); - } - - public String getDisplayName() { - synchronized (pcs) { - if (cachedName != null) { - String dn = cachedName.get(); - if (dn != null) { - return dn; - } - } - } - String dn = ProjectManager.mutex().readAccess(new Mutex.Action() { - public String run() { - Element data = updateHelper.getPrimaryConfigurationData(true); - // XXX replace by XMLUtil when that has findElement, findText, etc. - NodeList nl = data.getElementsByTagNameNS(AppClientProjectType.PROJECT_CONFIGURATION_NAMESPACE, "name"); // NOI18N - if (nl.getLength() == 1) { - nl = nl.item(0).getChildNodes(); - if (nl.getLength() == 1 && nl.item(0).getNodeType() == Node.TEXT_NODE) { - return ((Text) nl.item(0)).getNodeValue(); - } - } - return "???"; // NOI18N - } - }); - synchronized (pcs) { - cachedName = new WeakReference(dn); - } - return dn; - } - - public Icon getIcon() { - return CAR_PROJECT_ICON; - } - - public Project getProject() { - return AppClientProject.this; - } - - public void addPropertyChangeListener(PropertyChangeListener listener) { - pcs.addPropertyChangeListener(listener); - } - - public void removePropertyChangeListener(PropertyChangeListener listener) { - pcs.removePropertyChangeListener(listener); - } - - } - private final class ProjectXmlSavedHookImpl extends ProjectXmlSavedHook { ProjectXmlSavedHookImpl() {} diff --git a/j2ee.earproject/nbproject/project.xml b/j2ee.earproject/nbproject/project.xml --- a/j2ee.earproject/nbproject/project.xml +++ b/j2ee.earproject/nbproject/project.xml @@ -188,7 +188,7 @@ 0-1 - 1.6 + 1.18 diff --git a/j2ee.earproject/src/org/netbeans/modules/j2ee/earproject/EarProject.java b/j2ee.earproject/src/org/netbeans/modules/j2ee/earproject/EarProject.java --- a/j2ee.earproject/src/org/netbeans/modules/j2ee/earproject/EarProject.java +++ b/j2ee.earproject/src/org/netbeans/modules/j2ee/earproject/EarProject.java @@ -43,10 +43,8 @@ import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; -import java.beans.PropertyChangeSupport; import java.io.File; import java.io.IOException; -import java.lang.ref.WeakReference; import java.util.Arrays; import java.util.List; import java.util.logging.Level; @@ -55,7 +53,6 @@ import org.netbeans.api.java.classpath.ClassPath; import org.netbeans.api.java.classpath.GlobalPathRegistry; import org.netbeans.api.project.Project; -import org.netbeans.api.project.ProjectInformation; import org.netbeans.api.project.ProjectManager; import org.netbeans.api.project.ant.AntArtifact; import org.netbeans.api.project.ant.AntBuildExtender; @@ -81,6 +78,7 @@ import org.netbeans.modules.j2ee.spi.ejbjar.EarImplementation; import org.netbeans.modules.j2ee.spi.ejbjar.EarImplementation2; import org.netbeans.modules.j2ee.spi.ejbjar.EjbJarFactory; +import org.netbeans.modules.java.api.common.ant.ProjectInfoImpl; import org.netbeans.modules.java.api.common.ant.UpdateHelper; import org.netbeans.modules.web.api.webmodule.WebModule; import org.netbeans.spi.java.project.support.LookupMergerSupport; @@ -116,9 +114,7 @@ import org.openide.util.NbBundle; import org.openide.util.lookup.Lookups; import org.w3c.dom.Element; -import org.w3c.dom.Node; import org.w3c.dom.NodeList; -import org.w3c.dom.Text; /** * Represents an Enterprise Application project. @@ -212,8 +208,9 @@ private Lookup createLookup(AuxiliaryConfiguration aux, ClassPathProviderImpl cpProvider) { SubprojectProvider spp = refHelper.createSubprojectProvider(); + ProjectInfoImpl projectInfo = new ProjectInfoImpl(this, helper, EarProjectType.PROJECT_CONFIGURATION_NAMESPACE, EAR_PROJECT_ICON); Lookup base = Lookups.fixed(new Object[] { - new Info(), + projectInfo, aux, spp, helper.createAuxiliaryProperties(), @@ -272,24 +269,6 @@ return ear; } - /** Return configured project name. */ - public String getName() { - return ProjectManager.mutex().readAccess(new Mutex.Action() { - public String run() { - Element data = updateHelper.getPrimaryConfigurationData(true); - // XXX replace by XMLUtil when that has findElement, findText, etc. - NodeList nl = data.getElementsByTagNameNS(EarProjectType.PROJECT_CONFIGURATION_NAMESPACE, "name"); // NOI18N - if (nl.getLength() == 1) { - nl = nl.item(0).getChildNodes(); - if (nl.getLength() == 1 && nl.item(0).getNodeType() == Node.TEXT_NODE) { - return ((Text) nl.item(0)).getNodeValue(); - } - } - return "EAR????"; // NOI18N - } - }); - } - /** Store configured project name. */ public void setName(final String name) { ProjectManager.mutex().writeAccess(new Mutex.Action() { @@ -350,61 +329,6 @@ } // Private innerclasses ---------------------------------------------------- - //when #110886 gets implemented, this class is obsolete - private final class Info implements ProjectInformation { - - private final PropertyChangeSupport pcs = new PropertyChangeSupport(this); - - - private WeakReference cachedName = null; - - Info() {} - - void firePropertyChange(String prop) { - pcs.firePropertyChange(prop, null, null); - synchronized (pcs) { - cachedName = null; - } - } - - public String getName() { - return PropertyUtils.getUsablePropertyName(getDisplayName()); - } - - public String getDisplayName() { - synchronized (pcs) { - if (cachedName != null) { - String dn = cachedName.get(); - if (dn != null) { - return dn; - } - } - } - String dn = EarProject.this.getName(); - synchronized (pcs) { - cachedName = new WeakReference(dn); - } - return dn; - } - - public Icon getIcon() { - return EAR_PROJECT_ICON; - } - - public Project getProject() { - return EarProject.this; - } - - public void addPropertyChangeListener(PropertyChangeListener listener) { - pcs.addPropertyChangeListener(listener); - } - - public void removePropertyChangeListener(PropertyChangeListener listener) { - pcs.removePropertyChangeListener(listener); - } - - } - private final class ProjectXmlSavedHookImpl extends ProjectXmlSavedHook { ProjectXmlSavedHookImpl() {} diff --git a/j2ee.earproject/src/org/netbeans/modules/j2ee/earproject/EarProjectOperations.java b/j2ee.earproject/src/org/netbeans/modules/j2ee/earproject/EarProjectOperations.java --- a/j2ee.earproject/src/org/netbeans/modules/j2ee/earproject/EarProjectOperations.java +++ b/j2ee.earproject/src/org/netbeans/modules/j2ee/earproject/EarProjectOperations.java @@ -50,6 +50,7 @@ import org.apache.tools.ant.module.api.support.ActionUtils; import org.netbeans.api.project.FileOwnerQuery; import org.netbeans.api.project.Project; +import org.netbeans.api.project.ProjectInformation; import org.netbeans.api.project.ProjectManager; import org.netbeans.modules.j2ee.earproject.ui.customizer.EarProjectProperties; import org.netbeans.spi.project.ActionProvider; @@ -167,9 +168,10 @@ EarProjectOperations origOperations = original.getLookup().lookup(EarProjectOperations.class); fixLibraryLocation(origOperations); - - final String oldProjectName = project.getName(); - + + ProjectInformation info = original.getLookup().lookup(ProjectInformation.class); + final String oldProjectName = info.getName(); + project.setName(newName); ProjectManager.mutex().writeAccess(new Runnable() { diff --git a/j2ee.ejbjarproject/nbproject/project.xml b/j2ee.ejbjarproject/nbproject/project.xml --- a/j2ee.ejbjarproject/nbproject/project.xml +++ b/j2ee.ejbjarproject/nbproject/project.xml @@ -241,7 +241,7 @@ 0-1 - 1.15 + 1.18 diff --git a/j2ee.ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/EjbJarProject.java b/j2ee.ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/EjbJarProject.java --- a/j2ee.ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/EjbJarProject.java +++ b/j2ee.ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/EjbJarProject.java @@ -106,9 +106,7 @@ import org.netbeans.spi.project.ant.AntArtifactProvider; import org.netbeans.spi.project.ant.AntBuildExtenderFactory; import org.netbeans.spi.project.ant.AntBuildExtenderImplementation; -import org.netbeans.spi.project.support.ant.AntProjectEvent; import org.netbeans.spi.project.support.ant.AntProjectHelper; -import org.netbeans.spi.project.support.ant.AntProjectListener; import org.netbeans.spi.project.support.ant.GeneratedFilesHelper; import org.netbeans.spi.project.support.ant.ProjectXmlSavedHook; import org.netbeans.spi.project.ui.PrivilegedTemplates; @@ -138,6 +136,7 @@ import org.netbeans.modules.j2ee.spi.ejbjar.EjbJarImplementation; import org.netbeans.modules.j2ee.spi.ejbjar.EjbJarImplementation2; import org.netbeans.modules.java.api.common.SourceRoots; +import org.netbeans.modules.java.api.common.ant.ProjectInfoImpl; import org.netbeans.modules.java.api.common.ant.UpdateHelper; import org.netbeans.modules.java.api.common.ant.UpdateImplementation; import org.netbeans.modules.java.api.common.project.ProjectProperties; @@ -149,7 +148,6 @@ import org.openide.DialogDisplayer; import org.openide.util.NbBundle; import org.w3c.dom.Document; -import org.w3c.dom.Comment; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; @@ -184,7 +182,7 @@ sharedNamespace=EjbJarProjectType.PROJECT_CONFIGURATION_NAMESPACE, privateNamespace=EjbJarProjectType.PRIVATE_CONFIGURATION_NAMESPACE ) -public class EjbJarProject implements Project, AntProjectListener, FileChangeListener { +public class EjbJarProject implements Project, FileChangeListener { private final Icon PROJECT_ICON = ImageUtilities.loadImageIcon("org/netbeans/modules/j2ee/ejbjarproject/ui/resources/ejbjarProjectIcon.gif", false); // NOI18N @@ -312,7 +310,6 @@ css = new CopyOnSaveSupport(); artifactSupport = new ArtifactCopySupport(); deployOnSaveSupport = new DeployOnSaveSupportProxy(); - helper.addAntProjectListener(this); ProjectManager.mutex().postWriteRequest( new Runnable () { public void run() { @@ -406,10 +403,11 @@ SubprojectProvider spp = refHelper.createSubprojectProvider(); FileEncodingQueryImplementation encodingQuery = QuerySupport.createFileEncodingQuery(evaluator(), EjbJarProjectProperties.SOURCE_ENCODING); EjbJarSources sources = new EjbJarSources(this, helper, evaluator(), getSourceRoots(), getTestSourceRoots()); + ProjectInfoImpl projectInfo = new ProjectInfoImpl(this, helper, EjbJarProjectType.PROJECT_CONFIGURATION_NAMESPACE, PROJECT_ICON); Lookup base = Lookups.fixed(new Object[] { EjbJarProject.this, // never cast an externally obtained Project to EjbJarProject - use lookup instead buildExtender, - new Info(), + projectInfo, aux, helper.createCacheDirectoryProvider(), helper.createAuxiliaryProperties(), @@ -468,20 +466,6 @@ return this.cpProvider; } - public void configurationXmlChanged(AntProjectEvent ev) { - if (ev.getPath().equals(AntProjectHelper.PROJECT_XML_PATH)) { - // Could be various kinds of changes, but name & displayName might have changed. - Info info = (Info)getLookup().lookup(ProjectInformation.class); - info.firePropertyChange(ProjectInformation.PROP_NAME); - info.firePropertyChange(ProjectInformation.PROP_DISPLAY_NAME); - } - } - - public void propertiesChanged(AntProjectEvent ev) { - // currently ignored - //TODO: should not be ignored! - } - String getBuildXmlName() { String storedName = helper.getStandardPropertyEvaluator().getProperty(EjbJarProjectProperties.BUILD_FILE); return storedName == null ? GeneratedFilesHelper.BUILD_XML_PATH : storedName; @@ -583,20 +567,8 @@ /** Return configured project name. */ public String getName() { - return ProjectManager.mutex().readAccess(new Mutex.Action() { - public String run() { - Element data = updateHelper.getPrimaryConfigurationData(true); - // XXX replace by XMLUtil when that has findElement, findText, etc. - NodeList nl = data.getElementsByTagNameNS(EjbJarProjectType.PROJECT_CONFIGURATION_NAMESPACE, "name"); //NOI18N - if (nl.getLength() == 1) { - nl = nl.item(0).getChildNodes(); - if (nl.getLength() == 1 && nl.item(0).getNodeType() == Node.TEXT_NODE) { - return ((Text) nl.item(0)).getNodeValue(); - } - } - return "A Broken EJB Project"; // NOI18N - } - }); + ProjectInformation info = lookup.lookup(ProjectInformation.class); + return info.getName(); } /** Store configured project name. */ @@ -782,61 +754,6 @@ } // Private innerclasses ---------------------------------------------------- - - //when #110886 gets implemented, this class is obsolete - private final class Info implements ProjectInformation { - - private final PropertyChangeSupport pcs = new PropertyChangeSupport(this); - - private WeakReference cachedName = null; - - Info() {} - - void firePropertyChange(String prop) { - pcs.firePropertyChange(prop, null, null); - synchronized (pcs) { - cachedName = null; - } - } - - public String getName() { - return PropertyUtils.getUsablePropertyName(getDisplayName()); - } - - public String getDisplayName() { - synchronized (pcs) { - if (cachedName != null) { - String dn = cachedName.get(); - if (dn != null) { - return dn; - } - } - } - String dn = EjbJarProject.this.getName(); - synchronized (pcs) { - cachedName = new WeakReference(dn); - } - return dn; - } - - public Icon getIcon() { - return PROJECT_ICON; - } - - public Project getProject() { - return EjbJarProject.this; - } - - public void addPropertyChangeListener(PropertyChangeListener listener) { - pcs.addPropertyChangeListener(listener); - } - - public void removePropertyChangeListener(PropertyChangeListener listener) { - pcs.removePropertyChangeListener(listener); - } - - } - private final class ProjectXmlSavedHookImpl extends ProjectXmlSavedHook { ProjectXmlSavedHookImpl() {} diff --git a/java.api.common/apichanges.xml b/java.api.common/apichanges.xml --- a/java.api.common/apichanges.xml +++ b/java.api.common/apichanges.xml @@ -175,6 +175,22 @@ + + + Create a reusable implementation for ProjectInformation. + + + + + +

+ Created a re-usable implementation of ProjectInformation that can be + used within the Java language projects. +

+
+ + +
diff --git a/java.api.common/manifest.mf b/java.api.common/manifest.mf --- a/java.api.common/manifest.mf +++ b/java.api.common/manifest.mf @@ -1,4 +1,4 @@ Manifest-Version: 1.0 OpenIDE-Module: org.netbeans.modules.java.api.common/0 OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/java/api/common/resources/Bundle.properties -OpenIDE-Module-Specification-Version: 1.17 +OpenIDE-Module-Specification-Version: 1.18 diff --git a/java.api.common/nbproject/project.xml b/java.api.common/nbproject/project.xml --- a/java.api.common/nbproject/project.xml +++ b/java.api.common/nbproject/project.xml @@ -233,6 +233,7 @@ org.netbeans.modules.apisupport.project org.netbeans.modules.groovy.grailsproject org.netbeans.modules.hudson.ant + org.netbeans.modules.j2ee.archive org.netbeans.modules.j2ee.clientproject org.netbeans.modules.j2ee.common org.netbeans.modules.j2ee.earproject diff --git a/java.j2seproject/nbproject/project.xml b/java.j2seproject/nbproject/project.xml --- a/java.j2seproject/nbproject/project.xml +++ b/java.j2seproject/nbproject/project.xml @@ -131,7 +131,7 @@ 0-1 - 1.15 + 1.18
diff --git a/java.j2seproject/src/org/netbeans/modules/java/j2seproject/J2SEProject.java b/java.j2seproject/src/org/netbeans/modules/java/j2seproject/J2SEProject.java --- a/java.j2seproject/src/org/netbeans/modules/java/j2seproject/J2SEProject.java +++ b/java.j2seproject/src/org/netbeans/modules/java/j2seproject/J2SEProject.java @@ -43,7 +43,6 @@ import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; -import java.beans.PropertyChangeSupport; import java.io.File; import java.io.IOException; import java.lang.ref.Reference; @@ -71,13 +70,13 @@ import org.netbeans.api.java.classpath.GlobalPathRegistry; import org.netbeans.api.java.project.JavaProjectConstants; import org.netbeans.api.project.Project; -import org.netbeans.api.project.ProjectInformation; import org.netbeans.api.project.ProjectManager; import org.netbeans.api.project.SourceGroup; import org.netbeans.api.project.ant.AntArtifact; import org.netbeans.api.project.ant.AntBuildExtender; import org.netbeans.api.queries.FileBuiltQuery.Status; import org.netbeans.modules.java.api.common.SourceRoots; +import org.netbeans.modules.java.api.common.ant.ProjectInfoImpl; import org.netbeans.modules.java.api.common.ant.UpdateHelper; import org.netbeans.modules.java.api.common.ant.UpdateImplementation; import org.netbeans.modules.java.api.common.classpath.ClassPathModifier; @@ -97,9 +96,7 @@ import org.netbeans.spi.project.support.LookupProviderSupport; import org.netbeans.spi.project.ant.AntBuildExtenderImplementation; import org.netbeans.spi.project.support.ant.AntBasedProjectRegistration; -import org.netbeans.spi.project.support.ant.AntProjectEvent; import org.netbeans.spi.project.support.ant.AntProjectHelper; -import org.netbeans.spi.project.support.ant.AntProjectListener; import org.netbeans.spi.project.support.ant.EditableProperties; import org.netbeans.spi.project.support.ant.FilterPropertyProvider; import org.netbeans.spi.project.support.ant.GeneratedFilesHelper; @@ -130,7 +127,6 @@ import org.openide.util.lookup.Lookups; import org.w3c.dom.Document; import org.w3c.dom.Element; -import org.w3c.dom.Text; import org.w3c.dom.Node; import org.w3c.dom.NodeList; @@ -146,7 +142,7 @@ privateName=J2SEProjectType.PRIVATE_CONFIGURATION_NAME, privateNamespace= J2SEProjectType.PRIVATE_CONFIGURATION_NAMESPACE ) -public final class J2SEProject implements Project, AntProjectListener { +public final class J2SEProject implements Project { private static final Icon J2SE_PROJECT_ICON = ImageUtilities.loadImageIcon("org/netbeans/modules/java/j2seproject/ui/resources/j2seProject.png", false); // NOI18N private static final Logger LOG = Logger.getLogger(J2SEProject.class.getName()); @@ -194,7 +190,6 @@ final J2SEActionProvider actionProvider = new J2SEActionProvider( this, this.updateHelper ); lookup = createLookup(aux, actionProvider); actionProvider.startFSListener(); - helper.addAntProjectListener(this); } private ClassPathModifier.Callback createClassPathModifierCallback() { @@ -317,9 +312,10 @@ @SuppressWarnings("deprecation") Object cpe = new org.netbeans.modules.java.api.common.classpath.ClassPathExtender( cpMod, ProjectProperties.JAVAC_CLASSPATH, null); J2SESources srcs = new J2SESources(this, helper, eval, getSourceRoots(), getTestSourceRoots()); + ProjectInfoImpl projectInfo = new ProjectInfoImpl(this, helper, J2SEProjectType.PROJECT_CONFIGURATION_NAMESPACE, J2SE_PROJECT_ICON); final Lookup base = Lookups.fixed( J2SEProject.this, - new Info(), + projectInfo, aux, helper.createCacheDirectoryProvider(), helper.createAuxiliaryProperties(), @@ -372,19 +368,6 @@ return this.cpMod; } - public void configurationXmlChanged(AntProjectEvent ev) { - if (ev.getPath().equals(AntProjectHelper.PROJECT_XML_PATH)) { - // Could be various kinds of changes, but name & displayName might have changed. - Info info = (Info)getLookup().lookup(ProjectInformation.class); - info.firePropertyChange(ProjectInformation.PROP_NAME); - info.firePropertyChange(ProjectInformation.PROP_DISPLAY_NAME); - } - } - - public void propertiesChanged(AntProjectEvent ev) { - // currently ignored (probably better to listen to evaluator() if you need to) - } - // Package private methods ------------------------------------------------- /** @@ -452,73 +435,6 @@ } // Private innerclasses ---------------------------------------------------- - //when #110886 gets implemented, this class is obsolete - private final class Info implements ProjectInformation { - - private final PropertyChangeSupport pcs = new PropertyChangeSupport(this); - private WeakReference cachedName = null; - - Info() {} - - void firePropertyChange(String prop) { - pcs.firePropertyChange(prop, null, null); - synchronized (pcs) { - cachedName = null; - } - } - - public String getName() { - return PropertyUtils.getUsablePropertyName(getDisplayName()); - } - - public String getDisplayName() { - synchronized (pcs) { - if (cachedName != null) { - String dn = cachedName.get(); - if (dn != null) { - return dn; - } - } - } - String dn = ProjectManager.mutex().readAccess(new Mutex.Action() { - public String run() { - Element data = updateHelper.getPrimaryConfigurationData(true); - // XXX replace by XMLUtil when that has findElement, findText, etc. - NodeList nl = data.getElementsByTagNameNS(J2SEProjectType.PROJECT_CONFIGURATION_NAMESPACE, "name"); // NOI18N - if (nl.getLength() == 1) { - nl = nl.item(0).getChildNodes(); - if (nl.getLength() == 1 && nl.item(0).getNodeType() == Node.TEXT_NODE) { - String val = ((Text) nl.item(0)).getNodeValue(); - return val != null ? val : "???"; //NOI18N - } - } - return "???"; // NOI18N - } - }); - synchronized (pcs) { - cachedName = new WeakReference(dn); - } - return dn; - } - - public Icon getIcon() { - return J2SE_PROJECT_ICON; - } - - public Project getProject() { - return J2SEProject.this; - } - - public void addPropertyChangeListener(PropertyChangeListener listener) { - pcs.addPropertyChangeListener(listener); - } - - public void removePropertyChangeListener(PropertyChangeListener listener) { - pcs.removePropertyChangeListener(listener); - } - - } - private final class ProjectXmlSavedHookImpl extends ProjectXmlSavedHook { ProjectXmlSavedHookImpl() {}