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-fsclassloader.git

commit 449c65770a8489b2e2892f96fb11ab124ec3585a
Author: Carsten Ziegeler <[email protected]>
AuthorDate: Sun Mar 19 10:50:15 2017 +0000

    SLING-6667 : Convert to OSGi annotations
    
    git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1787609 
13f79535-47bb-0310-9956-ffa450edef68
---
 pom.xml                                            | 23 +------
 .../commons/fsclassloader/FSClassLoaderMBean.java  |  9 ++-
 .../fsclassloader/impl/FSClassLoaderProvider.java  | 74 +++++++++-------------
 .../impl/FSClassLoaderWebConsole.java              | 42 ++++++------
 .../sling/commons/fsclassloader/package-info.java  | 24 +++++++
 5 files changed, 84 insertions(+), 88 deletions(-)

diff --git a/pom.xml b/pom.xml
index 308c81e..709bdf8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -47,19 +47,8 @@
         <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>
-                        <Private-Package>
-                            org.apache.sling.commons.fsclassloader.impl
-                        </Private-Package>
-                    </instructions>
-                </configuration>
             </plugin>
             <plugin>
                 <groupId>org.apache.rat</groupId>
@@ -79,10 +68,6 @@
 
     <dependencies>
         <dependency>
-            <groupId>org.apache.felix</groupId>
-            <artifactId>org.apache.felix.scr.annotations</artifactId>
-        </dependency>
-        <dependency>
             <groupId>org.slf4j</groupId>
             <artifactId>slf4j-api</artifactId>
         </dependency>
@@ -97,13 +82,7 @@
         <dependency>
             <groupId>org.apache.sling</groupId>
             <artifactId>org.apache.sling.commons.classloader</artifactId>
-            <version>1.4.1-SNAPSHOT</version>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.sling</groupId>
-            <artifactId>org.apache.sling.commons.osgi</artifactId>
-            <version>2.1.0</version>
+            <version>1.4.0</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
diff --git 
a/src/main/java/org/apache/sling/commons/fsclassloader/FSClassLoaderMBean.java 
b/src/main/java/org/apache/sling/commons/fsclassloader/FSClassLoaderMBean.java
index be49971..e46a0f9 100644
--- 
a/src/main/java/org/apache/sling/commons/fsclassloader/FSClassLoaderMBean.java
+++ 
b/src/main/java/org/apache/sling/commons/fsclassloader/FSClassLoaderMBean.java
@@ -22,9 +22,12 @@ package org.apache.sling.commons.fsclassloader;
 import java.io.IOException;
 import java.util.List;
 
+import org.osgi.annotation.versioning.ProviderType;
+
 /**
  * MBean interface for interacting with the FSClassLoader
  */
