Lines 45-56
Link Here
|
45 |
import java.awt.Dialog; |
45 |
import java.awt.Dialog; |
46 |
import java.beans.PropertyChangeEvent; |
46 |
import java.beans.PropertyChangeEvent; |
47 |
import java.beans.PropertyChangeListener; |
47 |
import java.beans.PropertyChangeListener; |
48 |
import java.beans.PropertyChangeSupport; |
|
|
49 |
import java.io.File; |
48 |
import java.io.File; |
50 |
import java.io.IOException; |
49 |
import java.io.IOException; |
51 |
import java.io.InputStream; |
50 |
import java.io.InputStream; |
52 |
import java.io.OutputStream; |
51 |
import java.io.OutputStream; |
53 |
import java.lang.ref.WeakReference; |
|
|
54 |
import java.util.Arrays; |
52 |
import java.util.Arrays; |
55 |
import java.util.Collections; |
53 |
import java.util.Collections; |
56 |
import java.util.HashMap; |
54 |
import java.util.HashMap; |
Lines 82-88
Link Here
|
82 |
import org.netbeans.modules.j2ee.ejbjarproject.jaxws.EjbProjectJAXWSSupport; |
80 |
import org.netbeans.modules.j2ee.ejbjarproject.jaxws.EjbProjectJAXWSSupport; |
83 |
import org.netbeans.modules.j2ee.ejbjarproject.ui.EjbJarLogicalViewProvider; |
81 |
import org.netbeans.modules.j2ee.ejbjarproject.ui.EjbJarLogicalViewProvider; |
84 |
import org.netbeans.modules.j2ee.ejbjarproject.ui.customizer.EjbJarProjectProperties; |
82 |
import org.netbeans.modules.j2ee.ejbjarproject.ui.customizer.EjbJarProjectProperties; |
85 |
import org.netbeans.api.project.ProjectInformation; |
|
|
86 |
import org.netbeans.api.project.SourceGroup; |
83 |
import org.netbeans.api.project.SourceGroup; |
87 |
import org.netbeans.modules.j2ee.common.SharabilityUtility; |
84 |
import org.netbeans.modules.j2ee.common.SharabilityUtility; |
88 |
import org.netbeans.modules.j2ee.common.Util; |
85 |
import org.netbeans.modules.j2ee.common.Util; |
Lines 106-114
Link Here
|
106 |
import org.netbeans.spi.project.ant.AntArtifactProvider; |
103 |
import org.netbeans.spi.project.ant.AntArtifactProvider; |
107 |
import org.netbeans.spi.project.ant.AntBuildExtenderFactory; |
104 |
import org.netbeans.spi.project.ant.AntBuildExtenderFactory; |
108 |
import org.netbeans.spi.project.ant.AntBuildExtenderImplementation; |
105 |
import org.netbeans.spi.project.ant.AntBuildExtenderImplementation; |
109 |
import org.netbeans.spi.project.support.ant.AntProjectEvent; |
|
|
110 |
import org.netbeans.spi.project.support.ant.AntProjectHelper; |
106 |
import org.netbeans.spi.project.support.ant.AntProjectHelper; |
111 |
import org.netbeans.spi.project.support.ant.AntProjectListener; |
|
|
112 |
import org.netbeans.spi.project.support.ant.GeneratedFilesHelper; |
107 |
import org.netbeans.spi.project.support.ant.GeneratedFilesHelper; |
113 |
import org.netbeans.spi.project.support.ant.ProjectXmlSavedHook; |
108 |
import org.netbeans.spi.project.support.ant.ProjectXmlSavedHook; |
114 |
import org.netbeans.spi.project.ui.PrivilegedTemplates; |
109 |
import org.netbeans.spi.project.ui.PrivilegedTemplates; |
Lines 122-128
Link Here
|
122 |
import org.openide.loaders.DataObject; |
117 |
import org.openide.loaders.DataObject; |
123 |
import org.openide.util.ImageUtilities; |
118 |
import org.openide.util.ImageUtilities; |
124 |
import org.openide.util.Lookup; |
119 |
import org.openide.util.Lookup; |
125 |
import org.openide.util.Mutex; |
|
|
126 |
import org.openide.util.RequestProcessor; |
120 |
import org.openide.util.RequestProcessor; |
127 |
import org.openide.util.lookup.Lookups; |
121 |
import org.openide.util.lookup.Lookups; |
128 |
import org.netbeans.modules.j2ee.deployment.devmodules.api.Deployment; |
122 |
import org.netbeans.modules.j2ee.deployment.devmodules.api.Deployment; |
Lines 132-143
Link Here
|
132 |
import org.netbeans.modules.j2ee.common.project.ui.UserProjectSettings; |
126 |
import org.netbeans.modules.j2ee.common.project.ui.UserProjectSettings; |
133 |
import org.netbeans.modules.j2ee.deployment.devmodules.api.InstanceRemovedException; |
127 |
import org.netbeans.modules.j2ee.deployment.devmodules.api.InstanceRemovedException; |
134 |
import org.netbeans.api.j2ee.core.Profile; |
128 |
import org.netbeans.api.j2ee.core.Profile; |
|
|
129 |
import org.netbeans.api.project.ProjectUtils; |
135 |
import org.netbeans.modules.j2ee.deployment.devmodules.spi.ArtifactListener; |
130 |
import org.netbeans.modules.j2ee.deployment.devmodules.spi.ArtifactListener; |
136 |
import org.netbeans.modules.j2ee.deployment.devmodules.spi.J2eeModuleProvider.DeployOnSaveSupport; |
131 |
import org.netbeans.modules.j2ee.deployment.devmodules.spi.J2eeModuleProvider.DeployOnSaveSupport; |
137 |
import org.netbeans.modules.j2ee.ejbjarproject.ui.customizer.CustomizerProviderImpl; |
132 |
import org.netbeans.modules.j2ee.ejbjarproject.ui.customizer.CustomizerProviderImpl; |
138 |
import org.netbeans.modules.j2ee.spi.ejbjar.EjbJarImplementation; |
133 |
import org.netbeans.modules.j2ee.spi.ejbjar.EjbJarImplementation; |
139 |
import org.netbeans.modules.j2ee.spi.ejbjar.EjbJarImplementation2; |
134 |
import org.netbeans.modules.j2ee.spi.ejbjar.EjbJarImplementation2; |
140 |
import org.netbeans.modules.java.api.common.SourceRoots; |
135 |
import org.netbeans.modules.java.api.common.SourceRoots; |
|
|
136 |
import org.netbeans.modules.java.api.common.ant.ProjectInfoImpl; |
141 |
import org.netbeans.modules.java.api.common.ant.UpdateHelper; |
137 |
import org.netbeans.modules.java.api.common.ant.UpdateHelper; |
142 |
import org.netbeans.modules.java.api.common.ant.UpdateImplementation; |
138 |
import org.netbeans.modules.java.api.common.ant.UpdateImplementation; |
143 |
import org.netbeans.modules.java.api.common.project.ProjectProperties; |
139 |
import org.netbeans.modules.java.api.common.project.ProjectProperties; |
Lines 149-159
Link Here
|
149 |
import org.openide.DialogDisplayer; |
145 |
import org.openide.DialogDisplayer; |
150 |
import org.openide.util.NbBundle; |
146 |
import org.openide.util.NbBundle; |
151 |
import org.w3c.dom.Document; |
147 |
import org.w3c.dom.Document; |
152 |
import org.w3c.dom.Comment; |
|
|
153 |
import org.w3c.dom.Element; |
148 |
import org.w3c.dom.Element; |
154 |
import org.w3c.dom.Node; |
|
|
155 |
import org.w3c.dom.NodeList; |
149 |
import org.w3c.dom.NodeList; |
156 |
import org.w3c.dom.Text; |
|
|
157 |
import org.netbeans.modules.websvc.api.webservices.WebServicesSupport; |
150 |
import org.netbeans.modules.websvc.api.webservices.WebServicesSupport; |
158 |
import org.netbeans.modules.websvc.api.client.WebServicesClientSupport; |
151 |
import org.netbeans.modules.websvc.api.client.WebServicesClientSupport; |
159 |
import org.netbeans.modules.websvc.spi.webservices.WebServicesSupportFactory; |
152 |
import org.netbeans.modules.websvc.spi.webservices.WebServicesSupportFactory; |
Lines 161-167
Link Here
|
161 |
import org.netbeans.spi.java.project.support.LookupMergerSupport; |
154 |
import org.netbeans.spi.java.project.support.LookupMergerSupport; |
162 |
import org.netbeans.spi.project.support.LookupProviderSupport; |
155 |
import org.netbeans.spi.project.support.LookupProviderSupport; |
163 |
import org.netbeans.spi.project.support.ant.AntBasedProjectRegistration; |
156 |
import org.netbeans.spi.project.support.ant.AntBasedProjectRegistration; |
164 |
import org.netbeans.spi.project.support.ant.PropertyUtils; |
|
|
165 |
import org.netbeans.spi.project.ui.support.UILookupMergerSupport; |
157 |
import org.netbeans.spi.project.ui.support.UILookupMergerSupport; |
166 |
import org.netbeans.spi.queries.FileEncodingQueryImplementation; |
158 |
import org.netbeans.spi.queries.FileEncodingQueryImplementation; |
167 |
import org.openide.NotifyDescriptor; |
159 |
import org.openide.NotifyDescriptor; |
Lines 184-190
Link Here
|
184 |
sharedNamespace=EjbJarProjectType.PROJECT_CONFIGURATION_NAMESPACE, |
176 |
sharedNamespace=EjbJarProjectType.PROJECT_CONFIGURATION_NAMESPACE, |
185 |
privateNamespace=EjbJarProjectType.PRIVATE_CONFIGURATION_NAMESPACE |
177 |
privateNamespace=EjbJarProjectType.PRIVATE_CONFIGURATION_NAMESPACE |
186 |
) |
178 |
) |
187 |
public class EjbJarProject implements Project, AntProjectListener, FileChangeListener { |
179 |
public class EjbJarProject implements Project, FileChangeListener { |
188 |
|
180 |
|
189 |
private final Icon PROJECT_ICON = ImageUtilities.loadImageIcon("org/netbeans/modules/j2ee/ejbjarproject/ui/resources/ejbjarProjectIcon.gif", false); // NOI18N |
181 |
private final Icon PROJECT_ICON = ImageUtilities.loadImageIcon("org/netbeans/modules/j2ee/ejbjarproject/ui/resources/ejbjarProjectIcon.gif", false); // NOI18N |
190 |
|
182 |
|
Lines 312-318
Link Here
|
312 |
css = new CopyOnSaveSupport(); |
304 |
css = new CopyOnSaveSupport(); |
313 |
artifactSupport = new ArtifactCopySupport(); |
305 |
artifactSupport = new ArtifactCopySupport(); |
314 |
deployOnSaveSupport = new DeployOnSaveSupportProxy(); |
306 |
deployOnSaveSupport = new DeployOnSaveSupportProxy(); |
315 |
helper.addAntProjectListener(this); |
|
|
316 |
ProjectManager.mutex().postWriteRequest( |
307 |
ProjectManager.mutex().postWriteRequest( |
317 |
new Runnable () { |
308 |
new Runnable () { |
318 |
public void run() { |
309 |
public void run() { |
Lines 409-415
Link Here
|
409 |
Lookup base = Lookups.fixed(new Object[] { |
400 |
Lookup base = Lookups.fixed(new Object[] { |
410 |
EjbJarProject.this, // never cast an externally obtained Project to EjbJarProject - use lookup instead |
401 |
EjbJarProject.this, // never cast an externally obtained Project to EjbJarProject - use lookup instead |
411 |
buildExtender, |
402 |
buildExtender, |
412 |
new Info(), |
403 |
new ProjectInfoImpl(this, helper, PROJECT_ICON), |
413 |
aux, |
404 |
aux, |
414 |
helper.createCacheDirectoryProvider(), |
405 |
helper.createCacheDirectoryProvider(), |
415 |
helper.createAuxiliaryProperties(), |
406 |
helper.createAuxiliaryProperties(), |
Lines 468-487
Link Here
|
468 |
return this.cpProvider; |
459 |
return this.cpProvider; |
469 |
} |
460 |
} |
470 |
|
461 |
|
471 |
public void configurationXmlChanged(AntProjectEvent ev) { |
|
|
472 |
if (ev.getPath().equals(AntProjectHelper.PROJECT_XML_PATH)) { |
473 |
// Could be various kinds of changes, but name & displayName might have changed. |
474 |
Info info = (Info)getLookup().lookup(ProjectInformation.class); |
475 |
info.firePropertyChange(ProjectInformation.PROP_NAME); |
476 |
info.firePropertyChange(ProjectInformation.PROP_DISPLAY_NAME); |
477 |
} |
478 |
} |
479 |
|
480 |
public void propertiesChanged(AntProjectEvent ev) { |
481 |
// currently ignored |
482 |
//TODO: should not be ignored! |
483 |
} |
484 |
|
485 |
String getBuildXmlName() { |
462 |
String getBuildXmlName() { |
486 |
String storedName = helper.getStandardPropertyEvaluator().getProperty(EjbJarProjectProperties.BUILD_FILE); |
463 |
String storedName = helper.getStandardPropertyEvaluator().getProperty(EjbJarProjectProperties.BUILD_FILE); |
487 |
return storedName == null ? GeneratedFilesHelper.BUILD_XML_PATH : storedName; |
464 |
return storedName == null ? GeneratedFilesHelper.BUILD_XML_PATH : storedName; |
Lines 583-602
Link Here
|
583 |
|
560 |
|
584 |
/** Return configured project name. */ |
561 |
/** Return configured project name. */ |
585 |
public String getName() { |
562 |
public String getName() { |
586 |
return ProjectManager.mutex().readAccess(new Mutex.Action<String>() { |
563 |
return ProjectUtils.getInformation(this).getName(); |
587 |
public String run() { |
|
|
588 |
Element data = updateHelper.getPrimaryConfigurationData(true); |
589 |
// XXX replace by XMLUtil when that has findElement, findText, etc. |
590 |
NodeList nl = data.getElementsByTagNameNS(EjbJarProjectType.PROJECT_CONFIGURATION_NAMESPACE, "name"); //NOI18N |
591 |
if (nl.getLength() == 1) { |
592 |
nl = nl.item(0).getChildNodes(); |
593 |
if (nl.getLength() == 1 && nl.item(0).getNodeType() == Node.TEXT_NODE) { |
594 |
return ((Text) nl.item(0)).getNodeValue(); |
595 |
} |
596 |
} |
597 |
return "A Broken EJB Project"; // NOI18N |
598 |
} |
599 |
}); |
600 |
} |
564 |
} |
601 |
|
565 |
|
602 |
/** Store configured project name. */ |
566 |
/** Store configured project name. */ |
Lines 783-843
Link Here
|
783 |
} |
747 |
} |
784 |
|
748 |
|
785 |
// Private innerclasses ---------------------------------------------------- |
749 |
// Private innerclasses ---------------------------------------------------- |
786 |
|
|
|
787 |
//when #110886 gets implemented, this class is obsolete |
788 |
private final class Info implements ProjectInformation { |
789 |
|
790 |
private final PropertyChangeSupport pcs = new PropertyChangeSupport(this); |
791 |
|
792 |
private WeakReference<String> cachedName = null; |
793 |
|
794 |
Info() {} |
795 |
|
796 |
void firePropertyChange(String prop) { |
797 |
pcs.firePropertyChange(prop, null, null); |
798 |
synchronized (pcs) { |
799 |
cachedName = null; |
800 |
} |
801 |
} |
802 |
|
803 |
public String getName() { |
804 |
return PropertyUtils.getUsablePropertyName(getDisplayName()); |
805 |
} |
806 |
|
807 |
public String getDisplayName() { |
808 |
synchronized (pcs) { |
809 |
if (cachedName != null) { |
810 |
String dn = cachedName.get(); |
811 |
if (dn != null) { |
812 |
return dn; |
813 |
} |
814 |
} |
815 |
} |
816 |
String dn = EjbJarProject.this.getName(); |
817 |
synchronized (pcs) { |
818 |
cachedName = new WeakReference<String>(dn); |
819 |
} |
820 |
return dn; |
821 |
} |
822 |
|
823 |
public Icon getIcon() { |
824 |
return PROJECT_ICON; |
825 |
} |
826 |
|
827 |
public Project getProject() { |
828 |
return EjbJarProject.this; |
829 |
} |
830 |
|
831 |
public void addPropertyChangeListener(PropertyChangeListener listener) { |
832 |
pcs.addPropertyChangeListener(listener); |
833 |
} |
834 |
|
835 |
public void removePropertyChangeListener(PropertyChangeListener listener) { |
836 |
pcs.removePropertyChangeListener(listener); |
837 |
} |
838 |
|
839 |
} |
840 |
|
841 |
private final class ProjectXmlSavedHookImpl extends ProjectXmlSavedHook { |
750 |
private final class ProjectXmlSavedHookImpl extends ProjectXmlSavedHook { |
842 |
|
751 |
|
843 |
ProjectXmlSavedHookImpl() {} |
752 |
ProjectXmlSavedHookImpl() {} |