You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@clerezza.apache.org by ds...@apache.org on 2012/08/31 15:04:43 UTC

svn commit: r1379439 - in /incubator/clerezza/issues/CLEREZZA-716/utils.imageprocessing/src/main/java/org/apache/clerezza/utils/imageprocessing: AbstractImageReader.java ImageIOImageReader.java ImageReader.java ImageReaderService.java

Author: dspicar
Date: Fri Aug 31 13:04:42 2012
New Revision: 1379439

URL: http://svn.apache.org/viewvc?rev=1379439&view=rev
Log:
CLEREZZA-716: changed how to dynamically provide the service with the highest service ranking such that it is entirely managed by the ImageReaderService and implementations of ImageReader do not have to care.

Removed:
    incubator/clerezza/issues/CLEREZZA-716/utils.imageprocessing/src/main/java/org/apache/clerezza/utils/imageprocessing/AbstractImageReader.java
Modified:
    incubator/clerezza/issues/CLEREZZA-716/utils.imageprocessing/src/main/java/org/apache/clerezza/utils/imageprocessing/ImageIOImageReader.java
    incubator/clerezza/issues/CLEREZZA-716/utils.imageprocessing/src/main/java/org/apache/clerezza/utils/imageprocessing/ImageReader.java
    incubator/clerezza/issues/CLEREZZA-716/utils.imageprocessing/src/main/java/org/apache/clerezza/utils/imageprocessing/ImageReaderService.java

Modified: incubator/clerezza/issues/CLEREZZA-716/utils.imageprocessing/src/main/java/org/apache/clerezza/utils/imageprocessing/ImageIOImageReader.java
URL: http://svn.apache.org/viewvc/incubator/clerezza/issues/CLEREZZA-716/utils.imageprocessing/src/main/java/org/apache/clerezza/utils/imageprocessing/ImageIOImageReader.java?rev=1379439&r1=1379438&r2=1379439&view=diff
==============================================================================
--- incubator/clerezza/issues/CLEREZZA-716/utils.imageprocessing/src/main/java/org/apache/clerezza/utils/imageprocessing/ImageIOImageReader.java (original)
+++ incubator/clerezza/issues/CLEREZZA-716/utils.imageprocessing/src/main/java/org/apache/clerezza/utils/imageprocessing/ImageIOImageReader.java Fri Aug 31 13:04:42 2012
@@ -20,12 +20,9 @@ import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
 import java.net.URL;
-import java.util.Map;
 import javax.imageio.ImageIO;
 import javax.imageio.stream.ImageInputStream;
-import org.apache.felix.scr.annotations.Activate;
 import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Modified;
 import org.apache.felix.scr.annotations.Property;
 import org.apache.felix.scr.annotations.Service;
 import org.osgi.framework.Constants;
@@ -40,7 +37,7 @@ import org.osgi.framework.Constants;
         metatype=true)
 @Service(ImageReader.class)
 @Property(name=Constants.SERVICE_RANKING, intValue=0, propertyPrivate=false)
