This is an automated email from the ASF dual-hosted git repository.

timothyjward pushed a commit to branch feature/v1.1
in repository https://gitbox.apache.org/repos/asf/aries-typedevent.git


The following commit(s) were added to refs/heads/feature/v1.1 by this push:
     new 0ed627c  Use the OSGi published API snapshots now they are available
0ed627c is described below

commit 0ed627cc52bf6c0058db3e0f655c6e2eb1aaa358
Author: Tim Ward <[email protected]>
AuthorDate: Tue Apr 9 18:17:47 2024 +0100

    Use the OSGi published API snapshots now they are available
    
    Signed-off-by: Tim Ward <[email protected]>
---
 org.apache.aries.typedevent.bus/pom.xml            |   3 +-
 .../osgi/service/typedevent/TopicPermission.java   | 557 ---------------------
 .../org/osgi/service/typedevent/TypedEventBus.java | 117 -----
 .../service/typedevent/TypedEventConstants.java    |  94 ----
 .../osgi/service/typedevent/TypedEventHandler.java |  63 ---
 .../service/typedevent/TypedEventPublisher.java    |  96 ----
 .../service/typedevent/UnhandledEventHandler.java  |  45 --
 .../service/typedevent/UntypedEventHandler.java    |  59 ---
 .../typedevent/annotations/RequireTypedEvent.java  |  52 --
 .../typedevent/annotations/package-info.java       |  39 --
 .../service/typedevent/monitor/MonitorEvent.java   |  45 --
 .../service/typedevent/monitor/RangePolicy.java    | 147 ------
 .../typedevent/monitor/TypedEventMonitor.java      | 244 ---------
 .../service/typedevent/monitor/package-info.java   |  45 --
 .../org/osgi/service/typedevent/package-info.java  |  46 --
 .../typedevent/propertytypes/EventFilter.java      |  57 ---
 .../typedevent/propertytypes/EventTopics.java      |  56 ---
 .../typedevent/propertytypes/EventType.java        |  55 --
 .../typedevent/propertytypes/package-info.java     |  43 --
 org.apache.aries.typedevent.bus/test.bndrun        |   5 +-
 .../pom.xml                                        |   3 +-
 .../remoteservices/impl/RemoteEventBusImpl.java    |   4 +-
 .../test.bndrun                                    |   5 +-
 pom.xml                                            |   5 +-
 24 files changed, 12 insertions(+), 1873 deletions(-)

diff --git a/org.apache.aries.typedevent.bus/pom.xml 
b/org.apache.aries.typedevent.bus/pom.xml
index 4cd7b3a..86060d3 100644
--- a/org.apache.aries.typedevent.bus/pom.xml
+++ b/org.apache.aries.typedevent.bus/pom.xml
@@ -37,11 +37,10 @@
             <groupId>org.osgi</groupId>
             <artifactId>org.osgi.core</artifactId>
         </dependency>
-        <!-- Temporary removal while using the locally built interfaces
         <dependency>
             <groupId>org.osgi</groupId>
             <artifactId>org.osgi.service.typedevent</artifactId>
-        </dependency> -->
+        </dependency>
         <dependency>
             <groupId>org.osgi</groupId>
             <artifactId>osgi.annotation</artifactId>
diff --git 
a/org.apache.aries.typedevent.bus/src/main/java/org/osgi/service/typedevent/TopicPermission.java
 
