This is an automated email from the ASF dual-hosted git repository.
dklco pushed a commit to branch master
in repository
https://gitbox.apache.org/repos/asf/sling-org-apache-sling-file-optimization.git
The following commit(s) were added to refs/heads/master by this push:
new 0ee267a Fixing a number of SonarQube issues and fixing an issue where
the original contents were sent for the preview servlet
0ee267a is described below
commit 0ee267a42761a716a3290467434d74a25519c26c
Author: Dan Klco <[email protected]>
AuthorDate: Tue Sep 4 22:01:30 2018 -0400
Fixing a number of SonarQube issues and fixing an issue where the
original contents were sent for the preview servlet
---
pom.xml | 29 +++++++-
.../org/apache/sling/fileoptim/FileOptimizer.java | 13 ++--
...eOptimizer.java => FileOptimizerConstants.java} | 33 +++------
.../sling/fileoptim/FileOptimizerService.java | 28 +++-----
.../fileoptim/impl/FileOptimizerServiceImpl.java | 78 ++++++++++++----------
.../fileoptim/impl/OptimizeFileOperation.java | 5 +-
.../fileoptim/impl/RestoreOriginalOperation.java | 21 +++---
.../impl/filters/FileOptimizerFilter.java | 2 +
.../fileoptim/impl/servlets/FileOptimizerData.java | 3 +-
.../impl/servlets/FileOptimizerPreview.java | 6 +-
.../sling/fileoptim/models/OptimizeResource.java | 3 +-
.../sling/fileoptim/models/OptimizedFile.java | 19 ++----
.../sling/fileoptim/{ => models}/package-info.java | 2 +-
.../fileoptim/optimizers/JpegFileOptimizer.java | 3 +-
.../fileoptim/optimizers/PngFileOptimizer.java | 3 +-
.../sling/fileoptim/optimizers/package-info.java | 20 +++---
.../org/apache/sling/fileoptim/package-info.java | 2 +-
.../sling/fileoptim/BaseFileOptimizerTest.java | 2 +-
18 files changed, 140 insertions(+), 132 deletions(-)
diff --git a/pom.xml b/pom.xml
index 62cfc12..e128c05 100644
--- a/pom.xml
+++ b/pom.xml
@@ -9,7 +9,9 @@
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/maven-v4_0_0.xsd">
+<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
@@ -52,6 +54,24 @@
</instructions>
</configuration>
</plugin>
+ <plugin>
+ <groupId>org.jacoco</groupId>
+ <artifactId>jacoco-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <goals>
+
<goal>prepare-agent</goal>
+ </goals>
+ </execution>
+ <execution>
+ <id>report</id>
+ <phase>prepare-package</phase>
+ <goals>
+ <goal>report</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
</plugins>
</build>
@@ -158,6 +178,13 @@
<groupId>org.apache.sling</groupId>
<scope>provided</scope>
</dependency>
+ <dependency>
+ <groupId>org.jetbrains</groupId>
+ <artifactId>annotations</artifactId>
+ <version>16.0.2</version>
+ <scope>provided</scope>
+ </dependency>
+
<!-- Sling Models -->
<dependency>
diff --git a/src/main/java/org/apache/sling/fileoptim/FileOptimizer.java
b/src/main/java/org/apache/sling/fileoptim/FileOptimizer.java
index 7196aba..e304c42 100644
--- a/src/main/java/org/apache/sling/fileoptim/FileOptimizer.java
+++ b/src/main/java/org/apache/sling/fileoptim/FileOptimizer.java
@@ -16,22 +16,22 @@
*/
package org.apache.sling.fileoptim;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
/**
* Interface for File Optimizers to extend to implement
*/
public interface FileOptimizer {
- public static final String MIME_TYPE = "mime.type";
-
/**
* Optimize a single file.
*
- * @param original
- * the original file to optimize
- * @param metaType
- * the type of the file to optimize
+ * @param original the original file to optimize
+ * @param metaType the type of the file to optimize
* @return the optimized file
*/
+ @Nullable
byte[] optimizeFile(byte[] original, String metaType);
/**
@@ -39,6 +39,7 @@ public interface FileOptimizer {
*
* @return the name of the optimizer
*/
+ @NotNull
String getName();
}
diff --git a/src/main/java/org/apache/sling/fileoptim/FileOptimizer.java
b/src/main/java/org/apache/sling/fileoptim/FileOptimizerConstants.java
similarity index 59%
copy from src/main/java/org/apache/sling/fileoptim/FileOptimizer.java
copy to src/main/java/org/apache/sling/fileoptim/FileOptimizerConstants.java
index 7196aba..2cae438 100644
--- a/src/main/java/org/apache/sling/fileoptim/FileOptimizer.java
+++ b/src/main/java/org/apache/sling/fileoptim/FileOptimizerConstants.java
@@ -16,29 +16,18 @@
*/
package org.apache.sling.fileoptim;
-/**
- * Interface for File Optimizers to extend to implement
- */
-public interface FileOptimizer {
-
- public static final String MIME_TYPE = "mime.type";
+public class FileOptimizerConstants {
- /**
- * Optimize a single file.
- *
- * @param original
- * the original file to optimize
- * @param metaType
- * the type of the file to optimize
- * @return the optimized file
- */
- byte[] optimizeFile(byte[] original, String metaType);
+ private FileOptimizerConstants() {
+ }
- /**
- * Gets the name of the optimizer
- *
- * @return the name of the optimizer
- */
- String getName();
+ public static final String MIME_TYPE = "mime.type";
+ public static final String PREFIX = "optim:";
+ public static final String MT_OPTIMIZED = PREFIX + "optimized";
+ public static final String PN_ALGORITHM = FileOptimizerConstants.PREFIX
+ "algrithm";
+ public static final String PN_DISABLED = FileOptimizerConstants.PREFIX
+ "disabled";
+ public static final String PN_HASH = FileOptimizerConstants.PREFIX +
"hash";
+ public static final String PN_ORIGINAL = FileOptimizerConstants.PREFIX
+ "original";
+ public static final String PN_SAVINGS = FileOptimizerConstants.PREFIX +
"savings";
}
diff --git a/src/main/java/org/apache/sling/fileoptim/FileOptimizerService.java
b/src/main/java/org/apache/sling/fileoptim/FileOptimizerService.java
index 9739eb9..e05192d 100644
--- a/src/main/java/org/apache/sling/fileoptim/FileOptimizerService.java
+++ b/src/main/java/org/apache/sling/fileoptim/FileOptimizerService.java
@@ -18,7 +18,6 @@ package org.apache.sling.fileoptim;
import java.io.IOException;
-import org.apache.sling.api.resource.PersistenceException;
import org.apache.sling.api.resource.Resource;
/**
@@ -31,8 +30,7 @@ public interface FileOptimizerService {
* resource is enabled and if an optimizer is registered for the file's
meta
* type
*
- * @param fileResource
- * the resource to check if the optimizer is available
+ * @param fileResource the resource to check if the optimizer is
available
* @return true if the file optimizer can optimize the file, false
otherwise
*/
boolean canOptimize(Resource fileResource);
@@ -42,11 +40,9 @@ public interface FileOptimizerService {
* underlying resource, but instead just returns the results of
optimizing the
* resource.
*
- * @param fileResource
- * the resource to optimize
+ * @param fileResource the resource to optimize
* @return the results of the optimization
- * @throws IOException
- * an exception occurs reading the original resource
+ * @throws IOException an exception occurs reading the original resource
*/
OptimizationResult getOptimizedContents(Resource fileResource) throws
IOException;
@@ -54,8 +50,7 @@ public interface FileOptimizerService {
* Returns true if the specified resource has already been optimized by
the
* FileOptimizer.
*
- * @param fileResource
- * the resource to check
+ * @param fileResource the resource to check
* @return true if optimized by the file optimizer, false otherwise
*/
boolean isOptimized(Resource fileResource);
@@ -63,17 +58,12 @@ public interface FileOptimizerService {
/**
* Optimizes a file resource. This method will modify the underlying
resource.
*
- * @param fileResource
- * the resource to optimize
- * @param autoCommit
- * if true, the results will automatically be committed to
the Sling
- * Repo
+ * @param fileResource the resource to optimize
+ * @param autoCommit if true, the results will automatically be
committed to
+ * the Sling Repo
* @return the results of the optimization
- * @throws PersistenceException
- * an exception occurs saving the optimized resource
- * @throws IOException
- * an exception occurs reading the original resource
+ * @throws IOException an exception occurs reading the original resource
*/
- OptimizationResult optimizeFile(Resource fileResource, boolean
autoCommit) throws PersistenceException, IOException;
+ OptimizationResult optimizeFile(Resource fileResource, boolean
autoCommit) throws IOException;
}
diff --git
a/src/main/java/org/apache/sling/fileoptim/impl/FileOptimizerServiceImpl.java
b/src/main/java/org/apache/sling/fileoptim/impl/FileOptimizerServiceImpl.java
index 0314c79..4d5a2d6 100644
---
a/src/main/java/org/apache/sling/fileoptim/impl/FileOptimizerServiceImpl.java
+++
b/src/main/java/org/apache/sling/fileoptim/impl/FileOptimizerServiceImpl.java
@@ -39,6 +39,7 @@ import org.apache.jackrabbit.JcrConstants;
import org.apache.sling.api.resource.ModifiableValueMap;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.fileoptim.FileOptimizer;
+import org.apache.sling.fileoptim.FileOptimizerConstants;
import org.apache.sling.fileoptim.FileOptimizerService;
import org.apache.sling.fileoptim.OptimizationResult;
import org.apache.sling.fileoptim.impl.FileOptimizerServiceImpl.Config;
@@ -80,7 +81,7 @@ public class FileOptimizerServiceImpl implements
FileOptimizerService, ServiceLi
private Config config;
- private Map<String, List<ServiceReference<FileOptimizer>>>
fileOptimizers = new HashMap<String, List<ServiceReference<FileOptimizer>>>();
+ private Map<String, List<ServiceReference<FileOptimizer>>>
fileOptimizers = new HashMap<>();
@Activate
@Modified
@@ -119,8 +120,8 @@ public class FileOptimizerServiceImpl implements
FileOptimizerService, ServiceLi
fileResource =
fileResource.getChild(JcrConstants.JCR_CONTENT);
}
OptimizedFile of = fileResource.adaptTo(OptimizedFile.class);
- return of != null && of.getDisabled() != true &&
fileOptimizers.containsKey(of.getMimeType())
- && fileOptimizers.get(of.getMimeType()).size()
> 0;
+ return of != null && !of.getDisabled() &&
fileOptimizers.containsKey(of.getMimeType())
+ &&
!fileOptimizers.get(of.getMimeType()).isEmpty();
}
@Deactivate
@@ -159,36 +160,41 @@ public class FileOptimizerServiceImpl implements
FileOptimizerService, ServiceLi
}
if (optimize) {
- log.debug("Optimizing file resource {}", fileResource);
- List<ServiceReference<FileOptimizer>> optimizers =
fileOptimizers.get(optim.getMimeType());
- for (ServiceReference<FileOptimizer> ref : optimizers) {
- FileOptimizer optimizer =
bundleContext.getService(ref);
- if (optimizer != null) {
- byte[] optimized =
optimizer.optimizeFile(original, optim.getMimeType());
- if (optimized != null &&
optimized.length < original.length) {
-
- double savings = 1.0 -
((double) optimized.length / (double) original.length);
-
- log.debug("Optimized file with
{} saving {}%", optimizer.getName(), Math.round(savings * 100));
-
result.setAlgorithm(optimizer.getName());
- result.setSavings(savings);
- result.setOptimized(true);
-
result.setOptimizedSize(optimized.length);
-
result.setOriginalSize(original.length);
-
result.setOptimizedContents(optimized);
- } else {
- log.debug("Optimizer {} was not
able to optimize the file", optimizer.getName());
- }
- } else {
- log.warn("No service retrieved for
service reference {}", ref);
- }
- }
+ doOptimize(fileResource, result, optim, original);
} else {
log.trace("Resource {} is already optimized",
fileResource);
}
return result;
}
+ private void doOptimize(Resource fileResource, OptimizationResult
result, OptimizedFile optim, byte[] original) {
+ log.debug("Optimizing file resource {}", fileResource);
+ List<ServiceReference<FileOptimizer>> optimizers =
fileOptimizers.get(optim.getMimeType());
+ for (ServiceReference<FileOptimizer> ref : optimizers) {
+ FileOptimizer optimizer = bundleContext.getService(ref);
+ if (optimizer == null) {
+ log.warn("No service retrieved for service
reference {}", ref);
+ continue;
+ }
+
+ byte[] optimized = optimizer.optimizeFile(original,
optim.getMimeType());
+ if (optimized != null && optimized.length <
original.length) {
+
+ double savings = 1.0 - ((double)
optimized.length / (double) original.length);
+
+ log.debug("Optimized file with {} saving {}%",
optimizer.getName(), Math.round(savings * 100));
+ result.setAlgorithm(optimizer.getName());
+ result.setSavings(savings);
+ result.setOptimized(true);
+ result.setOptimizedSize(optimized.length);
+ result.setOriginalSize(original.length);
+ result.setOptimizedContents(optimized);
+ } else {
+ log.debug("Optimizer {} was not able to
optimize the file", optimizer.getName());
+ }
+ }
+ }
+
@Override
public boolean isOptimized(Resource fileResource) {
@@ -215,14 +221,14 @@ public class FileOptimizerServiceImpl implements
FileOptimizerService, ServiceLi
ModifiableValueMap mvm =
fileResource.adaptTo(ModifiableValueMap.class);
- Set<String> mixins = new
HashSet<String>(Arrays.asList(mvm.get(JcrConstants.JCR_MIXINTYPES, new
String[0])));
- mixins.add(OptimizedFile.MT_OPTIMIZED);
+ Set<String> mixins = new
HashSet<>(Arrays.asList(mvm.get(JcrConstants.JCR_MIXINTYPES, new String[0])));
+ mixins.add(FileOptimizerConstants.MT_OPTIMIZED);
mvm.put(JcrConstants.JCR_MIXINTYPES, mixins.toArray(new
String[] {}));
- mvm.put(OptimizedFile.PN_ALGORITHM, result.getAlgorithm());
- mvm.put(OptimizedFile.PN_HASH,
calculateHash(result.getOptimizedContents()));
- mvm.put(OptimizedFile.PN_ORIGINAL,
mvm.get(JcrConstants.JCR_DATA, InputStream.class));
- mvm.put(OptimizedFile.PN_SAVINGS, result.getSavings());
+ mvm.put(FileOptimizerConstants.PN_ALGORITHM,
result.getAlgorithm());
+ mvm.put(FileOptimizerConstants.PN_HASH,
calculateHash(result.getOptimizedContents()));
+ mvm.put(FileOptimizerConstants.PN_ORIGINAL,
mvm.get(JcrConstants.JCR_DATA, InputStream.class));
+ mvm.put(FileOptimizerConstants.PN_SAVINGS, result.getSavings());
mvm.put(JcrConstants.JCR_DATA, new
ByteArrayInputStream(result.getOptimizedContents()));
@@ -237,7 +243,7 @@ public class FileOptimizerServiceImpl implements
FileOptimizerService, ServiceLi
private void rebuildOptimizerCache() {
log.debug("rebuildOptimizerCache");
- Map<String, List<ServiceReference<FileOptimizer>>> tempCache =
new HashMap<String, List<ServiceReference<FileOptimizer>>>();
+ Map<String, List<ServiceReference<FileOptimizer>>> tempCache =
new HashMap<>();
Collection<ServiceReference<FileOptimizer>> references = null;
try {
references =
bundleContext.getServiceReferences(FileOptimizer.class, null);
@@ -245,8 +251,8 @@ public class FileOptimizerServiceImpl implements
FileOptimizerService, ServiceLi
log.error("Exception retrieving service references", e);
}
for (ServiceReference<FileOptimizer> ref : references) {
- Object mimeType =
ref.getProperty(FileOptimizer.MIME_TYPE);
- if (mimeType != null && mimeType instanceof String[]) {
+ Object mimeType =
ref.getProperty(FileOptimizerConstants.MIME_TYPE);
+ if (mimeType instanceof String[]) {
for (String mt : (String[]) mimeType) {
addOptimizer(tempCache, mt, ref);
}
diff --git
a/src/main/java/org/apache/sling/fileoptim/impl/OptimizeFileOperation.java
b/src/main/java/org/apache/sling/fileoptim/impl/OptimizeFileOperation.java
index da42e91..486bbad 100644
--- a/src/main/java/org/apache/sling/fileoptim/impl/OptimizeFileOperation.java
+++ b/src/main/java/org/apache/sling/fileoptim/impl/OptimizeFileOperation.java
@@ -49,8 +49,7 @@ public class OptimizeFileOperation implements PostOperation {
@Reference
private FileOptimizerService fileOptimizer;
- protected void doRun(SlingHttpServletRequest request, PostResponse
response, List<Modification> changes)
- throws IOException {
+ protected void doRun(SlingHttpServletRequest request,
List<Modification> changes) throws IOException {
Resource resource = request.getResource();
if (fileOptimizer.canOptimize(resource)) {
@@ -72,7 +71,7 @@ public class OptimizeFileOperation implements PostOperation {
final List<Modification> changes = new ArrayList<>();
- doRun(request, response, changes);
+ doRun(request, changes);
// invoke processors
if (processors != null) {
diff --git
a/src/main/java/org/apache/sling/fileoptim/impl/RestoreOriginalOperation.java
b/src/main/java/org/apache/sling/fileoptim/impl/RestoreOriginalOperation.java
index 638f821..99c0407 100644
---
a/src/main/java/org/apache/sling/fileoptim/impl/RestoreOriginalOperation.java
+++
b/src/main/java/org/apache/sling/fileoptim/impl/RestoreOriginalOperation.java
@@ -29,8 +29,8 @@ import org.apache.jackrabbit.JcrConstants;
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.resource.ModifiableValueMap;
import org.apache.sling.api.resource.Resource;
+import org.apache.sling.fileoptim.FileOptimizerConstants;
import org.apache.sling.fileoptim.FileOptimizerService;
-import org.apache.sling.fileoptim.models.OptimizedFile;
import org.apache.sling.servlets.post.Modification;
import org.apache.sling.servlets.post.PostOperation;
import org.apache.sling.servlets.post.PostResponse;
@@ -52,19 +52,18 @@ public class RestoreOriginalOperation implements
PostOperation {
@Reference
private FileOptimizerService fileOptimizer;
- protected void doRun(SlingHttpServletRequest request, PostResponse
response, List<Modification> changes)
- throws IOException {
+ protected void doRun(SlingHttpServletRequest request,
List<Modification> changes) throws IOException {
Resource resource = request.getResource();
if (fileOptimizer.isOptimized(resource)) {
ModifiableValueMap mvm =
resource.getChild(JcrConstants.JCR_CONTENT).adaptTo(ModifiableValueMap.class);
- mvm.put(JcrConstants.JCR_DATA,
mvm.get(OptimizedFile.PN_ORIGINAL, InputStream.class));
- mvm.remove(OptimizedFile.PN_ORIGINAL);
- mvm.remove(OptimizedFile.PN_ALGORITHM);
- mvm.remove(OptimizedFile.PN_HASH);
- mvm.remove(OptimizedFile.PN_SAVINGS);
-
+ mvm.put(JcrConstants.JCR_DATA,
mvm.get(FileOptimizerConstants.PN_ORIGINAL, InputStream.class));
+ mvm.remove(FileOptimizerConstants.PN_ORIGINAL);
+ mvm.remove(FileOptimizerConstants.PN_ALGORITHM);
+ mvm.remove(FileOptimizerConstants.PN_HASH);
+ mvm.remove(FileOptimizerConstants.PN_SAVINGS);
+
resource.getResourceResolver().commit();
-
+
changes.add(Modification.onModified(resource.getPath()));
}
}
@@ -79,7 +78,7 @@ public class RestoreOriginalOperation implements
PostOperation {
final List<Modification> changes = new ArrayList<>();
- doRun(request, response, changes);
+ doRun(request, changes);
// invoke processors
if (processors != null) {
diff --git
a/src/main/java/org/apache/sling/fileoptim/impl/filters/FileOptimizerFilter.java
b/src/main/java/org/apache/sling/fileoptim/impl/filters/FileOptimizerFilter.java
index 466c212..35609a9 100644
---
a/src/main/java/org/apache/sling/fileoptim/impl/filters/FileOptimizerFilter.java
+++
b/src/main/java/org/apache/sling/fileoptim/impl/filters/FileOptimizerFilter.java
@@ -70,6 +70,7 @@ public class FileOptimizerFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
+ // Nothing required
}
@Override
@@ -104,6 +105,7 @@ public class FileOptimizerFilter implements Filter {
@Override
public void destroy() {
+ // Nothing requireds
}
}
diff --git
a/src/main/java/org/apache/sling/fileoptim/impl/servlets/FileOptimizerData.java
b/src/main/java/org/apache/sling/fileoptim/impl/servlets/FileOptimizerData.java
index ff7b986..4a2bba2 100644
---
a/src/main/java/org/apache/sling/fileoptim/impl/servlets/FileOptimizerData.java
+++
b/src/main/java/org/apache/sling/fileoptim/impl/servlets/FileOptimizerData.java
@@ -40,10 +40,11 @@ import org.osgi.service.component.annotations.Reference;
public class FileOptimizerData extends SlingSafeMethodsServlet {
@Reference
- private FileOptimizerService fileOptimizer;
+ private transient FileOptimizerService fileOptimizer;
private static final long serialVersionUID = 8635343288414416865L;
+ @Override
protected void doGet(SlingHttpServletRequest request,
SlingHttpServletResponse response)
throws ServletException, IOException {
String path = request.getParameter("path");
diff --git
a/src/main/java/org/apache/sling/fileoptim/impl/servlets/FileOptimizerPreview.java
b/src/main/java/org/apache/sling/fileoptim/impl/servlets/FileOptimizerPreview.java
index 3786097..9b2dc08 100644
---
a/src/main/java/org/apache/sling/fileoptim/impl/servlets/FileOptimizerPreview.java
+++
b/src/main/java/org/apache/sling/fileoptim/impl/servlets/FileOptimizerPreview.java
@@ -17,7 +17,6 @@
package org.apache.sling.fileoptim.impl.servlets;
import java.io.IOException;
-import java.io.InputStream;
import javax.servlet.Servlet;
import javax.servlet.ServletException;
@@ -42,10 +41,11 @@ import org.osgi.service.component.annotations.Reference;
public class FileOptimizerPreview extends SlingSafeMethodsServlet {
@Reference
- private FileOptimizerService fileOptimizer;
+ private transient FileOptimizerService fileOptimizer;
private static final long serialVersionUID = 8635343288414416865L;
+ @Override
protected void doGet(SlingHttpServletRequest request,
SlingHttpServletResponse response)
throws ServletException, IOException {
String path = request.getParameter("path");
@@ -59,7 +59,7 @@ public class FileOptimizerPreview extends
SlingSafeMethodsServlet {
ValueMap vm = res.getResource().getValueMap();
response.setContentType(vm.get(JcrConstants.JCR_MIMETYPE, String.class));
response.setHeader("Content-disposition", "inline;
filename=" + resource.getName());
- IOUtils.copy(vm.get(JcrConstants.JCR_DATA,
InputStream.class), response.getOutputStream());
+ IOUtils.copy(res.getOptimizedContentStream(),
response.getOutputStream());
} else {
response.sendError(400, "Resource at path " + path + "
is not a file or cannot be optimized");
}
diff --git
a/src/main/java/org/apache/sling/fileoptim/models/OptimizeResource.java
b/src/main/java/org/apache/sling/fileoptim/models/OptimizeResource.java
index 218929a..d817393 100644
--- a/src/main/java/org/apache/sling/fileoptim/models/OptimizeResource.java
+++ b/src/main/java/org/apache/sling/fileoptim/models/OptimizeResource.java
@@ -20,7 +20,6 @@ import java.io.IOException;
import javax.annotation.PostConstruct;
-import org.apache.sling.api.resource.PersistenceException;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.fileoptim.FileOptimizerService;
import org.apache.sling.fileoptim.OptimizationResult;
@@ -52,7 +51,7 @@ public class OptimizeResource {
}
@PostConstruct
- public void init() throws PersistenceException, IOException {
+ public void init() throws IOException {
log.debug("initializing with resource {}", resource);
if (fileOptimizer.canOptimize(resource)) {
this.canOptimize = true;
diff --git a/src/main/java/org/apache/sling/fileoptim/models/OptimizedFile.java
b/src/main/java/org/apache/sling/fileoptim/models/OptimizedFile.java
index 061701b..d209ad7 100644
--- a/src/main/java/org/apache/sling/fileoptim/models/OptimizedFile.java
+++ b/src/main/java/org/apache/sling/fileoptim/models/OptimizedFile.java
@@ -23,6 +23,7 @@ import javax.inject.Named;
import org.apache.jackrabbit.JcrConstants;
import org.apache.sling.api.resource.Resource;
+import org.apache.sling.fileoptim.FileOptimizerConstants;
import org.apache.sling.models.annotations.Default;
import org.apache.sling.models.annotations.DefaultInjectionStrategy;
import org.apache.sling.models.annotations.Model;
@@ -34,19 +35,11 @@ import org.apache.sling.models.annotations.Required;
@Model(adaptables = Resource.class, defaultInjectionStrategy =
DefaultInjectionStrategy.OPTIONAL)
public interface OptimizedFile {
- static final String PREFIX = "optim:";
- public static final String MT_OPTIMIZED = PREFIX + "optimized";
- public static final String PN_ALGORITHM = PREFIX + "algrithm";
- public static final String PN_DISABLED = PREFIX + "disabled";
- public static final String PN_HASH = PREFIX + "hash";
- public static final String PN_ORIGINAL = PREFIX + "original";
- public static final String PN_SAVINGS = PREFIX + "savings";
-
- @Named(PN_ALGORITHM)
+ @Named(FileOptimizerConstants.PN_ALGORITHM)
@Inject
String getAlgorithm();
- @Named(PN_DISABLED)
+ @Named(FileOptimizerConstants.PN_DISABLED)
@Inject
@Default(booleanValues = false)
boolean getDisabled();
@@ -56,7 +49,7 @@ public interface OptimizedFile {
@Required
InputStream getContent();
- @Named(PN_HASH)
+ @Named(FileOptimizerConstants.PN_HASH)
@Inject
String getHash();
@@ -65,11 +58,11 @@ public interface OptimizedFile {
@Required
String getMimeType();
- @Named(PN_ORIGINAL)
+ @Named(FileOptimizerConstants.PN_ORIGINAL)
@Inject
InputStream getOriginal();
- @Named(PN_SAVINGS)
+ @Named(FileOptimizerConstants.PN_SAVINGS)
@Inject
double getSavings();
diff --git a/src/main/java/org/apache/sling/fileoptim/package-info.java
b/src/main/java/org/apache/sling/fileoptim/models/package-info.java
similarity index 95%
copy from src/main/java/org/apache/sling/fileoptim/package-info.java
copy to src/main/java/org/apache/sling/fileoptim/models/package-info.java
index 9b2977b..af40c1d 100644
--- a/src/main/java/org/apache/sling/fileoptim/package-info.java
+++ b/src/main/java/org/apache/sling/fileoptim/models/package-info.java
@@ -15,4 +15,4 @@
* limitations under the License.
*/
@org.osgi.annotation.versioning.Version("1.0.0")
-package org.apache.sling.fileoptim;
\ No newline at end of file
+package org.apache.sling.fileoptim.models;
\ No newline at end of file
diff --git
a/src/main/java/org/apache/sling/fileoptim/optimizers/JpegFileOptimizer.java
b/src/main/java/org/apache/sling/fileoptim/optimizers/JpegFileOptimizer.java
index 9b641d9..c7702e2 100644
--- a/src/main/java/org/apache/sling/fileoptim/optimizers/JpegFileOptimizer.java
+++ b/src/main/java/org/apache/sling/fileoptim/optimizers/JpegFileOptimizer.java
@@ -28,6 +28,7 @@ import javax.imageio.stream.ImageOutputStream;
import javax.imageio.stream.MemoryCacheImageOutputStream;
import org.apache.sling.fileoptim.FileOptimizer;
+import org.apache.sling.fileoptim.FileOptimizerConstants;
import org.apache.sling.fileoptim.optimizers.JpegFileOptimizer.Config;
import org.osgi.service.component.annotations.Activate;
import org.osgi.service.component.annotations.Component;
@@ -41,7 +42,7 @@ import org.slf4j.LoggerFactory;
/**
* Default optimizer which lossily compresses a JPEG image.
*/
-@Component(service = FileOptimizer.class, property = { FileOptimizer.MIME_TYPE
+ "=image/jpeg" })
+@Component(service = FileOptimizer.class, property = {
FileOptimizerConstants.MIME_TYPE + "=image/jpeg" })
@Designate(ocd = Config.class)
public class JpegFileOptimizer implements FileOptimizer {
diff --git
a/src/main/java/org/apache/sling/fileoptim/optimizers/PngFileOptimizer.java
b/src/main/java/org/apache/sling/fileoptim/optimizers/PngFileOptimizer.java
index e5fe63f..c7f23bf 100644
--- a/src/main/java/org/apache/sling/fileoptim/optimizers/PngFileOptimizer.java
+++ b/src/main/java/org/apache/sling/fileoptim/optimizers/PngFileOptimizer.java
@@ -21,6 +21,7 @@ import java.io.ByteArrayOutputStream;
import java.io.IOException;
import org.apache.sling.fileoptim.FileOptimizer;
+import org.apache.sling.fileoptim.FileOptimizerConstants;
import org.osgi.service.component.annotations.Component;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -31,7 +32,7 @@ import com.googlecode.pngtastic.core.PngOptimizer;
/**
* Default optimizer which lossly compresses a PNG image.
*/
-@Component(service = FileOptimizer.class, property = { FileOptimizer.MIME_TYPE
+ "=image/png" })
+@Component(service = FileOptimizer.class, property = {
FileOptimizerConstants.MIME_TYPE + "=image/png" })
public class PngFileOptimizer implements FileOptimizer {
private static final Logger log =
LoggerFactory.getLogger(PngFileOptimizer.class);
diff --git
a/src/main/java/org/apache/sling/fileoptim/optimizers/package-info.java
b/src/main/java/org/apache/sling/fileoptim/optimizers/package-info.java
index 976de2c..631b918 100644
--- a/src/main/java/org/apache/sling/fileoptim/optimizers/package-info.java
+++ b/src/main/java/org/apache/sling/fileoptim/optimizers/package-info.java
@@ -1,18 +1,18 @@
/*
* 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
+ * 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
+ * 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.
+ * 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.
*/
@org.osgi.annotation.versioning.Version("1.0.0")
package org.apache.sling.fileoptim.optimizers;
\ No newline at end of file
diff --git a/src/main/java/org/apache/sling/fileoptim/package-info.java
b/src/main/java/org/apache/sling/fileoptim/package-info.java
index 9b2977b..36a43f9 100644
--- a/src/main/java/org/apache/sling/fileoptim/package-info.java
+++ b/src/main/java/org/apache/sling/fileoptim/package-info.java
@@ -14,5 +14,5 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
[email protected]("1.0.0")
[email protected]("2.0.0")
package org.apache.sling.fileoptim;
\ No newline at end of file
diff --git
a/src/test/java/org/apache/sling/fileoptim/BaseFileOptimizerTest.java
b/src/test/java/org/apache/sling/fileoptim/BaseFileOptimizerTest.java
index df1d667..bef28fc 100644
--- a/src/test/java/org/apache/sling/fileoptim/BaseFileOptimizerTest.java
+++ b/src/test/java/org/apache/sling/fileoptim/BaseFileOptimizerTest.java
@@ -63,7 +63,7 @@ public abstract class BaseFileOptimizerTest {
// allow for populating the service cache
@SuppressWarnings("unchecked")
ServiceReference<FileOptimizer> ref =
Mockito.mock(ServiceReference.class);
-
Mockito.when(ref.getProperty(FileOptimizer.MIME_TYPE)).thenReturn("image/jpeg");
+
Mockito.when(ref.getProperty(FileOptimizerConstants.MIME_TYPE)).thenReturn("image/jpeg");
Collection<ServiceReference<FileOptimizer>> references = new
ArrayList<ServiceReference<FileOptimizer>>();
references.add(ref);
Mockito.when(bundleContext.getServiceReferences(FileOptimizer.class,
null)).thenReturn(references);