diff options
20 files changed, 820 insertions, 332 deletions
diff --git a/bundles/org.eclipse.osgi.services/.settings/.api_filters b/bundles/org.eclipse.osgi.services/.settings/.api_filters index c92f575f7..5799d5790 100644 --- a/bundles/org.eclipse.osgi.services/.settings/.api_filters +++ b/bundles/org.eclipse.osgi.services/.settings/.api_filters @@ -1,185 +1,38 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <component id="org.eclipse.osgi.services" version="2"> - <resource path="src/org/osgi/service/component/ComponentConstants.java" type="org.osgi.service.component.ComponentConstants"> - <filter id="403767336"> - <message_arguments> - <message_argument value="org.osgi.service.component.ComponentConstants"/> - <message_argument value="COMPONENT_CAPABILITY_NAME"/> - </message_arguments> - </filter> - <filter id="1209008130"> - <message_arguments> - <message_argument value="1.3"/> - <message_argument value="3.6"/> - <message_argument value="COMPONENT_CAPABILITY_NAME"/> - </message_arguments> - </filter> - </resource> - <resource path="src/org/osgi/service/component/ComponentServiceObjects.java" type="org.osgi.service.component.ComponentServiceObjects"> - <filter id="1108344834"> - <message_arguments> - <message_argument value="1.3"/> - <message_argument value="3.6"/> - <message_argument value="org.osgi.service.component.ComponentServiceObjects"/> - </message_arguments> - </filter> - </resource> - <resource path="src/org/osgi/service/component/annotations/Component.java" type="org.osgi.service.component.annotations.Component"> - <filter comment="Bug 501950 - [ds] replace Equinox DS implementation with Felix SCR (DS)" id="286326823"> - <message_arguments> - <message_argument value="org.osgi.service.component.annotations.Component"/> - <message_argument value="NAME"/> - </message_arguments> - </filter> - <filter id="286375965"> - <message_arguments> - <message_argument value="org.osgi.service.component.annotations.Component"/> - <message_argument value="reference()"/> - </message_arguments> - </filter> - <filter id="288469092"> - <message_arguments> - <message_argument value="org.osgi.service.component.annotations.Component"/> - <message_argument value="configurationPid()"/> - </message_arguments> - </filter> - <filter id="1091567618"> - <message_arguments> - <message_argument value="1.2"/> - <message_argument value="3.6"/> - <message_argument value="configurationPid()"/> - </message_arguments> - </filter> - <filter id="1091567618"> - <message_arguments> - <message_argument value="1.3"/> - <message_argument value="3.6"/> - <message_argument value="NAME"/> - </message_arguments> - </filter> - <filter id="1091567618"> - <message_arguments> - <message_argument value="1.3"/> - <message_argument value="3.6"/> - <message_argument value="reference()"/> - </message_arguments> - </filter> - <filter id="1091567618"> - <message_arguments> - <message_argument value="1.3"/> - <message_argument value="3.6"/> - <message_argument value="scope()"/> - </message_arguments> - </filter> - </resource> - <resource path="src/org/osgi/service/component/annotations/FieldOption.java" type="org.osgi.service.component.annotations.FieldOption"> - <filter id="1108344834"> - <message_arguments> - <message_argument value="1.3"/> - <message_argument value="3.6"/> - <message_argument value="org.osgi.service.component.annotations.FieldOption"/> - </message_arguments> - </filter> - </resource> - <resource path="src/org/osgi/service/component/annotations/Reference.java" type="org.osgi.service.component.annotations.Reference"> - <filter id="1091567618"> - <message_arguments> - <message_argument value="1.3"/> - <message_argument value="3.6"/> - <message_argument value="bind()"/> - </message_arguments> - </filter> - <filter id="1091567618"> - <message_arguments> - <message_argument value="1.3"/> - <message_argument value="3.6"/> - <message_argument value="field()"/> - </message_arguments> - </filter> - <filter id="1091567618"> - <message_arguments> - <message_argument value="1.3"/> - <message_argument value="3.6"/> - <message_argument value="fieldOption()"/> - </message_arguments> - </filter> - <filter id="1091567618"> - <message_arguments> - <message_argument value="1.3"/> - <message_argument value="3.6"/> - <message_argument value="scope()"/> - </message_arguments> - </filter> - </resource> - <resource path="src/org/osgi/service/component/annotations/ReferenceScope.java" type="org.osgi.service.component.annotations.ReferenceScope"> - <filter id="1108344834"> - <message_arguments> - <message_argument value="1.3"/> - <message_argument value="3.6"/> - <message_argument value="org.osgi.service.component.annotations.ReferenceScope"/> - </message_arguments> - </filter> - </resource> - <resource path="src/org/osgi/service/component/annotations/ServiceScope.java" type="org.osgi.service.component.annotations.ServiceScope"> - <filter id="1108344834"> - <message_arguments> - <message_argument value="1.3"/> - <message_argument value="3.6"/> - <message_argument value="org.osgi.service.component.annotations.ServiceScope"/> - </message_arguments> - </filter> - </resource> - <resource path="src/org/osgi/service/component/runtime/ServiceComponentRuntime.java" type="org.osgi.service.component.runtime.ServiceComponentRuntime"> - <filter id="1108344834"> - <message_arguments> - <message_argument value="1.3"/> - <message_argument value="3.6"/> - <message_argument value="org.osgi.service.component.runtime.ServiceComponentRuntime"/> - </message_arguments> - </filter> - </resource> - <resource path="src/org/osgi/service/component/runtime/dto/ComponentConfigurationDTO.java" type="org.osgi.service.component.runtime.dto.ComponentConfigurationDTO"> - <filter id="1108344834"> - <message_arguments> - <message_argument value="1.3"/> - <message_argument value="3.6"/> - <message_argument value="org.osgi.service.component.runtime.dto.ComponentConfigurationDTO"/> - </message_arguments> - </filter> - </resource> - <resource path="src/org/osgi/service/component/runtime/dto/ComponentDescriptionDTO.java" type="org.osgi.service.component.runtime.dto.ComponentDescriptionDTO"> + <resource path="src/org/osgi/service/log/FormatterLogger.java" type="org.osgi.service.log.FormatterLogger"> <filter id="1108344834"> <message_arguments> - <message_argument value="1.3"/> - <message_argument value="3.6"/> - <message_argument value="org.osgi.service.component.runtime.dto.ComponentDescriptionDTO"/> + <message_argument value="1.4"/> + <message_argument value="3.7"/> + <message_argument value="org.osgi.service.log.FormatterLogger"/> </message_arguments> </filter> </resource> - <resource path="src/org/osgi/service/component/runtime/dto/ReferenceDTO.java" type="org.osgi.service.component.runtime.dto.ReferenceDTO"> + <resource path="src/org/osgi/service/log/LogLevel.java" type="org.osgi.service.log.LogLevel"> <filter id="1108344834"> <message_arguments> - <message_argument value="1.3"/> - <message_argument value="3.6"/> - <message_argument value="org.osgi.service.component.runtime.dto.ReferenceDTO"/> + <message_argument value="1.4"/> + <message_argument value="3.7"/> + <message_argument value="org.osgi.service.log.LogLevel"/> </message_arguments> </filter> </resource> - <resource path="src/org/osgi/service/component/runtime/dto/SatisfiedReferenceDTO.java" type="org.osgi.service.component.runtime.dto.SatisfiedReferenceDTO"> + <resource path="src/org/osgi/service/log/Logger.java" type="org.osgi.service.log.Logger"> <filter id="1108344834"> <message_arguments> - <message_argument value="1.3"/> - <message_argument value="3.6"/> - <message_argument value="org.osgi.service.component.runtime.dto.SatisfiedReferenceDTO"/> + <message_argument value="1.4"/> + <message_argument value="3.7"/> + <message_argument value="org.osgi.service.log.Logger"/> </message_arguments> </filter> </resource> - <resource path="src/org/osgi/service/component/runtime/dto/UnsatisfiedReferenceDTO.java" type="org.osgi.service.component.runtime.dto.UnsatisfiedReferenceDTO"> + <resource path="src/org/osgi/service/log/LoggerFactory.java" type="org.osgi.service.log.LoggerFactory"> <filter id="1108344834"> <message_arguments> - <message_argument value="1.3"/> - <message_argument value="3.6"/> - <message_argument value="org.osgi.service.component.runtime.dto.UnsatisfiedReferenceDTO"/> + <message_argument value="1.4"/> + <message_argument value="3.7"/> + <message_argument value="org.osgi.service.log.LoggerFactory"/> </message_arguments> </filter> </resource> diff --git a/bundles/org.eclipse.osgi.services/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.services/META-INF/MANIFEST.MF index 6527349a5..a14ee70e1 100644 --- a/bundles/org.eclipse.osgi.services/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.osgi.services/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %osgiServices Bundle-SymbolicName: org.eclipse.osgi.services -Bundle-Version: 3.6.0.qualifier +Bundle-Version: 3.7.0.qualifier Bundle-Description: %osgiServicesDes Bundle-Localization: plugin Bundle-Vendor: %eclipse.org @@ -20,7 +20,7 @@ Export-Package: org.osgi.service.cm;version="1.5";uses:="org.osgi.framework", org.osgi.service.http.runtime;version="1.0";uses:="org.osgi.service.http.runtime.dto", org.osgi.service.http.runtime.dto;version="1.0";uses:="org.osgi.dto,org.osgi.framework.dto", org.osgi.service.http.whiteboard;version="1.0", - org.osgi.service.log;version="1.3";uses:="org.osgi.framework", + org.osgi.service.log;version="1.4";uses:="org.osgi.framework", org.osgi.service.metatype;version="1.3";uses:="org.osgi.framework", org.osgi.service.provisioning;version="1.2", org.osgi.service.upnp;version="1.2", @@ -39,7 +39,7 @@ Import-Package: javax.servlet;resolution:=optional, org.osgi.service.device;version="[1.1,1.2)", org.osgi.service.event;version="[1.3,1.4)", org.osgi.service.http;version="[1.2,1.3)", - org.osgi.service.log;version="[1.3,1.4)", + org.osgi.service.log;version="[1.4,1.5)", org.osgi.service.metatype;version="[1.3,1.4)", org.osgi.service.provisioning;version="[1.2,1.3)", org.osgi.service.upnp;version="[1.2,1.3)", diff --git a/bundles/org.eclipse.osgi.services/build.properties b/bundles/org.eclipse.osgi.services/build.properties index 8427ee582..817b7fd81 100644 --- a/bundles/org.eclipse.osgi.services/build.properties +++ b/bundles/org.eclipse.osgi.services/build.properties @@ -18,4 +18,5 @@ src.includes = about.html,\ source.. = src/ output.. = bin/ -jars.extra.classpath = lib/osgi.annotation.jar
\ No newline at end of file +jars.extra.classpath = lib/osgi.annotation.jar,\ + lib/function.interface.jar
\ No newline at end of file diff --git a/bundles/org.eclipse.osgi.services/lib/function.interface.jar b/bundles/org.eclipse.osgi.services/lib/function.interface.jar Binary files differnew file mode 100755 index 000000000..d2f08316f --- /dev/null +++ b/bundles/org.eclipse.osgi.services/lib/function.interface.jar diff --git a/bundles/org.eclipse.osgi.services/pom.xml b/bundles/org.eclipse.osgi.services/pom.xml index 167274b43..64bc940c8 100644 --- a/bundles/org.eclipse.osgi.services/pom.xml +++ b/bundles/org.eclipse.osgi.services/pom.xml @@ -19,7 +19,7 @@ </parent> <groupId>org.eclipse.osgi</groupId> <artifactId>org.eclipse.osgi.services</artifactId> - <version>3.6.0-SNAPSHOT</version> + <version>3.7.0-SNAPSHOT</version> <packaging>eclipse-plugin</packaging> <build> <plugins> diff --git a/bundles/org.eclipse.osgi.services/src/org/osgi/service/log/FormatterLogger.java b/bundles/org.eclipse.osgi.services/src/org/osgi/service/log/FormatterLogger.java new file mode 100644 index 000000000..5fe22978a --- /dev/null +++ b/bundles/org.eclipse.osgi.services/src/org/osgi/service/log/FormatterLogger.java @@ -0,0 +1,56 @@ +/* + * Copyright (c) OSGi Alliance (2016, 2017). All Rights Reserved. + * + * 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. + */ + +package org.osgi.service.log; + +import org.osgi.annotation.versioning.ProviderType; + +/** + * Provides methods for bundles to write messages to the log using printf-style + * format strings. + * <p> + * Messages can be formatted by the Logger once the Logger determines the log + * level is enabled. Uses printf-style format strings as described in + * {@link java.util.Formatter}. + * <p> + * You can also add a {@code Throwable} and/or {@code ServiceReference} to the + * generated {@link LogEntry} by passing them to the logging methods as + * additional arguments. If the last argument is a {@code Throwable} or + * {@code ServiceReference}, it is added to the generated {@link LogEntry} and + * then if the next to last argument is a {@code ServiceReference} or + * {@code Throwable} and not the same type as the last argument, it is also + * added to the generated {@link LogEntry}. These arguments will not be used as + * message arguments. For example: + * + * <pre> + * logger.info("Found service %s.", serviceReference, serviceReference); + * logger.warn("Something named %s happened.", name, serviceReference, + * throwable); + * logger.error("Failed.", exception); + * </pre> + * <p> + * If an exception occurs formatting the message, the logged message will + * indicate the formatting failure including the format string and the + * arguments. + * + * @ThreadSafe + * @author $Id$ + * @since 1.4 + */ +@ProviderType +public interface FormatterLogger extends Logger { + // no additional methods +} diff --git a/bundles/org.eclipse.osgi.services/src/org/osgi/service/log/LogEntry.java b/bundles/org.eclipse.osgi.services/src/org/osgi/service/log/LogEntry.java index 1a6c322e6..6b3ee59f7 100644 --- a/bundles/org.eclipse.osgi.services/src/org/osgi/service/log/LogEntry.java +++ b/bundles/org.eclipse.osgi.services/src/org/osgi/service/log/LogEntry.java @@ -1,5 +1,5 @@ /* - * Copyright (c) OSGi Alliance (2000, 2013). All Rights Reserved. + * Copyright (c) OSGi Alliance (2000, 2016). All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,6 +16,7 @@ package org.osgi.service.log; +import org.osgi.annotation.versioning.ProviderType; import org.osgi.framework.Bundle; import org.osgi.framework.ServiceReference; @@ -29,11 +30,9 @@ import org.osgi.framework.ServiceReference; * {@code LogListener} object. * * @ThreadSafe - * @noimplement * @author $Id$ - * @see LogReaderService#getLog - * @see LogListener */ +@ProviderType public interface LogEntry { /** * Returns the bundle that created this {@code LogEntry} object. @@ -42,7 +41,7 @@ public interface LogEntry { * {@code null} if no bundle is associated with this * {@code LogEntry} object. */ - public Bundle getBundle(); + Bundle getBundle(); /** * Returns the {@code ServiceReference} object for the service associated @@ -52,23 +51,21 @@ public interface LogEntry { * this {@code LogEntry} object; {@code null} if no * {@code ServiceReference} object was provided. */ - public ServiceReference getServiceReference(); + ServiceReference< ? > getServiceReference(); /** - * Returns the severity level of this {@code LogEntry} object. - * + * Returns the integer level of this {@code LogEntry} object. * <p> - * This is one of the severity levels defined by the {@code LogService} - * interface. - * - * @return Severity level of this {@code LogEntry} object. + * If one of the {@code log} methods of {@link LogService} was used, this is + * the specified integer level. Otherwise, this is the + * {@link LogLevel#ordinal() ordinal} value of the {@link #getLogLevel() log + * level}. * - * @see LogService#LOG_ERROR - * @see LogService#LOG_WARNING - * @see LogService#LOG_INFO - * @see LogService#LOG_DEBUG + * @return Integer level of this {@code LogEntry} object. + * @deprecated Since 1.4. Replaced by {@link #getLogLevel()}. */ - public int getLevel(); + @Deprecated + int getLevel(); /** * Returns the human readable message associated with this {@code LogEntry} @@ -77,7 +74,7 @@ public interface LogEntry { * @return {@code String} containing the message associated with this * {@code LogEntry} object. */ - public String getMessage(); + String getMessage(); /** * Returns the exception object associated with this {@code LogEntry} @@ -96,7 +93,7 @@ public interface LogEntry { * {@code LogEntry};{@code null} if no exception is associated with * this {@code LogEntry} object. */ - public Throwable getException(); + Throwable getException(); /** * Returns the value of {@code currentTimeMillis()} at the time this @@ -106,5 +103,58 @@ public interface LogEntry { * was created. * @see "System.currentTimeMillis()" */ - public long getTime(); + long getTime(); + + /** + * Returns the level of this {@code LogEntry} object. + * + * @return The level of this {@code LogEntry} object. + * @since 1.4 + */ + LogLevel getLogLevel(); + + /** + * Returns the name of the {@link Logger} object used to create this + * {@code LogEntry} object. + * + * @return The name of the {@link Logger} object used to create this + * {@code LogEntry} object. + * @since 1.4 + */ + String getLoggerName(); + + /** + * Returns the sequence number for this {@code LogEntry} object. + * <p> + * A unique, non-negative value that is larger than all previously assigned + * values since the log implementation was started. These values are + * transient and are reused upon restart of the log implementation. + * + * @return The sequence number for this {@code LogEntry} object. + * @since 1.4 + */ + long getSequence(); + + /** + * Returns a string representing the thread which created this + * {@code LogEntry} object. + * <p> + * This string must contain the name of the thread and may contain other + * information about the thread. + * + * @return A string representing the thread which created this + * {@code LogEntry} object. + * @since 1.4 + */ + String getThreadInfo(); + + /** + * Returns the location information of the creation of this {@code LogEntry} + * object. + * + * @return The location information of the creation of this {@code LogEntry} + * object. + * @since 1.4 + */ + StackTraceElement getLocation(); } diff --git a/bundles/org.eclipse.osgi.services/src/org/osgi/service/log/LogLevel.java b/bundles/org.eclipse.osgi.services/src/org/osgi/service/log/LogLevel.java new file mode 100644 index 000000000..ebc1f14a4 --- /dev/null +++ b/bundles/org.eclipse.osgi.services/src/org/osgi/service/log/LogLevel.java @@ -0,0 +1,66 @@ +/* + * Copyright (c) OSGi Alliance (2016). All Rights Reserved. + * + * 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. + */ + +package org.osgi.service.log; + +/** + * Log Levels. + * + * @since 1.4 + * @author $Id$ + */ +public enum LogLevel { + /* + * The ordering of the elements is deliberate and must be kept. See {@link + * #implies(LogLevel)}. + */ + /** + * Audit – Information that must always be logged. + */ + AUDIT, + /** + * Error – Information about an error situation. + */ + ERROR, + /** + * Warning – Information about a failure or unwanted situation that is not + * blocking. + */ + WARN, + /** + * Info – Information about normal operation. + */ + INFO, + /** + * Debug – Detailed output for debugging operations. + */ + DEBUG, + /** + * Trace level – Large volume of output for tracing operations. + */ + TRACE; + + /** + * Returns whether this log level implies the specified log level. + * + * @param other The other log level. + * @return {@code true} If this log level implies the specified log level; + * {@code false} otherwise. + */ + public boolean implies(LogLevel other) { + return ordinal() >= other.ordinal(); + } +} diff --git a/bundles/org.eclipse.osgi.services/src/org/osgi/service/log/LogListener.java b/bundles/org.eclipse.osgi.services/src/org/osgi/service/log/LogListener.java index 4e27a9415..accab4261 100644 --- a/bundles/org.eclipse.osgi.services/src/org/osgi/service/log/LogListener.java +++ b/bundles/org.eclipse.osgi.services/src/org/osgi/service/log/LogListener.java @@ -1,5 +1,5 @@ /* - * Copyright (c) OSGi Alliance (2000, 2013). All Rights Reserved. + * Copyright (c) OSGi Alliance (2000, 2016). All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,9 +18,10 @@ package org.osgi.service.log; import java.util.EventListener; +import org.osgi.annotation.versioning.ConsumerType; + /** * Subscribes to {@code LogEntry} objects from the {@code LogReaderService}. - * * <p> * A {@code LogListener} object may be registered with the Log Reader Service * using the {@code LogReaderService.addLogListener} method. After the listener @@ -28,24 +29,20 @@ import java.util.EventListener; * {@code LogEntry} object created. The {@code LogListener} object may be * unregistered by calling the {@code LogReaderService.removeLogListener} * method. + * <p> + * Since 1.4, {@link org.osgi.service.log.stream.LogStreamProvider} is the + * preferred way to obtain {@link LogEntry} objects. * * @ThreadSafe * @author $Id$ - * @see LogReaderService - * @see LogEntry - * @see LogReaderService#addLogListener(LogListener) - * @see LogReaderService#removeLogListener(LogListener) */ +@ConsumerType +@FunctionalInterface public interface LogListener extends EventListener { /** * Listener method called for each LogEntry object created. * - * <p> - * As with all event listeners, this method should return to its caller as - * soon as possible. - * - * @param entry A {@code LogEntry} object containing log information. - * @see LogEntry + * @param entry A {@link LogEntry} object containing log information. */ - public void logged(LogEntry entry); + void logged(LogEntry entry); } diff --git a/bundles/org.eclipse.osgi.services/src/org/osgi/service/log/LogReaderService.java b/bundles/org.eclipse.osgi.services/src/org/osgi/service/log/LogReaderService.java index ecc3958bd..2e91c2e55 100644 --- a/bundles/org.eclipse.osgi.services/src/org/osgi/service/log/LogReaderService.java +++ b/bundles/org.eclipse.osgi.services/src/org/osgi/service/log/LogReaderService.java @@ -1,5 +1,5 @@ /* - * Copyright (c) OSGi Alliance (2000, 2013). All Rights Reserved. + * Copyright (c) OSGi Alliance (2000, 2017). All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,83 +18,80 @@ package org.osgi.service.log; import java.util.Enumeration; +import org.osgi.annotation.versioning.ProviderType; + /** - * Provides methods to retrieve {@code LogEntry} objects from the log. + * LogReaderService for obtaining logging information. + * <p> + * Since 1.4, {@link org.osgi.service.log.stream.LogStreamProvider} is the + * preferred way to obtain {@link LogEntry} objects. * <p> - * There are two ways to retrieve {@code LogEntry} objects: + * The LogReaderService provides two ways to obtain {@link LogEntry} objects: * <ul> - * <li>The primary way to retrieve {@code LogEntry} objects is to register a - * {@code LogListener} object whose {@code LogListener.logged} method will be - * called for each entry added to the log.</li> - * <li>To retrieve past {@code LogEntry} objects, the {@code getLog} method can - * be called which will return an {@code Enumeration} of all {@code LogEntry} + * <li>The primary way to retrieve {@link LogEntry} objects is to register a + * {@link LogListener} object whose {@link LogListener#logged(LogEntry)} method + * will be called for each entry added to the log.</li> + * <li>To obtain past {@link LogEntry} objects, the {@link #getLog()} method can + * be called which will return an {@code Enumeration} of the {@link LogEntry} * objects in the log.</li> * </ul> * * @ThreadSafe * @author $Id$ - * @see LogEntry - * @see LogListener - * @see LogListener#logged(LogEntry) */ +@ProviderType public interface LogReaderService { /** - * Subscribes to {@code LogEntry} objects. - * + * Subscribes to {@link LogEntry} objects. * <p> - * This method registers a {@code LogListener} object with the Log Reader - * Service. The {@code LogListener.logged(LogEntry)} method will be called - * for each {@code LogEntry} object placed into the log. - * + * This method registers a {@link LogListener} object with the Log Reader + * Service. The {@link LogListener#logged(LogEntry)} method will be called + * for each {@link LogEntry} object placed into the log. * <p> - * When a bundle which registers a {@code LogListener} object is stopped or + * When a bundle which registers a {@link LogListener} object is stopped or * otherwise releases the Log Reader Service, the Log Reader Service must * remove all of the bundle's listeners. - * * <p> * If this Log Reader Service's list of listeners already contains a * listener {@code l} such that {@code (l==listener)}, this method does * nothing. + * <p> + * Since 1.4, {@link org.osgi.service.log.stream.LogStreamProvider} is the + * preferred way to obtain {@link LogEntry} objects. * - * @param listener A {@code LogListener} object to register; the - * {@code LogListener} object is used to receive {@code LogEntry} - * objects. - * @see LogListener - * @see LogEntry - * @see LogListener#logged(LogEntry) + * @param listener A {@link LogListener} object to register; the + * {@link LogListener} object is used to receive {@link LogEntry} + * objects. */ - public void addLogListener(LogListener listener); + void addLogListener(LogListener listener); /** - * Unsubscribes to {@code LogEntry} objects. - * + * Unsubscribes to {@link LogEntry} objects. * <p> - * This method unregisters a {@code LogListener} object from the Log Reader + * This method unregisters a {@link LogListener} object from the Log Reader * Service. - * * <p> * If {@code listener} is not contained in this Log Reader Service's list of * listeners, this method does nothing. + * <p> + * Since 1.4, {@link org.osgi.service.log.stream.LogStreamProvider} is the + * preferred way to obtain {@link LogEntry} objects. * - * @param listener A {@code LogListener} object to unregister. - * @see LogListener + * @param listener A {@link LogListener} object to unregister. */ - public void removeLogListener(LogListener listener); + void removeLogListener(LogListener listener); /** - * Returns an {@code Enumeration} of all {@code LogEntry} objects in the + * Returns an {@code Enumeration} of the {@link LogEntry} objects in the * log. - * * <p> - * Each element of the enumeration is a {@code LogEntry} object, ordered + * Each element of the enumeration is a {@link LogEntry} object, ordered * with the most recent entry first. Whether the enumeration is of all - * {@code LogEntry} objects since the Log Service was started or some recent - * past is implementation-specific. Also implementation-specific is whether - * informational and debug {@code LogEntry} objects are included in the - * enumeration. + * {@link LogEntry} objects since the Log Service was started or some recent + * past is implementation-specific. * - * @return An {@code Enumeration} of all {@code LogEntry} objects in the + * @return An {@code Enumeration} of the {@link LogEntry} objects in the * log. */ - public Enumeration getLog(); + Enumeration<LogEntry> getLog(); } diff --git a/bundles/org.eclipse.osgi.services/src/org/osgi/service/log/LogService.java b/bundles/org.eclipse.osgi.services/src/org/osgi/service/log/LogService.java index dc7a9f634..55d10697b 100644 --- a/bundles/org.eclipse.osgi.services/src/org/osgi/service/log/LogService.java +++ b/bundles/org.eclipse.osgi.services/src/org/osgi/service/log/LogService.java @@ -1,5 +1,5 @@ /* - * Copyright (c) OSGi Alliance (2000, 2013). All Rights Reserved. + * Copyright (c) OSGi Alliance (2000, 2016). All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,141 +16,184 @@ package org.osgi.service.log; +import org.osgi.annotation.versioning.ProviderType; import org.osgi.framework.ServiceReference; /** - * Provides methods for bundles to write messages to the log. - * - * <p> - * {@code LogService} methods are provided to log messages; optionally with a - * {@code ServiceReference} object or an exception. - * + * LogService for logging information. * <p> - * Bundles must log messages in the OSGi environment with a severity level - * according to the following hierarchy: - * <ol> - * <li>{@link #LOG_ERROR}</li> - * <li>{@link #LOG_WARNING}</li> - * <li>{@link #LOG_INFO}</li> - * <li>{@link #LOG_DEBUG}</li> - * </ol> + * Replaced by {@link LoggerFactory}. * * @ThreadSafe - * @noimplement * @author $Id$ */ -public interface LogService { +@ProviderType +public interface LogService extends LoggerFactory { /** * An error message (Value 1). - * * <p> * This log entry indicates the bundle or service may not be functional. + * + * @deprecated Since 1.4. Replaced by {@link LogLevel#ERROR}. */ - public static final int LOG_ERROR = 1; + @Deprecated + int LOG_ERROR = 1; /** * A warning message (Value 2). - * * <p> * This log entry indicates a bundle or service is still functioning but may * experience problems in the future because of the warning condition. + * + * @deprecated Since 1.4. Replaced by {@link LogLevel#WARN}. */ - public static final int LOG_WARNING = 2; + @Deprecated + int LOG_WARNING = 2; /** * An informational message (Value 3). - * * <p> * This log entry may be the result of any change in the bundle or service * and does not indicate a problem. + * + * @deprecated Since 1.4. Replaced by {@link LogLevel#INFO}. */ - public static final int LOG_INFO = 3; + @Deprecated + int LOG_INFO = 3; /** * A debugging message (Value 4). - * * <p> * This log entry is used for problem determination and may be irrelevant to * anyone but the bundle developer. + * + * @deprecated Since 1.4. Replaced by {@link LogLevel#DEBUG}. */ - public static final int LOG_DEBUG = 4; + @Deprecated + int LOG_DEBUG = 4; /** * Logs a message. - * * <p> * The {@code ServiceReference} field and the {@code Throwable} field of the * {@code LogEntry} object will be set to {@code null}. + * <p> + * This method will log to the {@link Logger} named {@code "LogService"} for + * the bundle. The specified level is mapped to a {@link LogLevel} as + * follows: + * <ul> + * <li>{@link #LOG_ERROR} - {@link LogLevel#ERROR}</li> + * <li>{@link #LOG_WARNING} - {@link LogLevel#WARN}</li> + * <li>{@link #LOG_INFO} - {@link LogLevel#INFO}</li> + * <li>{@link #LOG_DEBUG} - {@link LogLevel#DEBUG}</li> + * <li>Any other value - {@link LogLevel#TRACE}</li> + * </ul> + * In the generated log entry, {@link LogEntry#getLevel()} must return the + * specified level. * * @param level The severity of the message. This should be one of the - * defined log levels but may be any integer that is interpreted in a - * user defined way. + * defined log levels but may be any integer that is interpreted + * in a user defined way. * @param message Human readable string describing the condition or - * {@code null}. - * @see #LOG_ERROR - * @see #LOG_WARNING - * @see #LOG_INFO - * @see #LOG_DEBUG + * {@code null}. + * @deprecated Since 1.4. Replaced by {@link Logger}. See + * {@link LoggerFactory}. */ - public void log(int level, String message); + @Deprecated + void log(int level, String message); /** * Logs a message with an exception. - * * <p> * The {@code ServiceReference} field of the {@code LogEntry} object will be * set to {@code null}. + * <p> + * This method will log to the {@link Logger} named {@code "LogService"} for + * the bundle. The specified level is mapped to a {@link LogLevel} as + * follows: + * <ul> + * <li>{@link #LOG_ERROR} - {@link LogLevel#ERROR}</li> + * <li>{@link #LOG_WARNING} - {@link LogLevel#WARN}</li> + * <li>{@link #LOG_INFO} - {@link LogLevel#INFO}</li> + * <li>{@link #LOG_DEBUG} - {@link LogLevel#DEBUG}</li> + * <li>Any other value - {@link LogLevel#TRACE}</li> + * </ul> + * In the generated log entry, {@link LogEntry#getLevel()} must return the + * specified level. * * @param level The severity of the message. This should be one of the - * defined log levels but may be any integer that is interpreted in a - * user defined way. + * defined log levels but may be any integer that is interpreted + * in a user defined way. * @param message The human readable string describing the condition or - * {@code null}. + * {@code null}. * @param exception The exception that reflects the condition or - * {@code null}. - * @see #LOG_ERROR - * @see #LOG_WARNING - * @see #LOG_INFO - * @see #LOG_DEBUG + * {@code null}. + * @deprecated Since 1.4. Replaced by {@link Logger}. See + * {@link LoggerFactory}. */ - public void log(int level, String message, Throwable exception); + @Deprecated + void log(int level, String message, Throwable exception); /** * Logs a message associated with a specific {@code ServiceReference} * object. - * * <p> * The {@code Throwable} field of the {@code LogEntry} will be set to * {@code null}. + * <p> + * This method will log to the {@link Logger} named {@code "LogService"} for + * the bundle. The specified level is mapped to a {@link LogLevel} as + * follows: + * <ul> + * <li>{@link #LOG_ERROR} - {@link LogLevel#ERROR}</li> + * <li>{@link #LOG_WARNING} - {@link LogLevel#WARN}</li> + * <li>{@link #LOG_INFO} - {@link LogLevel#INFO}</li> + * <li>{@link #LOG_DEBUG} - {@link LogLevel#DEBUG}</li> + * <li>Any other value - {@link LogLevel#TRACE}</li> + * </ul> + * In the generated log entry, {@link LogEntry#getLevel()} must return the + * specified level. * * @param sr The {@code ServiceReference} object of the service that this - * message is associated with or {@code null}. + * message is associated with or {@code null}. * @param level The severity of the message. This should be one of the - * defined log levels but may be any integer that is interpreted in a - * user defined way. + * defined log levels but may be any integer that is interpreted + * in a user defined way. * @param message Human readable string describing the condition or - * {@code null}. - * @see #LOG_ERROR - * @see #LOG_WARNING - * @see #LOG_INFO - * @see #LOG_DEBUG + * {@code null}. + * @deprecated Since 1.4. Replaced by {@link Logger}. See + * {@link LoggerFactory}. */ - public void log(ServiceReference sr, int level, String message); + @Deprecated + void log(ServiceReference< ? > sr, int level, String message); /** * Logs a message with an exception associated and a * {@code ServiceReference} object. + * <p> + * This method will log to the {@link Logger} named {@code "LogService"} for + * the bundle. The specified level is mapped to a {@link LogLevel} as + * follows: + * <ul> + * <li>{@link #LOG_ERROR} - {@link LogLevel#ERROR}</li> + * <li>{@link #LOG_WARNING} - {@link LogLevel#WARN}</li> + * <li>{@link #LOG_INFO} - {@link LogLevel#INFO}</li> + * <li>{@link #LOG_DEBUG} - {@link LogLevel#DEBUG}</li> + * <li>Any other value - {@link LogLevel#TRACE}</li> + * </ul> + * In the generated log entry, {@link LogEntry#getLevel()} must return the + * specified level. * * @param sr The {@code ServiceReference} object of the service that this - * message is associated with. + * message is associated with. * @param level The severity of the message. This should be one of the - * defined log levels but may be any integer that is interpreted in a - * user defined way. + * defined log levels but may be any integer that is interpreted + * in a user defined way. * @param message Human readable string describing the condition or - * {@code null}. + * {@code null}. * @param exception The exception that reflects the condition or - * {@code null}. - * @see #LOG_ERROR - * @see #LOG_WARNING - * @see #LOG_INFO - * @see #LOG_DEBUG + * {@code null}. + * @deprecated Since 1.4. Replaced by {@link Logger}. See + * {@link LoggerFactory}. */ - public void log(ServiceReference sr, int level, String message, Throwable exception); + @Deprecated + void log(ServiceReference< ? > sr, int level, String message, + Throwable exception); } diff --git a/bundles/org.eclipse.osgi.services/src/org/osgi/service/log/Logger.java b/bundles/org.eclipse.osgi.services/src/org/osgi/service/log/Logger.java new file mode 100644 index 000000000..a9cc36a67 --- /dev/null +++ b/bundles/org.eclipse.osgi.services/src/org/osgi/service/log/Logger.java @@ -0,0 +1,299 @@ +/* + * Copyright (c) OSGi Alliance (2016, 2017). All Rights Reserved. + * + * 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. + */ + +package org.osgi.service.log; + +import org.osgi.annotation.versioning.ProviderType; + +/** + * Provides methods for bundles to write messages to the log using SLF4J-style + * format strings. + * <p> + * Messages can be formatted by the Logger once the Logger determines the log + * level is enabled. Use a left curly bracket (<code>'{'</code> \u007B) + * followed by a right curly bracket (<code>'}'</code> \u007D) as a place + * holder for an argument: <code>"{}"</code>. If you need to use the literal + * <code>"{}"</code> in the formatted message, precede the place holder with a + * reverse solidus ({@code '\'} \u005C): <code>"\{}"</code>. If you need to + * place a backslash before the place holder, precede the reverse solidus with a + * reverse solidus: <code>"\\{}"</code>. + * <p> + * You can also add a {@code Throwable} and/or {@code ServiceReference} to the + * generated {@link LogEntry} by passing them to the logging methods as + * additional arguments. If the last argument is a {@code Throwable} or a + * {@code ServiceReference}, it is added to the generated {@link LogEntry} and + * then, if the next to last argument is a {@code ServiceReference} or + * {@code Throwable} and not the same type as the last argument, it is also + * added to the generated {@link LogEntry}. These arguments will not be used as + * message arguments. For example: + * + * <pre> + * logger.info("Found service {}.", serviceReference, serviceReference); + * logger.warn("Something named {} happened.", name, serviceReference, + * throwable); + * logger.error("Failed.", exception); + * </pre> + * + * @ThreadSafe + * @author $Id$ + * @since 1.4 + */ +@ProviderType +public interface Logger { + /** + * Root Logger Name. + */ + String ROOT_LOGGER_NAME = "ROOT"; + + /** + * Return the name of this Logger. + * + * @return The name of this Logger. + */ + String getName(); + + /** + * Is logging enabled for the {@link LogLevel#TRACE} level? + * + * @return {@code true} if logging is enabled for the {@link LogLevel#TRACE} + * level. + */ + boolean isTraceEnabled(); + + /** + * Log a message at the {@link LogLevel#TRACE} level. + * + * @param message The message to log. + */ + void trace(String message); + + /** + * Log a formatted message at the {@link LogLevel#TRACE} level. + * + * @param format The format of the message to log. + * @param arg The argument to format into the message. + */ + void trace(String format, Object arg); + + /** + * Log a formatted message at the {@link LogLevel#TRACE} level. + * + * @param format The format of the message to log. + * @param arg1 The first argument to format into the message. + * @param arg2 The second argument to format into the message. + */ + void trace(String format, Object arg1, Object arg2); + + /** + * Log a formatted message at the {@link LogLevel#TRACE} level. + * + * @param format The format of the message to log. + * @param arguments The arguments to format into the message. + */ + void trace(String format, Object... arguments); + + /** + * Is logging enabled for the {@link LogLevel#DEBUG} level? + * + * @return {@code true} if logging is enabled for the {@link LogLevel#DEBUG + * trace} level. + */ + boolean isDebugEnabled(); + + /** + * Log a message at the {@link LogLevel#DEBUG} level. + * + * @param message The message to log. + */ + void debug(String message); + + /** + * Log a formatted message at the {@link LogLevel#DEBUG} level. + * + * @param format The format of the message to log. + * @param arg The argument to format into the message. + */ + void debug(String format, Object arg); + + /** + * Log a formatted message at the {@link LogLevel#DEBUG} level. + * + * @param format The format of the message to log. + * @param arg1 The first argument to format into the message. + * @param arg2 The second argument to format into the message. + */ + void debug(String format, Object arg1, Object arg2); + + /** + * Log a formatted message at the {@link LogLevel#DEBUG} level. + * + * @param format The format of the message to log. + * @param arguments The arguments to format into the message. + */ + void debug(String format, Object... arguments); + + /** + * Is logging enabled for the {@link LogLevel#INFO} level? + * + * @return {@code true} if logging is enabled for the {@link LogLevel#INFO + * trace} level. + */ + boolean isInfoEnabled(); + + /** + * Log a message at the {@link LogLevel#INFO} level. + * + * @param message The message to log. + */ + void info(String message); + + /** + * Log a formatted message at the {@link LogLevel#INFO} level. + * + * @param format The format of the message to log. + * @param arg The argument to format into the message. + */ + void info(String format, Object arg); + + /** + * Log a formatted message at the {@link LogLevel#INFO} level. + * + * @param format The format of the message to log. + * @param arg1 The first argument to format into the message. + * @param arg2 The second argument to format into the message. + */ + void info(String format, Object arg1, Object arg2); + + /** + * Log a formatted message at the {@link LogLevel#INFO} level. + * + * @param format The format of the message to log. + * @param arguments The arguments to format into the message. + */ + void info(String format, Object... arguments); + + /** + * Is logging enabled for the {@link LogLevel#WARN} level? + * + * @return {@code true} if logging is enabled for the {@link LogLevel#WARN + * trace} level. + */ + boolean isWarnEnabled(); + + /** + * Log a message at the {@link LogLevel#WARN} level. + * + * @param message The message to log. + */ + void warn(String message); + + /** + * Log a formatted message at the {@link LogLevel#WARN} level. + * + * @param format The format of the message to log. + * @param arg The argument to format into the message. + */ + void warn(String format, Object arg); + + /** + * Log a formatted message at the {@link LogLevel#WARN} level. + * + * @param format The format of the message to log. + * @param arg1 The first argument to format into the message. + * @param arg2 The second argument to format into the message. + */ + void warn(String format, Object arg1, Object arg2); + + /** + * Log a formatted message at the {@link LogLevel#WARN} level. + * + * @param format The format of the message to log. + * @param arguments The arguments to format into the message. + */ + void warn(String format, Object... arguments); + + /** + * Is logging enabled for the {@link LogLevel#ERROR} level? + * + * @return {@code true} if logging is enabled for the {@link LogLevel#ERROR + * trace} level. + */ + boolean isErrorEnabled(); + + /** + * Log a message at the {@link LogLevel#ERROR} level. + * + * @param message The message to log. + */ + void error(String message); + + /** + * Log a formatted message at the {@link LogLevel#ERROR} level. + * + * @param format The format of the message to log. + * @param arg The argument to format into the message. + */ + void error(String format, Object arg); + + /** + * Log a formatted message at the {@link LogLevel#ERROR} level. + * + * @param format The format of the message to log. + * @param arg1 The first argument to format into the message. + * @param arg2 The second argument to format into the message. + */ + void error(String format, Object arg1, Object arg2); + + /** + * Log a formatted message at the {@link LogLevel#ERROR} level. + * + * @param format The format of the message to log. + * @param arguments The arguments to format into the message. + */ + void error(String format, Object... arguments); + + /** + * Log a message at the {@link LogLevel#AUDIT} level. + * + * @param message The message to log. + */ + void audit(String message); + + /** + * Log a formatted message at the {@link LogLevel#AUDIT} level. + * + * @param format The format of the message to log. + * @param arg The argument to format into the message. + */ + void audit(String format, Object arg); + + /** + * Log a formatted message at the {@link LogLevel#AUDIT} level. + * + * @param format The format of the message to log. + * @param arg1 The first argument to format into the message. + * @param arg2 The second argument to format into the message. + */ + void audit(String format, Object arg1, Object arg2); + + /** + * Log a formatted message at the {@link LogLevel#AUDIT} level. + * + * @param format The format of the message to log. + * @param arguments The arguments to format into the message. + */ + void audit(String format, Object... arguments); +} diff --git a/bundles/org.eclipse.osgi.services/src/org/osgi/service/log/LoggerFactory.java b/bundles/org.eclipse.osgi.services/src/org/osgi/service/log/LoggerFactory.java new file mode 100644 index 000000000..61d256f03 --- /dev/null +++ b/bundles/org.eclipse.osgi.services/src/org/osgi/service/log/LoggerFactory.java @@ -0,0 +1,129 @@ +/* + * Copyright (c) OSGi Alliance (2016). All Rights Reserved. + * + * 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. + */ + +package org.osgi.service.log; + +import org.osgi.annotation.versioning.ProviderType; +import org.osgi.framework.Bundle; + +/** + * Logger Factory service for logging information. + * <p> + * Provides methods for bundles to obtain named {@link Logger}s that can be used + * to write messages to the log. + * <p> + * Logger names should be in the form of a fully qualified Java class names with + * segments separated by full stop ({@code '.'} \u002E). For example: + * + * <pre> + * com.foo.Bar + * </pre> + * + * Logger names exist in a hierarchy. A logger name is said to be an ancestor of + * another logger name if the logger name followed by a full stop ({@code '.'} + * \u002E) is a prefix of the descendant logger name. The + * {@link Logger#ROOT_LOGGER_NAME root logger name} is the top ancestor of the + * logger name hierarchy. For example: + * + * <pre> + * com.foo.Bar + * com.foo + * com + * ROOT + * </pre> + * + * @ThreadSafe + * @since 1.4 + * @author $Id$ + */ +@ProviderType +public interface LoggerFactory { + + /** + * Return the {@link Logger} named with the specified name. + * + * @param name The name to use for the logger name. + * @return The {@link Logger} named with the specified name. If the name + * parameter is equal to {@link Logger#ROOT_LOGGER_NAME}, then the + * root logger is returned. + */ + Logger getLogger(String name); + + /** + * Return the {@link Logger} named with the specified class. + * + * @param clazz The class to use for the logger name. + * @return The {@link Logger} named with the name of the specified class. + */ + Logger getLogger(Class< ? > clazz); + + /** + * Return the {@link Logger} of the specified type named with the specified + * name. + * + * @param <L> The Logger type. + * @param name The name to use for the logger name. + * @param loggerType The type of Logger. Can be {@link Logger} or + * {@link FormatterLogger}. + * @return The {@link Logger} or {@link FormatterLogger} named with the + * specified name. If the name parameter is equal to + * {@link Logger#ROOT_LOGGER_NAME}, then the root logger is + * returned. + * @throws IllegalArgumentException If the specified type is not a supported + * Logger type. + */ + <L extends Logger> L getLogger(String name, Class<L> loggerType); + + /** + * Return the {@link Logger} of the specified type named with the specified + * class. + * + * @param <L> A Logger type. + * @param clazz The class to use for the logger name. + * @param loggerType The type of Logger. Can be {@link Logger} or + * {@link FormatterLogger}. + * @return The {@link Logger} or {@link FormatterLogger} named with the name + * of the specified class. + * @throws IllegalArgumentException If the specified type is not a supported + * Logger type. + */ + <L extends Logger> L getLogger(Class< ? > clazz, Class<L> loggerType); + + /** + * Return the {@link Logger} of the specified type named with the specified + * name for the specified bundle. + * <p> + * This method is not normally used. The other {@code getLogger} methods + * return a {@link Logger} associated with the bundle used to obtain this + * Logger Factory service. This method is used to obtain a {@link Logger} + * for the specified bundle which may be useful to code which is logging on + * behalf of another bundle. + * + * @param <L> The Logger type. + * @param bundle The bundle associated with the Logger. + * @param name The name to use for the logger name. + * @param loggerType The type of Logger. Can be {@link Logger} or + * {@link FormatterLogger}. + * @return The {@link Logger} or {@link FormatterLogger} named with the + * specified name for the specified bundle. If the name parameter is + * equal to {@link Logger#ROOT_LOGGER_NAME}, then the root logger is + * returned. + * @throws IllegalArgumentException If the specified type is not a supported + * Logger type or the specified Bundle is not a resolved bundle. + */ + <L extends Logger> L getLogger(Bundle bundle, String name, + Class<L> loggerType); +} diff --git a/bundles/org.eclipse.osgi.services/src/org/osgi/service/log/package-info.java b/bundles/org.eclipse.osgi.services/src/org/osgi/service/log/package-info.java index 928099019..81c287aee 100644 --- a/bundles/org.eclipse.osgi.services/src/org/osgi/service/log/package-info.java +++ b/bundles/org.eclipse.osgi.services/src/org/osgi/service/log/package-info.java @@ -1,5 +1,5 @@ /* - * Copyright (c) OSGi Alliance (2010, 2012). All Rights Reserved. + * Copyright (c) OSGi Alliance (2010, 2016). All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,26 +15,24 @@ */ /** - * Log Service Package Version 1.3. - * + * Log Service Package Version 1.4. * <p> * Bundles wishing to use this package must list the package in the * Import-Package header of the bundle's manifest. This package has two types of * users: the consumers that use the API in this package and the providers that * implement the API in this package. - * * <p> * Example import for consumers using the API in this package: * <p> - * {@code Import-Package: org.osgi.service.log; version="[1.3,2.0)"} + * {@code Import-Package: org.osgi.service.log; version="[1.4,2.0)"} * <p> * Example import for providers implementing the API in this package: * <p> - * {@code Import-Package: org.osgi.service.log; version="[1.3,1.4)"} + * {@code Import-Package: org.osgi.service.log; version="[1.4,1.5)"} * - * @version 1.3 * @author $Id$ */ - +@Version("1.4") package org.osgi.service.log; +import org.osgi.annotation.versioning.Version; diff --git a/bundles/org.eclipse.osgi.services/src/org/osgi/service/log/packageinfo b/bundles/org.eclipse.osgi.services/src/org/osgi/service/log/packageinfo deleted file mode 100644 index 0117a56c1..000000000 --- a/bundles/org.eclipse.osgi.services/src/org/osgi/service/log/packageinfo +++ /dev/null @@ -1 +0,0 @@ -version 1.3 diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/Constants.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/Constants.java index 0b74bf5b6..2747cd815 100644 --- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/Constants.java +++ b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/Constants.java @@ -814,7 +814,6 @@ public interface Constants { * * @see #FRAGMENT_HOST * @see #EXTENSION_FRAMEWORK - * @see #EXTENSION_BOOTCLASSPATH * @since 1.3 */ String EXTENSION_DIRECTIVE = "extension"; @@ -840,7 +839,6 @@ public interface Constants { * Manifest header directive value identifying the type of extension * fragment. An extension fragment type of bootclasspath indicates that the * extension fragment is to be loaded by the boot class loader. - * * <p> * The directive value is encoded in the Fragment-Host manifest header like: * @@ -850,6 +848,7 @@ public interface Constants { * * @see #EXTENSION_DIRECTIVE * @since 1.3 + * @deprecated As of 1.9. */ String EXTENSION_BOOTCLASSPATH = "bootclasspath"; diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/log/FormatterLogger.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/log/FormatterLogger.java index be65488e5..5fe22978a 100644 --- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/log/FormatterLogger.java +++ b/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/log/FormatterLogger.java @@ -1,5 +1,5 @@ /* - * Copyright (c) OSGi Alliance (2016). All Rights Reserved. + * Copyright (c) OSGi Alliance (2016, 2017). All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/log/Logger.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/log/Logger.java index 541626726..a9cc36a67 100644 --- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/log/Logger.java +++ b/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/log/Logger.java @@ -23,13 +23,13 @@ import org.osgi.annotation.versioning.ProviderType; * format strings. * <p> * Messages can be formatted by the Logger once the Logger determines the log - * level is enabled. Use a left curly bracket (<code>'{' \u007B</code>) followed - * by a right curly bracket (<code>'}' \u007D</code>) as a place holder for an - * argument: <code>"{}"</code>. If you need to use the literal <code>"{}"</code> - * in the formatted message, precede the place holder with a reverse solidus - * ({@code '\' \u005C}): <code>"\\{}"</code>. If you need to place a backslash - * before the place holder, precede the reverse solidus with a reverse solidus: - * <code>"\\\\{}"</code>. + * level is enabled. Use a left curly bracket (<code>'{'</code> \u007B) + * followed by a right curly bracket (<code>'}'</code> \u007D) as a place + * holder for an argument: <code>"{}"</code>. If you need to use the literal + * <code>"{}"</code> in the formatted message, precede the place holder with a + * reverse solidus ({@code '\'} \u005C): <code>"\{}"</code>. If you need to + * place a backslash before the place holder, precede the reverse solidus with a + * reverse solidus: <code>"\\{}"</code>. * <p> * You can also add a {@code Throwable} and/or {@code ServiceReference} to the * generated {@link LogEntry} by passing them to the logging methods as diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/log/admin/LoggerContext.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/log/admin/LoggerContext.java index a5124e0e6..b8add769c 100644 --- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/log/admin/LoggerContext.java +++ b/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/log/admin/LoggerContext.java @@ -43,9 +43,10 @@ public interface LoggerContext { * <li>The root Logger Context, which has no name, is mapped to the PID * {@code org.osgi.service.log.admin}.</li> * <li>A named Logger Context is mapped to a targeted PID by prefixing the - * Logger Context's name with {@code org.osgi.service.log.admin|}. For - * example, the Logger Context named {@code com.foo.bar} is mapped to the - * targeted PID {@code org.osgi.service.log.admin|com.foo.bar}.</li> + * Logger Context's name with {@code org.osgi.service.log.admin} followed by + * vertical line ({@code '|'} \u007c). For example, the Logger Context + * named {@code com.foo.bar} is mapped to the targeted PID + * {@code org.osgi.service.log.admin|com.foo.bar}.</li> * </ul> */ String LOGGER_CONTEXT_PID = "org.osgi.service.log.admin"; diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/util/tracker/ServiceTracker.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/util/tracker/ServiceTracker.java index 7687fb89f..3c9016c43 100644 --- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/util/tracker/ServiceTracker.java +++ b/bundles/org.eclipse.osgi/osgi/src/org/osgi/util/tracker/ServiceTracker.java @@ -1,5 +1,5 @@ /* - * Copyright (c) OSGi Alliance (2000, 2016). All Rights Reserved. + * Copyright (c) OSGi Alliance (2000, 2017). All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -394,9 +394,9 @@ public class ServiceTracker<S, T> implements ServiceTrackerCustomizer<S, T> { * This method is only called when this {@code ServiceTracker} has been * constructed with a {@code null ServiceTrackerCustomizer} argument. * <p> - * This implementation returns the result of calling {@code getService} on + * This implementation returns the result of calling {@code getService}, on * the {@code BundleContext} with which this {@code ServiceTracker} was - * created passing the specified {@code ServiceReference}. + * created, passing the specified {@code ServiceReference}. * <p> * This method can be overridden in a subclass to customize the service * object to be tracked for the service being added. In that case, take care |