Author: rombert
Date: Mon Jul 22 20:56:51 2013
New Revision: 1505809

URL: http://svn.apache.org/r1505809
Log:
SLING-2973 - [Tooling] Align Eclipse tooling to proposed structure

Added a basic Filter interface with a dead-simple implementation, just
to drive the API and find the right places to plug it in.

Added:
    sling/whiteboard/asanso/plugins/eclipse/api/src/org/apache/sling/ide/filter/
    
sling/whiteboard/asanso/plugins/eclipse/api/src/org/apache/sling/ide/filter/Filter.java
   (with props)
    
sling/whiteboard/asanso/plugins/eclipse/api/src/org/apache/sling/ide/filter/FilterLocator.java
   (with props)
    
sling/whiteboard/asanso/plugins/eclipse/api/src/org/apache/sling/ide/filter/FilterResult.java
   (with props)
    
sling/whiteboard/asanso/plugins/eclipse/impl-resource/OSGI-INF/SimpleFilterLocator.xml
   (with props)
    
sling/whiteboard/asanso/plugins/eclipse/impl-resource/src/org/apache/sling/ide/impl/resource/filer/
    
sling/whiteboard/asanso/plugins/eclipse/impl-resource/src/org/apache/sling/ide/impl/resource/filer/SimpleFilter.java
   (with props)
    
sling/whiteboard/asanso/plugins/eclipse/impl-resource/src/org/apache/sling/ide/impl/resource/filer/SimpleFilterLocator.java
   (with props)
Modified:
    sling/whiteboard/asanso/plugins/eclipse/api/META-INF/MANIFEST.MF
    sling/whiteboard/asanso/plugins/eclipse/eclipse-core/META-INF/MANIFEST.MF
    
sling/whiteboard/asanso/plugins/eclipse/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/Activator.java
    
sling/whiteboard/asanso/plugins/eclipse/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/SlingContentModuleFactory.java
    
sling/whiteboard/asanso/plugins/eclipse/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/SlingLaunchpadBehaviour.java
    sling/whiteboard/asanso/plugins/eclipse/impl-resource/META-INF/MANIFEST.MF

Modified: sling/whiteboard/asanso/plugins/eclipse/api/META-INF/MANIFEST.MF
URL: 
http://svn.apache.org/viewvc/sling/whiteboard/asanso/plugins/eclipse/api/META-INF/MANIFEST.MF?rev=1505809&r1=1505808&r2=1505809&view=diff
==============================================================================
--- sling/whiteboard/asanso/plugins/eclipse/api/META-INF/MANIFEST.MF (original)
+++ sling/whiteboard/asanso/plugins/eclipse/api/META-INF/MANIFEST.MF Mon Jul 22 
20:56:51 2013
@@ -8,4 +8,5 @@ Require-Bundle: org.eclipse.ui,
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Export-Package: org.apache.sling.ide.serialization,
- org.apache.sling.ide.transport
+ org.apache.sling.ide.transport,
+ org.apache.sling.ide.filter

Added: 
sling/whiteboard/asanso/plugins/eclipse/api/src/org/apache/sling/ide/filter/Filter.java
URL: 
http://svn.apache.org/viewvc/sling/whiteboard/asanso/plugins/eclipse/api/src/org/apache/sling/ide/filter/Filter.java?rev=1505809&view=auto
==============================================================================
--- 
sling/whiteboard/asanso/plugins/eclipse/api/src/org/apache/sling/ide/filter/Filter.java
 (added)
+++ 
sling/whiteboard/asanso/plugins/eclipse/api/src/org/apache/sling/ide/filter/Filter.java
 Mon Jul 22 20:56:51 2013
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.sling.ide.filter;
+
+public interface Filter {
+
+    /**
+     * 
+     * @param relativeFilePath a relative path
+     * @return the filter result
+     */
+    FilterResult filter(String relativeFilePath);
+}

