[350972] Unable to install Web Fragment Module facet into existing project
diff --git a/plugins/org.eclipse.jst.j2ee.web/META-INF/MANIFEST.MF b/plugins/org.eclipse.jst.j2ee.web/META-INF/MANIFEST.MF
index fc3dbea..263fab3 100644
--- a/plugins/org.eclipse.jst.j2ee.web/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.jst.j2ee.web/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: Web Plug-in
Bundle-SymbolicName: org.eclipse.jst.j2ee.web; singleton:=true
-Bundle-Version: 1.1.800.qualifier
+Bundle-Version: 1.1.810.qualifier
Bundle-Activator: org.eclipse.jst.j2ee.internal.web.plugin.WebPlugin
Bundle-Vendor: Eclipse.org
Bundle-Localization: plugin
diff --git a/plugins/org.eclipse.jst.j2ee.web/pom.xml b/plugins/org.eclipse.jst.j2ee.web/pom.xml
index b54c06c..3733423 100644
--- a/plugins/org.eclipse.jst.j2ee.web/pom.xml
+++ b/plugins/org.eclipse.jst.j2ee.web/pom.xml
@@ -22,6 +22,6 @@
<groupId>org.eclipse.webtools.javaee</groupId>
<artifactId>org.eclipse.jst.j2ee.web</artifactId>
- <version>1.1.800-SNAPSHOT</version>
+ <version>1.1.810-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/plugins/org.eclipse.jst.j2ee.web/webproject/org/eclipse/jst/j2ee/web/project/facet/WebFragmentFacetInstallDataModelProvider.java b/plugins/org.eclipse.jst.j2ee.web/webproject/org/eclipse/jst/j2ee/web/project/facet/WebFragmentFacetInstallDataModelProvider.java
index 69e0daf..ac9c80d 100644
--- a/plugins/org.eclipse.jst.j2ee.web/webproject/org/eclipse/jst/j2ee/web/project/facet/WebFragmentFacetInstallDataModelProvider.java
+++ b/plugins/org.eclipse.jst.j2ee.web/webproject/org/eclipse/jst/j2ee/web/project/facet/WebFragmentFacetInstallDataModelProvider.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010 IBM Corporation and others.
+ * Copyright (c) 2010, 2015 IBM Corporation and others.
* 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
@@ -11,6 +11,7 @@
package org.eclipse.jst.j2ee.web.project.facet;
import java.util.ArrayList;
+import java.util.List;
import java.util.Set;
import org.eclipse.core.internal.resources.ResourceStatus;
@@ -25,13 +26,18 @@
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Path;
+import org.eclipse.jdt.core.IClasspathEntry;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.JavaCore;
import org.eclipse.jem.util.emf.workbench.ProjectUtilities;
import org.eclipse.jst.common.project.facet.IJavaFacetInstallDataModelProperties;
+import org.eclipse.jst.common.project.facet.core.JavaFacet;
import org.eclipse.jst.j2ee.internal.common.J2EEVersionUtil;
import org.eclipse.jst.j2ee.internal.plugin.IJ2EEModuleConstants;
import org.eclipse.jst.j2ee.internal.plugin.J2EEPlugin;
import org.eclipse.jst.j2ee.internal.plugin.J2EEPreferences;
import org.eclipse.jst.j2ee.internal.project.J2EEProjectUtilities;
+import org.eclipse.jst.j2ee.internal.web.plugin.WebPlugin;
import org.eclipse.jst.j2ee.project.JavaEEProjectUtilities;
import org.eclipse.jst.j2ee.project.facet.IJ2EEFacetConstants;
import org.eclipse.jst.j2ee.project.facet.J2EEModuleFacetInstallDataModelProvider;
@@ -44,6 +50,7 @@
import org.eclipse.wst.common.frameworks.datamodel.DataModelPropertyDescriptor;
import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
import org.eclipse.wst.common.project.facet.core.IFacetedProject;
+import org.eclipse.wst.common.project.facet.core.IFacetedProjectWorkingCopy;
import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager;
import org.eclipse.wst.common.project.facet.core.runtime.IRuntime;
@@ -96,6 +103,46 @@
return getDataModel().getStringProperty(FACET_PROJECT_NAME) + "WAR"; //$NON-NLS-1$
}
return getDataModel().getStringProperty(FACET_PROJECT_NAME) + "WAR"; //$NON-NLS-1$
+ } else if (propertyName.equals( CONFIG_FOLDER )){
+
+ // Return the first source folder found in the java facet install config or
+ // the first source folder defined in the classpath
+ final IFacetedProjectWorkingCopy localFpjwc
+ = (IFacetedProjectWorkingCopy) getProperty( FACETED_PROJECT_WORKING_COPY );
+
+ if( this.javaFacetInstallConfig != null )
+ {
+ final List<IPath> sourceFolders = this.javaFacetInstallConfig.getSourceFolders();
+
+ if( ! sourceFolders.isEmpty() )
+ {
+ return sourceFolders.get( 0 ).toPortableString();
+ }
+ }
+ else
+ {
+ final IFacetedProject fpj = localFpjwc.getFacetedProject();
+
+ if( fpj.hasProjectFacet( JavaFacet.FACET ) )
+ {
+ try
+ {
+ final IJavaProject jpj = JavaCore.create( fpj.getProject() );
+
+ for( IClasspathEntry cpe : jpj.getRawClasspath() )
+ {
+ if( cpe.getEntryKind() == IClasspathEntry.CPE_SOURCE )
+ {
+ return cpe.getPath().removeFirstSegments( 1 ).toPortableString();
+ }
+ }
+ }
+ catch( CoreException e )
+ {
+ WebPlugin.logError(e);
+ }
+ }
+ }
}
return super.getDefaultProperty(propertyName);
}
@@ -187,7 +234,7 @@
IFacetedProject facetProj = ProjectFacetsManager.create(project, false, new NullProgressMonitor());
setProperty(FACET_RUNTIME, facetProj.getRuntime());
} catch (CoreException e) {
- J2EEPlugin.logError(e);
+ WebPlugin.logError(e);
}
}
}