[214345] Wrong source folder in EJB 2.1 projects with XDoclet support
Also took care of some deprecated api usage in the affected code area.
diff --git a/plugins/org.eclipse.jst.common.frameworks/plugin.xml b/plugins/org.eclipse.jst.common.frameworks/plugin.xml
index b03f353..e960a36 100644
--- a/plugins/org.eclipse.jst.common.frameworks/plugin.xml
+++ b/plugins/org.eclipse.jst.common.frameworks/plugin.xml
@@ -40,69 +40,44 @@
     </project-facet>
 
     <project-facet-version facet="jst.java" version="1.3">
-      <action type="install">
-        <delegate class="org.eclipse.jst.common.project.facet.JavaFacetInstallDelegate"/>
-        <config-factory class="org.eclipse.jst.common.project.facet.JavaFacetInstallDataModelProvider"/>
-      </action>
-      <action type="version-change">
-        <delegate class="org.eclipse.jst.common.project.facet.JavaFacetVersionChangeDelegate"/>
-      </action>
-      <event-handler type="RUNTIME_CHANGED">
-        <delegate class="org.eclipse.jst.common.project.facet.JavaFacetRuntimeChangedDelegate"/>
-      </event-handler>
       <constraint>
         <conflicts facet="wst.web"/>
       </constraint>
     </project-facet-version>
 
     <project-facet-version facet="jst.java" version="1.4">
-      <action type="install">
-        <delegate class="org.eclipse.jst.common.project.facet.JavaFacetInstallDelegate"/>
-        <config-factory class="org.eclipse.jst.common.project.facet.JavaFacetInstallDataModelProvider"/>
-      </action>
-      <action type="version-change">
-        <delegate class="org.eclipse.jst.common.project.facet.JavaFacetVersionChangeDelegate"/>
-      </action>
-      <event-handler type="RUNTIME_CHANGED">
-        <delegate class="org.eclipse.jst.common.project.facet.JavaFacetRuntimeChangedDelegate"/>
-      </event-handler>
       <constraint>
         <conflicts facet="wst.web"/>
       </constraint>
     </project-facet-version>
 
     <project-facet-version facet="jst.java" version="5.0">
-      <action type="install">
-        <delegate class="org.eclipse.jst.common.project.facet.JavaFacetInstallDelegate"/>
-        <config-factory class="org.eclipse.jst.common.project.facet.JavaFacetInstallDataModelProvider"/>
-      </action>
-      <action type="version-change">
-        <delegate class="org.eclipse.jst.common.project.facet.JavaFacetVersionChangeDelegate"/>
-      </action>
-      <event-handler type="RUNTIME_CHANGED">
-        <delegate class="org.eclipse.jst.common.project.facet.JavaFacetRuntimeChangedDelegate"/>
-      </event-handler>
       <constraint>
         <conflicts facet="wst.web"/>
       </constraint>
     </project-facet-version>
 
     <project-facet-version facet="jst.java" version="6.0">
-      <action type="install">
-        <delegate class="org.eclipse.jst.common.project.facet.JavaFacetInstallDelegate"/>
-        <config-factory class="org.eclipse.jst.common.project.facet.JavaFacetInstallDataModelProvider"/>
-      </action>
-      <action type="version-change">
-        <delegate class="org.eclipse.jst.common.project.facet.JavaFacetVersionChangeDelegate"/>
-      </action>
-      <event-handler type="RUNTIME_CHANGED">
-        <delegate class="org.eclipse.jst.common.project.facet.JavaFacetRuntimeChangedDelegate"/>
-      </event-handler>
       <constraint>
         <conflicts facet="wst.web"/>
       </constraint>
     </project-facet-version>
 
+    <action facet="jst.java" type="install">
+      <delegate class="org.eclipse.jst.common.project.facet.JavaFacetInstallDelegate"/>
+      <config-factory class="org.eclipse.jst.common.project.facet.JavaFacetInstallDataModelProvider"/>
+    </action>
+
+    <action facet="jst.java" type="version-change">
+      <delegate class="org.eclipse.jst.common.project.facet.JavaFacetVersionChangeDelegate"/>
+    </action>
+
+  </extension>
+
+  <extension point="org.eclipse.wst.common.project.facet.core.listeners">
+     <listener
+       class="org.eclipse.jst.common.project.facet.JavaFacetRuntimeChangedListener"
+       eventTypes="PRIMARY_RUNTIME_CHANGED"/>
   </extension>
   
   <extension point="org.eclipse.wst.common.project.facet.core.validators">