Propchange: 
sling/whiteboard/asanso/plugins/eclipse/api/src/org/apache/sling/ide/filter/Filter.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
sling/whiteboard/asanso/plugins/eclipse/api/src/org/apache/sling/ide/filter/Filter.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision Rev URL

Added: 
sling/whiteboard/asanso/plugins/eclipse/api/src/org/apache/sling/ide/filter/FilterLocator.java
URL: 
http://svn.apache.org/viewvc/sling/whiteboard/asanso/plugins/eclipse/api/src/org/apache/sling/ide/filter/FilterLocator.java?rev=1505809&view=auto
==============================================================================
--- 
sling/whiteboard/asanso/plugins/eclipse/api/src/org/apache/sling/ide/filter/FilterLocator.java
 (added)
+++ 
sling/whiteboard/asanso/plugins/eclipse/api/src/org/apache/sling/ide/filter/FilterLocator.java
 Mon Jul 22 20:56:51 2013
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.sling.ide.filter;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+
+public interface FilterLocator {
+
+    File findFilterLocation(File syncDirectory);
+
+    Filter loadFilter(InputStream filterFileContents) throws IOException;
+}

Propchange: 
sling/whiteboard/asanso/plugins/eclipse/api/src/org/apache/sling/ide/filter/FilterLocator.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
sling/whiteboard/asanso/plugins/eclipse/api/src/org/apache/sling/ide/filter/FilterLocator.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision Rev URL

Added: 
sling/whiteboard/asanso/plugins/eclipse/api/src/org/apache/sling/ide/filter/FilterResult.java
URL: 
http://svn.apache.org/viewvc/sling/whiteboard/asanso/plugins/eclipse/api/src/org/apache/sling/ide/filter/FilterResult.java?rev=1505809&view=auto
==============================================================================
--- 
sling/whiteboard/asanso/plugins/eclipse/api/src/org/apache/sling/ide/filter/FilterResult.java
 (added)
+++ 
sling/whiteboard/asanso/plugins/eclipse/api/src/org/apache/sling/ide/filter/FilterResult.java
 Mon Jul 22 20:56:51 2013
@@ -0,0 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.sling.ide.filter;
+
+public enum FilterResult {
+    ALLOW, DENY;
+}

Propchange: 
sling/whiteboard/asanso/plugins/eclipse/api/src/org/apache/sling/ide/filter/FilterResult.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
sling/whiteboard/asanso/plugins/eclipse/api/src/org/apache/sling/ide/filter/FilterResult.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision Rev URL

Modified: 
sling/whiteboard/asanso/plugins/eclipse/eclipse-core/META-INF/MANIFEST.MF
URL: 
http://svn.apache.org/viewvc/sling/whiteboard/asanso/plugins/eclipse/eclipse-core/META-INF/MANIFEST.MF?rev=1505809&r1=1505808&r2=1505809&view=diff
==============================================================================
--- sling/whiteboard/asanso/plugins/eclipse/eclipse-core/META-INF/MANIFEST.MF 
(original)
+++ sling/whiteboard/asanso/plugins/eclipse/eclipse-core/META-INF/MANIFEST.MF 
Mon Jul 22 20:56:51 2013
@@ -9,7 +9,8 @@ Require-Bundle: org.eclipse.core.runtime
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ClassPath: .
-Import-Package: org.apache.sling.ide.serialization,
+Import-Package: org.apache.sling.ide.filter,
+ org.apache.sling.ide.serialization,
  org.apache.sling.ide.transport,
  org.eclipse.core.commands,
  org.eclipse.core.commands.operations,

Modified: 
sling/whiteboard/asanso/plugins/eclipse/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/Activator.java
URL: 
http://svn.apache.org/viewvc/sling/whiteboard/asanso/plugins/eclipse/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/Activator.java?rev=1505809&r1=1505808&r2=1505809&view=diff
==============================================================================
--- 
sling/whiteboard/asanso/plugins/eclipse/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/Activator.java
 (original)
