You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by cz...@apache.org on 2018/04/18 14:11:30 UTC

[sling-whiteboard] branch master updated: Move scanner classes into scanner package hierarchy

This is an automated email from the ASF dual-hosted git repository.

cziegeler pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-whiteboard.git


The following commit(s) were added to refs/heads/master by this push:
     new 1e005cb  Move scanner classes into scanner package hierarchy
1e005cb is described below

commit 1e005cbccbf9a9d8441f4a01fabd066bf03695d1
Author: Carsten Ziegeler <cz...@apache.org>
AuthorDate: Wed Apr 18 16:11:24 2018 +0200

    Move scanner classes into scanner package hierarchy
---
 featuremodel/feature-analyser/pom.xml              |  4 +-
 .../feature/analyser/{service => }/Analyser.java   | 17 ++---
 .../apache/sling/feature/analyser/main/Main.java   | 12 ++--
 .../sling/feature/analyser/task/AnalyserTask.java  |  3 +
 .../feature/analyser/task/AnalyserTaskContext.java |  4 +-
 .../task/impl/CheckBundleExportsImports.java       |  2 +-
 .../task/impl/CheckBundlesForInitialContent.java   |  2 +-
 .../task/impl/CheckBundlesForResources.java        |  2 +-
 .../task/impl/CheckRequirementsCapabilities.java   |  4 +-
 .../ApplicationDescriptor.java                     |  2 +-
 .../{analyser => scanner}/ArtifactDescriptor.java  |  2 +-
 .../{analyser => scanner}/BundleDescriptor.java    |  4 +-
 .../{analyser => scanner}/ContainerDescriptor.java |  2 +-
 .../feature/{analyser => scanner}/Descriptor.java  |  2 +-
 .../{analyser => scanner}/FeatureDescriptor.java   |  2 +-
 .../{analyser/service => scanner}/Scanner.java     | 21 +++---
 .../impl/ApplicationDescriptorImpl.java            |  6 +-
 .../impl/BundleDescriptorImpl.java                 |  4 +-
 .../scanner/impl/ContentPackageDescriptor.java     |  4 +-
 .../scanner/impl/ContentPackageScanner.java        |  3 +-
 .../impl/ContentPackagesExtensionScanner.java      |  4 +-
 .../impl/FeatureDescriptorImpl.java                |  4 +-
 .../scanner/impl/FelixFrameworkScanner.java        |  4 +-
 .../feature/scanner/impl/RepoInitScanner.java      |  4 +-
 .../scanner/{ => spi}/ExtensionScanner.java        |  4 +-
 .../scanner/{ => spi}/FrameworkScanner.java        |  4 +-
 .../service => scanner/spi}/package-info.java      |  2 +-
 ...che.sling.feature.scanner.spi.ExtensionScanner} |  0
 ...che.sling.feature.scanner.spi.FrameworkScanner} |  0
 .../sling/feature/analyser/AnalyserTest.java       | 25 +++----
 .../feature/analyser/TestBundleResourceImpl.java   |  1 +
 .../sling/feature/resolver/FrameworkResolver.java  |  4 +-
 .../feature/resolver/impl/BundleResourceImpl.java  |  2 +-
 .../resolver/impl/BundleResourceImplTest.java      |  6 +-
 .../feature/support/util/CapabilityMatcher.java    | 80 +---------------------
 35 files changed, 85 insertions(+), 161 deletions(-)

diff --git a/featuremodel/feature-analyser/pom.xml b/featuremodel/feature-analyser/pom.xml
index 9498f48..5a7556a 100644
--- a/featuremodel/feature-analyser/pom.xml
+++ b/featuremodel/feature-analyser/pom.xml
@@ -78,8 +78,8 @@
                 <configuration>
                     <excludes>
                         <exclude>src/main/resources/META-INF/services/org.apache.sling.feature.analyser.task.AnalyserTask</exclude>
-                        <exclude>src/main/resources/META-INF/services/org.apache.sling.feature.scanner.ExtensionScanner</exclude>
-                        <exclude>src/main/resources/META-INF/services/org.apache.sling.feature.scanner.FrameworkScanner</exclude>
+                        <exclude>src/main/resources/META-INF/services/org.apache.sling.feature.scanner.spi.ExtensionScanner</exclude>
+                        <exclude>src/main/resources/META-INF/services/org.apache.sling.feature.scanner.spi.FrameworkScanner</exclude>
                     </excludes>
                 </configuration>
             </plugin>
diff --git a/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/analyser/service/Analyser.java b/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/analyser/Analyser.java
similarity index 96%
rename from featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/analyser/service/Analyser.java
rename to featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/analyser/Analyser.java
index 42962fd..8124c9b 100644
--- a/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/analyser/service/Analyser.java
+++ b/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/analyser/Analyser.java
@@ -14,14 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sling.feature.analyser.service;
-
-import org.apache.sling.feature.Application;
-import org.apache.sling.feature.analyser.ApplicationDescriptor;
-import org.apache.sling.feature.analyser.task.AnalyserTask;
-import org.apache.sling.feature.analyser.task.AnalyserTaskContext;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+package org.apache.sling.feature.analyser;
 
 import java.io.IOException;
 import java.util.ArrayList;
