You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ro...@apache.org on 2017/10/18 23:18:34 UTC

[sling-org-apache-sling-commons-contentdetection] branch master created (now cba5e83)

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

rombert pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-commons-contentdetection.git.


      at cba5e83  SLING-7167 Adjust READMEs

This branch includes the following new commits:

     new 3d0eaf3  SLING-4694 - new contentdetection module, contributed by Satya Deep Maheshwari, thanks!
     new afe0202  SLING-4694 - remove files which are not needed
     new 2495780  SLING-4694 - pom cleanup
     new 89315d4  SLING-4757 - new tests for commons.contentdetection, contributed by Petr Shypila, thanks!
     new 3864b3e  SLING-4757 - remove duplicate test
     new 0cd56f9  SLING-4757 - test invalid encoding
     new 1800eb1  SLING-4757 - new integration tests for commons.contentdetection, contributed by Petr Shypila, thanks!
     new 5bbc387  SLING-4757 - factor out Pax config
     new 82559fe  SLING-4757 - make sure we have the right service in integration tests
     new fd368cf  SLING-4757 - remove relativePath as we did elsewhere
     new c119c12  SLING-4757 - remove metatype.properties
     new 269ffcb  SLING-4757 - remove Easymock, caused trouble with jacoco plugin coverage merging
     new 61f1699  clean plugin config
     new e05eacb  SLING-4757 - additional test contributed by Satya Deep Maheshwari, thanks!
     new a0fbb56  SLING-4757 - Ignore new test, causes OutOfMemoryError on my box
     new 55c622e  SLING-4757 - fix pax exam memory setup and add test for non-markable stream
     new 34f330c  SLING-4757 - throw IllegalArgumentException if InputStream does not support mark/reset
     new fd5d370  SLING-4757 - be more explicit about IllegalArgumentException
     new d2d643c  Update to Sling Parent 23
     new d669825  Remove superflous sling.java.version=6 as it's the default now
     new e2049b3  SLING-4835 - fix maven-failsafe-plugin argLine for jacoco
     new 8db378e  cannot be null here, remove dead code
     new d6eb97d  SLING-4694 - use commons.mime release, no need for a snapshot
     new 91db345  SLING-4694 - use the newest (just released) Sling parent pom
     new 929c050  [maven-release-plugin] prepare release org.apache.sling.commons.contentdetection-1.0.0
     new 7513438  SLING-4694 - add missing scm info
     new fe6a8dd  SLING-4694 - add missing scm info
     new 764fb39  SLING-4694 - we'll release as 1.0.2
     new a090d27  [maven-release-plugin] prepare release org.apache.sling.commons.contentdetection-1.0.2
     new a6fd894  [maven-release-plugin] prepare for next development iteration
     new d5ddbb2  Update the main reactor to parent 25
     new 7bdf36d  Added .gitignore to the contentdetection bundle
     new 7f06cfc  Switch to parent pom 26
     new ae242d7  Update to parent pom 29
     new ba129b4  use Sling Parent 30
     new 4eb2439  add missing Felix SCR and bnd annotations
     new d76b4d7  switch to OSGi annotations and Testing PaxExam (fixes build)
     new 80b2ffb  use org.apache.sling.testing.paxexam 0.0.4
     new cba5e83  SLING-7167 Adjust READMEs

The 39 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


-- 
To stop receiving notification emails like this one, please contact
['"commits@sling.apache.org" <co...@sling.apache.org>'].

[sling-org-apache-sling-commons-contentdetection] 25/39: [maven-release-plugin] prepare release org.apache.sling.commons.contentdetection-1.0.0

Posted by ro...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 929c050e9f46a1257305886269c35f78514be647
Author: Bertrand Delacretaz <bd...@apache.org>
AuthorDate: Mon Jul 6 11:50:04 2015 +0000

    [maven-release-plugin] prepare release org.apache.sling.commons.contentdetection-1.0.0
    
    git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1689376 13f79535-47bb-0310-9956-ffa450edef68
---
 pom.xml | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/pom.xml b/pom.xml
index 3933af6..a516402 100644
--- a/pom.xml
+++ b/pom.xml
@@ -29,7 +29,7 @@
     </parent>
 
     <artifactId>org.apache.sling.commons.contentdetection</artifactId>
-    <version>0.9.9-SNAPSHOT</version>
+    <version>1.0.0</version>
     <packaging>bundle</packaging>
 
     <name>Apache Sling Content Detection Support</name>
@@ -200,4 +200,10 @@
         </plugins>
     </build>
 
+
+  <scm>
+    <connection>scm:svn:http://svn.apache.org/repos/asf/sling/tags/org.apache.sling.commons.contentdetection-1.0.0</connection>
+    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/sling/tags/org.apache.sling.commons.contentdetection-1.0.0</developerConnection>
+    <url>http://svn.apache.org/viewvc/sling/tags/org.apache.sling.commons.contentdetection-1.0.0</url>
+  </scm>
 </project>

-- 
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.

[sling-org-apache-sling-commons-contentdetection] 20/39: Remove superflous sling.java.version=6 as it's the default now

Posted by ro...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit d66982589da59d8341d08e918b1961c99927ab28
Author: Robert Munteanu <ro...@apache.org>
AuthorDate: Thu Jun 25 13:14:53 2015 +0000

    Remove superflous sling.java.version=6 as it's the default now
    
    git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1687505 13f79535-47bb-0310-9956-ffa450edef68
---
 pom.xml | 1 -
 1 file changed, 1 deletion(-)

diff --git a/pom.xml b/pom.xml
index 2658ab2..c72bc63 100644
--- a/pom.xml
+++ b/pom.xml
@@ -39,7 +39,6 @@
         <exam.version>3.5.0</exam.version>
         <url.version>1.5.2</url.version>
         <bundle.file.name>${basedir}/target/${project.build.finalName}.jar</bundle.file.name>
-        <sling.java.version>6</sling.java.version>
         <sling.launchpad.version>7</sling.launchpad.version>
         <powermock.version>1.6.2</powermock.version>
         <pax.vm.options>-Xmx256M -XX:MaxPermSize=256m</pax.vm.options>

-- 
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.

[sling-org-apache-sling-commons-contentdetection] 07/39: SLING-4757 - new integration tests for commons.contentdetection, contributed by Petr Shypila, thanks!

Posted by ro...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 1800eb14e20d8325049dbf3548455f0f250f5319
Author: Bertrand Delacretaz <bd...@apache.org>
AuthorDate: Mon Jun 1 12:33:57 2015 +0000

    SLING-4757 - new integration tests for commons.contentdetection, contributed by Petr Shypila, thanks!
    
    git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1682886 13f79535-47bb-0310-9956-ffa450edef68
---
 pom.xml                                            | 75 +++++++++++++++++++++-
 .../it/ContentAwareMimeTypeServiceImplIT.java      | 56 ++++++++++++++++
 .../internal/it/FileNameExtractorImplIT.java       | 56 ++++++++++++++++
 3 files changed, 186 insertions(+), 1 deletion(-)

diff --git a/pom.xml b/pom.xml
index 402731b..97b87ea 100644
--- a/pom.xml
+++ b/pom.xml
@@ -28,7 +28,6 @@
         <relativePath>../../../parent/pom.xml</relativePath>
     </parent>
 
-    <groupId>org.apache.sling</groupId>
     <artifactId>org.apache.sling.commons.contentdetection</artifactId>
     <version>0.9.9-SNAPSHOT</version>
     <packaging>bundle</packaging>
@@ -37,6 +36,12 @@
     <description>Content-based MIME type detection</description>
 
     <properties>
+        <exam.version>3.4.0</exam.version>
+        <url.version>1.5.2</url.version>
+        <org.ops4j.pax.logging.DefaultServiceLog.level>INFO</org.ops4j.pax.logging.DefaultServiceLog.level>
+        <bundle.file.name>${basedir}/target/${project.build.finalName}.jar</bundle.file.name>
+        <sling.java.version>6</sling.java.version>
+        <sling.launchpad.version>7</sling.launchpad.version>
         <powermock.version>1.6.2</powermock.version>
     </properties>
 
@@ -96,6 +101,48 @@
             <version>${powermock.version}</version>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.apache.sling</groupId>
