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]>.