+++ 
sling/whiteboard/asanso/plugins/eclipse/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/Activator.java
 Mon Jul 22 20:56:51 2013
@@ -16,6 +16,7 @@
  */
 package org.apache.sling.ide.eclipse.core.internal;
 
+import org.apache.sling.ide.filter.FilterLocator;
 import org.apache.sling.ide.serialization.SerializationManager;
 import org.apache.sling.ide.transport.Repository;
 import org.eclipse.core.runtime.Plugin;
@@ -41,10 +42,12 @@ public class Activator extends Plugin {
     private Repository repository;
     private SerializationManager serializationManager;
        private Tracer tracer;
+    private FilterLocator filterLocator;
 
     private ServiceReference<Repository> repositoryRef;
     private ServiceReference<SerializationManager> serializationManagerRef;
     private ServiceReference<Tracer> tracerRef;
+    private ServiceReference<FilterLocator> filterLocatorRef;
 
        /*
         * (non-Javadoc)
@@ -62,6 +65,9 @@ public class Activator extends Plugin {
 
         serializationManagerRef = 
context.getServiceReference(SerializationManager.class);
         serializationManager = context.getService(serializationManagerRef);
+
+        filterLocatorRef = context.getServiceReference(FilterLocator.class);
+        filterLocator = context.getService(filterLocatorRef);
        }
 
        /*
@@ -72,6 +78,7 @@ public class Activator extends Plugin {
         context.ungetService(repositoryRef);
         context.ungetService(serializationManagerRef);
         context.ungetService(tracerRef);
+        context.ungetService(filterLocatorRef);
 
         plugin = null;
                super.stop(context);
@@ -97,4 +104,8 @@ public class Activator extends Plugin {
     public SerializationManager getSerializationManager() {
         return serializationManager;
     }
+
+    public FilterLocator getFilterLocator() {
+        return filterLocator;
+    }
 }

Modified: 
sling/whiteboard/asanso/plugins/eclipse/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/SlingContentModuleFactory.java
URL: 
http://svn.apache.org/viewvc/sling/whiteboard/asanso/plugins/eclipse/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/SlingContentModuleFactory.java?rev=1505809&r1=1505808&r2=1505809&view=diff
==============================================================================
--- 
sling/whiteboard/asanso/plugins/eclipse/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/SlingContentModuleFactory.java
 (original)
+++ 
sling/whiteboard/asanso/plugins/eclipse/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/SlingContentModuleFactory.java
 Mon Jul 22 20:56:51 2013
@@ -30,8 +30,6 @@ public class SlingContentModuleFactory e
     @Override
     public ModuleDelegate getModuleDelegate(IModule module) {
 
-        System.out.println("SlingContentModuleFactory.getModuleDelegate()");
-
         return new SlingContentModuleDelegate(module);
     }
 
@@ -41,15 +39,13 @@ public class SlingContentModuleFactory e
         try {
             IFacetedProject facetedProject = 
ProjectFacetsManager.create(project);
             for (IProjectFacetVersion facet : 
facetedProject.getProjectFacets()) {
-                System.out.println("Project " + project + " has facet " + 
facet);
                 if (facet.getProjectFacet().getId().equals(NATURE_ID)) {
                     return createModule(project.getName(), project.getName(), 
NATURE_ID, "1.0", project);
                 }
             }
         } catch (CoreException ce) {
             // TODO logging
-            }
-
+        }
 
         return null;
     }
@@ -92,7 +88,7 @@ public class SlingContentModuleFactory e
                         return true;
                     }
 
-                    // urelated resource tree, stop processing
+                    // unrelated resource tree, stop processing
                     if 
(!syncFolder.getProjectRelativePath().isPrefixOf(relativePath)) {
                         return false;
                     }

Modified: 
sling/whiteboard/asanso/plugins/eclipse/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/SlingLaunchpadBehaviour.java
URL: 
http://svn.apache.org/viewvc/sling/whiteboard/asanso/plugins/eclipse/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/SlingLaunchpadBehaviour.java?rev=1505809&r1=1505808&r2=1505809&view=diff
==============================================================================
--- 
sling/whiteboard/asanso/plugins/eclipse/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/SlingLaunchpadBehaviour.java
 (original)
+++ 
sling/whiteboard/asanso/plugins/eclipse/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/SlingLaunchpadBehaviour.java
 Mon Jul 22 20:56:51 2013
@@ -16,28 +16,33 @@
  */
 package org.apache.sling.ide.eclipse.core.internal;
 
+import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
-import java.net.URI;
-import java.net.URISyntaxException;
 import java.util.Arrays;
 import java.util.Map;
 
+import org.apache.sling.ide.eclipse.core.ProjectUtil;
 import org.apache.sling.ide.eclipse.core.ServerUtil;
+import org.apache.sling.ide.filter.Filter;
+import org.apache.sling.ide.filter.FilterLocator;
+import org.apache.sling.ide.filter.FilterResult;
 import org.apache.sling.ide.serialization.SerializationManager;
 import org.apache.sling.ide.transport.Command;
 import org.apache.sling.ide.transport.FileInfo;
 import org.apache.sling.ide.transport.Repository;
-import org.apache.sling.ide.transport.RepositoryInfo;
 import org.apache.sling.ide.transport.ResponseType;
 import org.apache.sling.ide.transport.Result;
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Path;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.debug.core.ILaunch;
 import org.eclipse.wst.server.core.IModule;
@@ -140,6 +145,11 @@ public class SlingLaunchpadBehaviour ext
         Repository repository = ServerUtil.getRepository(getServer(), monitor);
 
         IModuleResource[] moduleResources = getResources(module);
+        
+        // TODO it would be more efficient to have a module -> filter mapping
+        // it would be simpler to implement this in SlingContentModuleAdapter, 
but
+        // the behaviour for resources being filtered out is deletion, and that
+        // would be an incorrect ( or at least suprising ) behaviour at 
development time
 
         switch (deltaKind) {
             case ServerBehaviourDelegate.CHANGED:
@@ -250,6 +260,25 @@ public class SlingLaunchpadBehaviour ext
             return null;
         }
 
+        IProject project = file.getProject();
+
+        String syncDirectory = ProjectUtil.getSyncDirectoryValue(project);
+
+        Filter filter = null;
+        try {
+            filter = loadFilter(project, project.getFolder(syncDirectory));
+        } catch (CoreException e) {
+            // TODO error handling
+            e.printStackTrace();
+        }
+
+        if (filter != null) {
+            FilterResult filterResult = 
filter.filter(resource.getModuleRelativePath().toString());
+            if (filterResult == FilterResult.DENY) {
+                return null;
+            }
+        }
+
         IPath relativePath = 
resource.getModuleRelativePath().removeLastSegments(1);
 
         FileInfo info = new FileInfo(file.getLocation().toOSString(), 
relativePath.toOSString(), file.getName());
@@ -269,4 +298,30 @@ public class SlingLaunchpadBehaviour ext
 
         return repository.newDeleteNodeCommand(info);
     }