@@ -125,5 +100,5 @@
          <initializer
 			class="org.eclipse.jst.common.frameworks.CommonFrameworksPreferenceInitializer" />
    </extension>
-  
+
 </plugin>
diff --git a/plugins/org.eclipse.jst.common.frameworks/src/org/eclipse/jst/common/project/facet/JavaFacetRuntimeChangedDelegate.java b/plugins/org.eclipse.jst.common.frameworks/src/org/eclipse/jst/common/project/facet/JavaFacetRuntimeChangedDelegate.java
deleted file mode 100644
index 216c3a3..0000000
--- a/plugins/org.eclipse.jst.common.frameworks/src/org/eclipse/jst/common/project/facet/JavaFacetRuntimeChangedDelegate.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/******************************************************************************
- * Copyright (c) 2005 BEA Systems, Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Konstantin Komissarchik - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.jst.common.project.facet;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.wst.common.project.facet.core.IDelegate;
-import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
-
-/**
- * @author <a href="mailto:kosta@bea.com">Konstantin Komissarchik</a>
- */
-
-public final class JavaFacetRuntimeChangedDelegate 
-
-    implements IDelegate
-    
-{
-    public void execute( final IProject project, 
-                         final IProjectFacetVersion fv,
-                         final Object cfg,
-                         final IProgressMonitor monitor )
-    
-        throws CoreException
-        
-    {
-        if( monitor != null )
-        {
-            monitor.beginTask( "", 1 ); //$NON-NLS-1$
-        }
-        
-        try
-        {
-            JavaFacetUtils.resetClasspath( project, fv, fv );
-            
-            if( monitor != null )
-            {
-                monitor.worked( 1 );
-            }
-        }
-        finally
-        {
-            if( monitor != null )
-            {
-                monitor.done();
-            }
-        }
-    }
-
-}
diff --git a/plugins/org.eclipse.jst.common.frameworks/src/org/eclipse/jst/common/project/facet/JavaFacetRuntimeChangedListener.java b/plugins/org.eclipse.jst.common.frameworks/src/org/eclipse/jst/common/project/facet/JavaFacetRuntimeChangedListener.java
new file mode 100644
index 0000000..7bd741b
--- /dev/null
+++ b/plugins/org.eclipse.jst.common.frameworks/src/org/eclipse/jst/common/project/facet/JavaFacetRuntimeChangedListener.java
@@ -0,0 +1,49 @@
+/******************************************************************************
+ * Copyright (c) 2008 BEA Systems, Inc.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Konstantin Komissarchik - initial API and implementation
+ ******************************************************************************/
+
+package org.eclipse.jst.common.project.facet;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.jst.common.frameworks.CommonFrameworksPlugin;
+import org.eclipse.wst.common.project.facet.core.IFacetedProject;
+import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
+import org.eclipse.wst.common.project.facet.core.events.IFacetedProjectEvent;
+import org.eclipse.wst.common.project.facet.core.events.IFacetedProjectListener;
+
+/**
+ * @author <a href="mailto:kosta@bea.com">Konstantin Komissarchik</a>
+ */
+
+public final class JavaFacetRuntimeChangedListener 
+
+    implements IFacetedProjectListener
+    
+{
+    public void handleEvent( final IFacetedProjectEvent event )
+    {
+        final IFacetedProject fproj = event.getProject();
+        
+        if( fproj.hasProjectFacet( JavaFacetUtils.JAVA_FACET ) )
+        {
+            final IProjectFacetVersion fv = fproj.getInstalledVersion( JavaFacetUtils.JAVA_FACET );
+            
+            try
+            {
+                JavaFacetUtils.resetClasspath( fproj.getProject(), fv, fv );
+            }
+            catch( CoreException e )
+            {
+                CommonFrameworksPlugin.log( e );
+            }
+        }
+    }
+
+}