b/org.apache.aries.typedevent.bus/src/main/java/org/osgi/service/typedevent/TopicPermission.java
deleted file mode 100644
index 8bf1b44..0000000
--- 
a/org.apache.aries.typedevent.bus/src/main/java/org/osgi/service/typedevent/TopicPermission.java
+++ /dev/null
@@ -1,557 +0,0 @@
-/*******************************************************************************
- * Copyright (c) Contributors to the Eclipse Foundation
- *
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0 
- 
*******************************************************************************/
-
-package org.osgi.service.typedevent;
-
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.ObjectStreamField;
-import java.security.Permission;
-import java.security.PermissionCollection;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.Hashtable;
-import java.util.List;
-import java.util.Map;
-
-/**
- * A bundle's authority to publish or subscribe to typed events on a topic.
- * <p>
- * A topic is a slash-separated string that defines a topic.
- * <p>
- * For example:
- * 
- * <pre>
- * org / osgi / service / foo / FooEvent / ACTION
- * </pre>
- * <p>
- * Topics may also be given a default name based on the event type that is
- * published to the topic. These use the fully qualified class name of the 
event
- * object as the name of the topic.
- * <p>
- * For example:
- * 
- * <pre>
- * com.acme.foo.event.EventData
- * </pre>
- * <p>
- * {@code TopicPermission} has two actions: {@code publish} and
- * {@code subscribe}.
- * 
- * @ThreadSafe
- * @author $Id: 35b621041b08d51844397f56fc8c51a682bf7b7b $
- */
-public final class TopicPermission extends Permission {
-       static final long                                       
serialVersionUID        = -5855563886961618300L;
-       /**
-        * The action string {@code publish}.
-        */
-       public final static String                      PUBLISH                 
        = "publish";
-       /**
-        * The action string {@code subscribe}.
-        */
-       public final static String                      SUBSCRIBE               
        = "subscribe";
-       private final static int                        ACTION_PUBLISH          
= 0x00000001;
-       private final static int                        ACTION_SUBSCRIBE        
= 0x00000002;
-       private final static int                        ACTION_ALL              
        = ACTION_PUBLISH | ACTION_SUBSCRIBE;
-       private final static int                        ACTION_NONE             
        = 0;
-       /**
-        * The actions mask.
-        */
-       private transient int                           action_mask;
-
-       /**
-        * prefix if the name is wildcarded.
-        */
-       private transient volatile String       prefix;
-
-       /**
-        * The actions in canonical form.
-        * 
-        * @serial
-        */
-       private volatile String                         actions                 
        = null;
-
-       /**
-        * Defines the authority to publish and/or subscribe to a topic within 
the
-        * Typed Event service specification.
-        * <p>
-        * The name is specified as a slash-separated string. Wildcards may be 
used.
-        * For example:
-        * 
-        * <pre>
-        *    org/osgi/service/fooFooEvent/ACTION
-        *    com/isv/*
-        *    *
-        * </pre>
-        * <p>
-        * A bundle that needs to publish events on a topic must have the
-        * appropriate {@code TopicPermission} for that topic; similarly, a 
bundle
-        * that needs to subscribe to events on a topic must have the 
appropriate
-        * {@code TopicPermssion} for that topic.
-        * <p>
-        * 
-        * @param name Topic name.
-        * @param actions {@code publish},{@code subscribe} (canonical order).
-        */
-       public TopicPermission(String name, String actions) {
-               this(name, parseActions(actions));
-       }
-
-       /**
-        * Package private constructor used by TopicPermissionCollection.
-        * 
-        * @param name class name
-        * @param mask action mask
-        */
-       TopicPermission(String name, int mask) {
-               super(name);
-               setTransients(mask);
-       }
-
-       /**
-        * Called by constructors and when deserialized.
-        * 
-        * @param name topic name
-        * @param mask action mask
-        */
-       private synchronized void setTransients(final int mask) {
-               final String name = getName();
-               if ((name == null) || name.length() == 0) {
-                       throw new IllegalArgumentException("invalid name");
-               }
-
-               if ((mask == ACTION_NONE) || ((mask & ACTION_ALL) != mask)) {
-                       throw new IllegalArgumentException("invalid action 
string");
-               }
-               action_mask = mask;
-
-               if (name.equals("*")) {
-                       prefix = "";
-               } else {
-                       if (name.endsWith("/*")) {
-                               prefix = name.substring(0, name.length() - 1);
-                       } else {
-                               prefix = null;
-                       }
-               }
-       }
-
-       /**
-        * Returns the current action mask.
-        * <p>
-        * Used by the TopicPermissionCollection class.
-        * 
-        * @return Current action mask.
-        */
-       synchronized int getActionsMask() {
-               return action_mask;
-       }
-
-       /**
-        * Parse action string into action mask.
-        * 
-        * @param actions Action string.
-        * @return action mask.
-        */
-       private static int parseActions(final String actions) {
-               boolean seencomma = false;
-               int mask = ACTION_NONE;
-               if (actions == null) {
-                       return mask;
-               }
-               char[] a = actions.toCharArray();
-               int i = a.length - 1;
-               if (i < 0)
-                       return mask;
-               while (i != -1) {
-                       char c;
-                       // skip whitespace
-                       while ((i != -1) && ((c = a[i]) == ' ' || c == '\r' || 
c == '\n' || c == '\f' || c == '\t'))
-                               i--;
-                       // check for the known strings
-                       int matchlen;
-                       if (i >= 8 && (a[i - 8] == 's' || a[i - 8] == 'S')
-                                       && (a[i - 7] == 'u' || a[i - 7] == 'U')
-                                       && (a[i - 6] == 'b' || a[i - 6] == 'B')
-                                       && (a[i - 5] == 's' || a[i - 5] == 'S')
-                                       && (a[i - 4] == 'c' || a[i - 4] == 'C')
-                                       && (a[i - 3] == 'r' || a[i - 3] == 'R')
-                                       && (a[i - 2] == 'i' || a[i - 2] == 'I')
-                                       && (a[i - 1] == 'b' || a[i - 1] == 'B')
-                                       && (a[i] == 'e' || a[i] == 'E')) {
-                               matchlen = 9;
-                               mask |= ACTION_SUBSCRIBE;
-                       }
-                       else
-                               if (i >= 6 && (a[i - 6] == 'p' || a[i - 6] == 
'P')
-                                               && (a[i - 5] == 'u' || a[i - 5] 
== 'U')
-                                               && (a[i - 4] == 'b' || a[i - 4] 
== 'B')
-                                               && (a[i - 3] == 'l' || a[i - 3] 
== 'L')
-                                               && (a[i - 2] == 'i' || a[i - 2] 
== 'I')
-                                               && (a[i - 1] == 's' || a[i - 1] 
== 'S')
-                                               && (a[i] == 'h' || a[i] == 
'H')) {
-                                       matchlen = 7;
-                                       mask |= ACTION_PUBLISH;
-                               }
-                               else {
-                                       // parse error
-                                       throw new 
IllegalArgumentException("invalid permission: "
-                                                       + actions);
-                               }
-                       // make sure we didn't just match the tail of a word
-                       // like "ackbarfpublish". Also, skip to the comma.
-                       seencomma = false;
-                       while (i >= matchlen && !seencomma) {
-                               switch (a[i - matchlen]) {
-                                       case ',' :
-                                               seencomma = true;
-                                               /* FALLTHROUGH */
-                                       case ' ' :
-                                       case '\r' :
-                                       case '\n' :
-                                       case '\f' :
-                                       case '\t' :
-                                               break;
-                                       default :
-                                               throw new 
IllegalArgumentException("invalid permission: " + actions);
-                               }
-                               i--;
-                       }
-                       // point i at the location of the comma minus one (or 
-1).
-                       i -= matchlen;
-               }
-               if (seencomma) {
-                       throw new IllegalArgumentException("invalid permission: 
" + actions);
-               }
-               return mask;
-       }
-
-       /**
-        * Determines if the specified permission is implied by this object.
-        * 
-        * <p>
-        * This method checks that the topic name of the target is implied by 
the
-        * topic name of this object. The list of {@code TopicPermission} 
actions
-        * must either match or allow for the list of the target object to 
imply the
-        * target {@code TopicPermission} action.
-        * 
-        * <pre>
-        *    x/y/*,&quot;publish&quot; -&gt; x/y/z,&quot;publish&quot; is true
-        *    *,&quot;subscribe&quot; -&gt; x/y,&quot;subscribe&quot;   is true
-        *    *,&quot;publish&quot; -&gt; x/y,&quot;subscribe&quot;     is false
-        *    x/y,&quot;publish&quot; -&gt; x/y/z,&quot;publish&quot;   is false
-        * </pre>
-        * 
-        * @param p The target permission to interrogate.
-        * @return {@code true} if the specified {@code TopicPermission} action 
is
-        *         implied by this object; {@code false} otherwise.
-        */
-       @Override
-       public boolean implies(Permission p) {
-               if (p instanceof TopicPermission) {
-                       TopicPermission requested = (TopicPermission) p;
-                       int requestedMask = requested.getActionsMask();
-                       if ((getActionsMask() & requestedMask) == 
requestedMask) {
-                               String requestedName = requested.getName();
-                               String pre = prefix;
-                               if (pre != null) {
-                                       return requestedName.startsWith(pre);
-                               }
-
-                               return requestedName.equals(getName());
-                       }
-               }
-               return false;
-       }
-
-       /**
-        * Returns the canonical string representation of the
-        * {@code TopicPermission} actions.
-        * 
-        * <p>
-        * Always returns present {@code TopicPermission} actions in the 
following
-        * order: {@code publish},{@code subscribe}.
-        * 
-        * @return Canonical string representation of the {@code 
TopicPermission}
-        *         actions.
-        */
-       @Override
-       public String getActions() {
-               String result = actions;
-               if (result == null) {
-                       StringBuilder sb = new StringBuilder();
-                       boolean comma = false;
-                       int mask = getActionsMask();
-                       if ((mask & ACTION_PUBLISH) == ACTION_PUBLISH) {
-                               sb.append(PUBLISH);
-                               comma = true;
-                       }
-                       if ((mask & ACTION_SUBSCRIBE) == ACTION_SUBSCRIBE) {
-                               if (comma)
-                                       sb.append(',');
-                               sb.append(SUBSCRIBE);
-                       }
-                       actions = result = sb.toString();
-               }
-               return result;
-       }
-
-       /**
-        * Returns a new {@code PermissionCollection} object suitable for 
storing
-        * {@code TopicPermission} objects.
-        * 
-        * @return A new {@code PermissionCollection} object.
-        */
-       @Override
-       public PermissionCollection newPermissionCollection() {
-               return new TopicPermissionCollection();
-       }
-
-       /**
-        * Determines the equality of two {@code TopicPermission} objects.
-        * 
-        * This method checks that specified {@code TopicPermission} has the 
same
-        * topic name and actions as this {@code TopicPermission} object.
-        * 
-        * @param obj The object to test for equality with this
-        *        {@code TopicPermission} object.
-        * @return {@code true} if {@code obj} is a {@code TopicPermission}, 
and has
-        *         the same topic name and actions as this {@code 
TopicPermission}
-        *         object; {@code false} otherwise.
-        */
-       @Override
-       public boolean equals(Object obj) {
-               if (obj == this) {
-                       return true;
-               }
-               if (!(obj instanceof TopicPermission)) {
-                       return false;
-               }
-               TopicPermission tp = (TopicPermission) obj;
-               return (getActionsMask() == tp.getActionsMask()) && 
getName().equals(tp.getName());
-       }
-
-       /**
-        * Returns the hash code value for this object.
-        * 
-        * @return A hash code value for this object.
-        */
-       @Override
-       public int hashCode() {
-               int h = 31 * 17 + getName().hashCode();
-               h = 31 * h + getActions().hashCode();
-               return h;
-       }
-
-       /**
-        * WriteObject is called to save the state of this permission object to 
a
-        * stream. The actions are serialized, and the superclass takes care of 
the
-        * name.
-        */
-       private synchronized void writeObject(java.io.ObjectOutputStream s) 
throws IOException {
-               // Write out the actions. The superclass takes care of the name
-               // call getActions to make sure actions field is initialized
-               if (actions == null)
-                       getActions();
-               s.defaultWriteObject();
-       }
-
-       /**
-        * readObject is called to restore the state of this permission from a
-        * stream.
-        */
-       private synchronized void readObject(java.io.ObjectInputStream s) 
throws IOException, ClassNotFoundException {
-               // Read in the action, then initialize the rest
-               s.defaultReadObject();
-               setTransients(parseActions(actions));
-       }
-}
-
-/**
- * Stores a set of {@code TopicPermission} permissions.
- * 
- * @see java.security.Permission
- * @see java.security.Permissions
- * @see java.security.PermissionCollection
- */
-final class TopicPermissionCollection extends PermissionCollection {
-       static final long                                                       
        serialVersionUID        = -614647783533924048L;
-       /**
-        * Table of permissions.
-        * 
-        * @GuardedBy this
-        */
-       private transient Map<String, TopicPermission>  permissions;
-       /**
-        * Boolean saying if "*" is in the collection.
-        * 
-        * @serial
-        * @GuardedBy this
-        */
-       private boolean                                                         
        all_allowed;
-
-       /**
-        * Create an empty TopicPermissions object.
-        * 
-        */
-       public TopicPermissionCollection() {
-               permissions = new HashMap<String, TopicPermission>();
-               all_allowed = false;
-       }
-
-       /**
-        * Adds a permission to the {@code TopicPermission} objects. The key 
for the
-        * hash is the name.
-        * 
-        * @param permission The {@code TopicPermission} object to add.
-        * 
-        * @throws IllegalArgumentException If the permission is not a
-        *         {@code TopicPermission} instance.
-        * 
-        * @throws SecurityException If this {@code TopicPermissionCollection}
-        *         object has been marked read-only.
-        */
-       @Override
-       public void add(final Permission permission) {
-               if (!(permission instanceof TopicPermission)) {
-                       throw new IllegalArgumentException("invalid permission: 
" + permission);
-               }
-               if (isReadOnly()) {
-                       throw new SecurityException("attempt to add a 
Permission to a " + "readonly PermissionCollection");
-               }
-               final TopicPermission tp = (TopicPermission) permission;
-               final String name = tp.getName();
-               final int newMask = tp.getActionsMask();
-
-               synchronized (this) {
-                       final TopicPermission existing = permissions.get(name);
-                       if (existing != null) {
-                               final int oldMask = existing.getActionsMask();
-                               if (oldMask != newMask) {
-                                       permissions.put(name, new 
TopicPermission(name, oldMask | newMask));
-                               }
-                       } else {
-                               permissions.put(name, tp);
-                       }
-                       if (!all_allowed) {
-                               if (name.equals("*"))
-                                       all_allowed = true;
-                       }
-               }
-       }
-
-       /**
-        * Determines if the specified permissions implies the permissions 
expressed
-        * in {@code permission}.
-        * 
-        * @param permission The Permission object to compare with this
-        *        {@code TopicPermission} object.
-        * 
-        * @return {@code true} if {@code permission} is a proper subset of a
-        *         permission in the set; {@code false} otherwise.
-        */
-       @Override
-       public boolean implies(final Permission permission) {
-               if (!(permission instanceof TopicPermission)) {
-                       return false;
-               }
-               final TopicPermission requested = (TopicPermission) permission;
-               String name = requested.getName();
-               final int desired = requested.getActionsMask();
-               int effective = 0;
-
-               TopicPermission x;
-               // short circuit if the "*" Permission was added
-               synchronized (this) {
-                       if (all_allowed) {
-                               x = permissions.get("*");
-                               if (x != null) {
-                                       effective |= x.getActionsMask();
-                                       if ((effective & desired) == desired) {
-                                               return true;
-                                       }
-                               }
-                       }
-                       x = permissions.get(name);
-               }
-               // strategy:
-               // Check for full match first. Then work our way up the
-               // name looking for matches on a/b/*
-               if (x != null) {
-                       // we have a direct hit!
-                       effective |= x.getActionsMask();
-                       if ((effective & desired) == desired) {
-                               return true;
-                       }
-               }
-               // work our way up the tree...
-               int last;
-               int offset = name.length() - 1;
-               while ((last = name.lastIndexOf('/', offset)) != -1) {
-                       name = name.substring(0, last + 1) + "*";
-                       synchronized (this) {
-                               x = permissions.get(name);
-                       }
-                       if (x != null) {
-                               effective |= x.getActionsMask();
-                               if ((effective & desired) == desired) {
-                                       return true;
-                               }
-                       }
-                       offset = last - 1;
-               }
-               // we don't have to check for "*" as it was already checked
-               // at the top (all_allowed), so we just return false
-               return false;
-       }
-
-       /**
-        * Returns an enumeration of all {@code TopicPermission} objects in the
-        * container.
-        * 
-        * @return Enumeration of all {@code TopicPermission} objects.
-        */
-       @Override
-       public synchronized Enumeration<Permission> elements() {
-               List<Permission> all = new 
ArrayList<Permission>(permissions.values());
-               return Collections.enumeration(all);
-       }
-
-       /* serialization logic */
-       private static final ObjectStreamField[]        serialPersistentFields  
= {new ObjectStreamField("permissions", Hashtable.class), new 
ObjectStreamField("all_allowed", Boolean.TYPE)};
-
-       private synchronized void writeObject(ObjectOutputStream out) throws 
IOException {
-               Hashtable<String, TopicPermission> hashtable = new 
Hashtable<String, TopicPermission>(permissions);
-               ObjectOutputStream.PutField pfields = out.putFields();
-               pfields.put("permissions", hashtable);
-               pfields.put("all_allowed", all_allowed);
-               out.writeFields();
-       }
-
-       private synchronized void readObject(java.io.ObjectInputStream in) 
throws IOException, ClassNotFoundException {
-               ObjectInputStream.GetField gfields = in.readFields();
-               @SuppressWarnings("unchecked")
-               Hashtable<String, TopicPermission> hashtable = 
(Hashtable<String, TopicPermission>) gfields.get("permissions", null);
-               permissions = new HashMap<String, TopicPermission>(hashtable);
-               all_allowed = gfields.get("all_allowed", false);
-       }
-}
diff --git 
a/org.apache.aries.typedevent.bus/src/main/java/org/osgi/service/typedevent/TypedEventBus.java
 
b/org.apache.aries.typedevent.bus/src/main/java/org/osgi/service/typedevent/TypedEventBus.java
deleted file mode 100644
index ec89cbe..0000000
--- 
a/org.apache.aries.typedevent.bus/src/main/java/org/osgi/service/typedevent/TypedEventBus.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*******************************************************************************
- * Copyright (c) Contributors to the Eclipse Foundation
- *
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0 
- 
*******************************************************************************/
-
-package org.osgi.service.typedevent;
-
-import java.util.Map;
-
-import org.osgi.annotation.versioning.ProviderType;
-
-/**
- * The Typed Event service. Bundles wishing to publish events must obtain
- * this service and call one of the event delivery methods.
- * 
- * @ThreadSafe
- * @author $Id: cace0c5ed2b2e0d6abdf96f4a30e24b9c1610eed $
- */
-@ProviderType
-public interface TypedEventBus {
-       /**
-        * Initiate asynchronous, ordered delivery of an event. This method 
returns
-        * to the caller before delivery of the event is completed. Events are
-        * delivered in the order that they are received by this method.
-        * <p>
-        * The topic for this event will be automatically set to the fully 
qualified
-        * type name for the supplied event object.
-        * <p>
-        * Logically equivalent to calling
-        * {@code deliver(event.getClass().getName().replace('.', '/'), event)}
-        * 
-        * @param event The event to send to all listeners which subscribe to 
the
-        *            topic of the event.
-        * @throws NullPointerException if the event object is null
-        */
-       void deliver(Object event);
-
-       /**
-        * Initiate asynchronous, ordered delivery of an event. This method 
returns
-        * to the caller before delivery of the event is completed. Events are
-        * delivered in the order that they are received by this method.
-        * 
-        * @param topic The topic to which this event should be sent.
-        * @param event The event to send to all listeners which subscribe to 
the
-        *            topic.
-        * @throws NullPointerException if the event object is null
-        * @throws IllegalArgumentException if the topic name is not valid
-        */
-       void deliver(String topic, Object event);
-
-       /**
-        * Initiate asynchronous, ordered delivery of event data. This method
-        * returns to the caller before delivery of the event is completed. 
Events
-        * are delivered in the order that they are received by this method.
-        * 
-        * @param topic The topic to which this event should be sent.
-        * @param event A Map representation of the event data to send to all
-        *            listeners which subscribe to the topic.
-        * @throws NullPointerException if the event map is null
-        * @throws IllegalArgumentException if the topic name is not valid
-        */
-       void deliverUntyped(String topic, Map<String, ? > event);
-
-       /**
-        * Creates a {@link TypedEventPublisher} for the topic automatically
-        * generated from the passed in event type.
-        * 
-        * @param <T> The type of events to be sent by the
-        *            {@link TypedEventPublisher}
-        * @param eventType The type of events to be sent by the
-        *            {@link TypedEventPublisher}
-        * @return A {@link TypedEventPublisher} that will publish events to the
-        *         topic name automatically generated from {@code eventType}
-        * @since 1.1
-        */
-       <T> TypedEventPublisher<T> createPublisher(Class<T> eventType);
-
-       /**
-        * Creates a {@link TypedEventPublisher} for the supplied topic and 
event
-        * type
-        * 
-        * @param <T> The type of events to be sent by the
-        *            {@link TypedEventPublisher}
-        * @param topic The topic to publish events to
-        * @param eventType The type of events to be sent by the
-        *            {@link TypedEventPublisher}
-        * @return A {@link TypedEventPublisher} that will publish events to the
-        *         supplied topic
-        * @since 1.1
-        */
-       <T> TypedEventPublisher<T> createPublisher(String topic,
-                       Class<T> eventType);
-
-       /**
-        * Creates a {@link TypedEventPublisher} for the supplied topic
-        * 
-        * @param topic The topic to publish events to
-        * @return A {@link TypedEventPublisher} that will publish events to the
-        *         supplied topic
-        * @since 1.1
-        */
-       TypedEventPublisher<Object> createPublisher(String topic);
-
-}
diff --git 
a/org.apache.aries.typedevent.bus/src/main/java/org/osgi/service/typedevent/TypedEventConstants.java
 
b/org.apache.aries.typedevent.bus/src/main/java/org/osgi/service/typedevent/TypedEventConstants.java
deleted file mode 100644
index fcf7fe6..0000000
--- 
a/org.apache.aries.typedevent.bus/src/main/java/org/osgi/service/typedevent/TypedEventConstants.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*******************************************************************************
- * Copyright (c) Contributors to the Eclipse Foundation
- *
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0 
- 
*******************************************************************************/
-
-package org.osgi.service.typedevent;
-
-import org.osgi.annotation.versioning.ProviderType;
-
-/**
- * Defines standard names for Typed Event properties.
- * 
- * @author $Id: b3c3bb7f79af344b6e1f60f13373feaec5d54bd4 $
- */
-@ProviderType
-public final class TypedEventConstants {
-
-       /**
-        * The name of the service property used to indicate the type of the 
event
-        * objects received by a {@link TypedEventHandler} service.
-        * <p>
-        * If this service property is not present then the reified type 
parameter
-        * from the TypedEventHandler implementation class will be used.
-        */
-       public static final String      TYPED_EVENT_TYPE                        
                = "event.type";
-
-       /**
-        * The name of the service property used to indicate the topic(s) to 
which
-        * an a {@link TypedEventHandler} or {@link UntypedEventHandler} 
service is
-        * listening.
-        * <p>
-        * If this service property is not present then the reified type 
parameter
-        * from the TypedEventHandler implementation class will be used to 
determine
-        * the topic.
-        */
-       public static final String      TYPED_EVENT_TOPICS                      
                = "event.topics";
-
-       /**
-        * The name of the service property used to indicate a filter that 
should be
-        * applied to events from the {@link #TYPED_EVENT_TOPICS}. Only events 
which
-        * match the filter will be delivered to the Event Handler service.
-        * <p>
-        * If this service property is not present then all events from the 
topic(s)
-        * will be delivered to the Event Handler service.
-        */
-       public static final String      TYPED_EVENT_FILTER                      
                = "event.filter";
-
-       /**
-        * The name of the service property used to indicate that an event 
handler
-        * would like to receive one or more historical events matching its
-        * {@link #TYPED_EVENT_TOPICS} and {@link #TYPED_EVENT_FILTER} before
-        * receiving any new data. The value of this property is an {@link 
Integer}
-        * greater than or equal to zero.
-        * <p>
-        * If this property is set then when the event hander is discovered by 
the
-        * whiteboard the event handler will deliver, in order, up to the 
requested
-        * number of historical events. This will occur before the delivery of 
any
-        * new events. If no history is available then zero events will be
-        * delivered. If insufficient history is available then fewer events 
than
-        * requested will be delivered.
-        */
-       public static final String      TYPED_EVENT_HISTORY                     
                = "event.history";
-
-       /**
-        * The name of the implementation capability for the Typed Event
-        * specification
-        */
-       public static final String      TYPED_EVENT_IMPLEMENTATION              
        = "osgi.typedevent";
-
-       /**
-        * The version of the implementation capability for the Typed Event
-        * specification
-        */
-       public static final String      TYPED_EVENT_SPECIFICATION_VERSION       
= "1.1";
-
-       /**
-        * Private constructor to prevent instantiation
-        */
-       private TypedEventConstants() {
-       }
-}
diff --git 
a/org.apache.aries.typedevent.bus/src/main/java/org/osgi/service/typedevent/TypedEventHandler.java
 
b/org.apache.aries.typedevent.bus/src/main/java/org/osgi/service/typedevent/TypedEventHandler.java
deleted file mode 100644
index 63b5e6e..0000000
--- 
a/org.apache.aries.typedevent.bus/src/main/java/org/osgi/service/typedevent/TypedEventHandler.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*******************************************************************************
- * Copyright (c) Contributors to the Eclipse Foundation
- *
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0 
- 
*******************************************************************************/
-
-package org.osgi.service.typedevent;
-
-import org.osgi.annotation.versioning.ConsumerType;
-
-/**
- * Listener for Typed Events.
- * <p>
- * {@code TypedEventHandler} objects are registered with the Framework service
- * registry and are notified with an event object when an event is sent.
- * <p>
- * {@code TypedEventHandler} objects are expected to reify the type parameter
- * {@code T} with the type of object they wish to receive when implementing 
this
- * interface. This type can be overridden using the
- * {@link TypedEventConstants#TYPED_EVENT_TOPICS} service property.
- * <p>
- * {@code TypedEventHandler} objects may be registered with a service property
- * {@link TypedEventConstants#TYPED_EVENT_TOPICS} whose value is the list of
- * topics in which the event handler is interested.
- * <p>
- * For example:
- * 
- * <pre>
- * String[] topics = new String[] {
- *             &quot;com/isv/*&quot;
- * };
- * Hashtable ht = new Hashtable();
- * ht.put(EventConstants.TYPE_SAFE_EVENT_TOPICS, topics);
- * context.registerService(TypedEventHandler.class, this, ht);
- * </pre>
- * 
- * @ThreadSafe
- * @author $Id: 1ef1b856280d23975dcb3d2d2c5046eb82cdb6fc $
- * @param <T> The type of the event to be received
- */
-@ConsumerType
-public interface TypedEventHandler<T> {
-       /**
-        * Called by the {@link TypedEventBus} service to notify the listener 
of an
-        * event.
-        * 
-        * @param topic The topic to which the event was sent
-        * @param event The event that occurred.
-        */
-       void notify(String topic, T event);
-}
diff --git 
a/org.apache.aries.typedevent.bus/src/main/java/org/osgi/service/typedevent/TypedEventPublisher.java
 
b/org.apache.aries.typedevent.bus/src/main/java/org/osgi/service/typedevent/TypedEventPublisher.java
deleted file mode 100644
index fc306e3..0000000
--- 
a/org.apache.aries.typedevent.bus/src/main/java/org/osgi/service/typedevent/TypedEventPublisher.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*******************************************************************************
- * Copyright (c) Contributors to the Eclipse Foundation
- *
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0 
- 
*******************************************************************************/
-
-package org.osgi.service.typedevent;
-
-import java.util.Map;
-
-import org.osgi.annotation.versioning.ProviderType;
-
-/**
- * A Typed Event publisher for a single topic. Bundles wishing to publish 
events
- * may obtain this object from the {@link TypedEventBus}.
- * <p>
- * All events published by this publisher are sent to the same topic, as
- * returned by {@link #getTopic()}.
- * <p>
- * This object should not be shared as it will not re-validate the caller's
- * permission to send to the target topic.
- * 
- * @ThreadSafe
- * @author $Id: cace0c5ed2b2e0d6abdf96f4a30e24b9c1610eed $
- * @param <T> The type of events that may be sent using this publisher
- * @since 1.1
- */
-
-@ProviderType
-public interface TypedEventPublisher<T> extends AutoCloseable {
-       /**
-        * Initiate asynchronous, ordered delivery of an event. This method 
returns
-        * to the caller before delivery of the event is completed. Events are
-        * delivered in the order that they are received by this method.
-        * 
-        * @param event The event to send to all listeners which subscribe to 
the
-        *            topic of the event.
-        * @throws NullPointerException if the event object is null
-        * @throws IllegalStateException if the {@link TypedEventPublisher} has 
been
-        *             closed
-        */
-       void deliver(T event);
-
-       /**
-        * Initiate asynchronous, ordered delivery of event data. This method
-        * returns to the caller before delivery of the event is completed. 
Events
-        * are delivered in the order that they are received by this method.
-        * 
-        * @param event A Map representation of the event data to send to all
-        *            listeners which subscribe to the topic.
-        * @throws NullPointerException if the event map is null
-        * @throws IllegalStateException if the {@link TypedEventPublisher} has 
been
-        *             closed
-        */
-       void deliverUntyped(Map<String, ? > event);
-
-       /**
-        * Get the topic for this {@link TypedEventPublisher}. This topic is set
-        * when the {@link TypedEventPublisher} is created and cannot be 
changed.
-        * 
-        * @return The topic for this {@link TypedEventPublisher}
-        */
-       String getTopic();
-
-       /**
-        * Closes this {@link TypedEventPublisher} so that no further events 
can be
-        * sent. After closure all delivery methods throw
-        * {@link IllegalStateException}.
-        * <p>
-        * Calling {@link #close()} on a closed {@link TypedEventPublisher} has 
no
-        * effect.
-        */
-       @Override
-       void close();
-
-       /**
-        * This method allows the caller to check whether the
-        * {@link TypedEventPublisher} has been closed.
-        * 
-        * @return <code>false</code> if the {@link TypedEventPublisher} has 
been
-        *         closed, <code>true</code> otherwise.
-        */
-       boolean isOpen();
-}
diff --git 
a/org.apache.aries.typedevent.bus/src/main/java/org/osgi/service/typedevent/UnhandledEventHandler.java
 
b/org.apache.aries.typedevent.bus/src/main/java/org/osgi/service/typedevent/UnhandledEventHandler.java
deleted file mode 100644
index ddba2ca..0000000
--- 
a/org.apache.aries.typedevent.bus/src/main/java/org/osgi/service/typedevent/UnhandledEventHandler.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*******************************************************************************
- * Copyright (c) Contributors to the Eclipse Foundation
- *
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0 
- 
*******************************************************************************/
-
-package org.osgi.service.typedevent;
-
-import java.util.Map;
-
-import org.osgi.annotation.versioning.ConsumerType;
-
-/**
- * Listener for Unhandled Events.
- * <p>
- * {@code UnhandledEventHandler} objects are registered with the Framework
- * service registry and are notified with an event object when an event is 
sent,
- * but no other handler is found to receive the event
- * 
- * @ThreadSafe
- * @author $Id: c6f3ac2430c0caf881b78ffbfdb983331727a9f4 $
- */
-@ConsumerType
-public interface UnhandledEventHandler {
-       /**
-        * Called by the {@link TypedEventBus} service to notify the listener of
-        * an unhandled event.
-        * 
-        * @param topic The topic to which the event was sent
-        * @param event The event that occurred.
-        */
-       void notifyUnhandled(String topic, Map<String,Object> event);
-}
diff --git 
a/org.apache.aries.typedevent.bus/src/main/java/org/osgi/service/typedevent/UntypedEventHandler.java
 
b/org.apache.aries.typedevent.bus/src/main/java/org/osgi/service/typedevent/UntypedEventHandler.java
deleted file mode 100644
index fbdfac5..0000000
--- 
a/org.apache.aries.typedevent.bus/src/main/java/org/osgi/service/typedevent/UntypedEventHandler.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*******************************************************************************
- * Copyright (c) Contributors to the Eclipse Foundation
- *
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0 
- 
*******************************************************************************/
-
-package org.osgi.service.typedevent;
-
-import java.util.Map;
-
-import org.osgi.annotation.versioning.ConsumerType;
-
-/**
- * Listener for Untyped Events.
- * <p>
- * {@code UntypedEventHandler} objects are registered with the Framework 
service
- * registry and are notified with an event object when an event is sent.
- * <p>
- * {@code UntypedEventHandler} objects must be registered with a service
- * property {@link TypedEventConstants#TYPED_EVENT_TOPICS} whose value is the
- * list of topics in which the event handler is interested.
- * <p>
- * For example:
- * 
- * <pre>
- * String[] topics = new String[] {
- *             &quot;com/isv/*&quot;
- * };
- * Hashtable ht = new Hashtable();
- * ht.put(EventConstants.TYPE_SAFE_EVENT_TOPICS, topics);
- * context.registerService(UntypedEventHandler.class, this, ht);
- * </pre>
- * 
- * @ThreadSafe
- * @author $Id: 24d2143a364d9f4d7d1b7e17d743d3c1a10b63a9 $
- */
-@ConsumerType
-public interface UntypedEventHandler {
-       /**
-        * Called by the {@link TypedEventBus} service to notify the listener 
of an
-        * event.
-        * 
-        * @param topic The topic to which the event was sent
-        * @param event The event that occurred.
-        */
-       void notifyUntyped(String topic, Map<String,Object> event);
-}
diff --git 
a/org.apache.aries.typedevent.bus/src/main/java/org/osgi/service/typedevent/annotations/RequireTypedEvent.java
 
b/org.apache.aries.typedevent.bus/src/main/java/org/osgi/service/typedevent/annotations/RequireTypedEvent.java
deleted file mode 100644
index e90e16f..0000000
--- 
a/org.apache.aries.typedevent.bus/src/main/java/org/osgi/service/typedevent/annotations/RequireTypedEvent.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*******************************************************************************
- * Copyright (c) Contributors to the Eclipse Foundation
- *
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0 
- 
*******************************************************************************/
-
-package org.osgi.service.typedevent.annotations;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-import org.osgi.annotation.bundle.Requirement;
-import org.osgi.namespace.implementation.ImplementationNamespace;
-import org.osgi.service.typedevent.TypedEventConstants;
-
-/**
- * This annotation can be used to require the Typed Event implementation. It 
can
- * be used directly, or as a meta-annotation.
- * <p>
- * This annotation is applied to several of the Typed Event component property
- * type annotations meaning that it does not normally need to be applied to
- * Declarative Services components which use the Typed Event specification.
- * 
- * @author $Id: 5919b947393ff3b07a0e8cd1dc881dcf4637e6b4 $
- * @since 1.0
- */
-@Documented
-@Retention(RetentionPolicy.CLASS)
-@Target({
-               ElementType.TYPE, ElementType.PACKAGE
-})
-@Requirement(namespace = ImplementationNamespace.IMPLEMENTATION_NAMESPACE, //
-               name = TypedEventConstants.TYPED_EVENT_IMPLEMENTATION, //
-               version = TypedEventConstants.TYPED_EVENT_SPECIFICATION_VERSION)
-public @interface RequireTypedEvent {
-       // This is a marker annotation.
-}
diff --git 
a/org.apache.aries.typedevent.bus/src/main/java/org/osgi/service/typedevent/annotations/package-info.java
 
b/org.apache.aries.typedevent.bus/src/main/java/org/osgi/service/typedevent/annotations/package-info.java
deleted file mode 100644
index fa94dbb..0000000
--- 
a/org.apache.aries.typedevent.bus/src/main/java/org/osgi/service/typedevent/annotations/package-info.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*******************************************************************************
- * Copyright (c) Contributors to the Eclipse Foundation
- *
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0 
- 
*******************************************************************************/
-
-/**
- * Typed Event Annotations Package Version 1.0.
- * <p>
- * This package contains annotations that can be used to require the Typed 
Event
- * implementation.
- * <p>
- * Bundles should not normally need to import this package as the annotations
- * are only used at build-time.
- * 
- * @author $Id: 627e9ee98bd7b640ebad077fccfbd6994c9af41e $
- */
-
-@Export
-@Version(TYPED_EVENT_SPECIFICATION_VERSION)
-package org.osgi.service.typedevent.annotations;
-
-import static 
org.osgi.service.typedevent.TypedEventConstants.TYPED_EVENT_SPECIFICATION_VERSION;
-
-import org.osgi.annotation.bundle.Export;
-import org.osgi.annotation.versioning.Version;
-
diff --git 
a/org.apache.aries.typedevent.bus/src/main/java/org/osgi/service/typedevent/monitor/MonitorEvent.java
 
b/org.apache.aries.typedevent.bus/src/main/java/org/osgi/service/typedevent/monitor/MonitorEvent.java
deleted file mode 100644
index 71bea5d..0000000
--- 
a/org.apache.aries.typedevent.bus/src/main/java/org/osgi/service/typedevent/monitor/MonitorEvent.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*******************************************************************************
- * Copyright (c) Contributors to the Eclipse Foundation
- *
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0 
- 
*******************************************************************************/
-package org.osgi.service.typedevent.monitor;
-
-import java.time.Instant;
-import java.util.Map;
-
-import org.osgi.annotation.versioning.ProviderType;
-
-/**
- * A monitoring event.
- */
-@ProviderType
-public class MonitorEvent {
-
-       /**
-        * The Event Topic
-        */
-       public String                           topic;
-       
-       /**
-        * The Data from the Event in Map form
-        */
-       public Map<String, Object> eventData;
-
-       /**
-        * The time at which the event was published
-        */
-       public Instant publicationTime;
-}
diff --git 
a/org.apache.aries.typedevent.bus/src/main/java/org/osgi/service/typedevent/monitor/RangePolicy.java
 
b/org.apache.aries.typedevent.bus/src/main/java/org/osgi/service/typedevent/monitor/RangePolicy.java
deleted file mode 100644
index 8727258..0000000
--- 
a/org.apache.aries.typedevent.bus/src/main/java/org/osgi/service/typedevent/monitor/RangePolicy.java
+++ /dev/null
@@ -1,147 +0,0 @@
-/*******************************************************************************
- * Copyright (c) Contributors to the Eclipse Foundation
- *
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0 
- 
*******************************************************************************/
-package org.osgi.service.typedevent.monitor;
-
-import static java.lang.Integer.MAX_VALUE;
-
-import org.osgi.annotation.versioning.ProviderType;
-
-/**
- * A range policy determining how much history should be stored. The minimum
- * defines a hard limit indicating the minimum number of historical events that
- * must be kept. The maximum defines an additional limit capping the maximum
- * number of events that should be kept by the implementation. Events between
- * the minimum and maximum storage limits may be discarded at any time by the
- * implementation.
- * 
- * @ThreadSafe
- * @author $Id: 9540667fed7c58ae4f8f11390c5291fcebbca596 $
- * @since 1.1
- */
-@ProviderType
-public final class RangePolicy {
-
-       private static final RangePolicy        NONE            = new 
RangePolicy(0, 0);
-       private static final RangePolicy        UNLIMITED       = new 
RangePolicy(0,
-                       MAX_VALUE);
-
-       private final int                                       min;
-       private final int                                       max;
-
-       private RangePolicy(int min, int max) {
-               if (min < 0 || max < 0 || min > max) {
-                       throw new IllegalArgumentException(String.format(
-                                       "The minimum %d and maximum %d must 
both be greater than zero, and the minimum less than or equal to the maximum",
-                                       Integer.valueOf(min), 
Integer.valueOf(max)));
-               }
-               this.min = min;
-               this.max = max;
-       }
-       
-       /**
-        * Get the minimum storage requirement
-        * <p>
-        * This defines the minimum number of events that must be stored by the
-        * implementation. If at least <code>min</code> events have been sent 
to a
-        * topic using this policy then there must be at least <code>min</code>
-        * events returned by the history.
-        * 
-        * @return the minimum number of events that must be retained
-        */
-       public int getMinimum() {
-               return min;
-       }
-
-       /**
-        * Get the maximum storage requirement
-        * <p>
-        * This defines the maximum number of events that should be stored by 
the
-        * implementation. The implementation must return at most 
<code>max</code>
-        * events for a topic using this policy, and may return fewer subject 
to the
-        * minimum constraint defined by {@link #getMinimum()}.
-        * 
-        * @return the maximum number of events that should be retained
-        */
-       public int getMaximum() {
-               return max;
-       }
-
-       /**
-        * Create a range policy for the defined range
-        * 
-        * @param min the minimum number of events that must be kept in history
-        * @param max the maximum number of events that may be kept in history
-        * @return A configured {@link RangePolicy}
-        */
-       public static RangePolicy range(int min, int max) {
-               return new RangePolicy(min, max);
-       }
-
-       /**
-        * Create a range policy for an exact range. Equivalent to
-        * <code>RangePolicy.range(count, count)</code>
-        * 
-        * @param count the number of events that must be kept in history
-        * @return A configured {@link RangePolicy}
-        */
-       public static RangePolicy exact(int count) {
-               return new RangePolicy(count, count);
-       }
-
-       /**
-        * Create a range policy for a minimum history requirement. Equivalent 
to
-        * <code>RangePolicy.range(min, Integer.MAX_VALUE)</code>
-        * 
-        * @param min the minimum number of events that must be kept in history
-        * @return A configured {@link RangePolicy}
-        */
-       public static RangePolicy atLeast(int min) {
-               return new RangePolicy(min, MAX_VALUE);
-       }
-
-       /**
-        * Create a range policy for a maximum history requirement. Equivalent 
to
-        * <code>RangePolicy.range(0, max)</code>
-        * 
-        * @param max the maximum number of events that may be kept in history
-        * @return A configured {@link RangePolicy}
-        */
-       public static RangePolicy atMost(int max) {
-               return new RangePolicy(0, max);
-       }
-
-       /**
-        * Get a range policy which stores no events. Equivalent to
-        * <code>RangePolicy.range(0, 0)</code>
-        * 
-        * @return A configured {@link RangePolicy}
-        */
-       public static RangePolicy none() {
-               return NONE;
-       }
-
-       /**
-        * Get a range policy which may store unlimited events. Equivalent to
-        * <code>RangePolicy.range(0, Integer.MAX_VALUE)</code>
-        * 
-        * @return A configured {@link RangePolicy}
-        */
-       public static RangePolicy unlimited() {
-               return UNLIMITED;
-       }
-}
diff --git 
a/org.apache.aries.typedevent.bus/src/main/java/org/osgi/service/typedevent/monitor/TypedEventMonitor.java
 
b/org.apache.aries.typedevent.bus/src/main/java/org/osgi/service/typedevent/monitor/TypedEventMonitor.java
deleted file mode 100644
index 9c9c8a9..0000000
--- 
a/org.apache.aries.typedevent.bus/src/main/java/org/osgi/service/typedevent/monitor/TypedEventMonitor.java
+++ /dev/null
@@ -1,244 +0,0 @@
-/*******************************************************************************
- * Copyright (c) Contributors to the Eclipse Foundation
- *
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0 
- 
*******************************************************************************/
-package org.osgi.service.typedevent.monitor;
-
-import java.time.Instant;
-import java.util.Map;
-
-import org.osgi.annotation.versioning.ProviderType;
-import org.osgi.util.function.Predicate;
-import org.osgi.util.pushstream.PushStream;
-
-/**
- * The EventMonitor service can be used to monitor the events that are sent
- * using the EventBus, and that are received from remote EventBus instances
- * 
- * @ThreadSafe
- * @author $Id: 05a263f6544754849171431982a20dae9a2c2da4 $
- */
-@ProviderType
-public interface TypedEventMonitor {
-
-    /**
-        * Get a stream of events, starting now.
-        *
-        * @return A stream of event data
-        */
-       PushStream<MonitorEvent> monitorEvents();
-
-       /**
-        * Get a stream of events, including up to the requested number of
-        * historical data events.
-        * <p>
-        * Logically equivalent to <code>monitorEvents(history, false)</code>.
-        *
-        * @param history The requested number of historical events, note that 
fewer
-        *            than this number of events may be returned if history is
-        *            unavailable, or if insufficient events have been sent.
-        * @return A stream of event data
-        */
-       PushStream<MonitorEvent> monitorEvents(int history);
-
-       /**
-        * Get a stream of events, including up to the requested number of
-        * historical data events.
-        *
-        * @param history The requested number of historical events, note that 
fewer
-        *            than this number of events may be returned if history is
-        *            unavailable, or if insufficient events have been sent.
-        * @param historyOnly If <code>true</code> then the returned stream 
will be
-        *            closed as soon as the available history has been delivered
-        * @return A stream of event data
-        * @since 1.1
-        */
-       PushStream<MonitorEvent> monitorEvents(int history, boolean 
historyOnly);
-
-       /**
-        * Get a stream of events, including historical data events prior to the
-        * supplied time.
-        * <p>
-        * Logically equivalent to <code>monitorEvents(history, false)</code>.
-        *
-        * @param history The requested time after which historical events, 
should
-        *            be included. Note that events may have been discarded, or
-        *            history unavailable.
-        * @return A stream of event data
-        */
-       PushStream<MonitorEvent> monitorEvents(Instant history);
-
-       /**
-        * Get a stream of events, including historical data events prior to the
-        * supplied time.
-        *
-        * @param history The requested time after which historical events, 
should
-        *            be included. Note that events may have been discarded, or
-        *            history unavailable.
-        * @param historyOnly If <code>true</code> then the returned stream 
will be
-        *            closed as soon as the available history has been delivered
-        * @return A stream of event data
-        * @since 1.1
-        */
-       PushStream<MonitorEvent> monitorEvents(Instant history,
-                       boolean historyOnly);
-
-       /**
-        * Get a Predicate which will match the supplied topic filter against a
-        * topic name.
-        * 
-        * @param topicFilter The topic filter to match against
-        * @return A predicate that will return true if the topic name being 
tested
-        *         matches the supplied topic filter.
-        * @since 1.1
-        * @throws NullPointerException if the topic filter is <code>null</code>
-        * @throws IllegalArgumentException if the topic filter contains invalid
-        *             syntax
-        */
-       Predicate<String> topicFilterMatches(String topicFilter);
-
-       /**
-        * Test the supplied topic filter against the supplied topic name.
-        * 
-        * @param topicName The topic name to match against
-        * @param topicFilter The topic filter to match against
-        * @return A predicate that will return true if the topic name being 
tested
-        *         matches the supplied topic filter.
-        * @since 1.1
-        * @throws NullPointerException if the topic filter is <code>null</code>
-        * @throws IllegalArgumentException if the topic filter or topic name
-        *             contain invalid syntax
-        */
-       boolean topicFilterMatches(String topicName, String topicFilter);
-
-       /**
-        * Get an estimate of the maximum number of historic events that can be
-        * stored by the TypedEvent implementation. If there is no fixed limit 
then
-        * -1 is returned. If no history storage is supported then zero is 
returned.
-        * 
-        * @return The maximum number of historic events that can be stored.
-        * @since 1.1
-        */
-       int getMaximumEventStorage();
-
-       /**
-        * Get the configured history storage for the Typed Events 
implementation.
-        * <p>
-        * The returned {@link Map} uses topic filter strings as keys. These 
filter
-        * strings may contain wildcards. If multiple filter strings are able to
-        * match then the most specific match applies with the following 
ordering:
-        * <ol>
-        * <li>An exact topic match</li>
-        * <li>An exact match of the parent topic and a single level wildcard 
as the
-        * final token</li>
-        * <li>An exact match of the parent topic and multi-level wildcard as 
the
-        * final token</li>
-        * </ol>
-        * <p>
-        * This ordering is applied recursively starting with the first topic 
token
-        * until only one candidate remains. The keys in the returned map are
-        * ordered such that the first encountered key which matches a given 
topic
-        * name is the configuration that will apply to that topic name.
-        * <p>
-        * The value associated with each key is the {@link RangePolicy} 
defining
-        * the number of events that will be stored.
-        *
-        * @return The configured history storage
-        * @since 1.1
-        */
-       Map<String,RangePolicy> getConfiguredHistoryStorage();
-
-       /**
-        * Get the configured history storage for a given topic filter. This 
method
-        * looks for an exact match in the history configuration. If no
-        * configuration is found for the supplied topic filter then
-        * <code>null</code> is returned.
-        * 
-        * @param topicFilter the topic filter
-        * @return The {@link RangePolicy} defining the number of stored events 
for
-        *         the topic. If no configuration is set for the topic filter 
then
-        *         <code>null</code> will be returned.
-        * @throws NullPointerException if the topic filter is <code>null</code>
-        * @throws IllegalArgumentException if the topic filter contains invalid
-        *             syntax
-        * @since 1.1
-        */
-       RangePolicy getConfiguredHistoryStorage(String topicFilter);
-
-       /**
-        * Get the history storage rule that applies to a given topic name. This
-        * method takes into account the necessary precedence rules to find the
-        * correct configuration for the named method, and so will never return
-        * <code>null</code>.
-        * 
-        * @param topicName the topic name
-        * @return The {@link RangePolicy} defining the number of stored events 
for
-        *         the topic. If no configuration is set for the topic filter 
then
-        *         an {@link RangePolicy#none()} will be returned
-        * @throws NullPointerException if the topic name is <code>null</code>
-        * @throws IllegalArgumentException if the topic name contains invalid
-        *             syntax or wildcards
-        * @since 1.1
-        */
-       RangePolicy getEffectiveHistoryStorage(String topicName);
-
-       /**
-        * Configure history storage for a given topic filter.
-        * <p>
-        * Minimum storage settings may only be set for exact matches. It is an
-        * error to use a filter containing wildcards with a non-zero minimum
-        * history requirement.
-        * <p>
-        * If a minimum storage requirement is set then the Typed Events
-        * implementation must guarantee sufficient storage space to hold those
-        * events. If, after accounting for all other pre-existing miniumum 
storage
-        * requirements, there is insufficent storage left for this new
-        * configuration then an {@link IllegalStateException} must be thrown.
-        * 
-        * @param topicFilter the topic filter
-        * @param policy the event retention policy to use
-        * @return An int indicating the number of events that can be kept for 
this
-        *         topic given the current configuration. This will always be at
-        *         least <code>policy.getMin()</code> and at most
-        *         <code>policy.getMax()</code>.
-        * @throws NullPointerException if the topic filter is <code>null</code>
-        * @throws IllegalArgumentException if:
-        *             <ul>
-        *             <li>The topic filter contains invalid syntax</li>
-        *             <li>The topic filter contains wildcard(s) <em>and</em>
-        *             <code>getMaximumEventStorage</code> is not 
<code>-1</code>
-        *             <em>and</em> <code>policy.getMin()</code> is not
-        *             <code>0</code>.</li>
-        *             </ul>
-        * @throws IllegalStateException if there is insufficient available 
space to
-        *             provide the additional <code>minRequired</code> stored
-        *             events.
-        * @since 1.1
-        */
-       int configureHistoryStorage(String topicFilter, RangePolicy policy);
-
-       /**
-        * Delete history storage configuration for a given topic filter.
-        * 
-        * @param topicFilter the topic filter
-        * @throws NullPointerException if the topic filter is <code>null</code>
-        * @throws IllegalArgumentException if the topic filter contains invalid
-        *             syntax
-        * @since 1.1
-        */
-       void removeHistoryStorage(String topicFilter);
-
-}
diff --git 
a/org.apache.aries.typedevent.bus/src/main/java/org/osgi/service/typedevent/monitor/package-info.java
 
b/org.apache.aries.typedevent.bus/src/main/java/org/osgi/service/typedevent/monitor/package-info.java
deleted file mode 100644
index 0a46d1e..0000000
--- 
a/org.apache.aries.typedevent.bus/src/main/java/org/osgi/service/typedevent/monitor/package-info.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*******************************************************************************
- * Copyright (c) Contributors to the Eclipse Foundation
- *
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0 
- 
*******************************************************************************/
-
-/**
- * Typed Event Monitoring Package Version 1.0.
- * <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.typedevent.monitor; 
version="[1.0,2.0)"}
- * <p>
- * Example import for providers implementing the API in this package:
- * <p>
- * {@code  Import-Package: org.osgi.service.typedevent.monitor; 
version="[1.0,1.1)"}
- * 
- * @author $Id: 9e2a95c6b50c545e6b5148469c6e6c577df042b3 $
- */
-
-@Export
-@Version(TYPED_EVENT_SPECIFICATION_VERSION)
-package org.osgi.service.typedevent.monitor;
-
-import static 
org.osgi.service.typedevent.TypedEventConstants.TYPED_EVENT_SPECIFICATION_VERSION;
-
-import org.osgi.annotation.bundle.Export;
-import org.osgi.annotation.versioning.Version;
diff --git 
a/org.apache.aries.typedevent.bus/src/main/java/org/osgi/service/typedevent/package-info.java
 
b/org.apache.aries.typedevent.bus/src/main/java/org/osgi/service/typedevent/package-info.java
deleted file mode 100644
index b720bfa..0000000
--- 
a/org.apache.aries.typedevent.bus/src/main/java/org/osgi/service/typedevent/package-info.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*******************************************************************************
- * Copyright (c) Contributors to the Eclipse Foundation
- *
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0 
- 
*******************************************************************************/
-
-/**
- * Typed Event Package Version 1.0.
- * <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.typedevent; version="[1.0,2.0)"}
- * <p>
- * Example import for providers implementing the API in this package:
- * <p>
- * {@code  Import-Package: org.osgi.service.typedevent; version="[1.0,1.1)"}
- * 
- * @author $Id: 4931ddeaf6f300dbb0ef21877b73d676365e5ae5 $
- */
-
-@Export
-@Version(TYPED_EVENT_SPECIFICATION_VERSION)
-package org.osgi.service.typedevent;
-
-import static 
org.osgi.service.typedevent.TypedEventConstants.TYPED_EVENT_SPECIFICATION_VERSION;
-
-import org.osgi.annotation.bundle.Export;
-import org.osgi.annotation.versioning.Version;
-
diff --git 
a/org.apache.aries.typedevent.bus/src/main/java/org/osgi/service/typedevent/propertytypes/EventFilter.java
 
b/org.apache.aries.typedevent.bus/src/main/java/org/osgi/service/typedevent/propertytypes/EventFilter.java
deleted file mode 100644
index 534e117..0000000
--- 
a/org.apache.aries.typedevent.bus/src/main/java/org/osgi/service/typedevent/propertytypes/EventFilter.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*******************************************************************************
- * Copyright (c) Contributors to the Eclipse Foundation
- *
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0 
- 
*******************************************************************************/
-
-package org.osgi.service.typedevent.propertytypes;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-import org.osgi.service.component.annotations.ComponentPropertyType;
-import org.osgi.service.typedevent.TypedEventConstants;
-import org.osgi.service.typedevent.TypedEventHandler;
-import org.osgi.service.typedevent.UntypedEventHandler;
-import org.osgi.service.typedevent.annotations.RequireTypedEvent;
-
-/**
- * Component Property Type for the
- * {@link TypedEventConstants#TYPED_EVENT_FILTER} service property of an Event
- * Handler service.
- * <p>
- * This annotation can be used on an {@link TypedEventHandler} or
- * {@link UntypedEventHandler} component to declare the value of the
- * {@link TypedEventConstants#TYPED_EVENT_FILTER} service property.
- * 
- * @see "Component Property Types"
- * @author $Id: 3c99b991160eff4d897ce5040a15a591597d5dce $
- */
-@ComponentPropertyType
-@Retention(RetentionPolicy.CLASS)
-@Target(ElementType.TYPE)
-@RequireTypedEvent
-public @interface EventFilter {
-       /**
-        * Service property specifying the event filter for a
-        * {@link TypedEventHandler} or {@link UntypedEventHandler} service.
-        * 
-        * @return The event filter.
-        * @see TypedEventConstants#TYPED_EVENT_FILTER
-        */
-       String value();
-}
diff --git 
a/org.apache.aries.typedevent.bus/src/main/java/org/osgi/service/typedevent/propertytypes/EventTopics.java
 
b/org.apache.aries.typedevent.bus/src/main/java/org/osgi/service/typedevent/propertytypes/EventTopics.java
deleted file mode 100644
index 857e1d0..0000000
--- 
a/org.apache.aries.typedevent.bus/src/main/java/org/osgi/service/typedevent/propertytypes/EventTopics.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*******************************************************************************
- * Copyright (c) Contributors to the Eclipse Foundation
- *
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0 
- 
*******************************************************************************/
-
-package org.osgi.service.typedevent.propertytypes;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-import org.osgi.service.component.annotations.ComponentPropertyType;
-import org.osgi.service.typedevent.TypedEventConstants;
-import org.osgi.service.typedevent.TypedEventHandler;
-import org.osgi.service.typedevent.UntypedEventHandler;
-import org.osgi.service.typedevent.annotations.RequireTypedEvent;
-
-/**
- * Component Property Type for the {@link 
TypedEventConstants#TYPED_EVENT_TOPICS}
- * service property of a {@link TypedEventHandler} or
- * {@link UntypedEventHandler} service.
- * <p>
- * This annotation can be used on a component to declare the values of the
- * {@link TypedEventConstants#TYPED_EVENT_TOPICS} service property.
- * 
- * @see "Component Property Types"
- * @author $Id: a82d95f6131235a5f94b7a778ea8e19ef968df41 $
- */
-@ComponentPropertyType
-@Retention(RetentionPolicy.CLASS)
-@Target(ElementType.TYPE)
-@RequireTypedEvent
-public @interface EventTopics {
-       /**
-        * Service property specifying the {@code Event} topics of interest to 
an
-        * {@link TypedEventHandler} or {@link UntypedEventHandler} service.
-        * 
-        * @return The event topics.
-        * @see TypedEventConstants#TYPED_EVENT_TOPICS
-        */
-       String[] value();
-}
diff --git 
a/org.apache.aries.typedevent.bus/src/main/java/org/osgi/service/typedevent/propertytypes/EventType.java
 
b/org.apache.aries.typedevent.bus/src/main/java/org/osgi/service/typedevent/propertytypes/EventType.java
deleted file mode 100644
index 5be6da4..0000000
--- 
a/org.apache.aries.typedevent.bus/src/main/java/org/osgi/service/typedevent/propertytypes/EventType.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*******************************************************************************
- * Copyright (c) Contributors to the Eclipse Foundation
- *
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0 
- 
*******************************************************************************/
-
-package org.osgi.service.typedevent.propertytypes;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-import org.osgi.service.component.annotations.ComponentPropertyType;
-import org.osgi.service.typedevent.TypedEventConstants;
-import org.osgi.service.typedevent.TypedEventHandler;
-import org.osgi.service.typedevent.annotations.RequireTypedEvent;
-
-/**
- * Component Property Type for the {@link TypedEventConstants#TYPED_EVENT_TYPE}
- * service property of an {@link TypedEventHandler} service.
- * <p>
- * This annotation can be used on an {@link TypedEventHandler} component to
- * declare the value of the {@link TypedEventConstants#TYPED_EVENT_TYPE} 
service
- * property.
- * 
- * @see "Component Property Types"
- * @author $Id: 3799448fcf60ec8a125bf857b2b7da23d9f45570 $
- */
-@ComponentPropertyType
-@Retention(RetentionPolicy.CLASS)
-@Target(ElementType.TYPE)
-@RequireTypedEvent
-public @interface EventType {
-       /**
-        * Service property specifying the {@code EventType} for a
-        * {@link TypedEventHandler} service.
-        * 
-        * @return The event filter.
-        * @see TypedEventConstants#TYPED_EVENT_TYPE
-        */
-       Class<?> value();
-}
diff --git 
a/org.apache.aries.typedevent.bus/src/main/java/org/osgi/service/typedevent/propertytypes/package-info.java
 
b/org.apache.aries.typedevent.bus/src/main/java/org/osgi/service/typedevent/propertytypes/package-info.java
deleted file mode 100644
index e937468..0000000
--- 
a/org.apache.aries.typedevent.bus/src/main/java/org/osgi/service/typedevent/propertytypes/package-info.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*******************************************************************************
- * Copyright (c) Contributors to the Eclipse Foundation
- *
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0 
- 
*******************************************************************************/
-
-/**
- * Typed Event Component Property Types Package Version 1.0.
- * <p>
- * When used as annotations, component property types are processed by tools to
- * generate Component Descriptions which are used at runtime.
- * <p>
- * Bundles wishing to use this package at runtime must list the package in the
- * Import-Package header of the bundle's manifest.
- * <p>
- * Example import for consumers using the API in this package:
- * <p>
- * {@code  Import-Package: org.osgi.service.typedevent.propertytypes; 
version="[1.0,2.0)"}
- * 
- * @author $Id: 75ea41c54d3a9602dfaf4e2d31e0019cef207c0f $
- */
-
-@Export
-@Version(TYPED_EVENT_SPECIFICATION_VERSION)
-package org.osgi.service.typedevent.propertytypes;
-
-import static 
org.osgi.service.typedevent.TypedEventConstants.TYPED_EVENT_SPECIFICATION_VERSION;
-
-import org.osgi.annotation.bundle.Export;
-import org.osgi.annotation.versioning.Version;
-
diff --git a/org.apache.aries.typedevent.bus/test.bndrun 
b/org.apache.aries.typedevent.bus/test.bndrun
index 7f3c04b..9a19beb 100644
--- a/org.apache.aries.typedevent.bus/test.bndrun
+++ b/org.apache.aries.typedevent.bus/test.bndrun
@@ -55,5 +55,6 @@
        org.apache.felix.configadmin;version='[1.9.26,1.9.27)',\
        slf4j.api;version='[1.7.30,1.7.31)',\
        org.mockito.junit-jupiter;version='[5.5.0,5.5.1)',\
-       org.osgi.util.promise;version='[1.1.0,1.1.1)',\
-       org.osgi.util.pushstream;version='[1.0.0,1.0.1)'
+       org.osgi.service.typedevent;version='[1.1.0,1.1.1)',\
+       org.osgi.util.promise;version='[1.1.1,1.1.2)',\
+       org.osgi.util.pushstream;version='[1.0.1,1.0.2)'
diff --git 
a/org.apache.aries.typedevent.remote/org.apache.aries.typedevent.remote.remoteservices/pom.xml
 
b/org.apache.aries.typedevent.remote/org.apache.aries.typedevent.remote.remoteservices/pom.xml
index 887fe55..4029b4e 100644
--- 
a/org.apache.aries.typedevent.remote/org.apache.aries.typedevent.remote.remoteservices/pom.xml
+++ 
b/org.apache.aries.typedevent.remote/org.apache.aries.typedevent.remote.remoteservices/pom.xml
@@ -37,11 +37,10 @@
             <groupId>org.osgi</groupId>
             <artifactId>org.osgi.core</artifactId>
         </dependency>
-        <!-- Temporary removal while using the locally built interfaces
         <dependency>
             <groupId>org.osgi</groupId>
             <artifactId>org.osgi.service.typedevent</artifactId>
-        </dependency> -->
+        </dependency>
         <dependency>
             <groupId>org.osgi</groupId>
             <artifactId>osgi.annotation</artifactId>
diff --git 
a/org.apache.aries.typedevent.remote/org.apache.aries.typedevent.remote.remoteservices/src/main/java/org/apache/aries/typedevent/remote/remoteservices/impl/RemoteEventBusImpl.java
 
b/org.apache.aries.typedevent.remote/org.apache.aries.typedevent.remote.remoteservices/src/main/java/org/apache/aries/typedevent/remote/remoteservices/impl/RemoteEventBusImpl.java
index 48ce6bf..c2ea55a 100644
--- 
a/org.apache.aries.typedevent.remote/org.apache.aries.typedevent.remote.remoteservices/src/main/java/org/apache/aries/typedevent/remote/remoteservices/impl/RemoteEventBusImpl.java
+++ 
b/org.apache.aries.typedevent.remote/org.apache.aries.typedevent.remote.remoteservices/src/main/java/org/apache/aries/typedevent/remote/remoteservices/impl/RemoteEventBusImpl.java
@@ -41,14 +41,14 @@ import org.osgi.framework.FrameworkUtil;
 import org.osgi.framework.InvalidSyntaxException;
 import org.osgi.framework.ServiceRegistration;
 import org.osgi.service.typedevent.TypedEventBus;
-import org.osgi.service.typedevent.annotations.RequireTypedEvents;
+import org.osgi.service.typedevent.annotations.RequireTypedEvent;
 
 /**
  * This class implements {@link RemoteEventBus} and is responsible for 
receiving
  * events from remote frameworks and publishing them in the local framework
  */
 @Capability(namespace=SERVICE_NAMESPACE, 
attribute="objectClass:List<String>=org.apache.aries.typedevent.remote.remoteservices.spi.RemoteEventBus",
 uses=RemoteEventBus.class)
-@RequireTypedEvents
+@RequireTypedEvent
 public class RemoteEventBusImpl implements RemoteEventBus {
     
     private final TypedEventBus eventBus;
diff --git 
a/org.apache.aries.typedevent.remote/org.apache.aries.typedevent.remote.remoteservices/test.bndrun
 
b/org.apache.aries.typedevent.remote/org.apache.aries.typedevent.remote.remoteservices/test.bndrun
index 5ea6f33..286e017 100644
--- 
a/org.apache.aries.typedevent.remote/org.apache.aries.typedevent.remote.remoteservices/test.bndrun
+++ 
b/org.apache.aries.typedevent.remote/org.apache.aries.typedevent.remote.remoteservices/test.bndrun
@@ -54,6 +54,7 @@
        org.osgi.test.common;version='[1.2.1,1.2.2)',\
        org.osgi.test.junit5;version='[1.2.1,1.2.2)',\
        org.apache.aries.typedevent.remote.api;version='[0.0.2,0.0.3)',\
-       org.osgi.util.promise;version='[1.1.0,1.1.1)',\
-       org.osgi.util.pushstream;version='[1.0.0,1.0.1)'
+       org.osgi.service.typedevent;version='[1.1.0,1.1.1)',\
+       org.osgi.util.promise;version='[1.1.1,1.1.2)',\
+       org.osgi.util.pushstream;version='[1.0.1,1.0.2)'
 
diff --git a/pom.xml b/pom.xml
index ecd1266..d3e8997 100644
--- a/pom.xml
+++ b/pom.xml
@@ -97,13 +97,12 @@
                 <version>1.5.0</version>
                 <scope>compile</scope>
             </dependency>
-            <!-- Temporary removal while using the locally built interfaces
             <dependency>
                 <groupId>org.osgi</groupId>
                 <artifactId>org.osgi.service.typedevent</artifactId>
-                <version>1.0.0-RC1</version>
+                <version>1.1.0-SNAPSHOT</version>
                 <scope>compile</scope>
-            </dependency> -->
+            </dependency>
             <dependency>
                 <groupId>org.osgi</groupId>
                 <artifactId>org.osgi.service.component.annotations</artifactId>

Reply via email to