-public class ImageIOImageReader extends AbstractImageReader {
+public class ImageIOImageReader implements ImageReader {
     
     @Override
     public BufferedImage getBufferedImage(File file) throws IOException {
@@ -59,16 +56,4 @@ public class ImageIOImageReader extends 
     public BufferedImage getBufferedImage(URL url) throws IOException {
         return ImageIO.read(url);
     }
-
-    @Override
-    @Activate
-    protected void activate(Map<String, Object> config) {
-        super.activate(config);
-    }
-
-    @Override
-    @Modified
-    protected void modified(Map<String, Object> config) {
-        super.modified(config);
-    }
 }

Modified: incubator/clerezza/issues/CLEREZZA-716/utils.imageprocessing/src/main/java/org/apache/clerezza/utils/imageprocessing/ImageReader.java
URL: http://svn.apache.org/viewvc/incubator/clerezza/issues/CLEREZZA-716/utils.imageprocessing/src/main/java/org/apache/clerezza/utils/imageprocessing/ImageReader.java?rev=1379439&r1=1379438&r2=1379439&view=diff
==============================================================================
--- incubator/clerezza/issues/CLEREZZA-716/utils.imageprocessing/src/main/java/org/apache/clerezza/utils/imageprocessing/ImageReader.java (original)
+++ incubator/clerezza/issues/CLEREZZA-716/utils.imageprocessing/src/main/java/org/apache/clerezza/utils/imageprocessing/ImageReader.java Fri Aug 31 13:04:42 2012
@@ -58,11 +58,4 @@ public interface ImageReader {
      * image.
      */
     public BufferedImage getBufferedImage(URL url) throws IOException;
-    
-    /**
-     * Get the current service ranking.
-     * 
-     * @return the service ranking.
-     */
-    Integer getServiceRanking();
 }

Modified: incubator/clerezza/issues/CLEREZZA-716/utils.imageprocessing/src/main/java/org/apache/clerezza/utils/imageprocessing/ImageReaderService.java
URL: http://svn.apache.org/viewvc/incubator/clerezza/issues/CLEREZZA-716/utils.imageprocessing/src/main/java/org/apache/clerezza/utils/imageprocessing/ImageReaderService.java?rev=1379439&r1=1379438&r2=1379439&view=diff
==============================================================================
--- incubator/clerezza/issues/CLEREZZA-716/utils.imageprocessing/src/main/java/org/apache/clerezza/utils/imageprocessing/ImageReaderService.java (original)
+++ incubator/clerezza/issues/CLEREZZA-716/utils.imageprocessing/src/main/java/org/apache/clerezza/utils/imageprocessing/ImageReaderService.java Fri Aug 31 13:04:42 2012
@@ -15,15 +15,15 @@
  */
 package org.apache.clerezza.utils.imageprocessing;
 
-import java.util.Comparator;
-import java.util.SortedSet;
-import java.util.TreeSet;
+import org.apache.felix.scr.annotations.Activate;
 import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.Deactivate;
 import org.apache.felix.scr.annotations.Reference;
 import org.apache.felix.scr.annotations.ReferenceCardinality;
 import org.apache.felix.scr.annotations.ReferencePolicy;
 import org.apache.felix.scr.annotations.ReferenceStrategy;
 import org.apache.felix.scr.annotations.Service;
+import org.osgi.service.component.ComponentContext;
 
 /**
  * This service dynamically provides the registered {@link ImageReader} with the 
@@ -37,51 +37,50 @@ import org.apache.felix.scr.annotations.
 @Reference(name = "imageReaders", 
         referenceInterface = ImageReader.class, 
         cardinality = ReferenceCardinality.MANDATORY_MULTIPLE, 
-        policy = ReferencePolicy.DYNAMIC, 
-        strategy = ReferenceStrategy.EVENT,
-        bind="bindImageReader",
-        unbind="unbindImageReader")
+        policy = ReferencePolicy.STATIC, 
+        strategy = ReferenceStrategy.LOOKUP)
 public class ImageReaderService {
     
-    private SortedSet<ImageReader> registeredImageReaders = 
-            new TreeSet<ImageReader>(new RankingComparator());
+    private ComponentContext componentContext;
     
     /**
      * Returns the {@link ImageReader} with the highest service ranking. 
      * 
-     * In case of a tie, the service service that got registered first is returned.
+     * In case of a tie, the service with the lower service id (in general the 
+     * service that got registered first) is returned.
      * 
-     * @return an {@link ImageReader}
+     * @return an {@link ImageReader} service instance
      */
     public ImageReader getImageReader() {
-        return registeredImageReaders.last();
+        if(componentContext != null) {
+            ImageReader ret = (ImageReader) componentContext.locateService("imageReaders");
+            return ret;
+        } else {
+            throw new RuntimeException(
+                    String.format("%s is not initialized correctly.", 
+                    ImageReaderService.class.getSimpleName()));
+        }
     }
     
     /**
-     * Called when new {@link ImageReader} services are registered in
-     * the OSGi environment.
-     *
-     * @param imageReader   the ImageReader
+     * Called when this component is enabled (when this services references are 
+     * satisfied and this service is referenced by some other service).
+     * 
+     * @param context the component context.
      */
-    protected void bindImageReader(ImageReader imageReader) {
-        this.registeredImageReaders.add(imageReader);
+    @Activate
+    protected void activate(ComponentContext context) {
+        this.componentContext = context;
     }
     
     /**
-     * Called when {@link ImageReader} services are unregistered in
-     * the OSGi environment.
-     *
-     * @param imageReader   the ImageReader
+     * Called when this component is disabled (when this services references are 
+     * not satisfied or this service is not referenced by some other service).
+     * 
+     * @param context the component context.
      */
-    protected void unbindImageReader(ImageReader imageReader) {
-        this.registeredImageReaders.remove(imageReader);
-    }
-    
-    private class RankingComparator implements Comparator<ImageReader> {
-        @Override
-        public int compare(ImageReader o1, ImageReader o2) {
-            return o1.getServiceRanking().compareTo(o2.getServiceRanking());
-        }
-        
+    @Deactivate
+    protected void deactivate(ComponentContext context) {
+        this.componentContext = null;
     }
 }