+@ProviderType
 public interface FSClassLoaderMBean {
 
        /**
@@ -35,14 +38,14 @@ public interface FSClassLoaderMBean {
        /**
         * Gets the root directory at which the FSClassloader is creating it's
         * cached files
-        * 
+        *
         * @return the file system classloader root
         */
        String getFSClassLoaderRoot();
 
        /**
         * Get the total count of scripts in the FSClassLoader cache
-        * 
+        *
         * @return the total number of scripts
         * @throws IOException
         */
@@ -50,7 +53,7 @@ public interface FSClassLoaderMBean {
 
        /**
         * Gets the scripts in the FSClassLoaderCache
-        * 
+        *
         * @return the scripts from the FSClassLoaderCache
         * @throws IOException
         */
diff --git 
a/src/main/java/org/apache/sling/commons/fsclassloader/impl/FSClassLoaderProvider.java
 
b/src/main/java/org/apache/sling/commons/fsclassloader/impl/FSClassLoaderProvider.java
index 2b63f8d..d5ce22d 100644
--- 
a/src/main/java/org/apache/sling/commons/fsclassloader/impl/FSClassLoaderProvider.java
+++ 
b/src/main/java/org/apache/sling/commons/fsclassloader/impl/FSClassLoaderProvider.java
@@ -36,17 +36,10 @@ import java.util.Map;
 import javax.management.MalformedObjectNameException;
 import javax.management.ObjectName;
 
-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.Property;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.Service;
 import org.apache.sling.commons.classloader.ClassLoaderWriter;
 import org.apache.sling.commons.classloader.ClassLoaderWriterListener;
 import org.apache.sling.commons.classloader.DynamicClassLoaderManager;
 import org.apache.sling.commons.fsclassloader.FSClassLoaderMBean;
-import org.apache.sling.commons.osgi.PropertiesUtil;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.Constants;
 import org.osgi.framework.InvalidSyntaxException;
@@ -55,6 +48,11 @@ import org.osgi.framework.ServiceListener;
 import org.osgi.framework.ServiceReference;
 import org.osgi.framework.ServiceRegistration;
 import org.osgi.service.component.ComponentContext;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.component.annotations.ServiceScope;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -63,9 +61,10 @@ import org.slf4j.LoggerFactory;
  * which uses the file system to store and read class files from.
  *
  */
-@Component
-@Service(value = { ClassLoaderWriter.class }, serviceFactory = true)
-@Property(name = Constants.SERVICE_RANKING, intValue = 100)
+@Component(service = ClassLoaderWriter.class, scope = ServiceScope.BUNDLE,
+    property = {
+            Constants.SERVICE_RANKING + ":Integer=100"
+    })
 public class FSClassLoaderProvider implements ClassLoaderWriter {
 
        private static final String LISTENER_FILTER = "(" + 
Constants.OBJECTCLASS + "="
@@ -86,8 +85,8 @@ public class FSClassLoaderProvider implements 
ClassLoaderWriter {
 
        private final Logger logger = LoggerFactory.getLogger(this.getClass());
 
-       @Reference(referenceInterface = DynamicClassLoaderManager.class, bind = 
"bindDynamicClassLoaderManager", unbind = "unbindDynamicClassLoaderManager")
-       private ServiceReference dynamicClassLoaderManager;
+       @Reference(service = DynamicClassLoaderManager.class)
+       private ServiceReference<DynamicClassLoaderManager> 
dynamicClassLoaderManager;
 
        /** The bundle asking for this service instance */
        private Bundle callerBundle;
@@ -96,7 +95,7 @@ public class FSClassLoaderProvider implements 
ClassLoaderWriter {
 
        /**
         * Activate this component. Create the root directory.
-        * 
+        *
         * @param componentContext
         * @throws MalformedURLException
         * @throws InvalidSyntaxException
@@ -112,7 +111,7 @@ public class FSClassLoaderProvider implements 
ClassLoaderWriter {
                this.callerBundle = componentContext.getUsingBundle();
 
                classLoaderWriterListeners.clear();
-               if (this.classLoaderWriterServiceListener != null) {
+               if (classLoaderWriterServiceListener != null) {
                        
componentContext.getBundleContext().removeServiceListener(classLoaderWriterServiceListener);
                        classLoaderWriterServiceListener = null;
                }
@@ -129,7 +128,7 @@ public class FSClassLoaderProvider implements 
ClassLoaderWriter {
                        }
 
                        private Long 
getId(ServiceReference<ClassLoaderWriterListener> reference) {
-                               return 
PropertiesUtil.toLong(reference.getProperty(Constants.SERVICE_ID), -1);
+                           return 
(Long)reference.getProperty(Constants.SERVICE_ID);
                        }
                };
                
componentContext.getBundleContext().addServiceListener(classLoaderWriterServiceListener,
 LISTENER_FILTER);
@@ -159,7 +158,7 @@ public class FSClassLoaderProvider implements 
ClassLoaderWriter {
                this.root = null;
                this.rootURL = null;
                this.destroyClassLoader();
-               if (this.classLoaderWriterServiceListener != null) {
+               if (classLoaderWriterServiceListener != null) {
                        
componentContext.getBundleContext().removeServiceListener(classLoaderWriterServiceListener);
                }
                if (mbeanRegistration != null) {
@@ -168,31 +167,12 @@ public class FSClassLoaderProvider implements 
ClassLoaderWriter {
                }
        }
 
-       /**
-        * Called to handle binding the DynamicClassLoaderManager service 
reference
-        */
-       @SuppressWarnings("unused")
-       private void bindDynamicClassLoaderManager(final ServiceReference ref) {
-               this.dynamicClassLoaderManager = ref;
-       }
-
-       /**
-        * Called to handle unbinding of the DynamicClassLoaderManager service
-        * reference
-        */
-       @SuppressWarnings("unused")
-       private void unbindDynamicClassLoaderManager(final ServiceReference 
ref) {
-               if (this.dynamicClassLoaderManager == ref) {
-                       this.dynamicClassLoaderManager = null;
-               }
-       }
-
        private void destroyClassLoader() {
                final ClassLoader rcl = this.loader;
                if (rcl != null) {
                        this.loader = null;
 
-                       final ServiceReference localDynamicClassLoaderManager = 
this.dynamicClassLoaderManager;
+                       final ServiceReference<DynamicClassLoaderManager> 
localDynamicClassLoaderManager = this.dynamicClassLoaderManager;
                        final Bundle localCallerBundle = this.callerBundle;
                        if (localDynamicClassLoaderManager != null && 
localCallerBundle != null) {
                                
localCallerBundle.getBundleContext().ungetService(localDynamicClassLoaderManager);
@@ -203,13 +183,14 @@ public class FSClassLoaderProvider implements 
ClassLoaderWriter {
        /**
         * @see 
org.apache.sling.commons.classloader.ClassLoaderWriter#getClassLoader()
         */
-       public ClassLoader getClassLoader() {
+       @Override
+    public ClassLoader getClassLoader() {
                synchronized (this) {
                        if (loader == null || !loader.isLive()) {
                                this.destroyClassLoader();
                                // get the dynamic class loader for the bundle 
using this
                                // class loader writer
-                               final DynamicClassLoaderManager dclm = 
(DynamicClassLoaderManager) this.callerBundle.getBundleContext()
+                               final DynamicClassLoaderManager dclm = 
this.callerBundle.getBundleContext()
                                                
.getService(this.dynamicClassLoaderManager);
 
                                loader = new FSDynamicClassLoader(new URL[] { 
this.rootURL }, dclm.getDynamicClassLoader());
@@ -251,7 +232,8 @@ public class FSClassLoaderProvider implements 
ClassLoaderWriter {
        /**
         * @see 
org.apache.sling.commons.classloader.ClassLoaderWriter#delete(java.lang.String)
         */
-       public boolean delete(final String name) {
+       @Override
+    public boolean delete(final String name) {
                final String path = cleanPath(name);
                final File file = new File(path);
                if (file.exists()) {
@@ -283,7 +265,8 @@ public class FSClassLoaderProvider implements 
ClassLoaderWriter {
        /**
         * @see 
org.apache.sling.commons.classloader.ClassLoaderWriter#getOutputStream(java.lang.String)
         */
-       public OutputStream getOutputStream(final String name) {
+       @Override
+    public OutputStream getOutputStream(final String name) {
                logger.debug("Get stream for {}", name);
                final String path = cleanPath(name);
                final File file = new File(path);
@@ -305,7 +288,8 @@ public class FSClassLoaderProvider implements 
ClassLoaderWriter {
         * @see 
org.apache.sling.commons.classloader.ClassLoaderWriter#rename(java.lang.String,
         *      java.lang.String)
         */
-       public boolean rename(final String oldName, final String newName) {
+       @Override
+    public boolean rename(final String oldName, final String newName) {
                logger.debug("Rename {} to {}", oldName, newName);
                final String oldPath = cleanPath(oldName);
                final String newPath = cleanPath(newName);
@@ -321,7 +305,7 @@ public class FSClassLoaderProvider implements 
ClassLoaderWriter {
        /**
         * Clean the path by converting slashes to the correct format and 
prefixing
         * the root directory.
-        * 
+        *
         * @param path
         *            The path
         * @return The file path
@@ -343,7 +327,8 @@ public class FSClassLoaderProvider implements 
ClassLoaderWriter {
        /**
         * @see 
org.apache.sling.commons.classloader.ClassLoaderWriter#getInputStream(java.lang.String)
         */
-       public InputStream getInputStream(final String name) throws IOException 
{
+       @Override
+    public InputStream getInputStream(final String name) throws IOException {
                logger.debug("Get input stream of {}", name);
                final String path = cleanPath(name);
                final File file = new File(path);
@@ -353,7 +338,8 @@ public class FSClassLoaderProvider implements 
ClassLoaderWriter {
        /**
         * @see 
org.apache.sling.commons.classloader.ClassLoaderWriter#getLastModified(java.lang.String)
         */
-       public long getLastModified(final String name) {
+       @Override
+    public long getLastModified(final String name) {
                logger.debug("Get last modified of {}", name);
                final String path = cleanPath(name);
                final File file = new File(path);
diff --git 
a/src/main/java/org/apache/sling/commons/fsclassloader/impl/FSClassLoaderWebConsole.java
 
b/src/main/java/org/apache/sling/commons/fsclassloader/impl/FSClassLoaderWebConsole.java
index 0affacc..6f56b21 100644
--- 
a/src/main/java/org/apache/sling/commons/fsclassloader/impl/FSClassLoaderWebConsole.java
+++ 
b/src/main/java/org/apache/sling/commons/fsclassloader/impl/FSClassLoaderWebConsole.java
@@ -27,6 +27,7 @@ import java.net.MalformedURLException;
 import java.util.LinkedHashMap;
 import java.util.Map;
 
+import javax.servlet.Servlet;
 import javax.servlet.ServletConfig;
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServletRequest;
@@ -35,15 +36,12 @@ import javax.servlet.http.HttpServletResponse;
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang3.StringEscapeUtils;
 import org.apache.commons.lang3.StringUtils;
-import org.apache.felix.scr.annotations.Activate;
-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.Reference;
-import org.apache.felix.scr.annotations.Service;
 import org.apache.felix.webconsole.AbstractWebConsolePlugin;
 import org.apache.sling.commons.classloader.ClassLoaderWriter;
 import org.osgi.service.component.ComponentContext;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -51,14 +49,15 @@ import org.slf4j.LoggerFactory;
  * Web Console for the FileSystem Class Loader. Allows users to download Java
  * and Class files.
  */
-@Component
-@Service
-@Properties({ @Property(name = "service.description", value = "Web Console for 
the FileSystem Class Loader"),
-               @Property(name = "service.vendor", value = "The Apache Software 
Foundation"),
-               @Property(name = "felix.webconsole.label", value = 
FSClassLoaderWebConsole.APP_ROOT),
-               @Property(name = "felix.webconsole.title", value = "File System 
Class Loader"),
-               @Property(name = "felix.webconsole.css", value = { 
FSClassLoaderWebConsole.RES_LOC + "/prettify.css" }),
-               @Property(name = "felix.webconsole.category", value = "Sling") 
})
+@Component(service = Servlet.class,
+    property = {
+         "service.description=Web Console for the FileSystem Class Loader",
+                "service.vendor=The Apache Software Foundation",
+                "felix.webconsole.label=" + FSClassLoaderWebConsole.APP_ROOT,
+                "felix.webconsole.title=File System Class Loader",
+                "felix.webconsole.css=" + FSClassLoaderWebConsole.RES_LOC + 
"/prettify.css",
+                "felix.webconsole.category=Sling"
+})
 public class FSClassLoaderWebConsole extends AbstractWebConsolePlugin {
 
        static final String APP_ROOT = "fsclassloader";
@@ -104,7 +103,8 @@ public class FSClassLoaderWebConsole extends 
AbstractWebConsolePlugin {
         *
         * @see javax.servlet.Servlet#destroy()
         */
-       public void destroy() {
+       @Override
+    public void destroy() {
        }
 
        /*
@@ -113,7 +113,8 @@ public class FSClassLoaderWebConsole extends 
AbstractWebConsolePlugin {
         * @see javax.servlet.Servlet#service(javax.servlet.ServletRequest,
         * javax.servlet.ServletResponse)
         */
-       protected void doGet(HttpServletRequest request, HttpServletResponse 
response)
+       @Override
+    protected void doGet(HttpServletRequest request, HttpServletResponse 
response)
                        throws ServletException, IOException {
                String file = request.getParameter("download");
                File toDownload = new File(root + file);
@@ -191,7 +192,8 @@ public class FSClassLoaderWebConsole extends 
AbstractWebConsolePlugin {
         *
         * @see javax.servlet.Servlet#getServletConfig()
         */
-       public ServletConfig getServletConfig() {
+       @Override
+    public ServletConfig getServletConfig() {
                return this.config;
        }
 
@@ -200,7 +202,8 @@ public class FSClassLoaderWebConsole extends 
AbstractWebConsolePlugin {
         *
         * @see javax.servlet.Servlet#getServletInfo()
         */
-       public String getServletInfo() {
+       @Override
+    public String getServletInfo() {
                return "";
        }
 
@@ -219,7 +222,8 @@ public class FSClassLoaderWebConsole extends 
AbstractWebConsolePlugin {
         *
         * @see javax.servlet.Servlet#init(javax.servlet.ServletConfig)
         */
-       public void init(ServletConfig config) throws ServletException {
+       @Override
+    public void init(ServletConfig config) throws ServletException {
                this.config = config;
        }
 
diff --git 
a/src/main/java/org/apache/sling/commons/fsclassloader/package-info.java 
b/src/main/java/org/apache/sling/commons/fsclassloader/package-info.java
new file mode 100644
index 0000000..48f3d98
--- /dev/null
+++ b/src/main/java/org/apache/sling/commons/fsclassloader/package-info.java
@@ -0,0 +1,24 @@
+/*
+ * 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.
+ */
+
+@Version("1.0.8")
+package org.apache.sling.commons.fsclassloader;
+
+import org.osgi.annotation.versioning.Version;
+

-- 
To stop receiving notification emails like this one, please contact
"[email protected]" <[email protected]>.

Reply via email to