[322952] Hide system folders
diff --git a/plugins/org.eclipse.wst.common.modulecore.ui/schema/resourceMappingFilter.exsd b/plugins/org.eclipse.wst.common.modulecore.ui/schema/resourceMappingFilter.exsd
index f3ed607..38b775a 100644
--- a/plugins/org.eclipse.wst.common.modulecore.ui/schema/resourceMappingFilter.exsd
+++ b/plugins/org.eclipse.wst.common.modulecore.ui/schema/resourceMappingFilter.exsd
@@ -49,7 +49,7 @@
          <attribute name="source-path" type="string" use="required">
             <annotation>
                <documentation>
-                  Project relative source path that should be filtered out represented as regular expression. (i.e. source-path=&quot;\.settings&quot; would filter out the &apos;.settings&apos; folder and its contents)
+                  Project relative source path that should be filtered out represented as regular expression. (i.e. source-path=&quot;\.settings&quot; would filter out the &apos;.settings&apos; folder and its contents; Since it expects a relative path filtering source-path=&quot;/\.settings&quot; would not filter out the &apos;.settings&apos; folder)
                </documentation>
             </annotation>
          </attribute>
diff --git a/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/ResourceMappingFilterExtensionRegistry.java b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/ResourceMappingFilterExtensionRegistry.java
index d516e79..9f4c316 100644
--- a/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/ResourceMappingFilterExtensionRegistry.java
+++ b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/ResourceMappingFilterExtensionRegistry.java
@@ -14,6 +14,7 @@
 import java.util.Iterator;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
+import java.util.regex.PatternSyntaxException;
 
 import org.eclipse.core.runtime.IConfigurationElement;
 import org.eclipse.core.runtime.IPath;
@@ -56,9 +57,14 @@
 	private static void addResourceMappingFilter(String filterRegExp) {
 		if(resourceMappingFilters == null)
 			resourceMappingFilters = new HashMap<String, Pattern>();
-		String cleanFilter = makeFilterRelative(filterRegExp);
-		if(cleanFilter != null)
-			resourceMappingFilters.put(filterRegExp, Pattern.compile(cleanFilter));
+		if(filterRegExp != null) {
+			try {
+				Pattern pattern = Pattern.compile(filterRegExp);
+				resourceMappingFilters.put(filterRegExp, pattern);
+			} catch(PatternSyntaxException e) {
+				ModuleCoreUIPlugin.logError(e);
+			}
+		}
 	}
 	
 	
@@ -91,24 +97,6 @@
 		return false;
 	}
 	
-	private static String makeFilterRelative(String value) {
-		if(value != null) {
-			int start = -1;
-			char [] filterChar = value.toCharArray();
-			for(int i = 0; i < filterChar.length; i++) {
-				start = i;
-				if(filterChar[i] != '/') {
-					break;
-				}
-			}
-			if(start <= 0)
-				return value;
-			if(start < value.length() - 1)
-				return value.substring(start);
-		}
-		return null;
-	}
-	
 	public static String[] getResourceMappingFiltersRegularExpressions() {
 		return resourceMappingFilters.keySet().toArray(new String[resourceMappingFilters.keySet().size()]);
 	}
diff --git a/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/propertypage/AddModuleDependenciesPropertiesPage.java b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/propertypage/AddModuleDependenciesPropertiesPage.java
index d8105a7..6877fea 100644
--- a/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/propertypage/AddModuleDependenciesPropertiesPage.java
+++ b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/propertypage/AddModuleDependenciesPropertiesPage.java
@@ -776,9 +776,11 @@
 			for( int i = 0; i < arr.length; i++ )
 				result[i] = (ComponentResource)arr[i];
 			return result;
-		} catch(Exception e) {
+		} catch (NullPointerException e) {
+			ModuleCoreUIPlugin.logError(e);
 		} finally {
-			structureEdit.dispose();
+			if(structureEdit != null)
+				structureEdit.dispose();
 		}
 		return new ComponentResource[]{};
 	}
@@ -797,9 +799,11 @@
 				}
 			}
 			return result.toArray(new ComponentResource[result.size()]);
-		} catch(Exception e) {
+		} catch (NullPointerException e) {
+			ModuleCoreUIPlugin.logError(e);
 		} finally {
-			structureEdit.dispose();
+			if(structureEdit != null)
+				structureEdit.dispose();
 		}
 		return new ComponentResource[]{};
 	}
@@ -818,9 +822,11 @@
 				}
 			}
 			return result.toArray(new ComponentResource[result.size()]);
-		} catch(Exception e) {
+		} catch (NullPointerException e) {
+			ModuleCoreUIPlugin.logError(e);
 		} finally {
-			structureEdit.dispose();
+			if(structureEdit != null)
+				structureEdit.dispose();
 		}
 		return new ComponentResource[]{};
 	}
@@ -909,6 +915,7 @@
 			try {
 				rootFolder.getFolder(proxies[i].runtimePath).createLink(proxies[i].source, 0, null);
 			} catch( CoreException ce ) {
+				ModuleCoreUIPlugin.logError(ce);
 			}
 		}
 	}
@@ -920,6 +927,7 @@
 			try {
 				rootFolder.getFolder(proxies[i].runtimePath).createLink(proxies[i].source, 0, null);
 			} catch( CoreException ce ) {
+				ModuleCoreUIPlugin.logError(ce);
 			}
 		}
 		resourceMappingsChanged = false;