@@ -31,6 +24,14 @@ import java.util.List;
 import java.util.ServiceLoader;
 import java.util.Set;
 
+import org.apache.sling.feature.Application;
+import org.apache.sling.feature.analyser.task.AnalyserTask;
+import org.apache.sling.feature.analyser.task.AnalyserTaskContext;
+import org.apache.sling.feature.scanner.ApplicationDescriptor;
+import org.apache.sling.feature.scanner.Scanner;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 public class Analyser {
 
     private final AnalyserTask[] tasks;
diff --git a/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/analyser/main/Main.java b/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/analyser/main/Main.java
index 24235ed..7874afa 100644
--- a/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/analyser/main/Main.java
+++ b/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/analyser/main/Main.java
@@ -16,19 +16,19 @@
  */
 package org.apache.sling.feature.analyser.main;
 
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+
 import org.apache.sling.feature.Application;
-import org.apache.sling.feature.analyser.service.Analyser;
-import org.apache.sling.feature.analyser.service.Scanner;
+import org.apache.sling.feature.analyser.Analyser;
 import org.apache.sling.feature.io.ArtifactManagerConfig;
 import org.apache.sling.feature.io.json.ApplicationJSONReader;
+import org.apache.sling.feature.scanner.Scanner;
 import org.apache.sling.feature.support.FeatureUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.io.File;
-import java.io.FileReader;
-import java.io.IOException;
-
 public class Main {
 
     public static void main(final String[] args) {
diff --git a/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/analyser/task/AnalyserTask.java b/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/analyser/task/AnalyserTask.java
index 8ef21bb..97cd99a 100644
--- a/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/analyser/task/AnalyserTask.java
+++ b/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/analyser/task/AnalyserTask.java
@@ -16,10 +16,13 @@
  */
 package org.apache.sling.feature.analyser.task;
 
+import org.osgi.annotation.versioning.ConsumerType;
+
 /**
  * A analyser task analyses a specific part of the assembled
  * application. It can report errors and warnings.
  */
+@ConsumerType
 public interface AnalyserTask {
 
     /** A unique (short) id. */
diff --git a/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/analyser/task/AnalyserTaskContext.java b/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/analyser/task/AnalyserTaskContext.java
index 870e03a..b33fd80 100644
--- a/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/analyser/task/AnalyserTaskContext.java
+++ b/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/analyser/task/AnalyserTaskContext.java
@@ -17,8 +17,10 @@
 package org.apache.sling.feature.analyser.task;
 
 import org.apache.sling.feature.Application;
-import org.apache.sling.feature.analyser.ApplicationDescriptor;
+import org.apache.sling.feature.scanner.ApplicationDescriptor;
+import org.osgi.annotation.versioning.ProviderType;
 
+@ProviderType
 public interface AnalyserTaskContext {
 
     /**
diff --git a/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/analyser/task/impl/CheckBundleExportsImports.java b/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/analyser/task/impl/CheckBundleExportsImports.java
index ee0dffd..0fc5a00 100644
--- a/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/analyser/task/impl/CheckBundleExportsImports.java
+++ b/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/analyser/task/impl/CheckBundleExportsImports.java
@@ -26,9 +26,9 @@ import java.util.Map;
 import java.util.SortedMap;
 import java.util.TreeMap;
 
-import org.apache.sling.feature.analyser.BundleDescriptor;
 import org.apache.sling.feature.analyser.task.AnalyserTask;
 import org.apache.sling.feature.analyser.task.AnalyserTaskContext;
+import org.apache.sling.feature.scanner.BundleDescriptor;
 import org.apache.sling.feature.support.util.PackageInfo;
 import org.osgi.framework.Version;
 
diff --git a/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/analyser/task/impl/CheckBundlesForInitialContent.java b/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/analyser/task/impl/CheckBundlesForInitialContent.java
index 4dd0100..c45c2d7 100644
--- a/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/analyser/task/impl/CheckBundlesForInitialContent.java
+++ b/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/analyser/task/impl/CheckBundlesForInitialContent.java
@@ -19,9 +19,9 @@
 package org.apache.sling.feature.analyser.task.impl;
 
 import org.apache.sling.commons.osgi.ManifestHeader;
-import org.apache.sling.feature.analyser.BundleDescriptor;
 import org.apache.sling.feature.analyser.task.AnalyserTask;
 import org.apache.sling.feature.analyser.task.AnalyserTaskContext;
+import org.apache.sling.feature.scanner.BundleDescriptor;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/analyser/task/impl/CheckBundlesForResources.java b/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/analyser/task/impl/CheckBundlesForResources.java
index 603cfe4..92fe8db 100644
--- a/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/analyser/task/impl/CheckBundlesForResources.java
+++ b/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/analyser/task/impl/CheckBundlesForResources.java
@@ -19,9 +19,9 @@
 package org.apache.sling.feature.analyser.task.impl;
 
 import org.apache.sling.commons.osgi.ManifestHeader;
-import org.apache.sling.feature.analyser.BundleDescriptor;
 import org.apache.sling.feature.analyser.task.AnalyserTask;
 import org.apache.sling.feature.analyser.task.AnalyserTaskContext;
+import org.apache.sling.feature.scanner.BundleDescriptor;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/analyser/task/impl/CheckRequirementsCapabilities.java b/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/analyser/task/impl/CheckRequirementsCapabilities.java
index 6029a13..77e270b 100644
--- a/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/analyser/task/impl/CheckRequirementsCapabilities.java
+++ b/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/analyser/task/impl/CheckRequirementsCapabilities.java
@@ -23,10 +23,10 @@ import java.util.SortedMap;
 import java.util.TreeMap;
 import java.util.stream.Collectors;
 
-import org.apache.sling.feature.analyser.ArtifactDescriptor;
-import org.apache.sling.feature.analyser.BundleDescriptor;
 import org.apache.sling.feature.analyser.task.AnalyserTask;
 import org.apache.sling.feature.analyser.task.AnalyserTaskContext;
+import org.apache.sling.feature.scanner.ArtifactDescriptor;
+import org.apache.sling.feature.scanner.BundleDescriptor;
 import org.apache.sling.feature.support.util.CapabilityMatcher;
 import org.osgi.resource.Requirement;
 
diff --git a/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/analyser/ApplicationDescriptor.java b/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/scanner/ApplicationDescriptor.java
similarity index 96%
rename from featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/analyser/ApplicationDescriptor.java
rename to featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/scanner/ApplicationDescriptor.java
index d76f686..5dabc64 100644
--- a/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/analyser/ApplicationDescriptor.java
+++ b/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/scanner/ApplicationDescriptor.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sling.feature.analyser;
+package org.apache.sling.feature.scanner;
 
 import org.apache.sling.feature.Application;
 
diff --git a/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/analyser/ArtifactDescriptor.java b/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/scanner/ArtifactDescriptor.java
similarity index 96%
rename from featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/analyser/ArtifactDescriptor.java
rename to featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/scanner/ArtifactDescriptor.java
index 8517d2e..988b9d0 100644
--- a/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/analyser/ArtifactDescriptor.java
+++ b/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/scanner/ArtifactDescriptor.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sling.feature.analyser;
+package org.apache.sling.feature.scanner;
 
 import java.io.File;
 
diff --git a/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/analyser/BundleDescriptor.java b/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/scanner/BundleDescriptor.java
similarity index 96%
rename from featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/analyser/BundleDescriptor.java
rename to featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/scanner/BundleDescriptor.java
index c186fa5..748bec9 100644
--- a/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/analyser/BundleDescriptor.java
+++ b/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/scanner/BundleDescriptor.java
@@ -14,11 +14,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sling.feature.analyser;
+package org.apache.sling.feature.scanner;
 
 import java.util.jar.Manifest;
 
-import org.apache.sling.feature.analyser.impl.BundleDescriptorImpl;
+import org.apache.sling.feature.scanner.impl.BundleDescriptorImpl;
 import org.apache.sling.feature.support.util.PackageInfo;
 
 /**
diff --git a/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/analyser/ContainerDescriptor.java b/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/scanner/ContainerDescriptor.java
similarity index 98%
rename from featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/analyser/ContainerDescriptor.java
rename to featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/scanner/ContainerDescriptor.java
index 69efb78..0ae37f3 100644
--- a/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/analyser/ContainerDescriptor.java
+++ b/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/scanner/ContainerDescriptor.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sling.feature.analyser;
+package org.apache.sling.feature.scanner;
 
 import java.util.Collections;
 import java.util.HashSet;
diff --git a/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/analyser/Descriptor.java b/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/scanner/Descriptor.java
similarity index 98%
rename from featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/analyser/Descriptor.java
rename to featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/scanner/Descriptor.java
index d6237f8..a97cda0 100644
--- a/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/analyser/Descriptor.java
+++ b/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/scanner/Descriptor.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sling.feature.analyser;
+package org.apache.sling.feature.scanner;
 
 import java.util.Collections;
 import java.util.HashSet;
diff --git a/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/analyser/FeatureDescriptor.java b/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/scanner/FeatureDescriptor.java
similarity index 95%
rename from featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/analyser/FeatureDescriptor.java
rename to featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/scanner/FeatureDescriptor.java
index 89739ce..d82b6f1 100644
--- a/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/analyser/FeatureDescriptor.java
+++ b/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/scanner/FeatureDescriptor.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sling.feature.analyser;
+package org.apache.sling.feature.scanner;
 
 import org.apache.sling.feature.Feature;
 
diff --git a/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/analyser/service/Scanner.java b/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/scanner/Scanner.java
similarity index 90%
rename from featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/analyser/service/Scanner.java
rename to featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/scanner/Scanner.java
index 4282d48..b0c29a9 100644
--- a/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/analyser/service/Scanner.java
+++ b/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/scanner/Scanner.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sling.feature.analyser.service;
+package org.apache.sling.feature.scanner;
 
 import java.io.File;
 import java.io.IOException;
@@ -29,27 +29,22 @@ import org.apache.sling.feature.Bundles;
 import org.apache.sling.feature.Extension;
 import org.apache.sling.feature.Extensions;
 import org.apache.sling.feature.Feature;
-import org.apache.sling.feature.analyser.ApplicationDescriptor;
-import org.apache.sling.feature.analyser.BundleDescriptor;
-import org.apache.sling.feature.analyser.ContainerDescriptor;
-import org.apache.sling.feature.analyser.FeatureDescriptor;
-import org.apache.sling.feature.analyser.impl.ApplicationDescriptorImpl;
-import org.apache.sling.feature.analyser.impl.BundleDescriptorImpl;
-import org.apache.sling.feature.analyser.impl.FeatureDescriptorImpl;
 import org.apache.sling.feature.io.ArtifactManager;
 import org.apache.sling.feature.io.ArtifactManagerConfig;
-import org.apache.sling.feature.scanner.ExtensionScanner;
-import org.apache.sling.feature.scanner.FrameworkScanner;
+import org.apache.sling.feature.scanner.impl.ApplicationDescriptorImpl;
+import org.apache.sling.feature.scanner.impl.BundleDescriptorImpl;
+import org.apache.sling.feature.scanner.impl.FeatureDescriptorImpl;
+import org.apache.sling.feature.scanner.spi.ExtensionScanner;
+import org.apache.sling.feature.scanner.spi.FrameworkScanner;
 
 /**
  * The scanner is a service that scans items and provides descriptions for these.
  * The following items can be scanned individually
  * <ul>
  *   <li>A bundle artifact
- *   <li>An artifact (requires {@link ArtifactScannner}s)
  *   <li>An extension (requires {@link ExtensionScanner}s)
- *   <li>A feature (requires {@link ArtifactScannner}s and {@link ExtensionScanner}s)
- *   <li>A framework (requires {@link FrameworkScanner}s
+ *   <li>A feature (requires {@link ExtensionScanner}s)
+ *   <li>A framework (requires {@link FrameworkScanner}s)
  *   <li>An application (requires all scanner types)
  * </ul>
  */
diff --git a/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/analyser/impl/ApplicationDescriptorImpl.java b/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/scanner/impl/ApplicationDescriptorImpl.java
similarity index 90%
rename from featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/analyser/impl/ApplicationDescriptorImpl.java
rename to featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/scanner/impl/ApplicationDescriptorImpl.java
index 0ef8d89..cf9248e 100644
--- a/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/analyser/impl/ApplicationDescriptorImpl.java
+++ b/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/scanner/impl/ApplicationDescriptorImpl.java
@@ -14,11 +14,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sling.feature.analyser.impl;
+package org.apache.sling.feature.scanner.impl;
 
 import org.apache.sling.feature.Application;
-import org.apache.sling.feature.analyser.ApplicationDescriptor;
-import org.apache.sling.feature.analyser.BundleDescriptor;
+import org.apache.sling.feature.scanner.ApplicationDescriptor;
+import org.apache.sling.feature.scanner.BundleDescriptor;
 
 /**
  * Information about an application.
diff --git a/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/analyser/impl/BundleDescriptorImpl.java b/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/scanner/impl/BundleDescriptorImpl.java
similarity index 97%
rename from featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/analyser/impl/BundleDescriptorImpl.java
rename to featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/scanner/impl/BundleDescriptorImpl.java
index abe2a97..2f2c54b 100644
--- a/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/analyser/impl/BundleDescriptorImpl.java
+++ b/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/scanner/impl/BundleDescriptorImpl.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sling.feature.analyser.impl;
+package org.apache.sling.feature.scanner.impl;
 
 import java.io.File;
 import java.io.IOException;
@@ -22,7 +22,7 @@ import java.util.Set;
 import java.util.jar.Manifest;
 
 import org.apache.sling.feature.Artifact;
-import org.apache.sling.feature.analyser.BundleDescriptor;
+import org.apache.sling.feature.scanner.BundleDescriptor;
 import org.apache.sling.feature.support.util.ManifestParser;
 import org.apache.sling.feature.support.util.ManifestUtil;
 import org.apache.sling.feature.support.util.PackageInfo;
diff --git a/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/scanner/impl/ContentPackageDescriptor.java b/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/scanner/impl/ContentPackageDescriptor.java
index 7f75dd3..9d67b1e 100644
--- a/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/scanner/impl/ContentPackageDescriptor.java
+++ b/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/scanner/impl/ContentPackageDescriptor.java
@@ -22,8 +22,8 @@ import java.util.List;
 
 import org.apache.sling.feature.Artifact;
 import org.apache.sling.feature.Configuration;
-import org.apache.sling.feature.analyser.ArtifactDescriptor;
-import org.apache.sling.feature.analyser.BundleDescriptor;
+import org.apache.sling.feature.scanner.ArtifactDescriptor;
+import org.apache.sling.feature.scanner.BundleDescriptor;
 
 /**
  * Information about a content package.
diff --git a/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/scanner/impl/ContentPackageScanner.java b/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/scanner/impl/ContentPackageScanner.java
index 90b84c7..5720166 100644
--- a/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/scanner/impl/ContentPackageScanner.java
+++ b/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/scanner/impl/ContentPackageScanner.java
@@ -34,8 +34,7 @@ import java.util.zip.ZipInputStream;
 import org.apache.sling.feature.Artifact;
 import org.apache.sling.feature.ArtifactId;
 import org.apache.sling.feature.Configuration;
-import org.apache.sling.feature.analyser.BundleDescriptor;
-import org.apache.sling.feature.analyser.impl.BundleDescriptorImpl;
+import org.apache.sling.feature.scanner.BundleDescriptor;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/scanner/impl/ContentPackagesExtensionScanner.java b/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/scanner/impl/ContentPackagesExtensionScanner.java
index 59129df..4fc9fb6 100644
--- a/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/scanner/impl/ContentPackagesExtensionScanner.java
+++ b/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/scanner/impl/ContentPackagesExtensionScanner.java
@@ -23,9 +23,9 @@ import java.util.Set;
 import org.apache.sling.feature.Artifact;
 import org.apache.sling.feature.Extension;
 import org.apache.sling.feature.ExtensionType;
-import org.apache.sling.feature.analyser.ContainerDescriptor;
 import org.apache.sling.feature.io.ArtifactManager;
-import org.apache.sling.feature.scanner.ExtensionScanner;
+import org.apache.sling.feature.scanner.ContainerDescriptor;
+import org.apache.sling.feature.scanner.spi.ExtensionScanner;
 import org.apache.sling.feature.support.SlingConstants;
 
 public class ContentPackagesExtensionScanner implements ExtensionScanner {
diff --git a/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/analyser/impl/FeatureDescriptorImpl.java b/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/scanner/impl/FeatureDescriptorImpl.java
similarity index 91%
rename from featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/analyser/impl/FeatureDescriptorImpl.java
rename to featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/scanner/impl/FeatureDescriptorImpl.java
index d7ac09a..63b2c1d 100644
--- a/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/analyser/impl/FeatureDescriptorImpl.java
+++ b/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/scanner/impl/FeatureDescriptorImpl.java
@@ -14,10 +14,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sling.feature.analyser.impl;
+package org.apache.sling.feature.scanner.impl;
 
 import org.apache.sling.feature.Feature;
-import org.apache.sling.feature.analyser.FeatureDescriptor;
+import org.apache.sling.feature.scanner.FeatureDescriptor;
 
 /**
  * Information about a feature.
diff --git a/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/scanner/impl/FelixFrameworkScanner.java b/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/scanner/impl/FelixFrameworkScanner.java
index ac8afa1..a3fb70b 100644
--- a/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/scanner/impl/FelixFrameworkScanner.java
+++ b/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/scanner/impl/FelixFrameworkScanner.java
@@ -40,8 +40,8 @@ import org.apache.sling.commons.osgi.ManifestHeader;
 import org.apache.sling.feature.Artifact;
 import org.apache.sling.feature.ArtifactId;
 import org.apache.sling.feature.KeyValueMap;
-import org.apache.sling.feature.analyser.BundleDescriptor;
-import org.apache.sling.feature.scanner.FrameworkScanner;
+import org.apache.sling.feature.scanner.BundleDescriptor;
+import org.apache.sling.feature.scanner.spi.FrameworkScanner;
 import org.apache.sling.feature.support.util.PackageInfo;
 import org.apache.sling.feature.support.util.SubstVarUtil;
 import org.osgi.framework.Constants;
diff --git a/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/scanner/impl/RepoInitScanner.java b/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/scanner/impl/RepoInitScanner.java
index 56a0891..3681ecf 100644
--- a/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/scanner/impl/RepoInitScanner.java
+++ b/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/scanner/impl/RepoInitScanner.java
@@ -20,9 +20,9 @@ import java.io.IOException;
 
 import org.apache.sling.feature.Extension;
 import org.apache.sling.feature.ExtensionType;
-import org.apache.sling.feature.analyser.ContainerDescriptor;
 import org.apache.sling.feature.io.ArtifactManager;
-import org.apache.sling.feature.scanner.ExtensionScanner;
+import org.apache.sling.feature.scanner.ContainerDescriptor;
+import org.apache.sling.feature.scanner.spi.ExtensionScanner;
 import org.apache.sling.feature.support.SlingConstants;
 
 public class RepoInitScanner implements ExtensionScanner {
diff --git a/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/scanner/ExtensionScanner.java b/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/scanner/spi/ExtensionScanner.java
similarity index 93%
rename from featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/scanner/ExtensionScanner.java
rename to featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/scanner/spi/ExtensionScanner.java
index 6ffdf36..773f210 100644
--- a/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/scanner/ExtensionScanner.java
+++ b/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/scanner/spi/ExtensionScanner.java
@@ -14,13 +14,13 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sling.feature.scanner;
+package org.apache.sling.feature.scanner.spi;
 
 import java.io.IOException;
 
 import org.apache.sling.feature.Extension;
-import org.apache.sling.feature.analyser.ContainerDescriptor;
 import org.apache.sling.feature.io.ArtifactManager;
+import org.apache.sling.feature.scanner.ContainerDescriptor;
 import org.osgi.annotation.versioning.ConsumerType;
 
 /**
diff --git a/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/scanner/FrameworkScanner.java b/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/scanner/spi/FrameworkScanner.java
similarity index 93%
rename from featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/scanner/FrameworkScanner.java
rename to featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/scanner/spi/FrameworkScanner.java
index 8661097..fcfc0ef 100644
--- a/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/scanner/FrameworkScanner.java
+++ b/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/scanner/spi/FrameworkScanner.java
@@ -14,14 +14,14 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sling.feature.scanner;
+package org.apache.sling.feature.scanner.spi;
 
 import java.io.File;
 import java.io.IOException;
 
 import org.apache.sling.feature.ArtifactId;
 import org.apache.sling.feature.KeyValueMap;
-import org.apache.sling.feature.analyser.BundleDescriptor;
+import org.apache.sling.feature.scanner.BundleDescriptor;
 import org.osgi.annotation.versioning.ConsumerType;
 
 /**
diff --git a/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/analyser/service/package-info.java b/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/scanner/spi/package-info.java
similarity index 94%
rename from featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/analyser/service/package-info.java
rename to featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/scanner/spi/package-info.java
index 7d81b73..3ecb9cb 100644
--- a/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/analyser/service/package-info.java
+++ b/featuremodel/feature-analyser/src/main/java/org/apache/sling/feature/scanner/spi/package-info.java
@@ -18,6 +18,6 @@
  */
 
 @org.osgi.annotation.versioning.Version("1.0.0")
-package org.apache.sling.feature.analyser.service;
+package org.apache.sling.feature.scanner.spi;
 
 
diff --git a/featuremodel/feature-analyser/src/main/resources/META-INF/services/org.apache.sling.feature.scanner.ExtensionScanner b/featuremodel/feature-analyser/src/main/resources/META-INF/services/org.apache.sling.feature.scanner.spi.ExtensionScanner
similarity index 100%
rename from featuremodel/feature-analyser/src/main/resources/META-INF/services/org.apache.sling.feature.scanner.ExtensionScanner
rename to featuremodel/feature-analyser/src/main/resources/META-INF/services/org.apache.sling.feature.scanner.spi.ExtensionScanner
diff --git a/featuremodel/feature-analyser/src/main/resources/META-INF/services/org.apache.sling.feature.scanner.FrameworkScanner b/featuremodel/feature-analyser/src/main/resources/META-INF/services/org.apache.sling.feature.scanner.spi.FrameworkScanner
similarity index 100%
rename from featuremodel/feature-analyser/src/main/resources/META-INF/services/org.apache.sling.feature.scanner.FrameworkScanner
rename to featuremodel/feature-analyser/src/main/resources/META-INF/services/org.apache.sling.feature.scanner.spi.FrameworkScanner
diff --git a/featuremodel/feature-analyser/src/test/java/org/apache/sling/feature/analyser/AnalyserTest.java b/featuremodel/feature-analyser/src/test/java/org/apache/sling/feature/analyser/AnalyserTest.java
index b77aef9..3d14b85 100644
--- a/featuremodel/feature-analyser/src/test/java/org/apache/sling/feature/analyser/AnalyserTest.java
+++ b/featuremodel/feature-analyser/src/test/java/org/apache/sling/feature/analyser/AnalyserTest.java
@@ -16,30 +16,31 @@
  */
 package org.apache.sling.feature.analyser;
 
+import static junit.framework.TestCase.fail;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.util.ArrayList;
+import java.util.List;
+
 import org.apache.sling.feature.Application;
 import org.apache.sling.feature.Artifact;
 import org.apache.sling.feature.Feature;
-import org.apache.sling.feature.analyser.impl.BundleDescriptorImpl;
-import org.apache.sling.feature.analyser.service.Analyser;
-import org.apache.sling.feature.analyser.service.Scanner;
+import org.apache.sling.feature.analyser.Analyser;
 import org.apache.sling.feature.io.ArtifactManager;
 import org.apache.sling.feature.io.ArtifactManagerConfig;
 import org.apache.sling.feature.io.json.FeatureJSONReader;
 import org.apache.sling.feature.io.json.FeatureJSONReader.SubstituteVariables;
+import org.apache.sling.feature.scanner.BundleDescriptor;
+import org.apache.sling.feature.scanner.Scanner;
+import org.apache.sling.feature.scanner.impl.BundleDescriptorImpl;
 import org.apache.sling.feature.support.FeatureUtil;
 import org.apache.sling.feature.support.resolver.FeatureResolver;
 import org.apache.sling.feature.support.resolver.FeatureResource;
 import org.junit.Test;
 
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.Reader;
-import java.util.ArrayList;
-import java.util.List;
-
-import static junit.framework.TestCase.fail;
-
 public class AnalyserTest {
     @Test
     public void testAnalyserWithCompleteFeature() throws Exception {
diff --git a/featuremodel/feature-analyser/src/test/java/org/apache/sling/feature/analyser/TestBundleResourceImpl.java b/featuremodel/feature-analyser/src/test/java/org/apache/sling/feature/analyser/TestBundleResourceImpl.java
index 11e7d5d..307d36c 100644
--- a/featuremodel/feature-analyser/src/test/java/org/apache/sling/feature/analyser/TestBundleResourceImpl.java
+++ b/featuremodel/feature-analyser/src/test/java/org/apache/sling/feature/analyser/TestBundleResourceImpl.java
@@ -20,6 +20,7 @@ import org.apache.sling.feature.Artifact;
 import org.apache.sling.feature.Feature;
 import org.apache.sling.feature.OSGiCapability;
 import org.apache.sling.feature.OSGiRequirement;
+import org.apache.sling.feature.scanner.BundleDescriptor;
 import org.apache.sling.feature.support.resolver.FeatureResource;
 import org.apache.sling.feature.support.util.PackageInfo;
 import org.osgi.framework.Version;
diff --git a/featuremodel/feature-resolver/src/main/java/org/apache/sling/feature/resolver/FrameworkResolver.java b/featuremodel/feature-resolver/src/main/java/org/apache/sling/feature/resolver/FrameworkResolver.java
index ba9d2af..88efe0c 100644
--- a/featuremodel/feature-resolver/src/main/java/org/apache/sling/feature/resolver/FrameworkResolver.java
+++ b/featuremodel/feature-resolver/src/main/java/org/apache/sling/feature/resolver/FrameworkResolver.java
@@ -32,12 +32,12 @@ import java.util.ServiceLoader;
 import org.apache.sling.feature.Artifact;
 import org.apache.sling.feature.ArtifactId;
 import org.apache.sling.feature.Feature;
-import org.apache.sling.feature.analyser.BundleDescriptor;
-import org.apache.sling.feature.analyser.impl.BundleDescriptorImpl;
 import org.apache.sling.feature.io.ArtifactManager;
 import org.apache.sling.feature.resolver.impl.BundleResourceImpl;
 import org.apache.sling.feature.resolver.impl.FeatureResourceImpl;
 import org.apache.sling.feature.resolver.impl.ResolveContextImpl;
+import org.apache.sling.feature.scanner.BundleDescriptor;
+import org.apache.sling.feature.scanner.impl.BundleDescriptorImpl;
 import org.apache.sling.feature.support.resolver.FeatureResolver;
 import org.apache.sling.feature.support.resolver.FeatureResource;
 import org.osgi.framework.BundleContext;
diff --git a/featuremodel/feature-resolver/src/main/java/org/apache/sling/feature/resolver/impl/BundleResourceImpl.java b/featuremodel/feature-resolver/src/main/java/org/apache/sling/feature/resolver/impl/BundleResourceImpl.java
index 8a110cf..c591799 100644
--- a/featuremodel/feature-resolver/src/main/java/org/apache/sling/feature/resolver/impl/BundleResourceImpl.java
+++ b/featuremodel/feature-resolver/src/main/java/org/apache/sling/feature/resolver/impl/BundleResourceImpl.java
@@ -26,7 +26,7 @@ import org.apache.sling.feature.Artifact;
 import org.apache.sling.feature.Feature;
 import org.apache.sling.feature.OSGiCapability;
 import org.apache.sling.feature.OSGiRequirement;
-import org.apache.sling.feature.analyser.BundleDescriptor;
+import org.apache.sling.feature.scanner.BundleDescriptor;
 import org.apache.sling.feature.support.resolver.FeatureResource;
 import org.apache.sling.feature.support.util.PackageInfo;
 import org.osgi.framework.Version;
diff --git a/featuremodel/feature-resolver/src/test/java/org/apache/sling/feature/resolver/impl/BundleResourceImplTest.java b/featuremodel/feature-resolver/src/test/java/org/apache/sling/feature/resolver/impl/BundleResourceImplTest.java
index b56719d..b43bc04 100644
--- a/featuremodel/feature-resolver/src/test/java/org/apache/sling/feature/resolver/impl/BundleResourceImplTest.java
+++ b/featuremodel/feature-resolver/src/test/java/org/apache/sling/feature/resolver/impl/BundleResourceImplTest.java
@@ -35,9 +35,9 @@ import org.apache.sling.feature.ArtifactId;
 import org.apache.sling.feature.Feature;
 import org.apache.sling.feature.OSGiCapability;
 import org.apache.sling.feature.OSGiRequirement;
-import org.apache.sling.feature.analyser.BundleDescriptor;
-import org.apache.sling.feature.analyser.Descriptor;
-import org.apache.sling.feature.analyser.impl.BundleDescriptorImpl;
+import org.apache.sling.feature.scanner.BundleDescriptor;
+import org.apache.sling.feature.scanner.Descriptor;
+import org.apache.sling.feature.scanner.impl.BundleDescriptorImpl;
 import org.apache.sling.feature.support.resolver.FeatureResource;
 import org.apache.sling.feature.support.util.PackageInfo;
 import org.junit.Test;
diff --git a/featuremodel/feature-support/src/main/java/org/apache/sling/feature/support/util/CapabilityMatcher.java b/featuremodel/feature-support/src/main/java/org/apache/sling/feature/support/util/CapabilityMatcher.java
index 3d2995c..e476373 100644
--- a/featuremodel/feature-support/src/main/java/org/apache/sling/feature/support/util/CapabilityMatcher.java
+++ b/featuremodel/feature-support/src/main/java/org/apache/sling/feature/support/util/CapabilityMatcher.java
@@ -25,13 +25,10 @@ import java.lang.reflect.Method;
 import java.lang.reflect.Modifier;
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
-import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
 
 import org.osgi.framework.Constants;
 import org.osgi.framework.Version;
@@ -41,68 +38,7 @@ import org.osgi.resource.Requirement;
 
 public class CapabilityMatcher
 {
-    public static Set<Capability> match(Set<Capability> caps, final SimpleFilter sf)
-    {
-        Set<Capability> matches = Collections.newSetFromMap(new ConcurrentHashMap<Capability, Boolean>());
-
-        if (sf.getOperation() == SimpleFilter.MATCH_ALL)
-        {
-            matches.addAll(caps);
-        }
-        else if (sf.getOperation() == SimpleFilter.AND)
-        {
-            // Evaluate each subfilter against the remaining capabilities.
-            // For AND we calculate the intersection of each subfilter.
-            // We can short-circuit the AND operation if there are no
-            // remaining capabilities.
-            final List<SimpleFilter> sfs = (List<SimpleFilter>) sf.getValue();
-            for (int i = 0; (caps.size() > 0) && (i < sfs.size()); i++)
-            {
-                matches = match(caps, sfs.get(i));
-                caps = matches;
-            }
-        }
-        else if (sf.getOperation() == SimpleFilter.OR)
-        {
-            // Evaluate each subfilter against the remaining capabilities.
-            // For OR we calculate the union of each subfilter.
-            List<SimpleFilter> sfs = (List<SimpleFilter>) sf.getValue();
-            for (int i = 0; i < sfs.size(); i++)
-            {
-                matches.addAll(match(caps, sfs.get(i)));
-            }
-        }
-        else if (sf.getOperation() == SimpleFilter.NOT)
-        {
-            // Evaluate each subfilter against the remaining capabilities.
-            // For OR we calculate the union of each subfilter.
-            matches.addAll(caps);
-            List<SimpleFilter> sfs = (List<SimpleFilter>) sf.getValue();
-            for (int i = 0; i < sfs.size(); i++)
-            {
-                matches.removeAll(match(caps, sfs.get(i)));
-            }
-        }
-        else
-        {
-            for (Iterator<Capability> it = caps.iterator(); it.hasNext(); )
-            {
-                Capability cap = it.next();
-                Object lhs = cap.getAttributes().get(sf.getName());
-                if (lhs != null)
-                {
-                    if (compare(lhs, sf.getValue(), sf.getOperation()))
-                    {
-                        matches.add(cap);
-                    }
-                }
-            }
-        }
-
-        return matches;
-    }
-
-    public static boolean matches(Capability cap, SimpleFilter sf)
+    static boolean matches(Capability cap, SimpleFilter sf)
     {
         return matchesInternal(cap, sf) && matchMandatory(cap, sf);
     }
@@ -161,20 +97,6 @@ public class CapabilityMatcher
         return matched;
     }
 
-    private static Set<Capability> matchMandatory(
-            Set<Capability> caps, SimpleFilter sf)
-    {
-        for (Iterator<Capability> it = caps.iterator(); it.hasNext(); )
-        {
-            Capability cap = it.next();
-            if (!matchMandatory(cap, sf))
-            {
-                it.remove();
-            }
-        }
-        return caps;
-    }
-
     private static boolean matchMandatory(Capability cap, SimpleFilter sf)
     {
         Map<String, Object> attrs = cap.getAttributes();

-- 
To stop receiving notification emails like this one, please contact
cziegeler@apache.org.