+
+    private Filter loadFilter(IProject project, final IFolder syncFolder) 
throws CoreException {
+        FilterLocator filterLocator = 
Activator.getDefault().getFilterLocator();
+        File filterLocation = 
filterLocator.findFilterLocation(syncFolder.getLocation().toFile());
+        IPath filterPath = Path.fromOSString(filterLocation.getAbsolutePath());
+        IFile filterFile = 
ResourcesPlugin.getWorkspace().getRoot().getFileForLocation(filterPath);
+        Filter filter = null;
+        if (filterFile != null && filterFile.exists()) {
+            InputStream contents = filterFile.getContents();
+            try {
+                filter = filterLocator.loadFilter(contents);
+            } catch (IOException e) {
+                throw new CoreException(new Status(IStatus.ERROR, 
Activator.PLUGIN_ID,
+                        "Failed loading filter file for project " + 
project.getName() + " from location " + filterFile,
+                        e));
+            } finally {
+                try {
+                    contents.close();
+                } catch (IOException e) {
+                    // TODO exception handling
+                }
+            }
+        }
+        return filter;
+    }
+
 }

Modified: 
sling/whiteboard/asanso/plugins/eclipse/impl-resource/META-INF/MANIFEST.MF
URL: 
http://svn.apache.org/viewvc/sling/whiteboard/asanso/plugins/eclipse/impl-resource/META-INF/MANIFEST.MF?rev=1505809&r1=1505808&r2=1505809&view=diff
==============================================================================
--- sling/whiteboard/asanso/plugins/eclipse/impl-resource/META-INF/MANIFEST.MF 
(original)
+++ sling/whiteboard/asanso/plugins/eclipse/impl-resource/META-INF/MANIFEST.MF 
Mon Jul 22 20:56:51 2013
@@ -12,5 +12,6 @@ Require-Bundle: org.eclipse.ui,
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Service-Component: OSGI-INF/RepositoryImpl.xml,
- OSGI-INF/SimpleXmlSerializationManager.xml, OSGI-INF/Tracer.xml
+ OSGI-INF/SimpleXmlSerializationManager.xml, OSGI-INF/Tracer.xml,
+ OSGI-INF/SimpleFilterLocator.xml
 Import-Package: org.json

