[94602] fix approved by PMC this insures all .deployables resources are marked derived....peer reviewed. Committing for DFH
diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/builder/ComponentStructuralBuilder.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/builder/ComponentStructuralBuilder.java
index 5052348..3a3cd58 100644
--- a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/builder/ComponentStructuralBuilder.java
+++ b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/builder/ComponentStructuralBuilder.java
@@ -195,7 +195,7 @@
} else if (resourceHasChanged(sourceResource)){
if(targetResource.exists())
targetResource.delete(IResource.FORCE, monitor);
- sourceResource.copy(absoluteOutputContainer, true, monitor);
+ sourceResource.copy(absoluteOutputContainer, true, monitor);
} else if (sourceResource.getType() == Resource.FOLDER) {
IFolder folder = (IFolder) sourceResource;
IResource[] members = folder.members();
@@ -207,6 +207,21 @@
}
}
+ public static void markBuilderResourcesDerived(IResource targetResource) throws CoreException{
+ if(targetResource == null)
+ return;
+ targetResource.setDerived(true);
+ if (targetResource.getType() == Resource.FOLDER){
+ IFolder folder = (IFolder) targetResource;
+ IResource[] members = folder.members();
+ if(members != null) {
+ for (int i = 0; i < members.length; i++) {
+ markBuilderResourcesDerived(members[i]);
+ }
+ }
+ }
+ }
+
private static boolean resourceHasChanged(IResource targetResource) {
for(int i = 0; i<changedResources.size(); i++){
if(targetResource.equals(changedResources.get(i)))
diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/builder/ComponentStructuralBuilderDependencyResolver.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/builder/ComponentStructuralBuilderDependencyResolver.java
index 11676cc..5fcaf06 100644
--- a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/builder/ComponentStructuralBuilderDependencyResolver.java
+++ b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/builder/ComponentStructuralBuilderDependencyResolver.java
@@ -13,11 +13,13 @@
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.core.commands.operations.IUndoableOperation;
+import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IncrementalProjectBuilder;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jem.util.logger.proxy.Logger;
+import org.eclipse.wst.common.componentcore.internal.StructureEdit;
import org.eclipse.wst.common.componentcore.internal.util.IModuleConstants;
import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
@@ -42,7 +44,9 @@
* org.eclipse.core.runtime.IProgressMonitor)
*/
protected IProject[] build(int kind, Map args, IProgressMonitor monitor) throws CoreException {
+ IFolder[] outputFolders = null;
try {
+ outputFolders = StructureEdit.getOutputContainersForProject(getProject());
List delayedOperationDMs = ReferencedComponentBuilderDelayedDataModelCache.getInstance().getCacheList();
IDataModel dataModel = null;
IUndoableOperation op = null;
@@ -53,11 +57,16 @@
op.execute(monitor, null);
}
}
+ if(outputFolders != null) {
+ for(int i = 0; i<outputFolders.length; i++){
+ ComponentStructuralBuilder.markBuilderResourcesDerived(outputFolders[i]);
+ }
+ }
} catch (ExecutionException e) {
Logger.getLogger().log(e.getMessage());
} finally {
ReferencedComponentBuilderDelayedDataModelCache.getInstance().clearCache();
- }
+ }
return null;
}
}
\ No newline at end of file