Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoritrimble2012-04-09 21:22:36 +0000
committeritrimble2012-04-09 21:22:36 +0000
commit9e09a3bb6c8b426e97ac44bf33a1580a34dc602d (patch)
tree9aa4258e585e156b0afefeae0e5dd88c252f1a5b
parentc920ea591bf77aeb06bb925788a3dda58878650c (diff)
downloadwebtools.jsf-9e09a3bb6c8b426e97ac44bf33a1580a34dc602d.tar.gz
webtools.jsf-9e09a3bb6c8b426e97ac44bf33a1580a34dc602d.tar.xz
webtools.jsf-9e09a3bb6c8b426e97ac44bf33a1580a34dc602d.zip
Bug 355860 - [hotbug]JSFFacetInstallDataModelProvider dispose method does not remove all listeners it adds
-rw-r--r--jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/project/facet/JSFFacetInstallDataModelProvider.java44
1 files changed, 27 insertions, 17 deletions
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/project/facet/JSFFacetInstallDataModelProvider.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/project/facet/JSFFacetInstallDataModelProvider.java
index 65cd2a6ae..33a8972cf 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/project/facet/JSFFacetInstallDataModelProvider.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/project/facet/JSFFacetInstallDataModelProvider.java
@@ -64,6 +64,7 @@ public class JSFFacetInstallDataModelProvider extends
private final boolean jsfFacetConfigurationEnabled = JsfFacetConfigurationUtil.isJsfFacetConfigurationEnabled();
private LibraryInstallDelegate libraryInstallDelegate = null;
+ private IPropertyChangeListener propertyChangeListener=null;
private void initLibraryInstallDelegate()
{
@@ -73,27 +74,36 @@ public class JSFFacetInstallDataModelProvider extends
if( this.libraryInstallDelegate == null && fpjwc != null && fv != null )
{
this.libraryInstallDelegate = new LibraryInstallDelegate( fpjwc, fv );
+ this.propertyChangeListener=new IPropertyChangeListener()
+ {
+ public void propertyChanged( final String property,
+ final Object oldValue,
+ final Object newValue )
+ {
+ final IDataModel dm = getDataModel();
+
+ if( dm != null )
+ {
+ dm.notifyPropertyChange( LIBRARY_PROVIDER_DELEGATE, IDataModel.VALUE_CHG );
+ }
+ }
+
+ };
- this.libraryInstallDelegate.addListener
- (
- new IPropertyChangeListener()
- {
- public void propertyChanged( final String property,
- final Object oldValue,
- final Object newValue )
- {
- final IDataModel dm = getDataModel();
-
- if( dm != null )
- {
- dm.notifyPropertyChange( LIBRARY_PROVIDER_DELEGATE, IDataModel.VALUE_CHG );
- }
- }
- }
- );
+ this.libraryInstallDelegate.addListener(propertyChangeListener);
}
}
+ public void dispose()
+ {
+ if(this.libraryInstallDelegate!=null)
+ {
+ this.libraryInstallDelegate.removeListener(propertyChangeListener);
+ this.libraryInstallDelegate.dispose();
+ }
+ super.dispose();
+ }
+
private String errorMessage;

Back to the top