diff options
author | itrimble | 2012-04-09 21:22:36 +0000 |
---|---|---|
committer | itrimble | 2012-04-09 21:22:36 +0000 |
commit | 9e09a3bb6c8b426e97ac44bf33a1580a34dc602d (patch) | |
tree | 9aa4258e585e156b0afefeae0e5dd88c252f1a5b | |
parent | c920ea591bf77aeb06bb925788a3dda58878650c (diff) | |
download | webtools.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.java | 44 |
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; |