Added: 
sling/whiteboard/asanso/plugins/eclipse/impl-resource/OSGI-INF/SimpleFilterLocator.xml
URL: 
http://svn.apache.org/viewvc/sling/whiteboard/asanso/plugins/eclipse/impl-resource/OSGI-INF/SimpleFilterLocator.xml?rev=1505809&view=auto
==============================================================================
--- 
sling/whiteboard/asanso/plugins/eclipse/impl-resource/OSGI-INF/SimpleFilterLocator.xml
 (added)
+++ 
sling/whiteboard/asanso/plugins/eclipse/impl-resource/OSGI-INF/SimpleFilterLocator.xml
 Mon Jul 22 20:56:51 2013
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0"; 
immediate="false">
+   <implementation 
class="org.apache.sling.ide.impl.resource.filer.SimpleFilterLocator"/>
+   <service>
+      <provide interface="org.apache.sling.ide.filter.FilterLocator"/>
+   </service>>
+</scr:component>

Propchange: 
sling/whiteboard/asanso/plugins/eclipse/impl-resource/OSGI-INF/SimpleFilterLocator.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
sling/whiteboard/asanso/plugins/eclipse/impl-resource/OSGI-INF/SimpleFilterLocator.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: 
sling/whiteboard/asanso/plugins/eclipse/impl-resource/src/org/apache/sling/ide/impl/resource/filer/SimpleFilter.java
URL: 
http://svn.apache.org/viewvc/sling/whiteboard/asanso/plugins/eclipse/impl-resource/src/org/apache/sling/ide/impl/resource/filer/SimpleFilter.java?rev=1505809&view=auto
==============================================================================
--- 
sling/whiteboard/asanso/plugins/eclipse/impl-resource/src/org/apache/sling/ide/impl/resource/filer/SimpleFilter.java
 (added)
+++ 
sling/whiteboard/asanso/plugins/eclipse/impl-resource/src/org/apache/sling/ide/impl/resource/filer/SimpleFilter.java
 Mon Jul 22 20:56:51 2013