+            <artifactId>org.apache.sling.launchpad</artifactId>
+            <version>${sling.launchpad.version}</version>
+            <type>xml</type>
+            <classifier>bundlelist</classifier>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-simple</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.sling</groupId>
+            <artifactId>org.apache.sling.paxexam.util</artifactId>
+            <version>1.0.2</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.ops4j.pax.exam</groupId>
+            <artifactId>pax-exam-container-native</artifactId>
+            <version>${exam.version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.ops4j.pax.exam</groupId>
+            <artifactId>pax-exam-link-mvn</artifactId>
+            <version>${exam.version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.felix</groupId>
+            <artifactId>org.apache.felix.framework</artifactId>
+            <version>4.2.1</version>
+            <scope>test</scope>
+        </dependency>
     </dependencies>
 
     <build>
@@ -116,6 +163,32 @@
                 <artifactId>apache-rat-plugin</artifactId>
             </plugin>
 
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-failsafe-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>integration-test</goal>
+                            <goal>verify</goal>
+                        </goals>
+                    </execution>
+                </executions>
+                <configuration>
+                    <systemPropertyVariables>
+                        <org.ops4j.pax.logging.DefaultServiceLog.level>${org.ops4j.pax.logging.DefaultServiceLog.level}</org.ops4j.pax.logging.DefaultServiceLog.level>
+                        <pax.exam.log.level>${pax.exam.log.level}</pax.exam.log.level>
+                        <java.protocol.handler.pkgs>org.ops4j.pax.url</java.protocol.handler.pkgs>
+                        <bundle.file.name>${bundle.file.name}</bundle.file.name>
+                        <sling.launchpad.version>${sling.launchpad.version}</sling.launchpad.version>
+                    </systemPropertyVariables>
+                    <classpathDependencyExcludes>
+                        <!-- The osgi.org dependencies cause trouble with pax exam -->
+                        <classpathDependencyExcludes>org.osgi:org.osgi.core</classpathDependencyExcludes>
+                        <classpathDependencyExcludes>org.osgi:org.osgi.compendium</classpathDependencyExcludes>
+                    </classpathDependencyExcludes>
+                </configuration>
+            </plugin>
         </plugins>
     </build>
 
diff --git a/src/test/java/org/apache/sling/commons/contentdetection/internal/it/ContentAwareMimeTypeServiceImplIT.java b/src/test/java/org/apache/sling/commons/contentdetection/internal/it/ContentAwareMimeTypeServiceImplIT.java
new file mode 100644
index 0000000..82fe4b9
--- /dev/null
+++ b/src/test/java/org/apache/sling/commons/contentdetection/internal/it/ContentAwareMimeTypeServiceImplIT.java
@@ -0,0 +1,56 @@
+/*
+ * 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.commons.contentdetection.internal.it;
+
+import org.apache.sling.commons.contentdetection.ContentAwareMimeTypeService;
+import org.apache.sling.paxexam.util.SlingPaxOptions;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.ops4j.pax.exam.CoreOptions;
+import org.ops4j.pax.exam.Option;
+import org.ops4j.pax.exam.junit.PaxExam;
+import org.ops4j.pax.exam.options.DefaultCompositeOption;
+
+import javax.inject.Inject;
+import java.io.File;
+
+import static org.junit.Assert.*;
+
+@RunWith(PaxExam.class)
+public class ContentAwareMimeTypeServiceImplIT {
+
+    @Inject
+    private ContentAwareMimeTypeService contentAwaremimeTypeService;
+
+    @Test
+    public void testContentAwareMimeTypeService(){
+        String mimeTypeName = "test.mp3";
+        String mimeType = "audio/mpeg";
+        assertEquals(mimeType, contentAwaremimeTypeService.getMimeType(mimeTypeName));
+    }
+
+    @org.ops4j.pax.exam.Configuration
+    public Option[] config() {
+        final File thisProjectsBundle = new File(System.getProperty( "bundle.file.name", "BUNDLE_FILE_NOT_SET" ));
+        final String launchpadVersion = System.getProperty("sling.launchpad.version", "LAUNCHPAD_VERSION_NOT_SET");
+        return new DefaultCompositeOption(
+                SlingPaxOptions.defaultLaunchpadOptions(launchpadVersion),
+                CoreOptions.provision(CoreOptions.bundle(thisProjectsBundle.toURI().toString()))
+        ).getOptions();
+    }
+}
diff --git a/src/test/java/org/apache/sling/commons/contentdetection/internal/it/FileNameExtractorImplIT.java b/src/test/java/org/apache/sling/commons/contentdetection/internal/it/FileNameExtractorImplIT.java
new file mode 100644
index 0000000..e0e55fb
--- /dev/null
+++ b/src/test/java/org/apache/sling/commons/contentdetection/internal/it/FileNameExtractorImplIT.java
@@ -0,0 +1,56 @@
+/*
+ * 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.commons.contentdetection.internal.it;
+
+import org.apache.sling.commons.contentdetection.FileNameExtractor;
+import org.apache.sling.paxexam.util.SlingPaxOptions;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.ops4j.pax.exam.CoreOptions;
+import org.ops4j.pax.exam.Option;
+import org.ops4j.pax.exam.junit.PaxExam;
+import org.ops4j.pax.exam.options.DefaultCompositeOption;
+
+import javax.inject.Inject;
+import java.io.File;
+
+import static org.junit.Assert.*;
+
+@RunWith(PaxExam.class)
+public class FileNameExtractorImplIT {
+
+    @Inject
+    private FileNameExtractor fileNameExtractor;
+
+    @Test
+    public void testFileNameExtractor(){
+        String rawPath = "http://midches.com/images/uploads/default/demo.jpg#anchor?query=test";
+        String expectedFileName = "demo.jpg";
+        assertEquals(expectedFileName, fileNameExtractor.extract(rawPath));
+    }
+
+    @org.ops4j.pax.exam.Configuration
+    public Option[] config() {
+        final File thisProjectsBundle = new File(System.getProperty( "bundle.file.name", "BUNDLE_FILE_NOT_SET" ));
+        final String launchpadVersion = System.getProperty("sling.launchpad.version", "LAUNCHPAD_VERSION_NOT_SET");
+        return new DefaultCompositeOption(
+                SlingPaxOptions.defaultLaunchpadOptions(launchpadVersion),
+                CoreOptions.provision(CoreOptions.bundle(thisProjectsBundle.toURI().toString()))
+        ).getOptions();
+    }
+}

-- 
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.

[sling-org-apache-sling-commons-contentdetection] 09/39: SLING-4757 - make sure we have the right service in integration tests

Posted by ro...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 82559fee61815785d67eaaf64d3b292ecf4b6080
Author: Bertrand Delacretaz <bd...@apache.org>
AuthorDate: Mon Jun 1 12:51:07 2015 +0000

    SLING-4757 - make sure we have the right service in integration tests
    
    git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1682890 13f79535-47bb-0310-9956-ffa450edef68
---
 .../it/ContentAwareMimeTypeServiceImplIT.java       |  20 +++++++++++++++++++-
 src/test/resources/this-is-actually-a-wav-file.mp3  | Bin 0 -> 10000 bytes
 2 files changed, 19 insertions(+), 1 deletion(-)

diff --git a/src/test/java/org/apache/sling/commons/contentdetection/internal/it/ContentAwareMimeTypeServiceImplIT.java b/src/test/java/org/apache/sling/commons/contentdetection/internal/it/ContentAwareMimeTypeServiceImplIT.java
index fec301f..a0b4410 100644
--- a/src/test/java/org/apache/sling/commons/contentdetection/internal/it/ContentAwareMimeTypeServiceImplIT.java
+++ b/src/test/java/org/apache/sling/commons/contentdetection/internal/it/ContentAwareMimeTypeServiceImplIT.java
@@ -18,6 +18,10 @@
 package org.apache.sling.commons.contentdetection.internal.it;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import java.io.IOException;
+import java.io.InputStream;
 
 import javax.inject.Inject;
 
@@ -34,12 +38,26 @@ public class ContentAwareMimeTypeServiceImplIT {
     private ContentAwareMimeTypeService contentAwaremimeTypeService;
 
     @Test
-    public void testContentAwareMimeTypeService(){
+    public void detectFromExtension(){
         String mimeTypeName = "test.mp3";
         String mimeType = "audio/mpeg";
         assertEquals(mimeType, contentAwaremimeTypeService.getMimeType(mimeTypeName));
     }
 
+    @Test
+    public void detectFromContent() throws IOException{
+        final String filename = "this-is-actually-a-wav-file.mp3";
+        final InputStream s = getClass().getResourceAsStream("/" + filename);
+        assertNotNull("Expecting stream to be found:" + filename, s);
+        try {
+            assertEquals("audio/x-wav", contentAwaremimeTypeService.getMimeType(filename, s));
+        } finally {
+            if(s != null) {
+                s.close();
+            }
+        }
+    }
+
     @org.ops4j.pax.exam.Configuration
     public Option[] config() {
         return U.paxConfig();
diff --git a/src/test/resources/this-is-actually-a-wav-file.mp3 b/src/test/resources/this-is-actually-a-wav-file.mp3
new file mode 100644
index 0000000..50f3f65
Binary files /dev/null and b/src/test/resources/this-is-actually-a-wav-file.mp3 differ

-- 
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.

[sling-org-apache-sling-commons-contentdetection] 08/39: SLING-4757 - factor out Pax config

Posted by ro...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 5bbc3871b5e592c63483cd44e796c25faee393b5
Author: Bertrand Delacretaz <bd...@apache.org>
AuthorDate: Mon Jun 1 12:38:28 2015 +0000

    SLING-4757 - factor out Pax config
    
    git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1682887 13f79535-47bb-0310-9956-ffa450edef68
---
 .../it/ContentAwareMimeTypeServiceImplIT.java      | 21 +++++-----------
 .../internal/it/FileNameExtractorImplIT.java       | 19 ++++-----------
 ...ntentAwareMimeTypeServiceImplIT.java => U.java} | 28 ++++------------------
 3 files changed, 15 insertions(+), 53 deletions(-)

diff --git a/src/test/java/org/apache/sling/commons/contentdetection/internal/it/ContentAwareMimeTypeServiceImplIT.java b/src/test/java/org/apache/sling/commons/contentdetection/internal/it/ContentAwareMimeTypeServiceImplIT.java
index 82fe4b9..fec301f 100644
--- a/src/test/java/org/apache/sling/commons/contentdetection/internal/it/ContentAwareMimeTypeServiceImplIT.java
+++ b/src/test/java/org/apache/sling/commons/contentdetection/internal/it/ContentAwareMimeTypeServiceImplIT.java
@@ -17,19 +17,15 @@
 
 package org.apache.sling.commons.contentdetection.internal.it;
 
+import static org.junit.Assert.assertEquals;
+
+import javax.inject.Inject;
+
 import org.apache.sling.commons.contentdetection.ContentAwareMimeTypeService;
-import org.apache.sling.paxexam.util.SlingPaxOptions;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.ops4j.pax.exam.CoreOptions;
 import org.ops4j.pax.exam.Option;
 import org.ops4j.pax.exam.junit.PaxExam;
-import org.ops4j.pax.exam.options.DefaultCompositeOption;
-
-import javax.inject.Inject;
-import java.io.File;
-
-import static org.junit.Assert.*;
 
 @RunWith(PaxExam.class)
 public class ContentAwareMimeTypeServiceImplIT {
@@ -46,11 +42,6 @@ public class ContentAwareMimeTypeServiceImplIT {
 
     @org.ops4j.pax.exam.Configuration
     public Option[] config() {
-        final File thisProjectsBundle = new File(System.getProperty( "bundle.file.name", "BUNDLE_FILE_NOT_SET" ));
-        final String launchpadVersion = System.getProperty("sling.launchpad.version", "LAUNCHPAD_VERSION_NOT_SET");
-        return new DefaultCompositeOption(
-                SlingPaxOptions.defaultLaunchpadOptions(launchpadVersion),
-                CoreOptions.provision(CoreOptions.bundle(thisProjectsBundle.toURI().toString()))
-        ).getOptions();
+        return U.paxConfig();
     }
-}
+}
\ No newline at end of file
diff --git a/src/test/java/org/apache/sling/commons/contentdetection/internal/it/FileNameExtractorImplIT.java b/src/test/java/org/apache/sling/commons/contentdetection/internal/it/FileNameExtractorImplIT.java
index e0e55fb..bc2aaaf 100644
--- a/src/test/java/org/apache/sling/commons/contentdetection/internal/it/FileNameExtractorImplIT.java
+++ b/src/test/java/org/apache/sling/commons/contentdetection/internal/it/FileNameExtractorImplIT.java
@@ -17,19 +17,15 @@
 
 package org.apache.sling.commons.contentdetection.internal.it;
 
+import static org.junit.Assert.assertEquals;
+
+import javax.inject.Inject;
+
 import org.apache.sling.commons.contentdetection.FileNameExtractor;
-import org.apache.sling.paxexam.util.SlingPaxOptions;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.ops4j.pax.exam.CoreOptions;
 import org.ops4j.pax.exam.Option;
 import org.ops4j.pax.exam.junit.PaxExam;
-import org.ops4j.pax.exam.options.DefaultCompositeOption;
-
-import javax.inject.Inject;
-import java.io.File;
-
-import static org.junit.Assert.*;
 
 @RunWith(PaxExam.class)
 public class FileNameExtractorImplIT {
@@ -46,11 +42,6 @@ public class FileNameExtractorImplIT {
 
     @org.ops4j.pax.exam.Configuration
     public Option[] config() {
-        final File thisProjectsBundle = new File(System.getProperty( "bundle.file.name", "BUNDLE_FILE_NOT_SET" ));
-        final String launchpadVersion = System.getProperty("sling.launchpad.version", "LAUNCHPAD_VERSION_NOT_SET");
-        return new DefaultCompositeOption(
-                SlingPaxOptions.defaultLaunchpadOptions(launchpadVersion),
-                CoreOptions.provision(CoreOptions.bundle(thisProjectsBundle.toURI().toString()))
-        ).getOptions();
+        return U.paxConfig();
     }
 }
diff --git a/src/test/java/org/apache/sling/commons/contentdetection/internal/it/ContentAwareMimeTypeServiceImplIT.java b/src/test/java/org/apache/sling/commons/contentdetection/internal/it/U.java
similarity index 68%
copy from src/test/java/org/apache/sling/commons/contentdetection/internal/it/ContentAwareMimeTypeServiceImplIT.java
copy to src/test/java/org/apache/sling/commons/contentdetection/internal/it/U.java
index 82fe4b9..33ecd38 100644
--- a/src/test/java/org/apache/sling/commons/contentdetection/internal/it/ContentAwareMimeTypeServiceImplIT.java
+++ b/src/test/java/org/apache/sling/commons/contentdetection/internal/it/U.java
@@ -17,35 +17,15 @@
 
 package org.apache.sling.commons.contentdetection.internal.it;
 
-import org.apache.sling.commons.contentdetection.ContentAwareMimeTypeService;
+import java.io.File;
+
 import org.apache.sling.paxexam.util.SlingPaxOptions;
-import org.junit.Test;
-import org.junit.runner.RunWith;
 import org.ops4j.pax.exam.CoreOptions;
 import org.ops4j.pax.exam.Option;
-import org.ops4j.pax.exam.junit.PaxExam;
 import org.ops4j.pax.exam.options.DefaultCompositeOption;
 
-import javax.inject.Inject;
-import java.io.File;
-
-import static org.junit.Assert.*;
-
-@RunWith(PaxExam.class)
-public class ContentAwareMimeTypeServiceImplIT {
-
-    @Inject
-    private ContentAwareMimeTypeService contentAwaremimeTypeService;
-
-    @Test
-    public void testContentAwareMimeTypeService(){
-        String mimeTypeName = "test.mp3";
-        String mimeType = "audio/mpeg";
-        assertEquals(mimeType, contentAwaremimeTypeService.getMimeType(mimeTypeName));
-    }
-
-    @org.ops4j.pax.exam.Configuration
-    public Option[] config() {
+public class U {
+    public static Option[] paxConfig() {
         final File thisProjectsBundle = new File(System.getProperty( "bundle.file.name", "BUNDLE_FILE_NOT_SET" ));
         final String launchpadVersion = System.getProperty("sling.launchpad.version", "LAUNCHPAD_VERSION_NOT_SET");
         return new DefaultCompositeOption(

-- 
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.

[sling-org-apache-sling-commons-contentdetection] 37/39: switch to OSGi annotations and Testing PaxExam (fixes build)

Posted by ro...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit d76b4d7ec68df8307a477eef3d1cfb73e0377176
Author: Oliver Lietz <ol...@apache.org>
AuthorDate: Sat Mar 18 19:31:46 2017 +0000

    switch to OSGi annotations and Testing PaxExam (fixes build)
    
    git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1787588 13f79535-47bb-0310-9956-ffa450edef68
---
 pom.xml                                            | 154 +++++++++------------
 .../internal/ContentAwareMimeTypeServiceImpl.java  |  17 ++-
 .../internal/FileNameExtractorImpl.java            |  17 +--
 .../ContentAwareMimeTypeServiceImplTest.java       |  11 +-
 .../it/ContentAwareMimeTypeServiceImplIT.java      |  24 ++--
 .../internal/it/ContentdetectionTestSupport.java   |  52 +++++++
 .../internal/it/FileNameExtractorImplIT.java       |  10 +-
 .../commons/contentdetection/internal/it/U.java    |  42 ------
 8 files changed, 153 insertions(+), 174 deletions(-)

diff --git a/pom.xml b/pom.xml
index 2d14f3a..25299a3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -36,15 +36,9 @@
     <description>Content-based MIME type detection</description>
 
     <properties>
-        <exam.version>3.5.0</exam.version>
-        <url.version>1.5.2</url.version>
-        <bundle.file.name>${basedir}/target/${project.build.finalName}.jar</bundle.file.name>
-        <sling.launchpad.version>7</sling.launchpad.version>
-        <powermock.version>1.6.2</powermock.version>
-        <pax.vm.options>-Xmx256M -XX:MaxPermSize=256m</pax.vm.options>
-        
-        <!-- argLine needs to be here so that jacoco plugin adds its own stuff to it -->
-        <argLine>${pax.vm.options}</argLine>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+        <org.ops4j.pax.exam.version>4.10.0</org.ops4j.pax.exam.version>
     </properties>
     
     <scm>
@@ -54,14 +48,24 @@
     </scm>
 
     <dependencies>
-
-        <!-- OSGi Dependencies-->
+        <!-- javax -->
+        <dependency>
+            <groupId>javax.inject</groupId>
+            <artifactId>javax.inject</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <!-- OSGi -->
         <dependency>
             <groupId>org.osgi</groupId>
             <artifactId>osgi.core</artifactId>
             <scope>provided</scope>
         </dependency>
         <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>osgi.cmpn</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
             <groupId>org.apache.felix</groupId>
             <artifactId>org.apache.felix.scr.annotations</artifactId>
             <scope>provided</scope>
@@ -71,78 +75,74 @@
             <artifactId>biz.aQute.bndlib</artifactId>
             <scope>provided</scope>
         </dependency>
-        <!-- Sling Dependencies-->
+        <!-- Apache Commons -->
+        <dependency>
+            <groupId>commons-io</groupId>
+            <artifactId>commons-io</artifactId>
+            <version>2.5</version>
+            <scope>test</scope>
+        </dependency>
+        <!-- Apache Sling -->
         <dependency>
             <version>2.1.8</version>
             <groupId>org.apache.sling</groupId>
             <artifactId>org.apache.sling.commons.mime</artifactId>
             <scope>provided</scope>
         </dependency>
-
-        <!-- Other Dependencies-->
+        <dependency>
+            <groupId>org.apache.sling</groupId>
+            <artifactId>org.apache.sling.testing.paxexam</artifactId>
+            <version>0.0.5-SNAPSHOT</version>
+            <scope>test</scope>
+        </dependency>
+        <!-- Apache Tika-->
         <dependency>
             <version>1.2</version>
             <groupId>org.apache.tika</groupId>
             <artifactId>tika-core</artifactId>
             <scope>provided</scope>
         </dependency>
-
-        <!-- Test Dependencies-->
-        <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-        </dependency>
+        <!-- Apache Felix -->
         <dependency>
-            <groupId>org.apache.sling</groupId>
-            <artifactId>org.apache.sling.junit.core</artifactId>
-            <version>1.0.10</version>
+            <groupId>org.apache.felix</groupId>
+            <artifactId>org.apache.felix.framework</artifactId>
+            <version>5.6.2</version>
             <scope>test</scope>
         </dependency>
+        <!-- testing -->
         <dependency>
-            <groupId>junit-addons</groupId>
-            <artifactId>junit-addons</artifactId>
-            <version>1.4</version>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
             <scope>test</scope>
         </dependency>
         <dependency>
-            <groupId>org.apache.sling</groupId>
-            <artifactId>org.apache.sling.launchpad</artifactId>
-            <version>${sling.launchpad.version}</version>
-            <type>xml</type>
-            <classifier>bundlelist</classifier>
+            <groupId>org.ops4j.pax.exam</groupId>
+            <artifactId>pax-exam</artifactId>
+            <version>${org.ops4j.pax.exam.version}</version>
             <scope>test</scope>
         </dependency>
         <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-api</artifactId>
+            <groupId>org.ops4j.pax.exam</groupId>
+            <artifactId>pax-exam-cm</artifactId>
+            <version>${org.ops4j.pax.exam.version}</version>
             <scope>test</scope>
         </dependency>
         <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-simple</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.sling</groupId>
-            <artifactId>org.apache.sling.paxexam.util</artifactId>
-            <version>1.0.2</version>
+            <groupId>org.ops4j.pax.exam</groupId>
+            <artifactId>pax-exam-container-forked</artifactId>
+            <version>${org.ops4j.pax.exam.version}</version>
             <scope>test</scope>
         </dependency>
         <dependency>
             <groupId>org.ops4j.pax.exam</groupId>
-            <artifactId>pax-exam-container-native</artifactId>
-            <version>${exam.version}</version>
+            <artifactId>pax-exam-junit4</artifactId>
+            <version>${org.ops4j.pax.exam.version}</version>
             <scope>test</scope>
         </dependency>
         <dependency>
             <groupId>org.ops4j.pax.exam</groupId>
             <artifactId>pax-exam-link-mvn</artifactId>
-            <version>${exam.version}</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.felix</groupId>
-            <artifactId>org.apache.felix.framework</artifactId>
-            <version>5.6.0</version>
+            <version>${org.ops4j.pax.exam.version}</version>
             <scope>test</scope>
         </dependency>
     </dependencies>
@@ -151,26 +151,9 @@
         <plugins>
             <plugin>
                 <groupId>org.apache.felix</groupId>
-                <artifactId>maven-scr-plugin</artifactId>
-            </plugin>
-
-            <plugin>
-                <groupId>org.apache.felix</groupId>
                 <artifactId>maven-bundle-plugin</artifactId>
                 <extensions>true</extensions>
             </plugin>
-
-            <plugin>
-                <groupId>org.apache.rat</groupId>
-                <artifactId>apache-rat-plugin</artifactId>
-                <configuration>
-                    <excludes>
-                        <exclude>derby.log</exclude>
-                        <exclude>jackrabbit/**</exclude>
-                    </excludes>
-                </configuration>
-            </plugin>
-
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-failsafe-plugin</artifactId>
@@ -183,32 +166,25 @@
                     </execution>
                 </executions>
                 <configuration>
-                    <systemPropertyVariables>
-                        <java.protocol.handler.pkgs>org.ops4j.pax.url</java.protocol.handler.pkgs>
-                        <bundle.file.name>${bundle.file.name}</bundle.file.name>
-                        <sling.launchpad.version>${sling.launchpad.version}</sling.launchpad.version>
-                    </systemPropertyVariables>
-                    <classpathDependencyExcludes>
-                        <!-- The osgi.org dependencies cause trouble with pax exam -->
-                        <classpathDependencyExcludes>org.osgi:org.osgi.core</classpathDependencyExcludes>
-                        <classpathDependencyExcludes>org.osgi:org.osgi.compendium</classpathDependencyExcludes>
-                    </classpathDependencyExcludes>
+                    <redirectTestOutputToFile>true</redirectTestOutputToFile>
+                    <systemProperties>
+                        <property>
+                            <name>bundle.filename</name>
+                            <value>${basedir}/target/${project.build.finalName}.jar</value>
+                        </property>
+                    </systemProperties>
                 </configuration>
             </plugin>
             <plugin>
-                <artifactId>maven-clean-plugin</artifactId>
-                <configuration>
-                    <filesets>
-                        <fileset>
-                            <directory>${basedir}</directory>
-                            <includes>
-                                <include>oak/**</include>
-                                <include>jackrabbit/**</include>
-                                <include>derby.log</include>
-                            </includes>
-                        </fileset>
-                    </filesets>
-                </configuration>
+                <groupId>org.apache.servicemix.tooling</groupId>
+                <artifactId>depends-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>generate-depends-file</goal>
+                        </goals>
+                    </execution>
+                </executions>
             </plugin>
         </plugins>
     </build>
diff --git a/src/main/java/org/apache/sling/commons/contentdetection/internal/ContentAwareMimeTypeServiceImpl.java b/src/main/java/org/apache/sling/commons/contentdetection/internal/ContentAwareMimeTypeServiceImpl.java
index 5264296..8641678 100644
--- a/src/main/java/org/apache/sling/commons/contentdetection/internal/ContentAwareMimeTypeServiceImpl.java
+++ b/src/main/java/org/apache/sling/commons/contentdetection/internal/ContentAwareMimeTypeServiceImpl.java
@@ -15,11 +15,8 @@
  * limitations under the License.
  */
 
-
 package org.apache.sling.commons.contentdetection.internal;
 
-
-import org.apache.felix.scr.annotations.*;
 import org.apache.sling.commons.contentdetection.ContentAwareMimeTypeService;
 import org.apache.sling.commons.mime.MimeTypeService;
 import org.apache.tika.detect.Detector;
@@ -27,16 +24,18 @@ import org.apache.tika.io.TikaInputStream;
 import org.apache.tika.metadata.Metadata;
 import org.apache.tika.mime.MediaType;
 import org.osgi.framework.Constants;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
 
 import java.io.IOException;
 import java.io.InputStream;
 
-@Component
-@Service(value = {ContentAwareMimeTypeService.class})
-@Properties({
-        @Property(name = Constants.SERVICE_DESCRIPTION, value = "Apache Sling Content Aware MIME Type Service"),
-        @Property(name = Constants.SERVICE_VENDOR, value = "The Apache Software Foundation"),
-        @Property(name = "detection.mode", value = "tika") }
+@Component(
+    property = {
+        Constants.SERVICE_DESCRIPTION + "=Apache Sling Content Aware MIME Type Service",
+        Constants.SERVICE_VENDOR + "=The Apache Software Foundation",
+        "detection.mode=tika"
+    }
 )
 public class ContentAwareMimeTypeServiceImpl implements  ContentAwareMimeTypeService {
 
diff --git a/src/main/java/org/apache/sling/commons/contentdetection/internal/FileNameExtractorImpl.java b/src/main/java/org/apache/sling/commons/contentdetection/internal/FileNameExtractorImpl.java
index 23d9c78..071bee3 100644
--- a/src/main/java/org/apache/sling/commons/contentdetection/internal/FileNameExtractorImpl.java
+++ b/src/main/java/org/apache/sling/commons/contentdetection/internal/FileNameExtractorImpl.java
@@ -19,19 +19,16 @@ package org.apache.sling.commons.contentdetection.internal;
 import java.io.UnsupportedEncodingException;
 import java.net.URLDecoder;
 
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Properties;
-import org.apache.felix.scr.annotations.Property;
-import org.apache.felix.scr.annotations.Service;
 import org.apache.sling.commons.contentdetection.FileNameExtractor;
 import org.osgi.framework.Constants;
+import org.osgi.service.component.annotations.Component;
 
-@Component
-@Service(FileNameExtractor.class)
-@Properties({
-    @Property(name = Constants.SERVICE_DESCRIPTION, value = "Apache Sling Filename Extractor Service"),
-    @Property(name = Constants.SERVICE_VENDOR, value = "The Apache Software Foundation"),
-})
+@Component(
+    property = {
+        Constants.SERVICE_DESCRIPTION + "=Apache Sling Filename Extractor Service",
+        Constants.SERVICE_VENDOR + "=The Apache Software Foundation"
+    }
+)
 public class FileNameExtractorImpl implements FileNameExtractor {
     public String extract(String name) {
         // If the name is a URL, skip the trailing query and fragment parts
diff --git a/src/test/java/org/apache/sling/commons/contentdetection/internal/ContentAwareMimeTypeServiceImplTest.java b/src/test/java/org/apache/sling/commons/contentdetection/internal/ContentAwareMimeTypeServiceImplTest.java
index b00194b..8672c33 100644
--- a/src/test/java/org/apache/sling/commons/contentdetection/internal/ContentAwareMimeTypeServiceImplTest.java
+++ b/src/test/java/org/apache/sling/commons/contentdetection/internal/ContentAwareMimeTypeServiceImplTest.java
@@ -20,8 +20,7 @@ package org.apache.sling.commons.contentdetection.internal;
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.InputStream;
-
-import junitx.util.PrivateAccessor;
+import java.lang.reflect.Field;
 
 import org.apache.sling.commons.mime.MimeTypeService;
 import org.junit.Assert;
@@ -58,9 +57,11 @@ public class ContentAwareMimeTypeServiceImplTest {
     };
     
     @Before
-    public void setup() throws NoSuchFieldException {
+    public void setup() throws NoSuchFieldException, IllegalAccessException {
         contentAwareMimeTypeService = new ContentAwareMimeTypeServiceImpl();
-        PrivateAccessor.setField(contentAwareMimeTypeService, "mimeTypeService", mimeTypeService);
+        final Field field = contentAwareMimeTypeService.getClass().getDeclaredField("mimeTypeService");
+        field.setAccessible(true);
+        field.set(contentAwareMimeTypeService, mimeTypeService);
     }
     
     @Test
@@ -101,4 +102,4 @@ public class ContentAwareMimeTypeServiceImplTest {
         }
         Assert.assertEquals("Expecting 1 call to registerMimeType(B)", before + 1, counterB);
     }
-}
\ No newline at end of file
+}
diff --git a/src/test/java/org/apache/sling/commons/contentdetection/internal/it/ContentAwareMimeTypeServiceImplIT.java b/src/test/java/org/apache/sling/commons/contentdetection/internal/it/ContentAwareMimeTypeServiceImplIT.java
index 64269f5..81a74e2 100644
--- a/src/test/java/org/apache/sling/commons/contentdetection/internal/it/ContentAwareMimeTypeServiceImplIT.java
+++ b/src/test/java/org/apache/sling/commons/contentdetection/internal/it/ContentAwareMimeTypeServiceImplIT.java
@@ -32,14 +32,16 @@ import org.apache.commons.io.IOUtils;
 import org.apache.sling.commons.contentdetection.ContentAwareMimeTypeService;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.ops4j.pax.exam.Option;
 import org.ops4j.pax.exam.junit.PaxExam;
+import org.ops4j.pax.exam.spi.reactors.ExamReactorStrategy;
+import org.ops4j.pax.exam.spi.reactors.PerClass;
 
 @RunWith(PaxExam.class)
-public class ContentAwareMimeTypeServiceImplIT {
+@ExamReactorStrategy(PerClass.class)
+public class ContentAwareMimeTypeServiceImplIT extends ContentdetectionTestSupport {
 
     @Inject
-    private ContentAwareMimeTypeService contentAwaremimeTypeService;
+    private ContentAwareMimeTypeService contentAwareMimeTypeService;
     
     class NonMarkableStream extends BufferedInputStream {
         NonMarkableStream(InputStream is) {
@@ -65,9 +67,9 @@ public class ContentAwareMimeTypeServiceImplIT {
         String mimeTypeName = "test.mp3";
         String mimeType = "audio/mpeg";
         assertEquals("Expecting mp3 type without InputStream parameter",
-                mimeType, contentAwaremimeTypeService.getMimeType(mimeTypeName));
+                mimeType, contentAwareMimeTypeService.getMimeType(mimeTypeName));
         assertEquals("Expecting mp3 type with null InputStream parameter",
-                mimeType, contentAwaremimeTypeService.getMimeType(mimeTypeName, null));
+                mimeType, contentAwareMimeTypeService.getMimeType(mimeTypeName, null));
     }
 
     @Test
@@ -78,7 +80,7 @@ public class ContentAwareMimeTypeServiceImplIT {
         assertNotNull("Expecting stream to be found:" + filename, s);
         InputStream originalStream = null;
         try {
-            assertEquals("audio/x-wav", contentAwaremimeTypeService.getMimeType(filename, s));
+            assertEquals("audio/x-wav", contentAwareMimeTypeService.getMimeType(filename, s));
             originalStream = getClass().getResourceAsStream(path);
             assertNotNull("Expecting stream to be found:" + filename, originalStream);
             assertTrue("Expecting content to be unchanged", IOUtils.contentEquals(s, originalStream));
@@ -92,14 +94,10 @@ public class ContentAwareMimeTypeServiceImplIT {
     public void nonMarkableStreamDetectionShouldFail() throws IOException{
         final InputStream nms = new NonMarkableStream(new ByteArrayInputStream("1234567890".getBytes()));
         try {
-            contentAwaremimeTypeService.getMimeType("foo.txt", nms);
+            contentAwareMimeTypeService.getMimeType("foo.txt", nms);
         } finally {
             IOUtils.closeQuietly(nms);
         }
     }
-    
-    @org.ops4j.pax.exam.Configuration
-    public Option[] config() {
-        return U.paxConfig();
-    }
-}
\ No newline at end of file
+
+}
diff --git a/src/test/java/org/apache/sling/commons/contentdetection/internal/it/ContentdetectionTestSupport.java b/src/test/java/org/apache/sling/commons/contentdetection/internal/it/ContentdetectionTestSupport.java
new file mode 100644
index 0000000..cfb28a9
--- /dev/null
+++ b/src/test/java/org/apache/sling/commons/contentdetection/internal/it/ContentdetectionTestSupport.java
@@ -0,0 +1,52 @@
+/*
+ * 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.commons.contentdetection.internal.it;
+
+import org.apache.sling.testing.paxexam.TestSupport;
+import org.ops4j.pax.exam.Configuration;
+import org.ops4j.pax.exam.Option;
+
+import static org.apache.sling.testing.paxexam.SlingOptions.slingLaunchpadOakTar;
+import static org.apache.sling.testing.paxexam.SlingOptions.versionResolver;
+import static org.ops4j.pax.exam.CoreOptions.composite;
+import static org.ops4j.pax.exam.CoreOptions.junitBundles;
+
+public abstract class ContentdetectionTestSupport extends TestSupport {
+
+    @Configuration
+    public Option[] configuration() {
+        versionResolver.setVersion("org.apache.felix", "org.apache.felix.http.jetty", "3.1.6"); // Java 7
+        versionResolver.setVersion("org.apache.felix", "org.apache.felix.http.whiteboard", "2.3.2"); // Java 7
+        return new Option[]{
+            baseConfiguration(),
+            launchpad(),
+            // Sling Content Detection
+            testBundle("bundle.filename"),
+            // testing
+            junitBundles()
+        };
+    }
+
+    protected Option launchpad() {
+        final int httpPort = findFreePort();
+        final String workingDirectory = workingDirectory();
+        return composite(
+            slingLaunchpadOakTar(workingDirectory, httpPort)
+        );
+    }
+
+}
diff --git a/src/test/java/org/apache/sling/commons/contentdetection/internal/it/FileNameExtractorImplIT.java b/src/test/java/org/apache/sling/commons/contentdetection/internal/it/FileNameExtractorImplIT.java
index bc2aaaf..ccc3539 100644
--- a/src/test/java/org/apache/sling/commons/contentdetection/internal/it/FileNameExtractorImplIT.java
+++ b/src/test/java/org/apache/sling/commons/contentdetection/internal/it/FileNameExtractorImplIT.java
@@ -24,11 +24,13 @@ import javax.inject.Inject;
 import org.apache.sling.commons.contentdetection.FileNameExtractor;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.ops4j.pax.exam.Option;
 import org.ops4j.pax.exam.junit.PaxExam;
+import org.ops4j.pax.exam.spi.reactors.ExamReactorStrategy;
+import org.ops4j.pax.exam.spi.reactors.PerClass;
 
 @RunWith(PaxExam.class)
-public class FileNameExtractorImplIT {
+@ExamReactorStrategy(PerClass.class)
+public class FileNameExtractorImplIT extends ContentdetectionTestSupport{
 
     @Inject
     private FileNameExtractor fileNameExtractor;
@@ -40,8 +42,4 @@ public class FileNameExtractorImplIT {
         assertEquals(expectedFileName, fileNameExtractor.extract(rawPath));
     }
 
-    @org.ops4j.pax.exam.Configuration
-    public Option[] config() {
-        return U.paxConfig();
-    }
 }
diff --git a/src/test/java/org/apache/sling/commons/contentdetection/internal/it/U.java b/src/test/java/org/apache/sling/commons/contentdetection/internal/it/U.java
deleted file mode 100644
index d92cb46..0000000
--- a/src/test/java/org/apache/sling/commons/contentdetection/internal/it/U.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * 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.commons.contentdetection.internal.it;
-
-import java.io.File;
-
-import org.apache.sling.paxexam.util.SlingPaxOptions;
-import org.ops4j.pax.exam.CoreOptions;
-import org.ops4j.pax.exam.Option;
-import org.ops4j.pax.exam.options.DefaultCompositeOption;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class U {
-    private static final Logger log = LoggerFactory.getLogger(U.class);
-    
-    public static Option[] paxConfig() {
-        final File thisProjectsBundle = new File(System.getProperty( "bundle.file.name", "BUNDLE_FILE_NOT_SET" ));
-        final String launchpadVersion = System.getProperty("sling.launchpad.version", "LAUNCHPAD_VERSION_NOT_SET");
-        log.info("Sling launchpad version: {}", launchpadVersion);
-        return new DefaultCompositeOption(
-                SlingPaxOptions.defaultLaunchpadOptions(launchpadVersion),
-                CoreOptions.provision(CoreOptions.bundle(thisProjectsBundle.toURI().toString()))
-                
-        ).getOptions();
-    }
-}

-- 
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.

[sling-org-apache-sling-commons-contentdetection] 15/39: SLING-4757 - Ignore new test, causes OutOfMemoryError on my box

Posted by ro...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit a0fbb56df75810d7a6a2b72c295d558b43879b22
Author: Bertrand Delacretaz <bd...@apache.org>
AuthorDate: Thu Jun 18 10:10:40 2015 +0000

    SLING-4757 - Ignore new test, causes OutOfMemoryError on my box
    
    git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1686172 13f79535-47bb-0310-9956-ffa450edef68
---
 .../internal/it/ContentAwareMimeTypeServiceImplIT.java         |  2 ++
 .../apache/sling/commons/contentdetection/internal/it/U.java   | 10 ++++++++--
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/src/test/java/org/apache/sling/commons/contentdetection/internal/it/ContentAwareMimeTypeServiceImplIT.java b/src/test/java/org/apache/sling/commons/contentdetection/internal/it/ContentAwareMimeTypeServiceImplIT.java
index 10f04cb..62d8450 100644
--- a/src/test/java/org/apache/sling/commons/contentdetection/internal/it/ContentAwareMimeTypeServiceImplIT.java
+++ b/src/test/java/org/apache/sling/commons/contentdetection/internal/it/ContentAwareMimeTypeServiceImplIT.java
@@ -29,6 +29,7 @@ import javax.inject.Inject;
 
 import org.apache.commons.io.IOUtils;
 import org.apache.sling.commons.contentdetection.ContentAwareMimeTypeService;
+import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.ops4j.pax.exam.Option;
@@ -62,6 +63,7 @@ public class ContentAwareMimeTypeServiceImplIT {
     }
 
     @Test
+    @Ignore("OutOfMemoryError: PermGen space??")
     public void testNoContentTampering() throws IOException{
         final String filename = "this-is-actually-a-wav-file.mp3";
         final InputStream s = new BufferedInputStream(getClass().getResourceAsStream("/" + filename));
diff --git a/src/test/java/org/apache/sling/commons/contentdetection/internal/it/U.java b/src/test/java/org/apache/sling/commons/contentdetection/internal/it/U.java
index a555177..901a3eb 100644
--- a/src/test/java/org/apache/sling/commons/contentdetection/internal/it/U.java
+++ b/src/test/java/org/apache/sling/commons/contentdetection/internal/it/U.java
@@ -18,21 +18,27 @@
 package org.apache.sling.commons.contentdetection.internal.it;
 
 import java.io.File;
+import java.util.Arrays;
 
 import org.apache.sling.paxexam.util.SlingPaxOptions;
 import org.ops4j.pax.exam.CoreOptions;
 import org.ops4j.pax.exam.Option;
 import org.ops4j.pax.exam.options.DefaultCompositeOption;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public class U {
+    private static final Logger log = LoggerFactory.getLogger(U.class);
+    
     public static Option[] paxConfig() {
         final File thisProjectsBundle = new File(System.getProperty( "bundle.file.name", "BUNDLE_FILE_NOT_SET" ));
         final String launchpadVersion = System.getProperty("sling.launchpad.version", "LAUNCHPAD_VERSION_NOT_SET");
-        final String paxVmOptions = System.getProperty("pax.vm.options", "PAX_VM_OPTIONS_NOT_SET");
+        final String [] paxVmOptions = System.getProperty("pax.vm.options", "PAX_VM_OPTIONS_NOT_SET").split(",");
+        log.info("Sling launchpad version: {}, VM options: {}", launchpadVersion, Arrays.asList(paxVmOptions));
         return new DefaultCompositeOption(
                 SlingPaxOptions.defaultLaunchpadOptions(launchpadVersion),
                 CoreOptions.provision(CoreOptions.bundle(thisProjectsBundle.toURI().toString())),
-                CoreOptions.vmOption(paxVmOptions)
+                CoreOptions.vmOptions(paxVmOptions)
                 
         ).getOptions();
     }

-- 
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.

[sling-org-apache-sling-commons-contentdetection] 01/39: SLING-4694 - new contentdetection module, contributed by Satya Deep Maheshwari, thanks!

Posted by ro...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 3d0eaf396d103503917896d17a9175e1e158f3a6
Author: Bertrand Delacretaz <bd...@apache.org>
AuthorDate: Wed May 27 14:14:03 2015 +0000

    SLING-4694 - new contentdetection module, contributed by Satya Deep Maheshwari, thanks!
    
    git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1682035 13f79535-47bb-0310-9956-ffa450edef68
---
 pom.xml                                            | 136 ++++++++++++
 .../ContentAwareMimeTypeService.java               |  42 ++++
 .../contentdetection/FileNameExtractor.java        |  31 +++
 .../internal/ContentAwareMimeTypeServiceImpl.java  |  75 +++++++
 .../internal/FileNameExtractorImpl.java            |  67 ++++++
 .../commons/contentdetection/package-info.java     |  34 +++
 .../ContentAwareMimeTypeServiceImplTest.java       |  34 +++
 src/main/resources/META-INF/LICENSE                | 234 +++++++++++++++++++++
 src/main/resources/META-INF/NOTICE                 |   8 +
 .../OSGI-INF/metatype/metatype.properties          |  31 +++
 .../ContentAwareMimeTypeServiceImplTest.java       | 112 ++++++++++
 .../internal/FileNameExtractorImplTest.java        |  33 +++
 12 files changed, 837 insertions(+)

diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..b3dd87b
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,136 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    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.
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.sling</groupId>
+        <artifactId>sling</artifactId>
+        <version>22</version>
+        <relativePath>../../../parent/pom.xml</relativePath>
+    </parent>
+
+    <groupId>org.apache.sling</groupId>
+    <artifactId>org.apache.sling.commons.contentdetection</artifactId>
+    <version>0.9.9-SNAPSHOT</version>
+    <packaging>bundle</packaging>
+
+    <name>Apache Sling Content Detection Support</name>
+    <description>Support for MIME type detection on the basis of contents.</description>
+
+    <properties>
+        <powermock.version>1.6.2</powermock.version>
+    </properties>
+
+    <dependencies>
+
+        <!-- OSGi Dependncies-->
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.core</artifactId>
+            <scope>provided</scope>
+        </dependency>
+
+        <!-- Sling Dependncies-->
+        <dependency>
+            <version>2.1.9-SNAPSHOT</version>
+            <groupId>org.apache.sling</groupId>
+            <artifactId>org.apache.sling.commons.mime</artifactId>
+            <scope>provided</scope>
+        </dependency>
+
+        <!-- Other Dependncies-->
+        <dependency>
+            <version>1.2</version>
+            <groupId>org.apache.tika</groupId>
+            <artifactId>tika-core</artifactId>
+            <scope>provided</scope>
+        </dependency>
+
+        <!-- Test Dependncies-->
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>4.12</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.sling</groupId>
+            <artifactId>org.apache.sling.junit.core</artifactId>
+            <version>1.0.10</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.easymock</groupId>
+            <artifactId>easymock</artifactId>
+            <version>3.3.1</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.powermock</groupId>
+            <artifactId>powermock-module-junit4</artifactId>
+            <version>${powermock.version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.powermock</groupId>
+            <artifactId>powermock-api-easymock</artifactId>
+            <version>${powermock.version}</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.felix</groupId>
+                <artifactId>maven-scr-plugin</artifactId>
+            </plugin>
+
+            <plugin>
+                <groupId>org.apache.felix</groupId>
+                <artifactId>maven-bundle-plugin</artifactId>
+                <extensions>true</extensions>
+                <configuration>
+                    <instructions>
+                        <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
+                        <Bundle-Version>${project.version}</Bundle-Version>
+                        <Export-Package>
+                            org.apache.sling.commons.contentdetection.serversidetests,
+                            org.apache.sling.commons.contentdetection
+                        </Export-Package>
+                        <Import-Package>
+                            *
+                        </Import-Package>
+                        <Sling-Test-Regexp>.*Test</Sling-Test-Regexp>
+                    </instructions>
+                </configuration>
+            </plugin>
+
+            <plugin>
+                <groupId>org.apache.rat</groupId>
+                <artifactId>apache-rat-plugin</artifactId>
+            </plugin>
+
+        </plugins>
+    </build>
+
+</project>
diff --git a/src/main/java/org/apache/sling/commons/contentdetection/ContentAwareMimeTypeService.java b/src/main/java/org/apache/sling/commons/contentdetection/ContentAwareMimeTypeService.java
new file mode 100644
index 0000000..37be925
--- /dev/null
+++ b/src/main/java/org/apache/sling/commons/contentdetection/ContentAwareMimeTypeService.java
@@ -0,0 +1,42 @@
+/*
+ * 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.commons.contentdetection;
+
+import org.apache.sling.commons.mime.MimeTypeService;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+/**
+ * The <code>ContentAwareMimeTypeService</code> interface extends the
+ * {@link org.apache.sling.commons.mime.MimeTypeService} API for services
+ * which can detect mime types based on the content passed to them.
+ * <p>
+ * The implementing services should rely on analyzing the content to ascertain
+ * the mime type. This interface may be implemented by bundles wishing to provide
+ * a mechanism to detect mime type based on the contents.
+ */
+
+public interface ContentAwareMimeTypeService extends MimeTypeService {
+    /**
+     * @param filename used if <code>content</code> is <code>null</code> or if
+     *                 this service does not support content-based detection
+     * @param content  optional stream that points to the content to analyze
+     * @return the mime type
+     */
+    String getMimeType(String filename, InputStream content) throws IOException;
+}
diff --git a/src/main/java/org/apache/sling/commons/contentdetection/FileNameExtractor.java b/src/main/java/org/apache/sling/commons/contentdetection/FileNameExtractor.java
new file mode 100644
index 0000000..93f405b
--- /dev/null
+++ b/src/main/java/org/apache/sling/commons/contentdetection/FileNameExtractor.java
@@ -0,0 +1,31 @@
+/*
+ * 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.commons.contentdetection;
+
+/**
+ * The <code>FileNameExtractor</code> interface provides an API for extracting
+ * a files name from the provided <code>rawName</code>.
+ */
+public interface FileNameExtractor {
+
+    /**
+     *
+     * @param rawName of the file which may be a file's path or url
+     * @return the extracted file name
+     */
+    public String extract(String rawName);
+}
diff --git a/src/main/java/org/apache/sling/commons/contentdetection/internal/ContentAwareMimeTypeServiceImpl.java b/src/main/java/org/apache/sling/commons/contentdetection/internal/ContentAwareMimeTypeServiceImpl.java
new file mode 100644
index 0000000..81b9e4a
--- /dev/null
+++ b/src/main/java/org/apache/sling/commons/contentdetection/internal/ContentAwareMimeTypeServiceImpl.java
@@ -0,0 +1,75 @@
+/*
+ * 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.commons.contentdetection.internal;
+
+
+import org.apache.felix.scr.annotations.*;
+import org.apache.sling.commons.contentdetection.ContentAwareMimeTypeService;
+import org.apache.sling.commons.mime.MimeTypeService;
+import org.apache.tika.detect.Detector;
+import org.apache.tika.io.TikaInputStream;
+import org.apache.tika.metadata.Metadata;
+import org.apache.tika.mime.MediaType;
+import org.osgi.framework.Constants;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+@Component(label = "%contentawaremime.service.name", description = "%contentawaremime.service.description")
+@Service(value = {ContentAwareMimeTypeService.class})
+
+@Properties({
+        @Property(name = Constants.SERVICE_DESCRIPTION, value = "Apache Sling Content Aware MIME Type Service"),
+        @Property(name = "detection.mode", value = "tika") }
+)
+public class ContentAwareMimeTypeServiceImpl implements  ContentAwareMimeTypeService {
+
+    @Reference
+    Detector detector;
+
+    @Reference
+    MimeTypeService mimeTypeService;
+
+    public String getMimeType(String filename, InputStream content) throws IOException {
+        if(content == null) {
+            return mimeTypeService.getMimeType(filename);
+        }
+        TikaInputStream stream = TikaInputStream.get(content);
+        Metadata metadata = new Metadata();
+        metadata.set(Metadata.RESOURCE_NAME_KEY, filename);
+        MediaType mediaType = detector.detect(stream, metadata);
+        return mediaType.toString();
+    }
+
+    public String getMimeType(String name) {
+        return mimeTypeService.getMimeType(name);
+    }
+
+    public String getExtension(String mimeType) {
+        return mimeTypeService.getExtension(mimeType);
+    }
+
+    public void registerMimeType(String mimeType, String... extensions) {
+        mimeTypeService.registerMimeType(mimeType, extensions);
+    }
+
+    public void registerMimeType(InputStream mimeTabStream) throws IOException {
+        mimeTypeService.registerMimeType(mimeTabStream);
+    }
+}
diff --git a/src/main/java/org/apache/sling/commons/contentdetection/internal/FileNameExtractorImpl.java b/src/main/java/org/apache/sling/commons/contentdetection/internal/FileNameExtractorImpl.java
new file mode 100644
index 0000000..289f777
--- /dev/null
+++ b/src/main/java/org/apache/sling/commons/contentdetection/internal/FileNameExtractorImpl.java
@@ -0,0 +1,67 @@
+/*
+ * 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.commons.contentdetection.internal;
+
+import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.Property;
+import org.apache.felix.scr.annotations.Service;
+import org.apache.sling.commons.contentdetection.FileNameExtractor;
+import org.osgi.framework.Constants;
+
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+
+@Component(metatype = true, label = "%filenameextractor.service.name", description = "%filenameextractor.service.description")
+@Service(FileNameExtractor.class)
+@Property(name = Constants.SERVICE_DESCRIPTION, value = "Apache Sling Filename Extractor Service")
+public class FileNameExtractorImpl implements FileNameExtractor {
+    public String extract(String name) {
+        // If the name is a URL, skip the trailing query and fragment parts
+        int question = name.indexOf('?');
+        if (question != -1) {
+            name = name.substring(0, question);
+        }
+        int hash = name.indexOf('#');
+        if (hash != -1) {
+            name = name.substring(0, hash);
+        }
+
+        // If the name is a URL or a path, skip all but the last component
+        int slash = name.lastIndexOf('/');
+        if (slash != -1) {
+            name = name.substring(slash + 1);
+        }
+        int backslash = name.lastIndexOf('\\');
+        if (backslash != -1) {
+            name = name.substring(backslash + 1);
+        }
+
+        // Decode any potential URL encoding
+        int percent = name.indexOf('%');
+        if (percent != -1) {
+            try {
+                name = URLDecoder.decode(name, "UTF-8");
+            } catch (UnsupportedEncodingException e) {
+                throw new AssertionError("UTF-8 not supported");
+            }
+        }
+
+        // Skip any leading or trailing whitespace
+        name = name.trim();
+        return name;
+    }
+}
diff --git a/src/main/java/org/apache/sling/commons/contentdetection/package-info.java b/src/main/java/org/apache/sling/commons/contentdetection/package-info.java
new file mode 100644
index 0000000..0612384
--- /dev/null
+++ b/src/main/java/org/apache/sling/commons/contentdetection/package-info.java
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+
+/**
+ * Extends the {@link org.apache.sling.commons.mime.MimeTypeService}
+ * service used by client to resolve MIME type information based on content as well as the
+ * {@link org.apache.sling.commons.contentdetection.FileNameExtractor} service
+ * for extracting the file name from a url or path
+ *
+ * @version 1.0.0
+ */
+@Version("1.0.0")
+@Export(optional = "provide:=true")
+package org.apache.sling.commons.contentdetection;
+
+import aQute.bnd.annotation.Export;
+import aQute.bnd.annotation.Version;
+
diff --git a/src/main/java/org/apache/sling/commons/contentdetection/serversidetests/ContentAwareMimeTypeServiceImplTest.java b/src/main/java/org/apache/sling/commons/contentdetection/serversidetests/ContentAwareMimeTypeServiceImplTest.java
new file mode 100644
index 0000000..1a48b5a
--- /dev/null
+++ b/src/main/java/org/apache/sling/commons/contentdetection/serversidetests/ContentAwareMimeTypeServiceImplTest.java
@@ -0,0 +1,34 @@
+/*
+ * 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.commons.contentdetection.serversidetests;
+
+import org.apache.sling.commons.contentdetection.ContentAwareMimeTypeService;
+import org.apache.sling.junit.annotations.SlingAnnotationsTestRunner;
+import org.apache.sling.junit.annotations.TestReference;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+//Right now this is just a placeholder for future serverside tests.
+//Current test coverage is in plain UTs
+@RunWith(SlingAnnotationsTestRunner.class)
+public class ContentAwareMimeTypeServiceImplTest {
+
+    @TestReference
+    ContentAwareMimeTypeService contentAwareMimeTypeService;
+
+}
diff --git a/src/main/resources/META-INF/LICENSE b/src/main/resources/META-INF/LICENSE
new file mode 100644
index 0000000..ef13dba
--- /dev/null
+++ b/src/main/resources/META-INF/LICENSE
@@ -0,0 +1,234 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed 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.
+
+
+APACHE SLING SUBCOMPONENTS:
+
+Apache Sling includes subcomponents with separate copyright notices and
+license terms. Your use of these subcomponents is subject to the terms
+and conditions of the following licenses.
+
+JQuery TreeTable plugin
+
+    Copyright (c) 2009 Ludo van den Boom
+    
+    Permission is hereby granted, free of charge, to any person
+    obtaining a copy of this software and associated documentation
+    files (the "Software"), to deal in the Software without
+    restriction, including without limitation the rights to use,
+    copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the
+    Software is furnished to do so, subject to the following
+    conditions:
+    
+    The above copyright notice and this permission notice shall be
+    included in all copies or substantial portions of the Software.
+    
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+    EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+    OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+    NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+    HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+    WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+    FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+    OTHER DEALINGS IN THE SOFTWARE.
diff --git a/src/main/resources/META-INF/NOTICE b/src/main/resources/META-INF/NOTICE
new file mode 100644
index 0000000..921deb8
--- /dev/null
+++ b/src/main/resources/META-INF/NOTICE
@@ -0,0 +1,8 @@
+Apache Sling content detection support
+Copyright 2008-2009 The Apache Software Foundation
+
+This product includes software developed at
+The Apache Software Foundation (http://www.apache.org/).
+
+Apache Sling is based on source code originally developed
+by Day Software (http://www.day.com/).
diff --git a/src/main/resources/OSGI-INF/metatype/metatype.properties b/src/main/resources/OSGI-INF/metatype/metatype.properties
new file mode 100644
index 0000000..5572b18
--- /dev/null
+++ b/src/main/resources/OSGI-INF/metatype/metatype.properties
@@ -0,0 +1,31 @@
+#
+#  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.
+#
+
+
+#
+# This file contains localization strings for configuration labels and
+# descriptions as used in the metatype.xml descriptor generated by the
+# the Felix SCR plugin
+
+contentawaremime.service.name = Apache Sling Content Aware MIME Type Service
+contentawaremime.service.description = The Sling Content Aware MIME Type Service provides support for \
+determining the MIME type based on filename and its contents.
+filenameextractor.service.name = Apache Sling Filename extractor Service
+filenameextractor.service.description = The Sling Filename extractor Service provides support for \
+extracting the file's name from a url or path
\ No newline at end of file
diff --git a/src/test/java/org/apache/sling/commons/contentdetection/internal/ContentAwareMimeTypeServiceImplTest.java b/src/test/java/org/apache/sling/commons/contentdetection/internal/ContentAwareMimeTypeServiceImplTest.java
new file mode 100644
index 0000000..ece1156
--- /dev/null
+++ b/src/test/java/org/apache/sling/commons/contentdetection/internal/ContentAwareMimeTypeServiceImplTest.java
@@ -0,0 +1,112 @@
+/*
+ * 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.commons.contentdetection.internal;
+
+import org.apache.sling.commons.mime.MimeTypeService;
+import org.apache.tika.detect.Detector;
+import org.apache.tika.io.TikaInputStream;
+import org.apache.tika.metadata.Metadata;
+import org.apache.tika.mime.MediaType;
+import org.easymock.EasyMock;
+import org.easymock.EasyMockSupport;
+import org.easymock.TestSubject;
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.powermock.api.easymock.PowerMock;
+import org.powermock.core.classloader.annotations.PrepareForTest;
+import org.powermock.modules.junit4.PowerMockRunner;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+@RunWith(PowerMockRunner.class)
+@PrepareForTest(TikaInputStream.class)
+public class ContentAwareMimeTypeServiceImplTest extends EasyMockSupport {
+
+    private Detector mockDetector = EasyMock.createMock(Detector.class);
+
+    private Metadata mockMetadata = EasyMock.createMock(Metadata.class);
+
+    private MimeTypeService mockMimeTypeService = EasyMock.createMock(MimeTypeService.class);
+
+    @TestSubject
+    private ContentAwareMimeTypeServiceImpl contentAwareMimeTypeService = new ContentAwareMimeTypeServiceImpl();
+
+    @Before
+    public void setUp() throws IOException {
+        contentAwareMimeTypeService.detector = mockDetector;
+        contentAwareMimeTypeService.mimeTypeService = mockMimeTypeService;
+    }
+
+    @Test
+    public void testGetMimeType() throws IOException {
+
+        //Initializations
+        String filename = "test.txt";
+        Metadata metadata = new Metadata();
+        metadata.set(Metadata.RESOURCE_NAME_KEY, filename);
+        byte[] byteArray = new byte[]{};
+        InputStream content = new ByteArrayInputStream(byteArray);
+        TikaInputStream stream = TikaInputStream.get(content);
+        PowerMock.mockStatic(TikaInputStream.class);
+
+        //Record Expectations
+        EasyMock.expect(TikaInputStream.get(content)).andReturn(stream).once();
+        EasyMock.expect(mockDetector.detect(stream, metadata)).andReturn(MediaType.TEXT_PLAIN).once();
+
+        //Getting ready for run
+        PowerMock.replay(TikaInputStream.class);
+        EasyMock.replay(mockDetector);
+
+        //The test run
+        String mimeType = contentAwareMimeTypeService.getMimeType(filename, content);
+
+        //Verification of expectations
+        Assert.assertEquals(MediaType.TEXT_PLAIN.toString(), mimeType);
+        EasyMock.verify(mockDetector);
+        PowerMock.verify(TikaInputStream.class);
+    }
+
+    @Test
+    public void testGetMimeTypeWithNullContent() throws IOException {
+        //Initializations
+        String filename = "test.txt";
+        InputStream content = null;
+
+        //Record Expectations
+        EasyMock.expect(mockMimeTypeService.getMimeType(filename)).andReturn(MediaType.TEXT_PLAIN.getType()).once();
+
+        //Getting ready for run
+        EasyMock.replay(mockMimeTypeService);
+
+        //The test run
+        String mimeType = contentAwareMimeTypeService.getMimeType(filename, content);
+
+        //Verification of expectations
+        Assert.assertEquals(MediaType.TEXT_PLAIN.getType(), mimeType);
+        EasyMock.verify(mockMimeTypeService);
+    }
+
+    @After
+    public void tearDown() {
+    }
+}
diff --git a/src/test/java/org/apache/sling/commons/contentdetection/internal/FileNameExtractorImplTest.java b/src/test/java/org/apache/sling/commons/contentdetection/internal/FileNameExtractorImplTest.java
new file mode 100644
index 0000000..c00cb5a
--- /dev/null
+++ b/src/test/java/org/apache/sling/commons/contentdetection/internal/FileNameExtractorImplTest.java
@@ -0,0 +1,33 @@
+/*
+ * 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.commons.contentdetection.internal;
+
+import junit.framework.TestCase;
+import org.apache.sling.commons.contentdetection.FileNameExtractor;
+import org.junit.Assert;
+
+public class FileNameExtractorImplTest extends TestCase {
+
+    FileNameExtractor fileNameExtractor = new FileNameExtractorImpl();
+
+    public void testExtract() throws Exception {
+        String rawPath = "http://midches.com/images/uploads/default/demo.jpg#anchor?query=test";
+        String expectedFileName = "demo.jpg";
+        Assert.assertEquals(expectedFileName, fileNameExtractor.extract(rawPath));
+    }
+}
\ No newline at end of file

-- 
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.

[sling-org-apache-sling-commons-contentdetection] 12/39: SLING-4757 - remove Easymock, caused trouble with jacoco plugin coverage merging

Posted by ro...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 269ffcb7b000a2d979cd852f5d4da1f3c6a4b00f
Author: Bertrand Delacretaz <bd...@apache.org>
AuthorDate: Mon Jun 1 15:26:04 2015 +0000

    SLING-4757 - remove Easymock, caused trouble with jacoco plugin coverage merging
    
    git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1682931 13f79535-47bb-0310-9956-ffa450edef68
---
 pom.xml                                            |  21 +--
 .../ContentAwareMimeTypeServiceImplTest.java       | 180 +++++++--------------
 2 files changed, 60 insertions(+), 141 deletions(-)

diff --git a/pom.xml b/pom.xml
index ebb4d85..20801d3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -24,7 +24,7 @@
     <parent>
         <groupId>org.apache.sling</groupId>
         <artifactId>sling</artifactId>
-        <version>22</version>
+        <version>23-SNAPSHOT</version>
     </parent>
 
     <artifactId>org.apache.sling.commons.contentdetection</artifactId>
@@ -84,22 +84,9 @@
             <scope>provided</scope>
         </dependency>
         <dependency>
-            <groupId>org.easymock</groupId>
-            <artifactId>easymock</artifactId>
-            <version>3.3.1</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.powermock</groupId>
-            <artifactId>powermock-module-junit4</artifactId>
-            <version>${powermock.version}</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.powermock</groupId>
-            <artifactId>powermock-api-easymock</artifactId>
-            <version>${powermock.version}</version>
-            <scope>test</scope>
+            <groupId>junit-addons</groupId>
+            <artifactId>junit-addons</artifactId>
+            <version>1.4</version>
         </dependency>
         <dependency>
             <groupId>org.apache.sling</groupId>
diff --git a/src/test/java/org/apache/sling/commons/contentdetection/internal/ContentAwareMimeTypeServiceImplTest.java b/src/test/java/org/apache/sling/commons/contentdetection/internal/ContentAwareMimeTypeServiceImplTest.java
index 6a31bb1..b00194b 100644
--- a/src/test/java/org/apache/sling/commons/contentdetection/internal/ContentAwareMimeTypeServiceImplTest.java
+++ b/src/test/java/org/apache/sling/commons/contentdetection/internal/ContentAwareMimeTypeServiceImplTest.java
@@ -17,156 +17,88 @@
 
 package org.apache.sling.commons.contentdetection.internal;
 
-import org.apache.sling.commons.mime.MimeTypeService;
-import org.apache.tika.detect.Detector;
-import org.apache.tika.io.TikaInputStream;
-import org.apache.tika.metadata.Metadata;
-import org.apache.tika.mime.MediaType;
-import org.easymock.EasyMock;
-import org.easymock.EasyMockSupport;
-import org.easymock.TestSubject;
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.powermock.api.easymock.PowerMock;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
-
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 
-@RunWith(PowerMockRunner.class)
-@PrepareForTest(TikaInputStream.class)
-public class ContentAwareMimeTypeServiceImplTest extends EasyMockSupport {
+import junitx.util.PrivateAccessor;
 
-    private Detector mockDetector = EasyMock.createMock(Detector.class);
-
-    private MimeTypeService mockMimeTypeService = EasyMock.createMock(MimeTypeService.class);
-
-    @TestSubject
-    private ContentAwareMimeTypeServiceImpl contentAwareMimeTypeService = new ContentAwareMimeTypeServiceImpl();
+import org.apache.sling.commons.mime.MimeTypeService;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
 
-    @Before
-    public void setUp() throws IOException {
-        contentAwareMimeTypeService.detector = mockDetector;
-        contentAwareMimeTypeService.mimeTypeService = mockMimeTypeService;
-    }
+public class ContentAwareMimeTypeServiceImplTest {
 
-    @Test
-    public void testGetMimeType() throws IOException {
+    private ContentAwareMimeTypeServiceImpl contentAwareMimeTypeService = null;
+    private int counterA;
+    private int counterB;
 
-        //Initializations
-        String filename = "test.txt";
-        Metadata metadata = new Metadata();
-        metadata.set(Metadata.RESOURCE_NAME_KEY, filename);
-        byte[] byteArray = new byte[]{};
-        InputStream content = new ByteArrayInputStream(byteArray);
-        TikaInputStream stream = TikaInputStream.get(content);
-        PowerMock.mockStatic(TikaInputStream.class);
+    final MimeTypeService mimeTypeService = new MimeTypeService() {
 
-        //Record Expectations
-        EasyMock.expect(TikaInputStream.get(content)).andReturn(stream).once();
-        EasyMock.expect(mockDetector.detect(stream, metadata)).andReturn(MediaType.TEXT_PLAIN).once();
+        @Override
+        public String getMimeType(String name) {
+            return "MT_" + name;
+        }
 
-        //Getting ready for run
-        PowerMock.replay(TikaInputStream.class);
-        EasyMock.replay(mockDetector);
+        @Override
+        public String getExtension(String mimeType) {
+            return "EXT_" + mimeType;
+        }
 
-        //The test run
-        String mimeType = contentAwareMimeTypeService.getMimeType(filename, content);
+        @Override
+        public void registerMimeType(String mimeType, String... extensions) {
+            counterA++;
+        }
 
-        //Verification of expectations
-        Assert.assertEquals(MediaType.TEXT_PLAIN.toString(), mimeType);
-        EasyMock.verify(mockDetector);
-        PowerMock.verify(TikaInputStream.class);
+        @Override
+        public void registerMimeType(InputStream mimeTabStream) throws IOException {
+            counterB++;
+        }
+    };
+    
+    @Before
+    public void setup() throws NoSuchFieldException {
+        contentAwareMimeTypeService = new ContentAwareMimeTypeServiceImpl();
+        PrivateAccessor.setField(contentAwareMimeTypeService, "mimeTypeService", mimeTypeService);
     }
-
+    
     @Test
     public void testGetMimeTypeByString(){
-        String mimeTypeName = "testName";
-        String mimetype = "mimeType";
-
-        EasyMock.expect(mockMimeTypeService.getMimeType(mimeTypeName)).andReturn(mimetype);
-        EasyMock.replay(mockMimeTypeService);
-
-        String another = contentAwareMimeTypeService.getMimeType(mimeTypeName);
-        Assert.assertEquals(mimetype, another);
-        EasyMock.verify(mockMimeTypeService);
+        String mimeTypeName = "testName.txt";
+        final String mimeType = contentAwareMimeTypeService.getMimeType(mimeTypeName);
+        Assert.assertEquals("MT_testName.txt", mimeType);
     }
-
+    
     @Test
-    public void testGetExtension(){
-        String mimeTypeName = "testName";
-        String extension = "java";
-
-        EasyMock.expect(mockMimeTypeService.getExtension(mimeTypeName)).andReturn(extension);
-        EasyMock.replay(mockMimeTypeService);
-
-        String another = contentAwareMimeTypeService.getExtension(mimeTypeName);
-        Assert.assertEquals(extension, another);
-        EasyMock.verify(mockMimeTypeService);
+    public void testGetExtension() {
+        final String ext = contentAwareMimeTypeService.getExtension("foo");
+        Assert.assertEquals("EXT_foo", ext);
     }
 
     @Test
     public void testGetMimeTypeWithNullContent() throws IOException {
-        //Initializations
-        String filename = "test.txt";
-        InputStream content = null;
-
-        //Record Expectations
-        EasyMock.expect(mockMimeTypeService.getMimeType(filename)).andReturn(MediaType.TEXT_PLAIN.getType()).once();
-
-        //Getting ready for run
-        EasyMock.replay(mockMimeTypeService);
-
-        //The test run
-        String mimeType = contentAwareMimeTypeService.getMimeType(filename, content);
-
-        //Verification of expectations
-        Assert.assertEquals(MediaType.TEXT_PLAIN.getType(), mimeType);
-        EasyMock.verify(mockMimeTypeService);
+        final String filename = "test.txt";
+        final String mimeType = contentAwareMimeTypeService.getMimeType(filename, null);
+        Assert.assertEquals("MT_test.txt", mimeType);
     }
 
     @Test
-    public void testRegisterNewMymeType() {
-        final String mimeTypeName = "test";
-        final String[] mimeTypeExtensions = new String[]{"pict", "apt", "z"};
-
-        /* The only thing ContentAwareMimeTypeServiceImpl#registerMimeType(String name, String... ext)
-         * method does is calls MimeTypeService registerMimeType(String name, String[] ext) method.
-         * So we Mock it and expect that it will be called.
-         */
-        mockMimeTypeService.registerMimeType(mimeTypeName, mimeTypeExtensions);
-        EasyMock.expectLastCall();
-        EasyMock.replay(mockMimeTypeService);
-
-        contentAwareMimeTypeService.registerMimeType(mimeTypeName, mimeTypeExtensions);
-
-        EasyMock.verify(mockMimeTypeService);
+    public void testRegisterMimeTypeIsDelegatedA() {
+        final int before = counterA;
+        contentAwareMimeTypeService.registerMimeType("foo", new String[] {});
+        Assert.assertEquals("Expecting 1 call to registerMimeType(A)", before + 1, counterA);
     }
 
     @Test
-    public void testRegisterMimeType() throws IOException {
-        byte[] byteArray = new byte[]{};
-        InputStream content = new ByteArrayInputStream(byteArray);
-
-        /* The only thing ContentAwareMimeTypeServiceImpl#registerMimeType(InputStream i)
-         * method does is calls MimeTypeService#registerMimeType(InputStream i) method.
-         * So we Mock it and expect that it will be called.
-         */
-        mockMimeTypeService.registerMimeType(content);
-        EasyMock.expectLastCall();
-        EasyMock.replay(mockMimeTypeService);
-
-        contentAwareMimeTypeService.registerMimeType(content);
-
-        EasyMock.verify(mockMimeTypeService);
-    }
-
-    @After
-    public void tearDown() {
+    public void testRegisterMimeTypeIsDelegatedB() throws IOException {
+        final int before = counterB;
+        final InputStream is = new ByteArrayInputStream("x".getBytes());
+        try {
+            contentAwareMimeTypeService.registerMimeType(is);
+        } finally {
+            is.close();
+        }
+        Assert.assertEquals("Expecting 1 call to registerMimeType(B)", before + 1, counterB);
     }
 }
\ No newline at end of file

-- 
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.

[sling-org-apache-sling-commons-contentdetection] 11/39: SLING-4757 - remove metatype.properties

Posted by ro...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit c119c12224a555e7246d519352edcf278c479f85
Author: Bertrand Delacretaz <bd...@apache.org>
AuthorDate: Mon Jun 1 13:52:04 2015 +0000

    SLING-4757 - remove metatype.properties
    
    git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1682903 13f79535-47bb-0310-9956-ffa450edef68
---
 pom.xml                                            | 10 ++++++-
 .../internal/ContentAwareMimeTypeServiceImpl.java  |  4 +--
 .../internal/FileNameExtractorImpl.java            |  8 ++++--
 .../OSGI-INF/metatype/metatype.properties          | 31 ----------------------
 .../commons/contentdetection/internal/it/U.java    |  5 +++-
 5 files changed, 21 insertions(+), 37 deletions(-)

diff --git a/pom.xml b/pom.xml
index 297ce31..ebb4d85 100644
--- a/pom.xml
+++ b/pom.xml
@@ -35,13 +35,14 @@
     <description>Content-based MIME type detection</description>
 
     <properties>
-        <exam.version>3.4.0</exam.version>
+        <exam.version>3.5.0</exam.version>
         <url.version>1.5.2</url.version>
         <org.ops4j.pax.logging.DefaultServiceLog.level>INFO</org.ops4j.pax.logging.DefaultServiceLog.level>
         <bundle.file.name>${basedir}/target/${project.build.finalName}.jar</bundle.file.name>
         <sling.java.version>6</sling.java.version>
         <sling.launchpad.version>7</sling.launchpad.version>
         <powermock.version>1.6.2</powermock.version>
+        <pax.vm.options>-Xmx256M</pax.vm.options>
     </properties>
 
     <dependencies>
@@ -160,6 +161,12 @@
             <plugin>
                 <groupId>org.apache.rat</groupId>
                 <artifactId>apache-rat-plugin</artifactId>
+                <configuration>
+                    <excludes>
+                        <exclude>derby.log</exclude>
+                        <exclude>jackrabbit/**</exclude>
+                    </excludes>
+                </configuration>
             </plugin>
 
             <plugin>
@@ -180,6 +187,7 @@
                         <java.protocol.handler.pkgs>org.ops4j.pax.url</java.protocol.handler.pkgs>
                         <bundle.file.name>${bundle.file.name}</bundle.file.name>
                         <sling.launchpad.version>${sling.launchpad.version}</sling.launchpad.version>
+                        <pax.vm.options>${pax.vm.options}</pax.vm.options>
                     </systemPropertyVariables>
                     <classpathDependencyExcludes>
                         <!-- The osgi.org dependencies cause trouble with pax exam -->
diff --git a/src/main/java/org/apache/sling/commons/contentdetection/internal/ContentAwareMimeTypeServiceImpl.java b/src/main/java/org/apache/sling/commons/contentdetection/internal/ContentAwareMimeTypeServiceImpl.java
index 81b9e4a..32e29e7 100644
--- a/src/main/java/org/apache/sling/commons/contentdetection/internal/ContentAwareMimeTypeServiceImpl.java
+++ b/src/main/java/org/apache/sling/commons/contentdetection/internal/ContentAwareMimeTypeServiceImpl.java
@@ -31,11 +31,11 @@ import org.osgi.framework.Constants;
 import java.io.IOException;
 import java.io.InputStream;
 
-@Component(label = "%contentawaremime.service.name", description = "%contentawaremime.service.description")
+@Component
 @Service(value = {ContentAwareMimeTypeService.class})
-
 @Properties({
         @Property(name = Constants.SERVICE_DESCRIPTION, value = "Apache Sling Content Aware MIME Type Service"),
+        @Property(name = Constants.SERVICE_VENDOR, value = "The Apache Software Foundation"),
         @Property(name = "detection.mode", value = "tika") }
 )
 public class ContentAwareMimeTypeServiceImpl implements  ContentAwareMimeTypeService {
diff --git a/src/main/java/org/apache/sling/commons/contentdetection/internal/FileNameExtractorImpl.java b/src/main/java/org/apache/sling/commons/contentdetection/internal/FileNameExtractorImpl.java
index f4c3eda..23d9c78 100644
--- a/src/main/java/org/apache/sling/commons/contentdetection/internal/FileNameExtractorImpl.java
+++ b/src/main/java/org/apache/sling/commons/contentdetection/internal/FileNameExtractorImpl.java
@@ -20,14 +20,18 @@ import java.io.UnsupportedEncodingException;
 import java.net.URLDecoder;
 
 import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.Properties;
 import org.apache.felix.scr.annotations.Property;
 import org.apache.felix.scr.annotations.Service;
 import org.apache.sling.commons.contentdetection.FileNameExtractor;
 import org.osgi.framework.Constants;
 
-@Component(metatype = true, label = "%filenameextractor.service.name", description = "%filenameextractor.service.description")
+@Component
 @Service(FileNameExtractor.class)
-@Property(name = Constants.SERVICE_DESCRIPTION, value = "Apache Sling Filename Extractor Service")
+@Properties({
+    @Property(name = Constants.SERVICE_DESCRIPTION, value = "Apache Sling Filename Extractor Service"),
+    @Property(name = Constants.SERVICE_VENDOR, value = "The Apache Software Foundation"),
+})
 public class FileNameExtractorImpl implements FileNameExtractor {
     public String extract(String name) {
         // If the name is a URL, skip the trailing query and fragment parts
diff --git a/src/main/resources/OSGI-INF/metatype/metatype.properties b/src/main/resources/OSGI-INF/metatype/metatype.properties
deleted file mode 100644
index 5572b18..0000000
--- a/src/main/resources/OSGI-INF/metatype/metatype.properties
+++ /dev/null
@@ -1,31 +0,0 @@
-#
-#  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.
-#
-
-
-#
-# This file contains localization strings for configuration labels and
-# descriptions as used in the metatype.xml descriptor generated by the
-# the Felix SCR plugin
-
-contentawaremime.service.name = Apache Sling Content Aware MIME Type Service
-contentawaremime.service.description = The Sling Content Aware MIME Type Service provides support for \
-determining the MIME type based on filename and its contents.
-filenameextractor.service.name = Apache Sling Filename extractor Service
-filenameextractor.service.description = The Sling Filename extractor Service provides support for \
-extracting the file's name from a url or path
\ No newline at end of file
diff --git a/src/test/java/org/apache/sling/commons/contentdetection/internal/it/U.java b/src/test/java/org/apache/sling/commons/contentdetection/internal/it/U.java
index 33ecd38..a555177 100644
--- a/src/test/java/org/apache/sling/commons/contentdetection/internal/it/U.java
+++ b/src/test/java/org/apache/sling/commons/contentdetection/internal/it/U.java
@@ -28,9 +28,12 @@ public class U {
     public static Option[] paxConfig() {
         final File thisProjectsBundle = new File(System.getProperty( "bundle.file.name", "BUNDLE_FILE_NOT_SET" ));
         final String launchpadVersion = System.getProperty("sling.launchpad.version", "LAUNCHPAD_VERSION_NOT_SET");
+        final String paxVmOptions = System.getProperty("pax.vm.options", "PAX_VM_OPTIONS_NOT_SET");
         return new DefaultCompositeOption(
                 SlingPaxOptions.defaultLaunchpadOptions(launchpadVersion),
-                CoreOptions.provision(CoreOptions.bundle(thisProjectsBundle.toURI().toString()))
+                CoreOptions.provision(CoreOptions.bundle(thisProjectsBundle.toURI().toString())),
+                CoreOptions.vmOption(paxVmOptions)
+                
         ).getOptions();
     }
 }

-- 
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.

[sling-org-apache-sling-commons-contentdetection] 02/39: SLING-4694 - remove files which are not needed

Posted by ro...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit afe02024969df8033f93617496f5c7f7b4caf0b8
Author: Bertrand Delacretaz <bd...@apache.org>
AuthorDate: Wed May 27 14:16:49 2015 +0000

    SLING-4694 - remove files which are not needed
    
    git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1682037 13f79535-47bb-0310-9956-ffa450edef68
---
 .../ContentAwareMimeTypeServiceImplTest.java       |  34 ---
 src/main/resources/META-INF/LICENSE                | 234 ---------------------
 src/main/resources/META-INF/NOTICE                 |   8 -
 3 files changed, 276 deletions(-)

diff --git a/src/main/java/org/apache/sling/commons/contentdetection/serversidetests/ContentAwareMimeTypeServiceImplTest.java b/src/main/java/org/apache/sling/commons/contentdetection/serversidetests/ContentAwareMimeTypeServiceImplTest.java
deleted file mode 100644
index 1a48b5a..0000000
--- a/src/main/java/org/apache/sling/commons/contentdetection/serversidetests/ContentAwareMimeTypeServiceImplTest.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * 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.commons.contentdetection.serversidetests;
-
-import org.apache.sling.commons.contentdetection.ContentAwareMimeTypeService;
-import org.apache.sling.junit.annotations.SlingAnnotationsTestRunner;
-import org.apache.sling.junit.annotations.TestReference;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-//Right now this is just a placeholder for future serverside tests.
-//Current test coverage is in plain UTs
-@RunWith(SlingAnnotationsTestRunner.class)
-public class ContentAwareMimeTypeServiceImplTest {
-
-    @TestReference
-    ContentAwareMimeTypeService contentAwareMimeTypeService;
-
-}
diff --git a/src/main/resources/META-INF/LICENSE b/src/main/resources/META-INF/LICENSE
deleted file mode 100644
index ef13dba..0000000
--- a/src/main/resources/META-INF/LICENSE
+++ /dev/null
@@ -1,234 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed 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.
-
-
-APACHE SLING SUBCOMPONENTS:
-
-Apache Sling includes subcomponents with separate copyright notices and
-license terms. Your use of these subcomponents is subject to the terms
-and conditions of the following licenses.
-
-JQuery TreeTable plugin
-
-    Copyright (c) 2009 Ludo van den Boom
-    
-    Permission is hereby granted, free of charge, to any person
-    obtaining a copy of this software and associated documentation
-    files (the "Software"), to deal in the Software without
-    restriction, including without limitation the rights to use,
-    copy, modify, merge, publish, distribute, sublicense, and/or sell
-    copies of the Software, and to permit persons to whom the
-    Software is furnished to do so, subject to the following
-    conditions:
-    
-    The above copyright notice and this permission notice shall be
-    included in all copies or substantial portions of the Software.
-    
-    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-    EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-    OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-    NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-    HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-    WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-    FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-    OTHER DEALINGS IN THE SOFTWARE.
diff --git a/src/main/resources/META-INF/NOTICE b/src/main/resources/META-INF/NOTICE
deleted file mode 100644
index 921deb8..0000000
--- a/src/main/resources/META-INF/NOTICE
+++ /dev/null
@@ -1,8 +0,0 @@
-Apache Sling content detection support
-Copyright 2008-2009 The Apache Software Foundation
-
-This product includes software developed at
-The Apache Software Foundation (http://www.apache.org/).
-
-Apache Sling is based on source code originally developed
-by Day Software (http://www.day.com/).

-- 
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.

[sling-org-apache-sling-commons-contentdetection] 18/39: SLING-4757 - be more explicit about IllegalArgumentException

Posted by ro...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit fd5d370bedb0e5d19b2a82a0820135e93c80aa0c
Author: Bertrand Delacretaz <bd...@apache.org>
AuthorDate: Thu Jun 18 11:57:10 2015 +0000

    SLING-4757 - be more explicit about IllegalArgumentException
    
    git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1686196 13f79535-47bb-0310-9956-ffa450edef68
---
 .../sling/commons/contentdetection/ContentAwareMimeTypeService.java | 6 ++++--
 .../contentdetection/internal/ContentAwareMimeTypeServiceImpl.java  | 2 +-
 2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/src/main/java/org/apache/sling/commons/contentdetection/ContentAwareMimeTypeService.java b/src/main/java/org/apache/sling/commons/contentdetection/ContentAwareMimeTypeService.java
index 5999dc1..3ccd6ae 100644
--- a/src/main/java/org/apache/sling/commons/contentdetection/ContentAwareMimeTypeService.java
+++ b/src/main/java/org/apache/sling/commons/contentdetection/ContentAwareMimeTypeService.java
@@ -35,9 +35,11 @@ public interface ContentAwareMimeTypeService extends MimeTypeService {
     /**
      * @param filename Used if <code>content</code> is <code>null</code> or if
      *                 this service does not support content-based detection
-     * @param content  Optional stream that points to the content to analyze,
+     * @param contentStream  Optional stream that points to the content to analyze,
      *                 must support mark/reset.
+     * @throws IllegalArgumentException if contentStream does not support mark/reset
+     * @throws IOException if there's a problem reading the contentStream                  
      * @return the mime type
      */
-    String getMimeType(String filename, InputStream content) throws IOException;
+    String getMimeType(String filename, InputStream contentStream) throws IOException, IllegalArgumentException;
 }
diff --git a/src/main/java/org/apache/sling/commons/contentdetection/internal/ContentAwareMimeTypeServiceImpl.java b/src/main/java/org/apache/sling/commons/contentdetection/internal/ContentAwareMimeTypeServiceImpl.java
index 29e8508..1e630ed 100644
--- a/src/main/java/org/apache/sling/commons/contentdetection/internal/ContentAwareMimeTypeServiceImpl.java
+++ b/src/main/java/org/apache/sling/commons/contentdetection/internal/ContentAwareMimeTypeServiceImpl.java
@@ -46,7 +46,7 @@ public class ContentAwareMimeTypeServiceImpl implements  ContentAwareMimeTypeSer
     @Reference
     MimeTypeService mimeTypeService;
 
-    public String getMimeType(String filename, InputStream content) throws IOException {
+    public String getMimeType(String filename, InputStream content) throws IOException, IllegalArgumentException {
         if(content == null) {
             return mimeTypeService.getMimeType(filename);
         }

-- 
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.

[sling-org-apache-sling-commons-contentdetection] 35/39: use Sling Parent 30

Posted by ro...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit ba129b4afab1946ed314ecc1eda2f9aba250b2c8
Author: Oliver Lietz <ol...@apache.org>
AuthorDate: Mon Mar 6 10:22:30 2017 +0000

    use Sling Parent 30
    
    git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1785621 13f79535-47bb-0310-9956-ffa450edef68
---
 pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pom.xml b/pom.xml
index 3bc840e..eea01f3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -24,7 +24,7 @@
     <parent>
         <groupId>org.apache.sling</groupId>
         <artifactId>sling</artifactId>
-        <version>29</version>
+        <version>30</version>
         <relativePath />
     </parent>
 

-- 
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.

[sling-org-apache-sling-commons-contentdetection] 29/39: [maven-release-plugin] prepare release org.apache.sling.commons.contentdetection-1.0.2

Posted by ro...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit a090d27a515ac76ffa8b7b4253610743bde82e0b
Author: Bertrand Delacretaz <bd...@apache.org>
AuthorDate: Mon Jul 6 11:58:15 2015 +0000

    [maven-release-plugin] prepare release org.apache.sling.commons.contentdetection-1.0.2
    
    git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1689380 13f79535-47bb-0310-9956-ffa450edef68
---
 pom.xml | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/pom.xml b/pom.xml
index 46c54fa..8081274 100644
--- a/pom.xml
+++ b/pom.xml
@@ -29,7 +29,7 @@
     </parent>
 
     <artifactId>org.apache.sling.commons.contentdetection</artifactId>
-    <version>1.0.1-SNAPSHOT</version>
+    <version>1.0.2</version>
     <packaging>bundle</packaging>
 
     <name>Apache Sling Content Detection Support</name>
@@ -48,9 +48,9 @@
     </properties>
     
     <scm>
-        <connection>scm:svn:https://svn.apache.org/repos/asf/sling/trunk/bundles/commons/contentdetection</connection>
-        <developerConnection>scm:svn:https://svn.apache.org/repos/asf/sling/trunk/bundles/commons/contentdetection</developerConnection>
-        <url>http://sling.apache.org/documentation/bundles/mime-type-support-commons-mime.html</url>
+        <connection>scm:svn:https://svn.apache.org/repos/asf/sling/tags/org.apache.sling.commons.contentdetection-1.0.2</connection>
+        <developerConnection>scm:svn:https://svn.apache.org/repos/asf/sling/tags/org.apache.sling.commons.contentdetection-1.0.2</developerConnection>
+        <url>scm:svn:https://svn.apache.org/repos/asf/sling/tags/org.apache.sling.commons.contentdetection-1.0.2</url>
     </scm>
 
     <dependencies>

-- 
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.

[sling-org-apache-sling-commons-contentdetection] 04/39: SLING-4757 - new tests for commons.contentdetection, contributed by Petr Shypila, thanks!

Posted by ro...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 89315d40d5a93343a4e81e3398decbf6f21e1e6e
Author: Bertrand Delacretaz <bd...@apache.org>
AuthorDate: Mon Jun 1 09:18:59 2015 +0000

    SLING-4757 - new tests for commons.contentdetection, contributed by Petr Shypila, thanks!
    
    git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1682844 13f79535-47bb-0310-9956-ffa450edef68
---
 .../ContentAwareMimeTypeServiceImplTest.java       | 66 +++++++++++++++++++++-
 .../internal/FileNameExtractorImplTest.java        | 26 ++++++++-
 2 files changed, 87 insertions(+), 5 deletions(-)

diff --git a/src/test/java/org/apache/sling/commons/contentdetection/internal/ContentAwareMimeTypeServiceImplTest.java b/src/test/java/org/apache/sling/commons/contentdetection/internal/ContentAwareMimeTypeServiceImplTest.java
index ece1156..6a31bb1 100644
--- a/src/test/java/org/apache/sling/commons/contentdetection/internal/ContentAwareMimeTypeServiceImplTest.java
+++ b/src/test/java/org/apache/sling/commons/contentdetection/internal/ContentAwareMimeTypeServiceImplTest.java
@@ -44,8 +44,6 @@ public class ContentAwareMimeTypeServiceImplTest extends EasyMockSupport {
 
     private Detector mockDetector = EasyMock.createMock(Detector.class);
 
-    private Metadata mockMetadata = EasyMock.createMock(Metadata.class);
-
     private MimeTypeService mockMimeTypeService = EasyMock.createMock(MimeTypeService.class);
 
     @TestSubject
@@ -87,6 +85,32 @@ public class ContentAwareMimeTypeServiceImplTest extends EasyMockSupport {
     }
 
     @Test
+    public void testGetMimeTypeByString(){
+        String mimeTypeName = "testName";
+        String mimetype = "mimeType";
+
+        EasyMock.expect(mockMimeTypeService.getMimeType(mimeTypeName)).andReturn(mimetype);
+        EasyMock.replay(mockMimeTypeService);
+
+        String another = contentAwareMimeTypeService.getMimeType(mimeTypeName);
+        Assert.assertEquals(mimetype, another);
+        EasyMock.verify(mockMimeTypeService);
+    }
+
+    @Test
+    public void testGetExtension(){
+        String mimeTypeName = "testName";
+        String extension = "java";
+
+        EasyMock.expect(mockMimeTypeService.getExtension(mimeTypeName)).andReturn(extension);
+        EasyMock.replay(mockMimeTypeService);
+
+        String another = contentAwareMimeTypeService.getExtension(mimeTypeName);
+        Assert.assertEquals(extension, another);
+        EasyMock.verify(mockMimeTypeService);
+    }
+
+    @Test
     public void testGetMimeTypeWithNullContent() throws IOException {
         //Initializations
         String filename = "test.txt";
@@ -106,7 +130,43 @@ public class ContentAwareMimeTypeServiceImplTest extends EasyMockSupport {
         EasyMock.verify(mockMimeTypeService);
     }
 
+    @Test
+    public void testRegisterNewMymeType() {
+        final String mimeTypeName = "test";
+        final String[] mimeTypeExtensions = new String[]{"pict", "apt", "z"};
+
+        /* The only thing ContentAwareMimeTypeServiceImpl#registerMimeType(String name, String... ext)
+         * method does is calls MimeTypeService registerMimeType(String name, String[] ext) method.
+         * So we Mock it and expect that it will be called.
+         */
+        mockMimeTypeService.registerMimeType(mimeTypeName, mimeTypeExtensions);
+        EasyMock.expectLastCall();
+        EasyMock.replay(mockMimeTypeService);
+
+        contentAwareMimeTypeService.registerMimeType(mimeTypeName, mimeTypeExtensions);
+
+        EasyMock.verify(mockMimeTypeService);
+    }
+
+    @Test
+    public void testRegisterMimeType() throws IOException {
+        byte[] byteArray = new byte[]{};
+        InputStream content = new ByteArrayInputStream(byteArray);
+
+        /* The only thing ContentAwareMimeTypeServiceImpl#registerMimeType(InputStream i)
+         * method does is calls MimeTypeService#registerMimeType(InputStream i) method.
+         * So we Mock it and expect that it will be called.
+         */
+        mockMimeTypeService.registerMimeType(content);
+        EasyMock.expectLastCall();
+        EasyMock.replay(mockMimeTypeService);
+
+        contentAwareMimeTypeService.registerMimeType(content);
+
+        EasyMock.verify(mockMimeTypeService);
+    }
+
     @After
     public void tearDown() {
     }
-}
+}
\ No newline at end of file
diff --git a/src/test/java/org/apache/sling/commons/contentdetection/internal/FileNameExtractorImplTest.java b/src/test/java/org/apache/sling/commons/contentdetection/internal/FileNameExtractorImplTest.java
index c00cb5a..b7d9f6e 100644
--- a/src/test/java/org/apache/sling/commons/contentdetection/internal/FileNameExtractorImplTest.java
+++ b/src/test/java/org/apache/sling/commons/contentdetection/internal/FileNameExtractorImplTest.java
@@ -17,17 +17,39 @@
 
 package org.apache.sling.commons.contentdetection.internal;
 
-import junit.framework.TestCase;
 import org.apache.sling.commons.contentdetection.FileNameExtractor;
 import org.junit.Assert;
+import org.junit.Test;
 
-public class FileNameExtractorImplTest extends TestCase {
+public class FileNameExtractorImplTest {
 
     FileNameExtractor fileNameExtractor = new FileNameExtractorImpl();
 
+    @Test
     public void testExtract() throws Exception {
         String rawPath = "http://midches.com/images/uploads/default/demo.jpg#anchor?query=test";
         String expectedFileName = "demo.jpg";
         Assert.assertEquals(expectedFileName, fileNameExtractor.extract(rawPath));
     }
+
+    @Test
+    public void testExtractForBackslash() throws Exception {
+        String rawPath = "C:\\Test windows%path\\demo.jpg";
+        String expectedFileName = "demo.jpg";
+        Assert.assertEquals(expectedFileName, fileNameExtractor.extract(rawPath));
+    }
+
+    @Test
+    public void testBackslashPath() throws Exception {
+        String rawPath = "C:\\Test windows%path\\demo.jpg";
+        String expectedFileName = "demo.jpg";
+        Assert.assertEquals(expectedFileName, fileNameExtractor.extract(rawPath));
+    }
+
+    @Test
+    public void testDecodedURL(){
+        String rawPath = "http://example.com/demo%20test.jpg?test=true";
+        String expectedFileName = "demo test.jpg";
+        Assert.assertEquals(expectedFileName, fileNameExtractor.extract(rawPath));
+    }
 }
\ No newline at end of file

-- 
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.

[sling-org-apache-sling-commons-contentdetection] 27/39: SLING-4694 - add missing scm info

Posted by ro...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit fe6a8dd95272bc998d974cb4f65b8d036525f17e
Author: Bertrand Delacretaz <bd...@apache.org>
AuthorDate: Mon Jul 6 11:55:08 2015 +0000

    SLING-4694 - add missing scm info
    
    git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1689378 13f79535-47bb-0310-9956-ffa450edef68
---
 pom.xml | 7 -------
 1 file changed, 7 deletions(-)

diff --git a/pom.xml b/pom.xml
index 8c72ffb..5160678 100644
--- a/pom.xml
+++ b/pom.xml
@@ -205,11 +205,4 @@
             </plugin>
         </plugins>
     </build>
-
-
-  <scm>
-    <connection>scm:svn:http://svn.apache.org/repos/asf/sling/tags/org.apache.sling.commons.contentdetection-1.0.0</connection>
-    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/sling/tags/org.apache.sling.commons.contentdetection-1.0.0</developerConnection>
-    <url>http://svn.apache.org/viewvc/sling/tags/org.apache.sling.commons.contentdetection-1.0.0</url>
-  </scm>
 </project>

-- 
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.

[sling-org-apache-sling-commons-contentdetection] 26/39: SLING-4694 - add missing scm info

Posted by ro...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 7513438697ef213c45acb510a90c3a5fbec78a72
Author: Bertrand Delacretaz <bd...@apache.org>
AuthorDate: Mon Jul 6 11:54:13 2015 +0000

    SLING-4694 - add missing scm info
    
    git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1689377 13f79535-47bb-0310-9956-ffa450edef68
---
 pom.xml | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/pom.xml b/pom.xml
index a516402..8c72ffb 100644
--- a/pom.xml
+++ b/pom.xml
@@ -46,6 +46,12 @@
         <!-- argLine needs to be here so that jacoco plugin adds its own stuff to it -->
         <argLine>${pax.vm.options}</argLine>
     </properties>
+    
+    <scm>
+        <connection>scm:svn:https://svn.apache.org/repos/asf/sling/trunk/bundles/commons/contentdetection</connection>
+        <developerConnection>scm:svn:https://svn.apache.org/repos/asf/sling/trunk/bundles/commons/contentdetection</developerConnection>
+        <url>http://sling.apache.org/documentation/bundles/mime-type-support-commons-mime.html</url>
+    </scm>
 
     <dependencies>
 

-- 
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.

[sling-org-apache-sling-commons-contentdetection] 39/39: SLING-7167 Adjust READMEs

Posted by ro...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit cba5e836c08b3c3f2ba5a2ff39ff1fc223eb13b1
Author: Oliver Lietz <ol...@apache.org>
AuthorDate: Tue Oct 3 09:19:27 2017 +0000

    SLING-7167 Adjust READMEs
    
    add missing README
    
    git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1810677 13f79535-47bb-0310-9956-ffa450edef68
---
 README.md | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/README.md b/README.md
new file mode 100644
index 0000000..c470183
--- /dev/null
+++ b/README.md
@@ -0,0 +1,3 @@
+# Apache Sling Content Detection Support
+
+This module is part of the [Apache Sling](https://sling.apache.org) project.

-- 
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.

[sling-org-apache-sling-commons-contentdetection] 30/39: [maven-release-plugin] prepare for next development iteration

Posted by ro...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit a6fd894f12d78b8e79430fb3a07163d1210c85b3
Author: Bertrand Delacretaz <bd...@apache.org>
AuthorDate: Mon Jul 6 11:58:34 2015 +0000

    [maven-release-plugin] prepare for next development iteration
    
    git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1689382 13f79535-47bb-0310-9956-ffa450edef68
---
 pom.xml | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/pom.xml b/pom.xml
index 8081274..26b24ba 100644
--- a/pom.xml
+++ b/pom.xml
@@ -29,7 +29,7 @@
     </parent>
 
     <artifactId>org.apache.sling.commons.contentdetection</artifactId>
-    <version>1.0.2</version>
+    <version>1.0.3-SNAPSHOT</version>
     <packaging>bundle</packaging>
 
     <name>Apache Sling Content Detection Support</name>
@@ -48,9 +48,9 @@
     </properties>
     
     <scm>
-        <connection>scm:svn:https://svn.apache.org/repos/asf/sling/tags/org.apache.sling.commons.contentdetection-1.0.2</connection>
-        <developerConnection>scm:svn:https://svn.apache.org/repos/asf/sling/tags/org.apache.sling.commons.contentdetection-1.0.2</developerConnection>
-        <url>scm:svn:https://svn.apache.org/repos/asf/sling/tags/org.apache.sling.commons.contentdetection-1.0.2</url>
+        <connection>scm:svn:https://svn.apache.org/repos/asf/sling/trunk/bundles/commons/contentdetection</connection>
+        <developerConnection>scm:svn:https://svn.apache.org/repos/asf/sling/trunk/bundles/commons/contentdetection</developerConnection>
+        <url>http://sling.apache.org/documentation/bundles/mime-type-support-commons-mime.html</url>
     </scm>
 
     <dependencies>

-- 
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.

[sling-org-apache-sling-commons-contentdetection] 14/39: SLING-4757 - additional test contributed by Satya Deep Maheshwari, thanks!

Posted by ro...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit e05eacb1b247fcb18ef7c3af785cdb6da017e19b
Author: Bertrand Delacretaz <bd...@apache.org>
AuthorDate: Thu Jun 18 09:31:17 2015 +0000

    SLING-4757 - additional test contributed by Satya Deep Maheshwari, thanks!
    
    git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1686155 13f79535-47bb-0310-9956-ffa450edef68
---
 .../it/ContentAwareMimeTypeServiceImplIT.java        | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/src/test/java/org/apache/sling/commons/contentdetection/internal/it/ContentAwareMimeTypeServiceImplIT.java b/src/test/java/org/apache/sling/commons/contentdetection/internal/it/ContentAwareMimeTypeServiceImplIT.java
index a0b4410..10f04cb 100644
--- a/src/test/java/org/apache/sling/commons/contentdetection/internal/it/ContentAwareMimeTypeServiceImplIT.java
+++ b/src/test/java/org/apache/sling/commons/contentdetection/internal/it/ContentAwareMimeTypeServiceImplIT.java
@@ -19,12 +19,15 @@ package org.apache.sling.commons.contentdetection.internal.it;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
 
+import java.io.BufferedInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 
 import javax.inject.Inject;
 
+import org.apache.commons.io.IOUtils;
 import org.apache.sling.commons.contentdetection.ContentAwareMimeTypeService;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -58,6 +61,23 @@ public class ContentAwareMimeTypeServiceImplIT {
         }
     }
 
+    @Test
+    public void testNoContentTampering() throws IOException{
+        final String filename = "this-is-actually-a-wav-file.mp3";
+        final InputStream s = new BufferedInputStream(getClass().getResourceAsStream("/" + filename));
+        assertNotNull("Expecting stream to be found:" + filename, s);
+        try {
+            contentAwaremimeTypeService.getMimeType(filename, s);
+            assertTrue(IOUtils.contentEquals(s,
+                    new BufferedInputStream(getClass().getResourceAsStream(
+                            "/" + filename))));
+        } finally {
+            if(s != null) {
+                s.close();
+            }
+        }
+    }
+
     @org.ops4j.pax.exam.Configuration
     public Option[] config() {
         return U.paxConfig();

-- 
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.

[sling-org-apache-sling-commons-contentdetection] 24/39: SLING-4694 - use the newest (just released) Sling parent pom

Posted by ro...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 91db3457e14b7ed07643a5f5213bc1f0dfa2a515
Author: Bertrand Delacretaz <bd...@apache.org>
AuthorDate: Mon Jul 6 11:45:00 2015 +0000

    SLING-4694 - use the newest (just released) Sling parent pom
    
    git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1689375 13f79535-47bb-0310-9956-ffa450edef68
---
 pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pom.xml b/pom.xml
index 6b58fc2..3933af6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -24,7 +24,7 @@
     <parent>
         <groupId>org.apache.sling</groupId>
         <artifactId>sling</artifactId>
-        <version>23</version>
+        <version>24</version>
         <relativePath />
     </parent>
 

-- 
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.

[sling-org-apache-sling-commons-contentdetection] 13/39: clean plugin config

Posted by ro...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 61f169929eeed25853edf1efa5fa04bc5e7a67bd
Author: Bertrand Delacretaz <bd...@apache.org>
AuthorDate: Tue Jun 2 10:04:44 2015 +0000

    clean plugin config
    
    git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1683067 13f79535-47bb-0310-9956-ffa450edef68
---
 pom.xml | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/pom.xml b/pom.xml
index 20801d3..851c3a8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -183,6 +183,21 @@
                     </classpathDependencyExcludes>
                 </configuration>
             </plugin>
+            <plugin>
+                <artifactId>maven-clean-plugin</artifactId>
+                <configuration>
+                    <filesets>
+                        <fileset>
+                            <directory>${basedir}</directory>
+                            <includes>
+                                <include>oak/**</include>
+                                <include>jackrabbit/**</include>
+                                <include>derby.log</include>
+                            </includes>
+                        </fileset>
+                    </filesets>
+                </configuration>
+            </plugin>
         </plugins>
     </build>
 

-- 
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.

[sling-org-apache-sling-commons-contentdetection] 33/39: Switch to parent pom 26

Posted by ro...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 7f06cfcd7071fc42f99fc90733c871e5d8696bb7
Author: Carsten Ziegeler <cz...@apache.org>
AuthorDate: Sun Jan 3 14:07:46 2016 +0000

    Switch to parent pom 26
    
    git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1722720 13f79535-47bb-0310-9956-ffa450edef68
---
 pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pom.xml b/pom.xml
index 79386bc..9ca91d8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -24,7 +24,7 @@
     <parent>
         <groupId>org.apache.sling</groupId>
         <artifactId>sling</artifactId>
-        <version>25</version>
+        <version>26</version>
         <relativePath />
     </parent>
 

-- 
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.

[sling-org-apache-sling-commons-contentdetection] 06/39: SLING-4757 - test invalid encoding

Posted by ro...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 0cd56f9656fa22169bbd873f466d52a72fb7c7b2
Author: Bertrand Delacretaz <bd...@apache.org>
AuthorDate: Mon Jun 1 09:40:58 2015 +0000

    SLING-4757 - test invalid encoding
    
    git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1682850 13f79535-47bb-0310-9956-ffa450edef68
---
 .../internal/FileNameExtractorImpl.java            | 15 ++++++++----
 .../internal/FileNameExtractorImplTest.java        | 27 +++++++++++++++++++++-
 2 files changed, 36 insertions(+), 6 deletions(-)

diff --git a/src/main/java/org/apache/sling/commons/contentdetection/internal/FileNameExtractorImpl.java b/src/main/java/org/apache/sling/commons/contentdetection/internal/FileNameExtractorImpl.java
index 289f777..f4c3eda 100644
--- a/src/main/java/org/apache/sling/commons/contentdetection/internal/FileNameExtractorImpl.java
+++ b/src/main/java/org/apache/sling/commons/contentdetection/internal/FileNameExtractorImpl.java
@@ -16,15 +16,15 @@
  */
 package org.apache.sling.commons.contentdetection.internal;
 
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+
 import org.apache.felix.scr.annotations.Component;
 import org.apache.felix.scr.annotations.Property;
 import org.apache.felix.scr.annotations.Service;
 import org.apache.sling.commons.contentdetection.FileNameExtractor;
 import org.osgi.framework.Constants;
 
-import java.io.UnsupportedEncodingException;
-import java.net.URLDecoder;
-
 @Component(metatype = true, label = "%filenameextractor.service.name", description = "%filenameextractor.service.description")
 @Service(FileNameExtractor.class)
 @Property(name = Constants.SERVICE_DESCRIPTION, value = "Apache Sling Filename Extractor Service")
@@ -53,10 +53,11 @@ public class FileNameExtractorImpl implements FileNameExtractor {
         // Decode any potential URL encoding
         int percent = name.indexOf('%');
         if (percent != -1) {
+            final String encoding = getDefaultEncoding();
             try {
-                name = URLDecoder.decode(name, "UTF-8");
+                name = URLDecoder.decode(name, encoding);
             } catch (UnsupportedEncodingException e) {
-                throw new AssertionError("UTF-8 not supported");
+                throw new RuntimeException(encoding + " not supported??", e);
             }
         }
 
@@ -64,4 +65,8 @@ public class FileNameExtractorImpl implements FileNameExtractor {
         name = name.trim();
         return name;
     }
+    
+    protected String getDefaultEncoding() {
+        return "UTF-8";
+    }
 }
diff --git a/src/test/java/org/apache/sling/commons/contentdetection/internal/FileNameExtractorImplTest.java b/src/test/java/org/apache/sling/commons/contentdetection/internal/FileNameExtractorImplTest.java
index f280dc7..695d7af 100644
--- a/src/test/java/org/apache/sling/commons/contentdetection/internal/FileNameExtractorImplTest.java
+++ b/src/test/java/org/apache/sling/commons/contentdetection/internal/FileNameExtractorImplTest.java
@@ -23,7 +23,13 @@ import org.junit.Test;
 
 public class FileNameExtractorImplTest {
 
-    FileNameExtractor fileNameExtractor = new FileNameExtractorImpl();
+    private String defaultEncoding = new FileNameExtractorImpl().getDefaultEncoding();
+    
+    FileNameExtractor fileNameExtractor = new FileNameExtractorImpl() {
+        protected String getDefaultEncoding() {
+            return defaultEncoding;
+        }
+    };
 
     @Test
     public void testExtract() throws Exception {
@@ -45,4 +51,23 @@ public class FileNameExtractorImplTest {
         String expectedFileName = "demo test.jpg";
         Assert.assertEquals(expectedFileName, fileNameExtractor.extract(rawPath));
     }
+    
+    @Test
+    public void testInvalidEncoding() throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException {
+        final String rawPath = "http://example.com/demo%20test.jpg?test=true";
+        final String oldEncoding = defaultEncoding;
+        final String badEncoding = "INVALID_ENCODING";
+        try {
+            defaultEncoding = badEncoding;
+            try {
+                fileNameExtractor.extract(rawPath);
+                Assert.fail("Expected an exception with encoding " + defaultEncoding);
+            } catch(RuntimeException re) {
+                final String msg = re.getMessage();
+                Assert.assertTrue("Expected exception message to contain " + badEncoding + " (" + msg + ")", msg.contains(badEncoding));
+            }
+        } finally {
+            defaultEncoding = oldEncoding;
+        }
+    }
 }
\ No newline at end of file

-- 
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.

[sling-org-apache-sling-commons-contentdetection] 03/39: SLING-4694 - pom cleanup

Posted by ro...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 24957806e8d80f8c42c1a2a1c2cb3e0353a64be4
Author: Bertrand Delacretaz <bd...@apache.org>
AuthorDate: Wed May 27 14:21:24 2015 +0000

    SLING-4694 - pom cleanup
    
    git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1682038 13f79535-47bb-0310-9956-ffa450edef68
---
 pom.xml | 24 +++++-------------------
 1 file changed, 5 insertions(+), 19 deletions(-)

diff --git a/pom.xml b/pom.xml
index b3dd87b..402731b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -34,7 +34,7 @@
     <packaging>bundle</packaging>
 
     <name>Apache Sling Content Detection Support</name>
-    <description>Support for MIME type detection on the basis of contents.</description>
+    <description>Content-based MIME type detection</description>
 
     <properties>
         <powermock.version>1.6.2</powermock.version>
@@ -42,14 +42,14 @@
 
     <dependencies>
 
-        <!-- OSGi Dependncies-->
+        <!-- OSGi Dependencies-->
         <dependency>
             <groupId>org.osgi</groupId>
             <artifactId>org.osgi.core</artifactId>
             <scope>provided</scope>
         </dependency>
 
-        <!-- Sling Dependncies-->
+        <!-- Sling Dependencies-->
         <dependency>
             <version>2.1.9-SNAPSHOT</version>
             <groupId>org.apache.sling</groupId>
@@ -57,7 +57,7 @@
             <scope>provided</scope>
         </dependency>
 
-        <!-- Other Dependncies-->
+        <!-- Other Dependencies-->
         <dependency>
             <version>1.2</version>
             <groupId>org.apache.tika</groupId>
@@ -65,7 +65,7 @@
             <scope>provided</scope>
         </dependency>
 
-        <!-- Test Dependncies-->
+        <!-- Test Dependencies-->
         <dependency>
             <groupId>junit</groupId>
             <artifactId>junit</artifactId>
@@ -109,20 +109,6 @@
                 <groupId>org.apache.felix</groupId>
                 <artifactId>maven-bundle-plugin</artifactId>
                 <extensions>true</extensions>
-                <configuration>
-                    <instructions>
-                        <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
-                        <Bundle-Version>${project.version}</Bundle-Version>
-                        <Export-Package>
-                            org.apache.sling.commons.contentdetection.serversidetests,
-                            org.apache.sling.commons.contentdetection
-                        </Export-Package>
-                        <Import-Package>
-                            *
-                        </Import-Package>
-                        <Sling-Test-Regexp>.*Test</Sling-Test-Regexp>
-                    </instructions>
-                </configuration>
             </plugin>
 
             <plugin>

-- 
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.

[sling-org-apache-sling-commons-contentdetection] 22/39: cannot be null here, remove dead code

Posted by ro...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 8db378e9dd51ddd587cc2123c1898b8adb5afe4c
Author: Bertrand Delacretaz <bd...@apache.org>
AuthorDate: Fri Jun 26 10:28:44 2015 +0000

    cannot be null here, remove dead code
    
    git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1687739 13f79535-47bb-0310-9956-ffa450edef68
---
 .../contentdetection/internal/ContentAwareMimeTypeServiceImpl.java      | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/main/java/org/apache/sling/commons/contentdetection/internal/ContentAwareMimeTypeServiceImpl.java b/src/main/java/org/apache/sling/commons/contentdetection/internal/ContentAwareMimeTypeServiceImpl.java
index 1e630ed..5264296 100644
--- a/src/main/java/org/apache/sling/commons/contentdetection/internal/ContentAwareMimeTypeServiceImpl.java
+++ b/src/main/java/org/apache/sling/commons/contentdetection/internal/ContentAwareMimeTypeServiceImpl.java
@@ -50,7 +50,7 @@ public class ContentAwareMimeTypeServiceImpl implements  ContentAwareMimeTypeSer
         if(content == null) {
             return mimeTypeService.getMimeType(filename);
         }
-        if(content != null && !content.markSupported()) {
+        if(!content.markSupported()) {
             throw new IllegalArgumentException("Supplied InputStream does not support mark/reset");
         }
         TikaInputStream stream = TikaInputStream.get(content);

-- 
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.

[sling-org-apache-sling-commons-contentdetection] 05/39: SLING-4757 - remove duplicate test

Posted by ro...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 3864b3ef6919c224fe094a52f4f1baf8ce112bd0
Author: Bertrand Delacretaz <bd...@apache.org>
AuthorDate: Mon Jun 1 09:21:14 2015 +0000

    SLING-4757 - remove duplicate test
    
    git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1682845 13f79535-47bb-0310-9956-ffa450edef68
---
 .../contentdetection/internal/FileNameExtractorImplTest.java       | 7 -------
 1 file changed, 7 deletions(-)

diff --git a/src/test/java/org/apache/sling/commons/contentdetection/internal/FileNameExtractorImplTest.java b/src/test/java/org/apache/sling/commons/contentdetection/internal/FileNameExtractorImplTest.java
index b7d9f6e..f280dc7 100644
--- a/src/test/java/org/apache/sling/commons/contentdetection/internal/FileNameExtractorImplTest.java
+++ b/src/test/java/org/apache/sling/commons/contentdetection/internal/FileNameExtractorImplTest.java
@@ -33,13 +33,6 @@ public class FileNameExtractorImplTest {
     }
 
     @Test
-    public void testExtractForBackslash() throws Exception {
-        String rawPath = "C:\\Test windows%path\\demo.jpg";
-        String expectedFileName = "demo.jpg";
-        Assert.assertEquals(expectedFileName, fileNameExtractor.extract(rawPath));
-    }
-
-    @Test
     public void testBackslashPath() throws Exception {
         String rawPath = "C:\\Test windows%path\\demo.jpg";
         String expectedFileName = "demo.jpg";

-- 
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.

[sling-org-apache-sling-commons-contentdetection] 31/39: Update the main reactor to parent 25

Posted by ro...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit d5ddbb2d4551b15a68f6c39064b040a0b13c0d4b
Author: Robert Munteanu <ro...@apache.org>
AuthorDate: Mon Oct 5 10:03:45 2015 +0000

    Update the main reactor to parent 25
    
    git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1706780 13f79535-47bb-0310-9956-ffa450edef68
---
 pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pom.xml b/pom.xml
index 26b24ba..79386bc 100644
--- a/pom.xml
+++ b/pom.xml
@@ -24,7 +24,7 @@
     <parent>
         <groupId>org.apache.sling</groupId>
         <artifactId>sling</artifactId>
-        <version>24</version>
+        <version>25</version>
         <relativePath />
     </parent>
 

-- 
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.

[sling-org-apache-sling-commons-contentdetection] 19/39: Update to Sling Parent 23

Posted by ro...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit d2d643cc66f49bc9d336cfd44c173e622a26855f
Author: Robert Munteanu <ro...@apache.org>
AuthorDate: Thu Jun 25 13:08:16 2015 +0000

    Update to Sling Parent 23
    
    git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1687500 13f79535-47bb-0310-9956-ffa450edef68
---
 pom.xml | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/pom.xml b/pom.xml
index 28a64f2..2658ab2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -24,7 +24,8 @@
     <parent>
         <groupId>org.apache.sling</groupId>
         <artifactId>sling</artifactId>
-        <version>23-SNAPSHOT</version>
+        <version>23</version>
+        <relativePath />
     </parent>
 
     <artifactId>org.apache.sling.commons.contentdetection</artifactId>

-- 
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.

[sling-org-apache-sling-commons-contentdetection] 34/39: Update to parent pom 29

Posted by ro...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit ae242d7c83bffa09759960e9c65ece4d42c71bab
Author: Carsten Ziegeler <cz...@apache.org>
AuthorDate: Fri Oct 21 06:12:21 2016 +0000

    Update to parent pom 29
    
    git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1765923 13f79535-47bb-0310-9956-ffa450edef68
---
 pom.xml | 12 +++++-------
 1 file changed, 5 insertions(+), 7 deletions(-)

diff --git a/pom.xml b/pom.xml
index 9ca91d8..3bc840e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -24,7 +24,7 @@
     <parent>
         <groupId>org.apache.sling</groupId>
         <artifactId>sling</artifactId>
-        <version>26</version>
+        <version>29</version>
         <relativePath />
     </parent>
 
@@ -58,7 +58,7 @@
         <!-- OSGi Dependencies-->
         <dependency>
             <groupId>org.osgi</groupId>
-            <artifactId>org.osgi.core</artifactId>
+            <artifactId>osgi.core</artifactId>
             <scope>provided</scope>
         </dependency>
 
@@ -82,19 +82,18 @@
         <dependency>
             <groupId>junit</groupId>
             <artifactId>junit</artifactId>
-            <version>4.12</version>
-            <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.sling</groupId>
             <artifactId>org.apache.sling.junit.core</artifactId>
             <version>1.0.10</version>
-            <scope>provided</scope>
+            <scope>test</scope>
         </dependency>
         <dependency>
             <groupId>junit-addons</groupId>
             <artifactId>junit-addons</artifactId>
             <version>1.4</version>
+            <scope>test</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.sling</groupId>
@@ -112,7 +111,6 @@
         <dependency>
             <groupId>org.slf4j</groupId>
             <artifactId>slf4j-simple</artifactId>
-            <scope>test</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.sling</groupId>
@@ -135,7 +133,7 @@
         <dependency>
             <groupId>org.apache.felix</groupId>
             <artifactId>org.apache.felix.framework</artifactId>
-            <version>4.2.1</version>
+            <version>5.6.0</version>
             <scope>test</scope>
         </dependency>
     </dependencies>

-- 
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.

[sling-org-apache-sling-commons-contentdetection] 23/39: SLING-4694 - use commons.mime release, no need for a snapshot

Posted by ro...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit d6eb97df61d7a7ac0c21bfd61be951fc8b25a3bd
Author: Bertrand Delacretaz <bd...@apache.org>
AuthorDate: Mon Jul 6 09:21:18 2015 +0000

    SLING-4694 - use commons.mime release, no need for a snapshot
    
    git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1689344 13f79535-47bb-0310-9956-ffa450edef68
---
 pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pom.xml b/pom.xml
index 7db3e3d..6b58fc2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -58,7 +58,7 @@
 
         <!-- Sling Dependencies-->
         <dependency>
-            <version>2.1.9-SNAPSHOT</version>
+            <version>2.1.8</version>
             <groupId>org.apache.sling</groupId>
             <artifactId>org.apache.sling.commons.mime</artifactId>
             <scope>provided</scope>

-- 
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.

[sling-org-apache-sling-commons-contentdetection] 21/39: SLING-4835 - fix maven-failsafe-plugin argLine for jacoco

Posted by ro...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit e2049b39549c5ebbe46045e3c7d322c24f7ddac1
Author: Bertrand Delacretaz <bd...@apache.org>
AuthorDate: Fri Jun 26 10:24:16 2015 +0000

    SLING-4835 - fix maven-failsafe-plugin argLine for jacoco
    
    git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1687738 13f79535-47bb-0310-9956-ffa450edef68
---
 pom.xml | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/pom.xml b/pom.xml
index c72bc63..7db3e3d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -42,6 +42,9 @@
         <sling.launchpad.version>7</sling.launchpad.version>
         <powermock.version>1.6.2</powermock.version>
         <pax.vm.options>-Xmx256M -XX:MaxPermSize=256m</pax.vm.options>
+        
+        <!-- argLine needs to be here so that jacoco plugin adds its own stuff to it -->
+        <argLine>${pax.vm.options}</argLine>
     </properties>
 
     <dependencies>
@@ -167,7 +170,6 @@
                     </execution>
                 </executions>
                 <configuration>
-                    <argLine>${pax.vm.options}</argLine>
                     <systemPropertyVariables>
                         <java.protocol.handler.pkgs>org.ops4j.pax.url</java.protocol.handler.pkgs>
                         <bundle.file.name>${bundle.file.name}</bundle.file.name>

-- 
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.

[sling-org-apache-sling-commons-contentdetection] 16/39: SLING-4757 - fix pax exam memory setup and add test for non-markable stream

Posted by ro...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 55c622e48c60da4f131d0a368090f11ef25e3033
Author: Bertrand Delacretaz <bd...@apache.org>
AuthorDate: Thu Jun 18 10:46:57 2015 +0000

    SLING-4757 - fix pax exam memory setup and add test for non-markable stream
    
    git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1686179 13f79535-47bb-0310-9956-ffa450edef68
---
 pom.xml                                            |  7 +-
 .../ContentAwareMimeTypeService.java               |  5 +-
 .../it/ContentAwareMimeTypeServiceImplIT.java      | 86 +++++++++++++++-------
 .../commons/contentdetection/internal/it/U.java    |  7 +-
 4 files changed, 67 insertions(+), 38 deletions(-)

diff --git a/pom.xml b/pom.xml
index 851c3a8..28a64f2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -37,12 +37,11 @@
     <properties>
         <exam.version>3.5.0</exam.version>
         <url.version>1.5.2</url.version>
-        <org.ops4j.pax.logging.DefaultServiceLog.level>INFO</org.ops4j.pax.logging.DefaultServiceLog.level>
         <bundle.file.name>${basedir}/target/${project.build.finalName}.jar</bundle.file.name>
         <sling.java.version>6</sling.java.version>
         <sling.launchpad.version>7</sling.launchpad.version>
         <powermock.version>1.6.2</powermock.version>
-        <pax.vm.options>-Xmx256M</pax.vm.options>
+        <pax.vm.options>-Xmx256M -XX:MaxPermSize=256m</pax.vm.options>
     </properties>
 
     <dependencies>
@@ -168,13 +167,11 @@
                     </execution>
                 </executions>
                 <configuration>
+                    <argLine>${pax.vm.options}</argLine>
                     <systemPropertyVariables>
-                        <org.ops4j.pax.logging.DefaultServiceLog.level>${org.ops4j.pax.logging.DefaultServiceLog.level}</org.ops4j.pax.logging.DefaultServiceLog.level>
-                        <pax.exam.log.level>${pax.exam.log.level}</pax.exam.log.level>
                         <java.protocol.handler.pkgs>org.ops4j.pax.url</java.protocol.handler.pkgs>
                         <bundle.file.name>${bundle.file.name}</bundle.file.name>
                         <sling.launchpad.version>${sling.launchpad.version}</sling.launchpad.version>
-                        <pax.vm.options>${pax.vm.options}</pax.vm.options>
                     </systemPropertyVariables>
                     <classpathDependencyExcludes>
                         <!-- The osgi.org dependencies cause trouble with pax exam -->
diff --git a/src/main/java/org/apache/sling/commons/contentdetection/ContentAwareMimeTypeService.java b/src/main/java/org/apache/sling/commons/contentdetection/ContentAwareMimeTypeService.java
index 37be925..5999dc1 100644
--- a/src/main/java/org/apache/sling/commons/contentdetection/ContentAwareMimeTypeService.java
+++ b/src/main/java/org/apache/sling/commons/contentdetection/ContentAwareMimeTypeService.java
@@ -33,9 +33,10 @@ import java.io.InputStream;
 
 public interface ContentAwareMimeTypeService extends MimeTypeService {
     /**
-     * @param filename used if <code>content</code> is <code>null</code> or if
+     * @param filename Used if <code>content</code> is <code>null</code> or if
      *                 this service does not support content-based detection
-     * @param content  optional stream that points to the content to analyze
+     * @param content  Optional stream that points to the content to analyze,
+     *                 must support mark/reset.
      * @return the mime type
      */
     String getMimeType(String filename, InputStream content) throws IOException;
diff --git a/src/test/java/org/apache/sling/commons/contentdetection/internal/it/ContentAwareMimeTypeServiceImplIT.java b/src/test/java/org/apache/sling/commons/contentdetection/internal/it/ContentAwareMimeTypeServiceImplIT.java
index 62d8450..f488e9d 100644
--- a/src/test/java/org/apache/sling/commons/contentdetection/internal/it/ContentAwareMimeTypeServiceImplIT.java
+++ b/src/test/java/org/apache/sling/commons/contentdetection/internal/it/ContentAwareMimeTypeServiceImplIT.java
@@ -20,6 +20,7 @@ package org.apache.sling.commons.contentdetection.internal.it;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertFalse;
 
 import java.io.BufferedInputStream;
 import java.io.IOException;
@@ -29,7 +30,6 @@ import javax.inject.Inject;
 
 import org.apache.commons.io.IOUtils;
 import org.apache.sling.commons.contentdetection.ContentAwareMimeTypeService;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.ops4j.pax.exam.Option;
@@ -40,6 +40,50 @@ public class ContentAwareMimeTypeServiceImplIT {
 
     @Inject
     private ContentAwareMimeTypeService contentAwaremimeTypeService;
+    
+    class NonMarkableStream extends BufferedInputStream {
+        NonMarkableStream(InputStream is) {
+            super(is);
+        }
+
+        @Override
+        public synchronized void mark(int readlimit) {
+        }
+
+        @Override
+        public synchronized void reset() throws IOException {
+        }
+
+        @Override
+        public boolean markSupported() {
+            return false;
+        }
+    };
+    
+    abstract class AssertDetect {
+        void assertDetection(String expectedType, boolean expectSameContent) throws IOException {
+            final String filename = "this-is-actually-a-wav-file.mp3";
+            final String path = "/" + filename;
+            final InputStream s = wrapStream(getClass().getResourceAsStream(path));
+            assertNotNull("Expecting stream to be found:" + filename, s);
+            InputStream originalStream = null;
+            try {
+                assertEquals(expectedType, contentAwaremimeTypeService.getMimeType(filename, s));
+                originalStream = getClass().getResourceAsStream(path);
+                assertNotNull("Expecting stream to be found:" + filename, originalStream);
+                if(expectSameContent) {
+                    assertTrue("Expecting content to be unchanged", IOUtils.contentEquals(s, originalStream));
+                } else {
+                    assertFalse("Expecting content to have changed", IOUtils.contentEquals(s, originalStream));
+                }
+            } finally {
+                IOUtils.closeQuietly(s);
+                IOUtils.closeQuietly(originalStream);
+            }
+        }
+        
+        abstract InputStream wrapStream(InputStream toWrap);
+    }
 
     @Test
     public void detectFromExtension(){
@@ -50,36 +94,26 @@ public class ContentAwareMimeTypeServiceImplIT {
 
     @Test
     public void detectFromContent() throws IOException{
-        final String filename = "this-is-actually-a-wav-file.mp3";
-        final InputStream s = getClass().getResourceAsStream("/" + filename);
-        assertNotNull("Expecting stream to be found:" + filename, s);
-        try {
-            assertEquals("audio/x-wav", contentAwaremimeTypeService.getMimeType(filename, s));
-        } finally {
-            if(s != null) {
-                s.close();
+        new AssertDetect() {
+            @Override
+            InputStream wrapStream(InputStream toWrap) {
+                return new BufferedInputStream(toWrap);
             }
-        }
+        }.assertDetection("audio/x-wav", true);
     }
-
+    
     @Test
-    @Ignore("OutOfMemoryError: PermGen space??")
-    public void testNoContentTampering() throws IOException{
-        final String filename = "this-is-actually-a-wav-file.mp3";
-        final InputStream s = new BufferedInputStream(getClass().getResourceAsStream("/" + filename));
-        assertNotNull("Expecting stream to be found:" + filename, s);
-        try {
-            contentAwaremimeTypeService.getMimeType(filename, s);
-            assertTrue(IOUtils.contentEquals(s,
-                    new BufferedInputStream(getClass().getResourceAsStream(
-                            "/" + filename))));
-        } finally {
-            if(s != null) {
-                s.close();
+    public void detectFromContentWithNonMarkableStream() throws IOException{
+        // Interestingly, with a non-markable stream  the detector falls back to
+        // filename detection but still touches the content stream
+        new AssertDetect() {
+            @Override
+            InputStream wrapStream(InputStream toWrap) {
+                return new NonMarkableStream(toWrap);
             }
-        }
+        }.assertDetection("audio/mpeg", false);
     }
-
+    
     @org.ops4j.pax.exam.Configuration
     public Option[] config() {
         return U.paxConfig();
diff --git a/src/test/java/org/apache/sling/commons/contentdetection/internal/it/U.java b/src/test/java/org/apache/sling/commons/contentdetection/internal/it/U.java
index 901a3eb..d92cb46 100644
--- a/src/test/java/org/apache/sling/commons/contentdetection/internal/it/U.java
+++ b/src/test/java/org/apache/sling/commons/contentdetection/internal/it/U.java
@@ -18,7 +18,6 @@
 package org.apache.sling.commons.contentdetection.internal.it;
 
 import java.io.File;
-import java.util.Arrays;
 
 import org.apache.sling.paxexam.util.SlingPaxOptions;
 import org.ops4j.pax.exam.CoreOptions;
@@ -33,12 +32,10 @@ public class U {
     public static Option[] paxConfig() {
         final File thisProjectsBundle = new File(System.getProperty( "bundle.file.name", "BUNDLE_FILE_NOT_SET" ));
         final String launchpadVersion = System.getProperty("sling.launchpad.version", "LAUNCHPAD_VERSION_NOT_SET");
-        final String [] paxVmOptions = System.getProperty("pax.vm.options", "PAX_VM_OPTIONS_NOT_SET").split(",");
-        log.info("Sling launchpad version: {}, VM options: {}", launchpadVersion, Arrays.asList(paxVmOptions));
+        log.info("Sling launchpad version: {}", launchpadVersion);
         return new DefaultCompositeOption(
                 SlingPaxOptions.defaultLaunchpadOptions(launchpadVersion),
-                CoreOptions.provision(CoreOptions.bundle(thisProjectsBundle.toURI().toString())),
-                CoreOptions.vmOptions(paxVmOptions)
+                CoreOptions.provision(CoreOptions.bundle(thisProjectsBundle.toURI().toString()))
                 
         ).getOptions();
     }

-- 
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.

[sling-org-apache-sling-commons-contentdetection] 17/39: SLING-4757 - throw IllegalArgumentException if InputStream does not support mark/reset

Posted by ro...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 34f330ceb5f26df89c52a89638a551e0d4ea46bd
Author: Bertrand Delacretaz <bd...@apache.org>
AuthorDate: Thu Jun 18 11:52:23 2015 +0000

    SLING-4757 - throw IllegalArgumentException if InputStream does not support mark/reset
    
    git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1686195 13f79535-47bb-0310-9956-ffa450edef68
---
 .../internal/ContentAwareMimeTypeServiceImpl.java  |  3 +
 .../it/ContentAwareMimeTypeServiceImplIT.java      | 72 +++++++++-------------
 2 files changed, 31 insertions(+), 44 deletions(-)

diff --git a/src/main/java/org/apache/sling/commons/contentdetection/internal/ContentAwareMimeTypeServiceImpl.java b/src/main/java/org/apache/sling/commons/contentdetection/internal/ContentAwareMimeTypeServiceImpl.java
index 32e29e7..29e8508 100644
--- a/src/main/java/org/apache/sling/commons/contentdetection/internal/ContentAwareMimeTypeServiceImpl.java
+++ b/src/main/java/org/apache/sling/commons/contentdetection/internal/ContentAwareMimeTypeServiceImpl.java
@@ -50,6 +50,9 @@ public class ContentAwareMimeTypeServiceImpl implements  ContentAwareMimeTypeSer
         if(content == null) {
             return mimeTypeService.getMimeType(filename);
         }
+        if(content != null && !content.markSupported()) {
+            throw new IllegalArgumentException("Supplied InputStream does not support mark/reset");
+        }
         TikaInputStream stream = TikaInputStream.get(content);
         Metadata metadata = new Metadata();
         metadata.set(Metadata.RESOURCE_NAME_KEY, filename);
diff --git a/src/test/java/org/apache/sling/commons/contentdetection/internal/it/ContentAwareMimeTypeServiceImplIT.java b/src/test/java/org/apache/sling/commons/contentdetection/internal/it/ContentAwareMimeTypeServiceImplIT.java
index f488e9d..64269f5 100644
--- a/src/test/java/org/apache/sling/commons/contentdetection/internal/it/ContentAwareMimeTypeServiceImplIT.java
+++ b/src/test/java/org/apache/sling/commons/contentdetection/internal/it/ContentAwareMimeTypeServiceImplIT.java
@@ -20,9 +20,9 @@ package org.apache.sling.commons.contentdetection.internal.it;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.assertFalse;
 
 import java.io.BufferedInputStream;
+import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 
@@ -60,58 +60,42 @@ public class ContentAwareMimeTypeServiceImplIT {
         }
     };
     
-    abstract class AssertDetect {
-        void assertDetection(String expectedType, boolean expectSameContent) throws IOException {
-            final String filename = "this-is-actually-a-wav-file.mp3";
-            final String path = "/" + filename;
-            final InputStream s = wrapStream(getClass().getResourceAsStream(path));
-            assertNotNull("Expecting stream to be found:" + filename, s);
-            InputStream originalStream = null;
-            try {
-                assertEquals(expectedType, contentAwaremimeTypeService.getMimeType(filename, s));
-                originalStream = getClass().getResourceAsStream(path);
-                assertNotNull("Expecting stream to be found:" + filename, originalStream);
-                if(expectSameContent) {
-                    assertTrue("Expecting content to be unchanged", IOUtils.contentEquals(s, originalStream));
-                } else {
-                    assertFalse("Expecting content to have changed", IOUtils.contentEquals(s, originalStream));
-                }
-            } finally {
-                IOUtils.closeQuietly(s);
-                IOUtils.closeQuietly(originalStream);
-            }
-        }
-        
-        abstract InputStream wrapStream(InputStream toWrap);
-    }
-
     @Test
-    public void detectFromExtension(){
+    public void detectFromExtension() throws IOException {
         String mimeTypeName = "test.mp3";
         String mimeType = "audio/mpeg";
-        assertEquals(mimeType, contentAwaremimeTypeService.getMimeType(mimeTypeName));
+        assertEquals("Expecting mp3 type without InputStream parameter",
+                mimeType, contentAwaremimeTypeService.getMimeType(mimeTypeName));
+        assertEquals("Expecting mp3 type with null InputStream parameter",
+                mimeType, contentAwaremimeTypeService.getMimeType(mimeTypeName, null));
     }
 
     @Test
     public void detectFromContent() throws IOException{
-        new AssertDetect() {
-            @Override
-            InputStream wrapStream(InputStream toWrap) {
-                return new BufferedInputStream(toWrap);
-            }
-        }.assertDetection("audio/x-wav", true);
+        final String filename = "this-is-actually-a-wav-file.mp3";
+        final String path = "/" + filename;
+        final InputStream s = new BufferedInputStream(getClass().getResourceAsStream(path));
+        assertNotNull("Expecting stream to be found:" + filename, s);
+        InputStream originalStream = null;
+        try {
+            assertEquals("audio/x-wav", contentAwaremimeTypeService.getMimeType(filename, s));
+            originalStream = getClass().getResourceAsStream(path);
+            assertNotNull("Expecting stream to be found:" + filename, originalStream);
+            assertTrue("Expecting content to be unchanged", IOUtils.contentEquals(s, originalStream));
+        } finally {
+            IOUtils.closeQuietly(s);
+            IOUtils.closeQuietly(originalStream);
+        }
     }
     
-    @Test
-    public void detectFromContentWithNonMarkableStream() throws IOException{
-        // Interestingly, with a non-markable stream  the detector falls back to
-        // filename detection but still touches the content stream
-        new AssertDetect() {
-            @Override
-            InputStream wrapStream(InputStream toWrap) {
-                return new NonMarkableStream(toWrap);
-            }
-        }.assertDetection("audio/mpeg", false);
+    @Test(expected=IllegalArgumentException.class)
+    public void nonMarkableStreamDetectionShouldFail() throws IOException{
+        final InputStream nms = new NonMarkableStream(new ByteArrayInputStream("1234567890".getBytes()));
+        try {
+            contentAwaremimeTypeService.getMimeType("foo.txt", nms);
+        } finally {
+            IOUtils.closeQuietly(nms);
+        }
     }
     
     @org.ops4j.pax.exam.Configuration

-- 
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.

[sling-org-apache-sling-commons-contentdetection] 32/39: Added .gitignore to the contentdetection bundle

Posted by ro...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 7bdf36d82698c934aac8d3c2363777e9130717ac
Author: Tomasz Rekawek <to...@apache.org>
AuthorDate: Fri Oct 16 09:43:11 2015 +0000

    Added .gitignore to the contentdetection bundle
    
    git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1708934 13f79535-47bb-0310-9956-ffa450edef68
---
 .gitignore | 1 +
 1 file changed, 1 insertion(+)

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..33554c7
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+jackrabbit

-- 
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.

[sling-org-apache-sling-commons-contentdetection] 38/39: use org.apache.sling.testing.paxexam 0.0.4

Posted by ro...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 80b2ffbe48f2218cc4a2b3f64080d6ab336d107e
Author: Oliver Lietz <ol...@apache.org>
AuthorDate: Mon Mar 20 23:11:17 2017 +0000

    use org.apache.sling.testing.paxexam 0.0.4
    
    git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1787883 13f79535-47bb-0310-9956-ffa450edef68
---
 pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pom.xml b/pom.xml
index 25299a3..dbf06a3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -92,7 +92,7 @@
         <dependency>
             <groupId>org.apache.sling</groupId>
             <artifactId>org.apache.sling.testing.paxexam</artifactId>
-            <version>0.0.5-SNAPSHOT</version>
+            <version>0.0.4</version>
             <scope>test</scope>
         </dependency>
         <!-- Apache Tika-->

-- 
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.

[sling-org-apache-sling-commons-contentdetection] 28/39: SLING-4694 - we'll release as 1.0.2

Posted by ro...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 764fb39121a0b28f7d2d948c6f831b4835346d84
Author: Bertrand Delacretaz <bd...@apache.org>
AuthorDate: Mon Jul 6 11:56:04 2015 +0000

    SLING-4694 - we'll release as 1.0.2
    
    git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1689379 13f79535-47bb-0310-9956-ffa450edef68
---
 pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pom.xml b/pom.xml
index 5160678..46c54fa 100644
--- a/pom.xml
+++ b/pom.xml
@@ -29,7 +29,7 @@
     </parent>
 
     <artifactId>org.apache.sling.commons.contentdetection</artifactId>
-    <version>1.0.0</version>
+    <version>1.0.1-SNAPSHOT</version>
     <packaging>bundle</packaging>
 
     <name>Apache Sling Content Detection Support</name>

-- 
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.

[sling-org-apache-sling-commons-contentdetection] 36/39: add missing Felix SCR and bnd annotations

Posted by ro...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 4eb24396d9f7aa44076e29c41b9992d5b720b853
Author: Oliver Lietz <ol...@apache.org>
AuthorDate: Mon Mar 6 17:37:50 2017 +0000

    add missing Felix SCR and bnd annotations
    
    git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1785702 13f79535-47bb-0310-9956-ffa450edef68
---
 pom.xml | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/pom.xml b/pom.xml
index eea01f3..2d14f3a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -61,7 +61,16 @@
             <artifactId>osgi.core</artifactId>
             <scope>provided</scope>
         </dependency>
-
+        <dependency>
+            <groupId>org.apache.felix</groupId>
+            <artifactId>org.apache.felix.scr.annotations</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>biz.aQute.bnd</groupId>
+            <artifactId>biz.aQute.bndlib</artifactId>
+            <scope>provided</scope>
+        </dependency>
         <!-- Sling Dependencies-->
         <dependency>
             <version>2.1.8</version>

-- 
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.

[sling-org-apache-sling-commons-contentdetection] 10/39: SLING-4757 - remove relativePath as we did elsewhere

Posted by ro...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit fd368cf46c75a135e4739d5270d320bd55162bda
Author: Bertrand Delacretaz <bd...@apache.org>
AuthorDate: Mon Jun 1 12:51:59 2015 +0000

    SLING-4757 - remove relativePath as we did elsewhere
    
    git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1682891 13f79535-47bb-0310-9956-ffa450edef68
---
 pom.xml | 1 -
 1 file changed, 1 deletion(-)

diff --git a/pom.xml b/pom.xml
index 97b87ea..297ce31 100644
--- a/pom.xml
+++ b/pom.xml
@@ -25,7 +25,6 @@
         <groupId>org.apache.sling</groupId>
         <artifactId>sling</artifactId>
         <version>22</version>
-        <relativePath>../../../parent/pom.xml</relativePath>
     </parent>
 
     <artifactId>org.apache.sling.commons.contentdetection</artifactId>

-- 
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.