Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Watson2017-06-19 13:31:00 +0000
committerThomas Watson2017-06-19 13:31:00 +0000
commit75f388643bc5d31e94db978b3184cca3cf800bd2 (patch)
tree1eafcd560d94649393faab532e5597345c9a380b /bundles
parentf449d977e9a4e25bc93fdb94993df96fe0cb5382 (diff)
downloadrt.equinox.framework-75f388643bc5d31e94db978b3184cca3cf800bd2.tar.gz
rt.equinox.framework-75f388643bc5d31e94db978b3184cca3cf800bd2.tar.xz
rt.equinox.framework-75f388643bc5d31e94db978b3184cca3cf800bd2.zip
Update OSGi API to the latest
Diffstat (limited to 'bundles')
-rw-r--r--bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/AdaptPermission.java2
-rw-r--r--bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/AdminPermission.java2
-rw-r--r--bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/BundlePermission.java2
-rw-r--r--bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/CapabilityPermission.java2
-rw-r--r--bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/FrameworkUtil.java2
-rw-r--r--bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/PackagePermission.java2
-rw-r--r--bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/ServicePermission.java2
-rw-r--r--bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/ServiceReference.java3
-rw-r--r--bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/Version.java2
-rw-r--r--bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/VersionRange.java2
-rwxr-xr-xbundles/org.eclipse.osgi/osgi/src/org/osgi/framework/wiring/dto/FrameworkWiringDTO.java2
-rw-r--r--bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/wiring/dto/package-info.java2
-rw-r--r--bundles/org.eclipse.osgi/osgi/src/org/osgi/service/condpermadmin/ConditionInfo.java2
-rw-r--r--bundles/org.eclipse.osgi/osgi/src/org/osgi/service/log/FormatterLogger.java5
-rw-r--r--bundles/org.eclipse.osgi/osgi/src/org/osgi/service/log/LogReaderService.java16
-rw-r--r--bundles/org.eclipse.osgi/osgi/src/org/osgi/service/log/Logger.java22
-rw-r--r--bundles/org.eclipse.osgi/osgi/src/org/osgi/service/packageadmin/package-info.java2
-rw-r--r--bundles/org.eclipse.osgi/osgi/src/org/osgi/service/permissionadmin/PermissionInfo.java2
-rw-r--r--bundles/org.eclipse.osgi/osgi/src/org/osgi/service/startlevel/package-info.java2
-rw-r--r--bundles/org.eclipse.osgi/osgi/src/org/osgi/util/tracker/BundleTracker.java4
-rw-r--r--bundles/org.eclipse.osgi/osgi/src/org/osgi/util/tracker/ServiceTracker.java2
21 files changed, 46 insertions, 36 deletions
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/AdaptPermission.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/AdaptPermission.java
index fbd938e9f..0ac35f219 100644
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/AdaptPermission.java
+++ b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/AdaptPermission.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) OSGi Alliance (2010, 2015). 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.
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/AdminPermission.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/AdminPermission.java
index d83883020..35d7725e3 100644
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/AdminPermission.java
+++ b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/AdminPermission.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) OSGi Alliance (2000, 2015). 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.
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/BundlePermission.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/BundlePermission.java
index ee2ceff31..7b0816059 100644
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/BundlePermission.java
+++ b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/BundlePermission.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) OSGi Alliance (2004, 2013). All Rights Reserved.
+ * Copyright (c) OSGi Alliance (2004, 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.
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/CapabilityPermission.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/CapabilityPermission.java
index 9b4fa23eb..90e1d0c01 100644
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/CapabilityPermission.java
+++ b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/CapabilityPermission.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) OSGi Alliance (2000, 2015). 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.
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/FrameworkUtil.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/FrameworkUtil.java
index 3aeb4fcdf..cb98cc18d 100644
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/FrameworkUtil.java
+++ b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/FrameworkUtil.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) OSGi Alliance (2005, 2015). All Rights Reserved.
+ * Copyright (c) OSGi Alliance (2005, 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.
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/PackagePermission.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/PackagePermission.java
index e31e93851..79379880a 100644
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/PackagePermission.java
+++ b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/PackagePermission.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) OSGi Alliance (2000, 2015). 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.
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/ServicePermission.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/ServicePermission.java
index 403cbc2e9..868d24c0c 100644
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/ServicePermission.java
+++ b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/ServicePermission.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) OSGi Alliance (2000, 2015). 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.
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/ServiceReference.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/ServiceReference.java
index a5717304f..1454244c3 100644
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/ServiceReference.java
+++ b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/ServiceReference.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) OSGi Alliance (2000, 2015). 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.
@@ -17,6 +17,7 @@
package org.osgi.framework;
import java.util.Dictionary;
+
import org.osgi.annotation.versioning.ProviderType;
/**
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/Version.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/Version.java
index ff2de38ea..2a5e4b8c6 100644
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/Version.java
+++ b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/Version.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) OSGi Alliance (2004, 2015). All Rights Reserved.
+ * Copyright (c) OSGi Alliance (2004, 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.
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/VersionRange.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/VersionRange.java
index 7121e2ea7..cc407ff6f 100644
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/VersionRange.java
+++ b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/VersionRange.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) OSGi Alliance (2011, 2013). All Rights Reserved.
+ * Copyright (c) OSGi Alliance (2011, 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.
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/wiring/dto/FrameworkWiringDTO.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/wiring/dto/FrameworkWiringDTO.java
index 50df41dd5..1786218bf 100755
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/wiring/dto/FrameworkWiringDTO.java
+++ b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/wiring/dto/FrameworkWiringDTO.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) OSGi Alliance (2012, 2014). All Rights Reserved.
+ * Copyright (c) OSGi Alliance (2012, 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.
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/wiring/dto/package-info.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/wiring/dto/package-info.java
index 8fb513b06..47eb1eed8 100644
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/wiring/dto/package-info.java
+++ b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/wiring/dto/package-info.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) OSGi Alliance (2012, 2014). All Rights Reserved.
+ * Copyright (c) OSGi Alliance (2012, 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.
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/condpermadmin/ConditionInfo.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/condpermadmin/ConditionInfo.java
index 63fc25a20..f96821be9 100644
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/condpermadmin/ConditionInfo.java
+++ b/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/condpermadmin/ConditionInfo.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) OSGi Alliance (2004, 2013). All Rights Reserved.
+ * Copyright (c) OSGi Alliance (2004, 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.
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 637d34fb8..be65488e5 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
@@ -31,8 +31,9 @@ import org.osgi.annotation.versioning.ProviderType;
* 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 added to
- * the generated {@link LogEntry}. For example:
+ * {@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);
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/log/LogReaderService.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/log/LogReaderService.java
index c28680f66..2e91c2e55 100644
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/log/LogReaderService.java
+++ b/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/log/LogReaderService.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.
@@ -23,11 +23,14 @@ import org.osgi.annotation.versioning.ProviderType;
/**
* LogReaderService for obtaining logging information.
* <p>
- * There are two ways to obtain {@link LogEntry} objects:
+ * Since 1.4, {@link org.osgi.service.log.stream.LogStreamProvider} is the
+ * preferred way to obtain {@link LogEntry} objects.
+ * <p>
+ * The LogReaderService provides two ways to obtain {@link LogEntry} objects:
* <ul>
- * <li>The primary way to obtain {@link LogEntry} objects is to get a
- * {@link org.osgi.service.log.stream.LogStreamProvider} object from the service
- * registry. This replaces adding a {@link LogListener} object.</li>
+ * <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>
@@ -85,8 +88,7 @@ public interface LogReaderService {
* Each element of the enumeration is a {@link LogEntry} object, ordered
* with the most recent entry first. Whether the enumeration is of all
* {@link LogEntry} objects since the Log Service was started or some recent
- * past is implementation-specific. Also implementation-specific is which
- * level {@link LogEntry} objects are included in the enumeration.
+ * past is implementation-specific.
*
* @return An {@code Enumeration} of the {@link LogEntry} objects in the
* log.
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 22593d316..541626726 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,20 +23,22 @@ 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 <code>"{}"</code> as a place holder for an argument. If
- * you need to use the literal <code>"{}"</code> in the formatted message,
- * precede the place holder with a backslash: <code>"\\{}"</code>. If you need
- * to place a backslash before the place holder, precede the backslash with a
- * backslash: <code>"\\\\{}"</code>.
+ * 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>.
* <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
+ * 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 added to
- * the generated {@link LogEntry}. These arguments will not be used for place
- * holders. For example:
+ * 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);
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/packageadmin/package-info.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/packageadmin/package-info.java
index 2216e51ed..41bb8d38e 100644
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/packageadmin/package-info.java
+++ b/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/packageadmin/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.
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/permissionadmin/PermissionInfo.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/permissionadmin/PermissionInfo.java
index 184e37684..7ca97aeef 100644
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/permissionadmin/PermissionInfo.java
+++ b/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/permissionadmin/PermissionInfo.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) OSGi Alliance (2001, 2013). All Rights Reserved.
+ * Copyright (c) OSGi Alliance (2001, 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.
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/startlevel/package-info.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/startlevel/package-info.java
index f863d9be0..70b62bd0b 100644
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/startlevel/package-info.java
+++ b/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/startlevel/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.
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/util/tracker/BundleTracker.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/util/tracker/BundleTracker.java
index a7fc758ff..e00c3bf5c 100644
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/util/tracker/BundleTracker.java
+++ b/bundles/org.eclipse.osgi/osgi/src/org/osgi/util/tracker/BundleTracker.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) OSGi Alliance (2007, 2015). All Rights Reserved.
+ * Copyright (c) OSGi Alliance (2007, 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.
@@ -19,6 +19,7 @@ package org.osgi.util.tracker;
import java.util.HashMap;
import java.util.Map;
+import org.osgi.annotation.versioning.ConsumerType;
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
import org.osgi.framework.BundleEvent;
@@ -48,6 +49,7 @@ import org.osgi.framework.SynchronousBundleListener;
* @author $Id$
* @since 1.4
*/
+@ConsumerType
public class BundleTracker<T> implements BundleTrackerCustomizer<T> {
/* set this to true to compile in debug messages */
static final boolean DEBUG = false;
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 689281448..e9b984434 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
@@ -21,6 +21,7 @@ import java.util.Collections;
import java.util.SortedMap;
import java.util.TreeMap;
+import org.osgi.annotation.versioning.ConsumerType;
import org.osgi.framework.AllServiceListener;
import org.osgi.framework.BundleContext;
import org.osgi.framework.Constants;
@@ -55,6 +56,7 @@ import org.osgi.framework.ServiceReference;
* @ThreadSafe
* @author $Id$
*/
+@ConsumerType
public class ServiceTracker<S, T> implements ServiceTrackerCustomizer<S, T> {
/* set this to true to compile in debug messages */
static final boolean DEBUG = false;

Back to the top