@@ -0,0 +1,55 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.sling.ide.impl.resource.filer;
+
+import java.util.List;
+
+import org.apache.sling.ide.filter.Filter;
+import org.apache.sling.ide.filter.FilterResult;
+
+public class SimpleFilter implements Filter {
+
+    private final List<String> includedPathPrefixes;
+
+    public SimpleFilter(List<String> includedPathPrefixes) {
+        this.includedPathPrefixes = includedPathPrefixes;
+    }
+
+    @Override
+    public FilterResult filter(String relativeFilePath) {
+        if (relativeFilePath.charAt(0) != '/') {
+            relativeFilePath = '/' + relativeFilePath;
+        }
+        System.out.println("SimpleFilter.filter(" + relativeFilePath + ")");
+
+        if (includedPathPrefixes.isEmpty()) {
+            System.out.println(" -- no path prefixes -> " + 
FilterResult.ALLOW);
+            return FilterResult.ALLOW;
+        }
+
+        for (String includePath : includedPathPrefixes) {
+            System.out.println(" -- checking with " + includePath);
+            if (relativeFilePath.startsWith(includePath)) {
+                System.out.println(" --- found match -> " + 
FilterResult.ALLOW);
+                return FilterResult.ALLOW;
+            }
+        }
+
+        System.out.println(" -- no match " + FilterResult.DENY);
+        return FilterResult.DENY;
+    }
+}

Propchange: 
sling/whiteboard/asanso/plugins/eclipse/impl-resource/src/org/apache/sling/ide/impl/resource/filer/SimpleFilter.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
sling/whiteboard/asanso/plugins/eclipse/impl-resource/src/org/apache/sling/ide/impl/resource/filer/SimpleFilter.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision Rev URL

Added: 
sling/whiteboard/asanso/plugins/eclipse/impl-resource/src/org/apache/sling/ide/impl/resource/filer/SimpleFilterLocator.java
URL: 
http://svn.apache.org/viewvc/sling/whiteboard/asanso/plugins/eclipse/impl-resource/src/org/apache/sling/ide/impl/resource/filer/SimpleFilterLocator.java?rev=1505809&view=auto
==============================================================================
--- 
sling/whiteboard/asanso/plugins/eclipse/impl-resource/src/org/apache/sling/ide/impl/resource/filer/SimpleFilterLocator.java
 (added)
+++ 
sling/whiteboard/asanso/plugins/eclipse/impl-resource/src/org/apache/sling/ide/impl/resource/filer/SimpleFilterLocator.java
 Mon Jul 22 20:56:51 2013
@@ -0,0 +1,66 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.sling.ide.impl.resource.filer;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.sling.ide.filter.Filter;
+import org.apache.sling.ide.filter.FilterLocator;
+
+/**
+ * The <tt>SimpleFilterLocator</tt> looks for a file named {@value 
#FILTERS_FILE_NAME} in the parent folder of the
+ * specified <tt>syncDirectory</tt>.
+ * 
+ * <p>
+ * Lines starting with '#' are ignored.
+ * </p>
+ * 
+ * @see SimpleFilter
+ * 
+ */
+public class SimpleFilterLocator implements FilterLocator {
+
+    private static final String FILTERS_FILE_NAME = "filters.txt";
+
+    @Override
+    public File findFilterLocation(File syncDirectory) {
+        String parent = syncDirectory.getParent();
+
+        return new File(parent, FILTERS_FILE_NAME);
+    }
+
+    @Override
+    public Filter loadFilter(InputStream filterFileContents) throws 
IOException {
+
+        List<String> filters = new ArrayList<String>();
+        BufferedReader reader = new BufferedReader(new 
InputStreamReader(filterFileContents));
+        String line;
+        while ((line = reader.readLine()) != null) {
+            if (line.charAt(0) == '#')
+                continue;
+            filters.add(line);
+        }
+
+        return new SimpleFilter(filters);
+    }
+}

Propchange: 
sling/whiteboard/asanso/plugins/eclipse/impl-resource/src/org/apache/sling/ide/impl/resource/filer/SimpleFilterLocator.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
sling/whiteboard/asanso/plugins/eclipse/impl-resource/src/org/apache/sling/ide/impl/resource/filer/SimpleFilterLocator.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision Rev URL


Reply via email to