SLING-11355: sling discovery bundles: update to sling parent 48 (#7)
* SLING-11355: upgrade to 48
* SLING-11355: fixing pr comments
* SLING-11355: exclude impl packages from baseline
* SLING-11355: stop exporting private packages
* SLING-11355: fixing PR comments and sonar issues
* Revert "SLING-11355: fixing PR comments and sonar issues"
diff --git a/bnd.bnd b/bnd.bnd
new file mode 100644
index 0000000..db30b0c
--- /dev/null
+++ b/bnd.bnd
@@ -0,0 +1,7 @@
+-includeresource:\
+ @commons-net-*.jar!/org/apache/commons/net/util/SubnetUtils*
+
+# whitelist the private reference usage
+-fixupmessages:"Export org.apache.sling.discovery.base.connectors.announcement, has 1, private references [org.apache.sling.discovery.base.connectors.announcement.impl]"; \
+ restrict:=warning; \
+ is:=warn
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 023b01a..93d7bbb 100644
--- a/pom.xml
+++ b/pom.xml
@@ -22,13 +22,12 @@
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.apache.sling</groupId>
- <artifactId>sling</artifactId>
- <version>26</version>
+ <artifactId>sling-bundle-parent</artifactId>
+ <version>48</version>
<relativePath />
</parent>
<artifactId>org.apache.sling.discovery.base</artifactId>
- <packaging>bundle</packaging>
<version>2.0.13-SNAPSHOT</version>
<name>Apache Sling Discovery Base</name>
@@ -38,11 +37,13 @@
<connection>scm:git:https://gitbox.apache.org/repos/asf/sling-org-apache-sling-discovery-base.git</connection>
<developerConnection>scm:git:https://gitbox.apache.org/repos/asf/sling-org-apache-sling-discovery-base.git</developerConnection>
<url>https://gitbox.apache.org/repos/asf?p=sling-org-apache-sling-discovery-base.git</url>
- <tag>HEAD</tag>
- </scm>
+ <tag>HEAD</tag>
+ </scm>
<properties>
- <jackrabbit.version>2.12.2</jackrabbit.version>
+ <!-- SLING-11355: delete after release has been created -->
+ <bnd.baseline.diffpackages>!*.announcement.*, !*.ping.*, *</bnd.baseline.diffpackages>
+ <jackrabbit.version>2.14.3</jackrabbit.version>
<!-- by default Slow tests are excluded - use -PincludeSlowTests to include them -->
<sling.excluded.surefire.groups>org.apache.sling.commons.testing.junit.categories.Slow</sling.excluded.surefire.groups>
</properties>
@@ -58,29 +59,6 @@
<excludedGroups>${sling.excluded.surefire.groups}</excludedGroups>
</configuration>
</plugin>
- <plugin>
- <groupId>org.apache.felix</groupId>
- <artifactId>maven-scr-plugin</artifactId>
- </plugin>
- <plugin>
- <groupId>org.apache.felix</groupId>
- <artifactId>maven-bundle-plugin</artifactId>
- <!-- with 3.0.0 the following bundle dependency is failing
- on AEM 5.6.1 - thus switching back to 2.5.3 here:
- javax.servlet,version=[2.6,3) - - Cannot be resolved
- javax.servlet.http,version=[2.6,3) - - Cannot be resolved
- org.apache.commons.codec.binary,version=[1.6,2) - - Cannot be resolved
- -->
- <version>2.5.3</version>
- <extensions>true</extensions>
- <configuration>
- <instructions>
- <Embed-Dependency>
- commons-net;inline=org/apache/commons/net/util/SubnetUtils*
- </Embed-Dependency>
- </instructions>
- </configuration>
- </plugin>
<!-- discovery.base exports a few test classes for reuse.
In order for others to use these, the test-jar must be built/installed too.
Note that 'mvn -Dmaven.test.skip=true' does NOT build the test-jar,
@@ -98,38 +76,30 @@
</plugin>
</plugins>
</build>
- <profiles>
- <profile>
- <!-- when -PincludeSlowTests is set, the Slow tests should also be executed,
- hence unsetting the category excludes 'sling.excluded.surefire.groups' to
- achieve that. -->
- <id>includeSlowTests</id>
- <properties>
- <sling.excluded.surefire.groups />
- </properties>
- </profile>
- </profiles>
+
<dependencies>
<dependency>
- <groupId>org.apache.felix</groupId>
- <artifactId>org.apache.felix.scr.annotations</artifactId>
- </dependency>
- <dependency>
- <groupId>biz.aQute</groupId>
- <artifactId>bndlib</artifactId>
- </dependency>
- <dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
- <version>1.6.1</version>
+ <scope>provided</scope>
+ </dependency>
+
+ <!-- OSGi Dependencies -->
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>osgi.core</artifactId>
+ <scope>provided</scope>
</dependency>
<dependency>
<groupId>org.osgi</groupId>
- <artifactId>org.osgi.core</artifactId>
+ <artifactId>org.osgi.annotation.versioning</artifactId>
+ <scope>provided</scope>
</dependency>
<dependency>
<groupId>org.osgi</groupId>
- <artifactId>org.osgi.compendium</artifactId>
+ <artifactId>org.osgi.service.http</artifactId>
+ <version>1.2.2</version>
+ <scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.geronimo.specs</groupId>
@@ -137,12 +107,6 @@
<version>1.0-alpha-1</version>
<scope>provided</scope>
</dependency>
- <dependency>
- <groupId>org.apache.sling</groupId>
- <artifactId>org.apache.sling.commons.johnzon</artifactId>
- <version>1.0.0</version>
- <scope>test</scope>
- </dependency>
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.jcr.api</artifactId>
@@ -152,21 +116,25 @@
<dependency>
<groupId>javax.jcr</groupId>
<artifactId>jcr</artifactId>
- <version>2.0</version>
- <scope>provided</scope>
+ <scope>provided</scope>
</dependency>
+ <dependency>
+ <groupId>javax.servlet</groupId>
+ <artifactId>javax.servlet-api</artifactId>
+ <scope>provided</scope>
+ </dependency>
<dependency>
<groupId>org.apache.jackrabbit</groupId>
<artifactId>jackrabbit-api</artifactId>
<version>${jackrabbit.version}</version>
<scope>provided</scope>
</dependency>
- <dependency>
- <groupId>org.apache.sling</groupId>
- <artifactId>org.apache.sling.commons.osgi</artifactId>
- <version>2.1.0</version>
- <scope>provided</scope>
- </dependency>
+ <dependency>
+ <groupId>org.apache.jackrabbit</groupId>
+ <artifactId>jackrabbit-spi-commons</artifactId>
+ <version>${jackrabbit.version}</version>
+ <scope>provided</scope>
+ </dependency>
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.settings</artifactId>
@@ -219,10 +187,6 @@
<scope>test</scope>
</dependency>
<dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>servlet-api</artifactId>
- </dependency>
- <dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient-osgi</artifactId>
<version>4.3.5</version>
@@ -240,10 +204,12 @@
<version>3.3</version>
<scope>provided</scope>
</dependency>
+
<!-- Testing -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
+ <scope>test</scope>
</dependency>
<dependency>
<groupId>junit-addons</groupId>
@@ -252,17 +218,9 @@
<scope>test</scope>
</dependency>
<dependency>
- <groupId>org.jmock</groupId>
- <artifactId>jmock-junit4</artifactId>
- <!-- with 2.5.1 jmock-junit4, which has a dependency on junit 4.4
- you get the following: NoSuchMethodError: org.junit.runner.Request.classes(Lorg/junit/runner/Computer;[Ljava/lang/Class;)Lorg/junit/runner/Request;
- hence this explicit newer dependency. -->
- <!-- <version>2.8.2</version> -->
- </dependency>
- <dependency>
<groupId>org.mockito</groupId>
- <artifactId>mockito-all</artifactId>
- <version>1.9.5</version>
+ <artifactId>mockito-core</artifactId>
+ <version>4.4.0</version>
<scope>test</scope>
</dependency>
<dependency>
@@ -322,10 +280,22 @@
<scope>test</scope>
</dependency>
<dependency>
- <groupId>org.apache.sling</groupId>
- <artifactId>org.apache.sling.testing.sling-mock</artifactId>
- <version>1.2.0</version>
- <scope>test</scope>
+ <groupId>org.apache.sling</groupId>
+ <artifactId>org.apache.sling.testing.sling-mock.junit4</artifactId>
+ <version>3.2.2</version>
+ <scope>test</scope>
</dependency>
</dependencies>
+
+ <profiles>
+ <profile>
+ <!-- when -PincludeSlowTests is set, the Slow tests should also be executed,
+ hence unsetting the category excludes 'sling.excluded.surefire.groups' to
+ achieve that. -->
+ <id>includeSlowTests</id>
+ <properties>
+ <sling.excluded.surefire.groups />
+ </properties>
+ </profile>
+ </profiles>
</project>
diff --git a/src/main/java/org/apache/sling/discovery/base/commons/BaseViewChecker.java b/src/main/java/org/apache/sling/discovery/base/commons/BaseViewChecker.java
index 9cacb79..e8bbf22 100644
--- a/src/main/java/org/apache/sling/discovery/base/commons/BaseViewChecker.java
+++ b/src/main/java/org/apache/sling/discovery/base/commons/BaseViewChecker.java
@@ -25,8 +25,6 @@
import java.util.Map;
import java.util.UUID;
-import org.apache.felix.scr.annotations.Activate;
-import org.apache.felix.scr.annotations.Deactivate;
import org.apache.sling.api.resource.ResourceResolverFactory;
import org.apache.sling.commons.scheduler.Scheduler;
import org.apache.sling.discovery.base.connectors.BaseConfig;
@@ -36,6 +34,12 @@
import org.osgi.framework.Constants;
import org.osgi.framework.ServiceReference;
import org.osgi.service.component.ComponentContext;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Deactivate;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.component.annotations.ReferenceCardinality;
+import org.osgi.service.component.annotations.ReferencePolicy;
+import org.osgi.service.http.HttpService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -84,7 +88,7 @@
private boolean forcePing;
/** SLING-4765 : store endpoints to /clusterInstances for more verbose duplicate slingId/ghost detection **/
- protected final Map<Long, String[]> endpoints = new HashMap<Long, String[]>();
+ protected final Map<Long, String[]> endpoints = new HashMap<>();
protected PeriodicBackgroundJob periodicPingJob;
@@ -227,6 +231,10 @@
/**
* Bind a http service
*/
+ @Reference(service = HttpService.class,
+ cardinality = ReferenceCardinality.MULTIPLE,
+ policy = ReferencePolicy.DYNAMIC,
+ bind = "bindHttpService", unbind = "unbindHttpService")
protected void bindHttpService(final ServiceReference reference) {
String[] endpointUrls = toStringArray(reference.getProperty(REG_PROPERTY_ENDPOINTS));
if ( endpointUrls == null ) {
@@ -245,6 +253,7 @@
protected void unbindHttpService(final ServiceReference reference) {
synchronized ( lock ) {
if ( this.endpoints.remove(reference.getProperty(Constants.SERVICE_ID)) != null ) {
+ // do nothing
}
}
}
@@ -265,7 +274,7 @@
} else if (propValue.getClass().isArray()) {
// other array
Object[] valueArray = (Object[]) propValue;
- List<String> values = new ArrayList<String>(valueArray.length);
+ List<String> values = new ArrayList<>(valueArray.length);
for (Object value : valueArray) {
if (value != null) {
values.add(value.toString());
@@ -276,7 +285,7 @@
} else if (propValue instanceof Collection<?>) {
// collection
Collection<?> valueCollection = (Collection<?>) propValue;
- List<String> valueList = new ArrayList<String>(valueCollection.size());
+ List<String> valueList = new ArrayList<>(valueCollection.size());
for (Object value : valueCollection) {
if (value != null) {
valueList.add(value.toString());
diff --git a/src/main/java/org/apache/sling/discovery/base/commons/package-info.java b/src/main/java/org/apache/sling/discovery/base/commons/package-info.java
index 91962da..0839ae5 100644
--- a/src/main/java/org/apache/sling/discovery/base/commons/package-info.java
+++ b/src/main/java/org/apache/sling/discovery/base/commons/package-info.java
@@ -23,8 +23,7 @@
*
* @version 1.1.0
*/
-@Version("2.0.0")
+@Version("2.0.1")
package org.apache.sling.discovery.base.commons;
-import aQute.bnd.annotation.Version;
-
+import org.osgi.annotation.versioning.Version;
\ No newline at end of file
diff --git a/src/main/java/org/apache/sling/discovery/base/connectors/announcement/AnnouncementRegistry.java b/src/main/java/org/apache/sling/discovery/base/connectors/announcement/AnnouncementRegistry.java
index fb8b2c1..05c0610 100644
--- a/src/main/java/org/apache/sling/discovery/base/connectors/announcement/AnnouncementRegistry.java
+++ b/src/main/java/org/apache/sling/discovery/base/connectors/announcement/AnnouncementRegistry.java
@@ -22,6 +22,7 @@
import org.apache.sling.discovery.ClusterView;
import org.apache.sling.discovery.InstanceDescription;
+import org.apache.sling.discovery.base.connectors.announcement.impl.CachedAnnouncement;
/**
* The announcement registry keeps track of all the announcement that this
diff --git a/src/main/java/org/apache/sling/discovery/base/connectors/announcement/AnnouncementRegistryImpl.java b/src/main/java/org/apache/sling/discovery/base/connectors/announcement/impl/AnnouncementRegistryImpl.java
similarity index 96%
rename from src/main/java/org/apache/sling/discovery/base/connectors/announcement/AnnouncementRegistryImpl.java
rename to src/main/java/org/apache/sling/discovery/base/connectors/announcement/impl/AnnouncementRegistryImpl.java
index a4f3957..5b275eb 100644
--- a/src/main/java/org/apache/sling/discovery/base/connectors/announcement/AnnouncementRegistryImpl.java
+++ b/src/main/java/org/apache/sling/discovery/base/connectors/announcement/impl/AnnouncementRegistryImpl.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.sling.discovery.base.connectors.announcement;
+package org.apache.sling.discovery.base.connectors.announcement.impl;
import java.util.Collection;
import java.util.HashMap;
@@ -27,10 +27,6 @@
import javax.json.JsonException;
-import org.apache.felix.scr.annotations.Activate;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.Service;
import org.apache.sling.api.resource.LoginException;
import org.apache.sling.api.resource.PersistenceException;
import org.apache.sling.api.resource.Resource;
@@ -40,8 +36,14 @@
import org.apache.sling.discovery.ClusterView;
import org.apache.sling.discovery.InstanceDescription;
import org.apache.sling.discovery.base.connectors.BaseConfig;
+import org.apache.sling.discovery.base.connectors.announcement.Announcement;
+import org.apache.sling.discovery.base.connectors.announcement.AnnouncementFilter;
+import org.apache.sling.discovery.base.connectors.announcement.AnnouncementRegistry;
import org.apache.sling.discovery.commons.providers.util.ResourceHelper;
import org.apache.sling.settings.SlingSettingsService;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -50,8 +52,7 @@
* handles JSON-backed announcements and does so by storing
* them in a local like /var/discovery/impl/clusterNodes/$slingId/announcement.
*/
-@Component
-@Service(value = AnnouncementRegistry.class)
+@Component(service = AnnouncementRegistry.class)
public class AnnouncementRegistryImpl implements AnnouncementRegistry {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
@@ -88,8 +89,7 @@
slingId = settingsService.getSlingId();
}
- private final Map<String,CachedAnnouncement> ownAnnouncementsCache =
- new HashMap<String,CachedAnnouncement>();
+ private final Map<String, CachedAnnouncement> ownAnnouncementsCache = new HashMap<>();
@Override
public synchronized void unregisterAnnouncement(final String ownerId) {
@@ -138,12 +138,12 @@
@Override
public synchronized Collection<Announcement> listLocalAnnouncements() {
- return fillWithCachedAnnouncements(new LinkedList<Announcement>());
+ return fillWithCachedAnnouncements(new LinkedList<>());
}
@Override
public synchronized Collection<CachedAnnouncement> listLocalIncomingAnnouncements() {
- Collection<CachedAnnouncement> result = new LinkedList<CachedAnnouncement>(ownAnnouncementsCache.values());
+ Collection<CachedAnnouncement> result = new LinkedList<>(ownAnnouncementsCache.values());
for (Iterator<CachedAnnouncement> it = result.iterator(); it.hasNext();) {
CachedAnnouncement cachedAnnouncement = it.next();
if (cachedAnnouncement.getAnnouncement().isInherited()) {
@@ -176,7 +176,7 @@
throw new IllegalArgumentException("clusterView must not be null");
}
ResourceResolver resourceResolver = null;
- final Collection<Announcement> incomingAnnouncements = new LinkedList<Announcement>();
+ final Collection<Announcement> incomingAnnouncements = new LinkedList<>();
final InstanceDescription localInstance = getLocalInstanceDescription(localClusterView);
try {
resourceResolver = resourceResolverFactory
@@ -339,7 +339,7 @@
}
logger.debug("registerAnnouncement: getting the list of all local announcements");
- final Collection<Announcement> announcements = new LinkedList<Announcement>();
+ final Collection<Announcement> announcements = new LinkedList<>();
fillWithCachedAnnouncements(announcements);
if (logger.isDebugEnabled()) {
logger.debug("registerAnnouncement: list returned: "+(announcements==null ? "null" : announcements.size()));
@@ -587,7 +587,7 @@
@Override
public synchronized Collection<InstanceDescription> listInstances(final ClusterView localClusterView) {
logger.debug("listInstances: start. localClusterView: {}", localClusterView);
- final Collection<InstanceDescription> instances = new LinkedList<InstanceDescription>();
+ final Collection<InstanceDescription> instances = new LinkedList<>();
final Collection<Announcement> announcements = listAnnouncementsInSameCluster(localClusterView);
if (announcements == null) {
diff --git a/src/main/java/org/apache/sling/discovery/base/connectors/announcement/CachedAnnouncement.java b/src/main/java/org/apache/sling/discovery/base/connectors/announcement/impl/CachedAnnouncement.java
similarity index 96%
rename from src/main/java/org/apache/sling/discovery/base/connectors/announcement/CachedAnnouncement.java
rename to src/main/java/org/apache/sling/discovery/base/connectors/announcement/impl/CachedAnnouncement.java
index 426c63f..e1a7042 100644
--- a/src/main/java/org/apache/sling/discovery/base/connectors/announcement/CachedAnnouncement.java
+++ b/src/main/java/org/apache/sling/discovery/base/connectors/announcement/impl/CachedAnnouncement.java
@@ -16,9 +16,10 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.sling.discovery.base.connectors.announcement;
+package org.apache.sling.discovery.base.connectors.announcement.impl;
import org.apache.sling.discovery.base.connectors.BaseConfig;
+import org.apache.sling.discovery.base.connectors.announcement.Announcement;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/src/main/java/org/apache/sling/discovery/base/connectors/announcement/package-info.java b/src/main/java/org/apache/sling/discovery/base/connectors/announcement/package-info.java
index b1e3218..2c89e07 100644
--- a/src/main/java/org/apache/sling/discovery/base/connectors/announcement/package-info.java
+++ b/src/main/java/org/apache/sling/discovery/base/connectors/announcement/package-info.java
@@ -23,8 +23,7 @@
*
* @version 1.1.2
*/
-@Version("2.0.0")
+@Version("2.0.1")
package org.apache.sling.discovery.base.connectors.announcement;
-import aQute.bnd.annotation.Version;
-
+import org.osgi.annotation.versioning.Version;
\ No newline at end of file
diff --git a/src/main/java/org/apache/sling/discovery/base/connectors/package-info.java b/src/main/java/org/apache/sling/discovery/base/connectors/package-info.java
index 2fa7bf8..c1e6682 100644
--- a/src/main/java/org/apache/sling/discovery/base/connectors/package-info.java
+++ b/src/main/java/org/apache/sling/discovery/base/connectors/package-info.java
@@ -23,8 +23,7 @@
*
* @version 1.0.0
*/
-@Version("1.0.0")
+@Version("1.0.1")
package org.apache.sling.discovery.base.connectors;
-import aQute.bnd.annotation.Version;
-
+import org.osgi.annotation.versioning.Version;
\ No newline at end of file
diff --git a/src/main/java/org/apache/sling/discovery/base/connectors/ping/TopologyConnectorServlet.java b/src/main/java/org/apache/sling/discovery/base/connectors/ping/TopologyConnectorServlet.java
index 037bc3f..748b868 100644
--- a/src/main/java/org/apache/sling/discovery/base/connectors/ping/TopologyConnectorServlet.java
+++ b/src/main/java/org/apache/sling/discovery/base/connectors/ping/TopologyConnectorServlet.java
@@ -34,23 +34,21 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-import org.apache.felix.scr.annotations.Activate;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Deactivate;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.Service;
import org.apache.sling.discovery.ClusterView;
import org.apache.sling.discovery.base.commons.ClusterViewHelper;
import org.apache.sling.discovery.base.commons.ClusterViewService;
import org.apache.sling.discovery.base.commons.UndefinedClusterViewException;
import org.apache.sling.discovery.base.connectors.BaseConfig;
import org.apache.sling.discovery.base.connectors.announcement.Announcement;
-import org.apache.sling.discovery.base.connectors.announcement.AnnouncementFilter;
import org.apache.sling.discovery.base.connectors.announcement.AnnouncementRegistry;
import org.apache.sling.discovery.base.connectors.ping.wl.SubnetWhitelistEntry;
import org.apache.sling.discovery.base.connectors.ping.wl.WhitelistEntry;
import org.apache.sling.discovery.base.connectors.ping.wl.WildcardWhitelistEntry;
import org.osgi.service.component.ComponentContext;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
+import org.osgi.service.component.annotations.Reference;
import org.osgi.service.http.HttpService;
import org.osgi.service.http.NamespaceException;
import org.slf4j.Logger;
@@ -63,13 +61,12 @@
* hmac-signature with a shared key or via a flexible whitelist)
*/
@SuppressWarnings("serial")
-@Component(immediate = true)
-@Service(value=TopologyConnectorServlet.class)
+@Component(immediate = true, service = TopologyConnectorServlet.class)
public class TopologyConnectorServlet extends HttpServlet {
- /**
+ /**
* prefix under which the topology connector servlet is registered -
- * the URL will consist of this prefix + "connector.slingId.json"
+ * the URL will consist of this prefix + "connector.slingId.json"
*/
private static final String TOPOLOGY_CONNECTOR_PREFIX = "/libs/sling/topology";
@@ -83,18 +80,20 @@
@Reference
private HttpService httpService;
-
+
@Reference
private BaseConfig config;
- /**
+ /**
* This list contains WhitelistEntry (ips/hostnames, cidr, wildcards),
* each filtering some hostname/addresses that are allowed to connect to this servlet.
**/
- private final List<WhitelistEntry> whitelist = new ArrayList<WhitelistEntry>();
-
- /** Set of plaintext whitelist entries - for faster lookups **/
- private final Set<String> plaintextWhitelist = new HashSet<String>();
+ private final List<WhitelistEntry> whitelist = new ArrayList<>();
+
+ /**
+ * Set of plaintext whitelist entries - for faster lookups
+ **/
+ private final Set<String> plaintextWhitelist = new HashSet<>();
private TopologyRequestValidator requestValidator;
@@ -106,59 +105,57 @@
initWhitelist(whitelistConfig);
}
requestValidator = new TopologyRequestValidator(config);
-
+
try {
- httpService.registerServlet(TopologyConnectorServlet.TOPOLOGY_CONNECTOR_PREFIX,
- this, null, null);
- logger.info("activate: connector servlet registered at "+
- TopologyConnectorServlet.TOPOLOGY_CONNECTOR_PREFIX);
+ httpService.registerServlet(TopologyConnectorServlet.TOPOLOGY_CONNECTOR_PREFIX, this, null, null);
+ logger.info("activate: connector servlet registered at " + TopologyConnectorServlet.TOPOLOGY_CONNECTOR_PREFIX);
} catch (ServletException e) {
- logger.error("activate: ServletException while registering topology connector servlet: "+e, e);
+ logger.error("activate: ServletException while registering topology connector servlet: " + e, e);
} catch (NamespaceException e) {
- logger.error("activate: NamespaceException while registering topology connector servlet: "+e, e);
+ logger.error("activate: NamespaceException while registering topology connector servlet: " + e, e);
}
}
-
+
@Deactivate
protected void deactivate() {
httpService.unregister(TOPOLOGY_CONNECTOR_PREFIX);
}
void initWhitelist(String[] whitelistConfig) {
- if (whitelistConfig==null) {
+ if (whitelistConfig == null) {
return;
}
for (int i = 0; i < whitelistConfig.length; i++) {
String aWhitelistEntry = whitelistConfig[i];
-
+
WhitelistEntry whitelistEntry = null;
if (aWhitelistEntry.contains(".") && aWhitelistEntry.contains("/")) {
// then this is a CIDR notation
- try{
+ try {
whitelistEntry = new SubnetWhitelistEntry(aWhitelistEntry);
- } catch(Exception e) {
- logger.error("activate: wrongly formatted CIDR subnet definition. Expected eg '1.2.3.4/24'. ignoring: "+aWhitelistEntry);
+ } catch (Exception e) {
+ logger.error("activate: wrongly formatted CIDR subnet definition. Expected eg '1.2.3.4/24'. ignoring: " + aWhitelistEntry);
continue;
}
} else if (aWhitelistEntry.contains(".") && aWhitelistEntry.contains(" ")) {
// then this is a IP/subnet-mask notation
- try{
+ try {
final StringTokenizer st = new StringTokenizer(aWhitelistEntry, " ");
final String ip = st.nextToken();
if (st.hasMoreTokens()) {
final String mask = st.nextToken();
if (st.hasMoreTokens()) {
- logger.error("activate: wrongly formatted ip subnet definition. Expected '10.1.2.3 255.0.0.0'. Ignoring: "+aWhitelistEntry);
+ logger.error("activate: wrongly formatted ip subnet definition. Expected '10.1.2.3 255.0.0.0'. Ignoring: " + aWhitelistEntry);
continue;
}
whitelistEntry = new SubnetWhitelistEntry(ip, mask);
}
- } catch(Exception e) {
- logger.error("activate: wrongly formatted ip subnet definition. Expected '10.1.2.3 255.0.0.0'. Ignoring: "+aWhitelistEntry);
+ } catch (Exception e) {
+ logger.error("activate: wrongly formatted ip subnet definition. Expected '10.1.2.3 255.0.0.0'. Ignoring: " + aWhitelistEntry);
continue;
}
}
- if (whitelistEntry==null) {
+ if (whitelistEntry == null) {
if (aWhitelistEntry.contains("*") || aWhitelistEntry.contains("?")) {
whitelistEntry = new WildcardWhitelistEntry(aWhitelistEntry);
} else {
@@ -166,7 +163,7 @@
}
}
logger.info("activate: adding whitelist entry: " + aWhitelistEntry);
- if (whitelistEntry!=null) {
+ if (whitelistEntry != null) {
whitelist.add(whitelistEntry);
}
}
@@ -184,16 +181,16 @@
}
final String[] pathInfo = request.getPathInfo().split("\\.");
- final String extension = pathInfo.length==3 ? pathInfo[2] : "";
+ final String extension = pathInfo.length == 3 ? pathInfo[2] : "";
if (!"json".equals(extension)) {
response.sendError(HttpServletResponse.SC_NOT_FOUND);
return;
}
- final String selector = pathInfo.length==3 ? pathInfo[1] : "";
+ final String selector = pathInfo.length == 3 ? pathInfo[1] : "";
announcementRegistry.unregisterAnnouncement(selector);
}
-
+
@Override
protected void doPut(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
@@ -206,23 +203,23 @@
}
final String[] pathInfo = request.getPathInfo().split("\\.");
- final String extension = pathInfo.length==3 ? pathInfo[2] : "";
+ final String extension = pathInfo.length == 3 ? pathInfo[2] : "";
if (!"json".equals(extension)) {
response.sendError(HttpServletResponse.SC_NOT_FOUND);
return;
}
-
- final String selector = pathInfo.length==3 ? pathInfo[1] : "";
+
+ final String selector = pathInfo.length == 3 ? pathInfo[1] : "";
String topologyAnnouncementJSON = requestValidator.decodeMessage(request);
- if (logger.isDebugEnabled()) {
- logger.debug("doPost: incoming topology announcement is: "
- + topologyAnnouncementJSON);
- }
+
+ if (logger.isDebugEnabled()) {
+ // javasecurity:S5145: Replace pattern-breaking characters
+ logger.debug("doPost: incoming topology announcement is: " + topologyAnnouncementJSON.replaceAll("[\n\r\t]", "_"));
+ }
final Announcement incomingTopologyAnnouncement;
try {
- incomingTopologyAnnouncement = Announcement
- .fromJSON(topologyAnnouncementJSON);
+ incomingTopologyAnnouncement = Announcement.fromJSON(topologyAnnouncementJSON);
if (!incomingTopologyAnnouncement.getOwnerId().equals(selector)) {
response.sendError(HttpServletResponse.SC_BAD_REQUEST);
@@ -230,15 +227,14 @@
}
String slingId = clusterViewService.getSlingId();
- if (slingId==null) {
- response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
- logger.info("doPut: no slingId available. Service not ready as expected at the moment.");
- return;
+ if (slingId == null) {
+ response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+ logger.info("doPut: no slingId available. Service not ready as expected at the moment.");
+ return;
}
- incomingTopologyAnnouncement.removeInherited(slingId);
+ incomingTopologyAnnouncement.removeInherited(slingId);
- final Announcement replyAnnouncement = new Announcement(
- slingId);
+ final Announcement replyAnnouncement = new Announcement(slingId);
long backoffInterval = -1;
ClusterView clusterView = clusterViewService.getLocalClusterView();
@@ -249,19 +245,19 @@
return;
} else if (ClusterViewHelper.contains(clusterView, incomingTopologyAnnouncement
.getOwnerId())) {
- if (logger.isDebugEnabled()) {
- logger.debug("doPost: rejecting an announcement from an instance that is part of my cluster: "
- + incomingTopologyAnnouncement);
- }
+ if (logger.isDebugEnabled()) {
+ logger.debug("doPost: rejecting an announcement from an instance that is part of my cluster: "
+ + incomingTopologyAnnouncement);
+ }
// marking as 'loop'
replyAnnouncement.setLoop(true);
backoffInterval = config.getBackoffStandbyInterval();
} else if (ClusterViewHelper.containsAny(clusterView, incomingTopologyAnnouncement
.listInstances())) {
- if (logger.isDebugEnabled()) {
- logger.debug("doPost: rejecting an announcement as it contains instance(s) that is/are part of my cluster: "
- + incomingTopologyAnnouncement);
- }
+ if (logger.isDebugEnabled()) {
+ logger.debug("doPost: rejecting an announcement as it contains instance(s) that is/are part of my cluster: "
+ + incomingTopologyAnnouncement);
+ }
// marking as 'loop'
replyAnnouncement.setLoop(true);
backoffInterval = config.getBackoffStandbyInterval();
@@ -269,13 +265,13 @@
backoffInterval = announcementRegistry
.registerAnnouncement(incomingTopologyAnnouncement);
if (logger.isDebugEnabled()) {
- logger.debug("doPost: backoffInterval after registration: "+backoffInterval);
+ logger.debug("doPost: backoffInterval after registration: " + backoffInterval);
}
- if (backoffInterval==-1) {
- if (logger.isDebugEnabled()) {
- logger.debug("doPost: rejecting an announcement from an instance that I already see in my topology: "
- + incomingTopologyAnnouncement);
- }
+ if (backoffInterval == -1) {
+ if (logger.isDebugEnabled()) {
+ logger.debug("doPost: rejecting an announcement from an instance that I already see in my topology: "
+ + incomingTopologyAnnouncement);
+ }
// marking as 'loop'
replyAnnouncement.setLoop(true);
backoffInterval = config.getBackoffStandbyInterval();
@@ -283,33 +279,29 @@
// normal, successful case: replying with the part of the topology which this instance sees
replyAnnouncement.setLocalCluster(clusterView);
announcementRegistry.addAllExcept(replyAnnouncement, clusterView,
- new AnnouncementFilter() {
-
- public boolean accept(final String receivingSlingId, Announcement announcement) {
- if (announcement.getPrimaryKey().equals(
- incomingTopologyAnnouncement
- .getPrimaryKey())) {
- return false;
- }
- return true;
+ (receivingSlingId, announcement) -> {
+ if (announcement.getPrimaryKey().equals(
+ incomingTopologyAnnouncement.getPrimaryKey())) {
+ return false;
}
+ return true;
});
}
}
- if (backoffInterval>0) {
+ if (backoffInterval > 0) {
replyAnnouncement.setBackoffInterval(backoffInterval);
if (logger.isDebugEnabled()) {
- logger.debug("doPost: backoffInterval for client set to "+replyAnnouncement.getBackoffInterval());
+ logger.debug("doPost: backoffInterval for client set to " + replyAnnouncement.getBackoffInterval());
}
}
final String p = requestValidator.encodeMessage(replyAnnouncement.asJSON());
requestValidator.trustMessage(response, request, p);
// gzip the response if the client accepts this
final String acceptEncodingHeader = request.getHeader("Accept-Encoding");
- if (acceptEncodingHeader!=null && acceptEncodingHeader.contains("gzip")) {
+ if (acceptEncodingHeader != null && acceptEncodingHeader.contains("gzip")) {
// tell the client that the content is gzipped:
response.setHeader("Content-Encoding", "gzip");
-
+
// then gzip the body
final GZIPOutputStream gzipOut = new GZIPOutputStream(response.getOutputStream());
gzipOut.write(p.getBytes("UTF-8"));
@@ -324,13 +316,15 @@
logger.error("doPost: Got a JSONException: " + e, e);
response.sendError(500);
} catch (UndefinedClusterViewException e) {
- logger.warn("doPost: no clusterView available at the moment - cannot handle connectors now: "+e);
+ logger.warn("doPost: no clusterView available at the moment - cannot handle connectors now: " + e);
response.sendError(503); // "please retry, but atm I can't help since I'm isolated"
}
}
-
- /** Checks if the provided request's remote server is whitelisted **/
+
+ /**
+ * Checks if the provided request's remote server is whitelisted
+ **/
boolean isWhitelisted(final HttpServletRequest request) {
if (config.isHmacEnabled()) {
final boolean isTrusted = requestValidator.isTrusted(request);
@@ -340,20 +334,19 @@
}
return isTrusted;
}
-
+
if (plaintextWhitelist.contains(request.getRemoteHost()) ||
plaintextWhitelist.contains(request.getRemoteAddr())) {
return true;
}
- for (Iterator<WhitelistEntry> it = whitelist.iterator(); it.hasNext();) {
+ for (Iterator<WhitelistEntry> it = whitelist.iterator(); it.hasNext(); ) {
WhitelistEntry whitelistEntry = it.next();
if (whitelistEntry.accepts(request)) {
return true;
}
}
- logger.info("isWhitelisted: rejecting " + request.getRemoteAddr()
- + ", " + request.getRemoteHost());
+ logger.info("isWhitelisted: rejecting " + request.getRemoteAddr() + ", " + request.getRemoteHost());
return false;
}
diff --git a/src/main/java/org/apache/sling/discovery/base/connectors/ping/ConnectorRegistryImpl.java b/src/main/java/org/apache/sling/discovery/base/connectors/ping/impl/ConnectorRegistryImpl.java
similarity index 86%
rename from src/main/java/org/apache/sling/discovery/base/connectors/ping/ConnectorRegistryImpl.java
rename to src/main/java/org/apache/sling/discovery/base/connectors/ping/impl/ConnectorRegistryImpl.java
index f46a6e4..2baa8db 100644
--- a/src/main/java/org/apache/sling/discovery/base/connectors/ping/ConnectorRegistryImpl.java
+++ b/src/main/java/org/apache/sling/discovery/base/connectors/ping/impl/ConnectorRegistryImpl.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.sling.discovery.base.connectors.ping;
+package org.apache.sling.discovery.base.connectors.ping.impl;
import java.net.InetAddress;
import java.net.URL;
@@ -28,15 +28,16 @@
import java.util.Map;
import java.util.Map.Entry;
-import org.apache.felix.scr.annotations.Activate;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Deactivate;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.Service;
import org.apache.sling.discovery.base.commons.ClusterViewService;
import org.apache.sling.discovery.base.connectors.BaseConfig;
import org.apache.sling.discovery.base.connectors.announcement.AnnouncementRegistry;
-import org.osgi.service.component.ComponentContext;
+import org.apache.sling.discovery.base.connectors.ping.ConnectorRegistry;
+import org.apache.sling.discovery.base.connectors.ping.TopologyConnectorClientInformation;
+import org.osgi.framework.BundleContext;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
+import org.osgi.service.component.annotations.Reference;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -45,14 +46,13 @@
* keeps a list of outgoing connectors and is capable of
* pinging them.
*/
-@Component
-@Service(value = ConnectorRegistry.class)
+@Component(service= ConnectorRegistry.class)
public class ConnectorRegistryImpl implements ConnectorRegistry {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
/** A map of id-> topology connector clients currently registered/activate **/
- private final Map<String, TopologyConnectorClient> outgoingClientsMap = new HashMap<String, TopologyConnectorClient>();
+ private final Map<String, TopologyConnectorClient> outgoingClientsMap = new HashMap<>();
@Reference
private AnnouncementRegistry announcementRegistry;
@@ -74,8 +74,8 @@
}
@Activate
- protected void activate(final ComponentContext cc) {
- port = cc.getBundleContext().getProperty("org.osgi.service.http.port");
+ protected void activate(BundleContext context) {
+ port = context.getProperty("org.osgi.service.http.port");
}
@Deactivate
@@ -102,7 +102,7 @@
Entry<String, TopologyConnectorClient> entry = it.next();
if (entry.getValue().getConnectorUrl().toExternalForm().equals(connectorUrl.toExternalForm())) {
it.remove();
- logger.info("registerOutgoingConnection: re-registering connector: "+connectorUrl);
+ logger.info("registerOutgoingConnection: re-registering connector: {}", connectorUrl);
}
}
String serverInfo;
@@ -122,7 +122,7 @@
}
public Collection<TopologyConnectorClientInformation> listOutgoingConnectors() {
- final List<TopologyConnectorClientInformation> result = new ArrayList<TopologyConnectorClientInformation>();
+ final List<TopologyConnectorClientInformation> result = new ArrayList<>();
synchronized (outgoingClientsMap) {
result.addAll(outgoingClientsMap.values());
}
@@ -145,7 +145,7 @@
public void pingOutgoingConnectors(boolean force) {
List<TopologyConnectorClient> outgoingTemplatesClone;
synchronized (outgoingClientsMap) {
- outgoingTemplatesClone = new ArrayList<TopologyConnectorClient>(
+ outgoingTemplatesClone = new ArrayList<>(
outgoingClientsMap.values());
}
for (Iterator<TopologyConnectorClient> it = outgoingTemplatesClone
diff --git a/src/main/java/org/apache/sling/discovery/base/connectors/ping/TopologyConnectorClient.java b/src/main/java/org/apache/sling/discovery/base/connectors/ping/impl/TopologyConnectorClient.java
similarity index 97%
rename from src/main/java/org/apache/sling/discovery/base/connectors/ping/TopologyConnectorClient.java
rename to src/main/java/org/apache/sling/discovery/base/connectors/ping/impl/TopologyConnectorClient.java
index 9cb6e2c..e3a27c0 100644
--- a/src/main/java/org/apache/sling/discovery/base/connectors/ping/TopologyConnectorClient.java
+++ b/src/main/java/org/apache/sling/discovery/base/connectors/ping/impl/TopologyConnectorClient.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.sling.discovery.base.connectors.ping;
+package org.apache.sling.discovery.base.connectors.ping.impl;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
@@ -53,6 +53,8 @@
import org.apache.sling.discovery.base.connectors.announcement.Announcement;
import org.apache.sling.discovery.base.connectors.announcement.AnnouncementFilter;
import org.apache.sling.discovery.base.connectors.announcement.AnnouncementRegistry;
+import org.apache.sling.discovery.base.connectors.ping.TopologyConnectorClientInformation;
+import org.apache.sling.discovery.base.connectors.ping.TopologyRequestValidator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -113,8 +115,8 @@
private long backoffPeriodEnd = -1;
TopologyConnectorClient(final ClusterViewService clusterViewService,
- final AnnouncementRegistry announcementRegistry, final BaseConfig config,
- final URL connectorUrl, final String serverInfo) {
+ final AnnouncementRegistry announcementRegistry, final BaseConfig config,
+ final URL connectorUrl, final String serverInfo) {
if (clusterViewService == null) {
throw new IllegalArgumentException(
"clusterViewService must not be null");
diff --git a/src/main/java/org/apache/sling/discovery/base/connectors/ping/package-info.java b/src/main/java/org/apache/sling/discovery/base/connectors/ping/package-info.java
index c1aa7e0..2732bd1 100644
--- a/src/main/java/org/apache/sling/discovery/base/connectors/ping/package-info.java
+++ b/src/main/java/org/apache/sling/discovery/base/connectors/ping/package-info.java
@@ -23,8 +23,7 @@
*
* @version 1.0.0
*/
-@Version("1.0.0")
+@Version("1.0.1")
package org.apache.sling.discovery.base.connectors.ping;
-import aQute.bnd.annotation.Version;
-
+import org.osgi.annotation.versioning.Version;
\ No newline at end of file
diff --git a/src/main/java/org/apache/sling/discovery/base/connectors/ping/wl/package-info.java b/src/main/java/org/apache/sling/discovery/base/connectors/ping/wl/package-info.java
index 091715c..441f9a9 100644
--- a/src/main/java/org/apache/sling/discovery/base/connectors/ping/wl/package-info.java
+++ b/src/main/java/org/apache/sling/discovery/base/connectors/ping/wl/package-info.java
@@ -23,8 +23,7 @@
*
* @version 1.0.0
*/
-@Version("1.0.0")
+@Version("1.0.1")
package org.apache.sling.discovery.base.connectors.ping.wl;
-import aQute.bnd.annotation.Version;
-
+import org.osgi.annotation.versioning.Version;
\ No newline at end of file
diff --git a/src/test/java/org/apache/sling/discovery/base/connectors/announcement/AnnouncementRegistryImplTest.java b/src/test/java/org/apache/sling/discovery/base/connectors/announcement/AnnouncementRegistryImplTest.java
index 3706d6e..bd8bf74 100644
--- a/src/test/java/org/apache/sling/discovery/base/connectors/announcement/AnnouncementRegistryImplTest.java
+++ b/src/test/java/org/apache/sling/discovery/base/connectors/announcement/AnnouncementRegistryImplTest.java
@@ -35,6 +35,7 @@
import org.apache.sling.discovery.ClusterView;
import org.apache.sling.discovery.InstanceDescription;
import org.apache.sling.discovery.base.connectors.BaseConfig;
+import org.apache.sling.discovery.base.connectors.announcement.impl.AnnouncementRegistryImpl;
import org.apache.sling.discovery.base.its.setup.TopologyHelper;
import org.apache.sling.discovery.base.its.setup.VirtualInstanceHelper;
import org.apache.sling.discovery.base.its.setup.mock.MockFactory;
diff --git a/src/test/java/org/apache/sling/discovery/base/connectors/ping/ConnectorRegistryImplTest.java b/src/test/java/org/apache/sling/discovery/base/connectors/ping/ConnectorRegistryImplTest.java
index f743418..0d6ee31 100644
--- a/src/test/java/org/apache/sling/discovery/base/connectors/ping/ConnectorRegistryImplTest.java
+++ b/src/test/java/org/apache/sling/discovery/base/connectors/ping/ConnectorRegistryImplTest.java
@@ -26,7 +26,8 @@
import org.apache.sling.discovery.base.commons.ClusterViewService;
import org.apache.sling.discovery.base.connectors.BaseConfig;
import org.apache.sling.discovery.base.connectors.DummyVirtualInstanceBuilder;
-import org.apache.sling.discovery.base.connectors.announcement.AnnouncementRegistryImpl;
+import org.apache.sling.discovery.base.connectors.announcement.impl.AnnouncementRegistryImpl;
+import org.apache.sling.discovery.base.connectors.ping.impl.ConnectorRegistryImpl;
import org.apache.sling.discovery.base.its.setup.VirtualInstance;
import org.apache.sling.discovery.base.its.setup.VirtualInstanceBuilder;
import org.apache.sling.discovery.base.its.setup.mock.MockFactory;
diff --git a/src/test/java/org/apache/sling/discovery/base/connectors/ping/TopologyConnectorServletTest.java b/src/test/java/org/apache/sling/discovery/base/connectors/ping/TopologyConnectorServletTest.java
index 8bf4c5a..6cd804a 100644
--- a/src/test/java/org/apache/sling/discovery/base/connectors/ping/TopologyConnectorServletTest.java
+++ b/src/test/java/org/apache/sling/discovery/base/connectors/ping/TopologyConnectorServletTest.java
@@ -25,16 +25,24 @@
import javax.servlet.http.HttpServletRequest;
+import org.apache.sling.discovery.base.commons.ClusterViewService;
import org.apache.sling.discovery.base.connectors.BaseConfig;
+import org.apache.sling.discovery.base.connectors.announcement.AnnouncementRegistry;
+import org.apache.sling.testing.mock.osgi.junit.OsgiContext;
import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
+import org.osgi.service.http.HttpService;
-import junitx.util.PrivateAccessor;
+import java.util.Hashtable;
public class TopologyConnectorServletTest {
private TopologyConnectorServlet servlet;
-
+
+ @Rule
+ public final OsgiContext context = new OsgiContext();
+
private HttpServletRequest getRequest(String host, String addr) {
HttpServletRequest result = mock(HttpServletRequest.class);
when(result.getRemoteAddr()).thenReturn(addr);
@@ -44,9 +52,23 @@
@Before
public void setUp() throws Exception {
- servlet = new TopologyConnectorServlet();
- BaseConfig config = mock(BaseConfig.class);
- PrivateAccessor.setField(servlet, "config", config);
+ //Mock BaseConfig
+ BaseConfig baseConfig = mock(BaseConfig.class);
+ context.registerService(BaseConfig.class, baseConfig);
+
+ //Mock AnnouncementRegistry
+ AnnouncementRegistry announcementRegistry = mock(AnnouncementRegistry.class);
+ context.registerService(AnnouncementRegistry.class, announcementRegistry);
+
+ //Mock ClusterViewService
+ ClusterViewService clusterViewService = mock(ClusterViewService.class);
+ context.registerService(ClusterViewService.class, clusterViewService);
+
+ //Mock HttpService
+ HttpService httpService = mock(HttpService.class);
+ context.registerService(HttpService.class, httpService);
+
+ servlet = context.registerInjectActivateService(TopologyConnectorServlet.class, new TopologyConnectorServlet(), new Hashtable<>());
}
@Test
diff --git a/src/test/java/org/apache/sling/discovery/base/its/setup/VirtualInstanceBuilder.java b/src/test/java/org/apache/sling/discovery/base/its/setup/VirtualInstanceBuilder.java
index 15eee4b..7925258 100644
--- a/src/test/java/org/apache/sling/discovery/base/its/setup/VirtualInstanceBuilder.java
+++ b/src/test/java/org/apache/sling/discovery/base/its/setup/VirtualInstanceBuilder.java
@@ -26,9 +26,9 @@
import org.apache.sling.discovery.base.commons.ClusterViewService;
import org.apache.sling.discovery.base.commons.ViewChecker;
import org.apache.sling.discovery.base.connectors.announcement.AnnouncementRegistry;
-import org.apache.sling.discovery.base.connectors.announcement.AnnouncementRegistryImpl;
+import org.apache.sling.discovery.base.connectors.announcement.impl.AnnouncementRegistryImpl;
import org.apache.sling.discovery.base.connectors.ping.ConnectorRegistry;
-import org.apache.sling.discovery.base.connectors.ping.ConnectorRegistryImpl;
+import org.apache.sling.discovery.base.connectors.ping.impl.ConnectorRegistryImpl;
import org.apache.sling.discovery.base.its.setup.mock.ArtificialDelay;
import org.apache.sling.discovery.base.its.setup.mock.FailingScheduler;
import org.apache.sling.discovery.commons.providers.base.DummyScheduler;