From commits-return-31110-archive-asf-public=cust-asf.ponee.io@geode.apache.org Fri Mar 15 16:13:50 2019 Return-Path: X-Original-To: archive-asf-public@cust-asf.ponee.io Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by mx-eu-01.ponee.io (Postfix) with SMTP id B0987180627 for ; Fri, 15 Mar 2019 17:13:49 +0100 (CET) Received: (qmail 80320 invoked by uid 500); 15 Mar 2019 16:13:48 -0000 Mailing-List: contact commits-help@geode.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@geode.apache.org Delivered-To: mailing list commits@geode.apache.org Received: (qmail 80311 invoked by uid 99); 15 Mar 2019 16:13:48 -0000 Received: from ec2-52-202-80-70.compute-1.amazonaws.com (HELO gitbox.apache.org) (52.202.80.70) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 15 Mar 2019 16:13:48 +0000 Received: by gitbox.apache.org (ASF Mail Server at gitbox.apache.org, from userid 33) id 325048531F; Fri, 15 Mar 2019 16:13:48 +0000 (UTC) Date: Fri, 15 Mar 2019 16:13:47 +0000 To: "commits@geode.apache.org" Subject: [geode] branch develop updated: GEODE-6295: Extract default from CollectingServiceLoader interface MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Message-ID: <155266642616.1022.17055396557153567934@gitbox.apache.org> From: klund@apache.org X-Git-Host: gitbox.apache.org X-Git-Repo: geode X-Git-Refname: refs/heads/develop X-Git-Reftype: branch X-Git-Oldrev: aa38e224f484d22def2bae2ff940715f2ab86de9 X-Git-Newrev: 8fed2fe49220029d8b5beac3254c787f734347dc X-Git-Rev: 8fed2fe49220029d8b5beac3254c787f734347dc X-Git-NotificationType: ref_changed_plus_diff X-Git-Multimail-Version: 1.5.dev Auto-Submitted: auto-generated This is an automated email from the ASF dual-hosted git repository. klund pushed a commit to branch develop in repository https://gitbox.apache.org/repos/asf/geode.git The following commit(s) were added to refs/heads/develop by this push: new 8fed2fe GEODE-6295: Extract default from CollectingServiceLoader interface 8fed2fe is described below commit 8fed2fe49220029d8b5beac3254c787f734347dc Author: Kirk Lund AuthorDate: Thu Mar 14 13:22:14 2019 -0700 GEODE-6295: Extract default from CollectingServiceLoader interface Move CollectingServiceLoader to org.apache.geode.internal.util. Add javadocs. Extract default from CollectingServiceLoader interface to ListCollectingServiceLoader. --- .../metrics/CacheLifecycleMetricsSession.java | 4 ++- .../internal/metrics/CollectingServiceLoader.java | 29 ----------------- .../internal/util/CollectingServiceLoader.java | 37 ++++++++++++++++++++++ .../internal/util/ListCollectingServiceLoader.java | 36 +++++++++++++++++++++ .../CacheLifecycleMetricsSessionBuilderTest.java | 1 + 5 files changed, 77 insertions(+), 30 deletions(-) diff --git a/geode-core/src/main/java/org/apache/geode/internal/metrics/CacheLifecycleMetricsSession.java b/geode-core/src/main/java/org/apache/geode/internal/metrics/CacheLifecycleMetricsSession.java index a621185..250616d 100644 --- a/geode-core/src/main/java/org/apache/geode/internal/metrics/CacheLifecycleMetricsSession.java +++ b/geode-core/src/main/java/org/apache/geode/internal/metrics/CacheLifecycleMetricsSession.java @@ -24,6 +24,8 @@ import org.apache.geode.annotations.VisibleForTesting; import org.apache.geode.internal.cache.CacheLifecycleListener; import org.apache.geode.internal.cache.GemFireCacheImpl; import org.apache.geode.internal.cache.InternalCache; +import org.apache.geode.internal.util.CollectingServiceLoader; +import org.apache.geode.internal.util.ListCollectingServiceLoader; import org.apache.geode.metrics.MetricsPublishingService; import org.apache.geode.metrics.MetricsSession; @@ -86,7 +88,7 @@ public class CacheLifecycleMetricsSession implements MetricsSession, CacheLifecy public static class Builder { - private CollectingServiceLoader serviceLoader = new CollectingServiceLoader() {}; + private CollectingServiceLoader serviceLoader = new ListCollectingServiceLoader(); private CacheLifecycle cacheLifecycle = new CacheLifecycle() {}; private Builder() { diff --git a/geode-core/src/main/java/org/apache/geode/internal/metrics/CollectingServiceLoader.java b/geode-core/src/main/java/org/apache/geode/internal/metrics/CollectingServiceLoader.java deleted file mode 100644 index c5cbd69..0000000 --- a/geode-core/src/main/java/org/apache/geode/internal/metrics/CollectingServiceLoader.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more contributor license - * agreements. See the NOTICE file distributed with this work for additional information regarding - * copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance with the License. You may obtain a - * copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. - */ -package org.apache.geode.internal.metrics; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; -import java.util.ServiceLoader; - -interface CollectingServiceLoader { - - default Collection loadServices(Class service) { - List services = new ArrayList<>(); - ServiceLoader.load(service).iterator().forEachRemaining(services::add); - return services; - } -} diff --git a/geode-core/src/main/java/org/apache/geode/internal/util/CollectingServiceLoader.java b/geode-core/src/main/java/org/apache/geode/internal/util/CollectingServiceLoader.java new file mode 100644 index 0000000..0b98c3b --- /dev/null +++ b/geode-core/src/main/java/org/apache/geode/internal/util/CollectingServiceLoader.java @@ -0,0 +1,37 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.geode.internal.util; + +import java.util.Collection; +import java.util.ServiceLoader; + +/** + * Loads and returns a collection of all currently loadable implementations of the given service + * interface using {@link ServiceLoader}. + */ +public interface CollectingServiceLoader { + + /** + * Loads and returns a collection of all currently loadable implementations of the given service + * interface. + * + * @param service the service interface + * @param the class of the service interface to load implementations of + * @return a collection of instantiated implementations of the given service interface + */ + Collection loadServices(Class service); +} diff --git a/geode-core/src/main/java/org/apache/geode/internal/util/ListCollectingServiceLoader.java b/geode-core/src/main/java/org/apache/geode/internal/util/ListCollectingServiceLoader.java new file mode 100644 index 0000000..03fc697 --- /dev/null +++ b/geode-core/src/main/java/org/apache/geode/internal/util/ListCollectingServiceLoader.java @@ -0,0 +1,36 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.geode.internal.util; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import java.util.ServiceLoader; + +/** + * Implements {@link CollectingServiceLoader} by returning a {@link List} of all currently loadable + * implementations of the given service interface. + */ +public class ListCollectingServiceLoader implements CollectingServiceLoader { + + @Override + public Collection loadServices(Class service) { + List services = new ArrayList<>(); + ServiceLoader.load(service).iterator().forEachRemaining(services::add); + return services; + } +} diff --git a/geode-core/src/test/java/org/apache/geode/internal/metrics/CacheLifecycleMetricsSessionBuilderTest.java b/geode-core/src/test/java/org/apache/geode/internal/metrics/CacheLifecycleMetricsSessionBuilderTest.java index d8f5dbb..dcc6b37 100644 --- a/geode-core/src/test/java/org/apache/geode/internal/metrics/CacheLifecycleMetricsSessionBuilderTest.java +++ b/geode-core/src/test/java/org/apache/geode/internal/metrics/CacheLifecycleMetricsSessionBuilderTest.java @@ -29,6 +29,7 @@ import org.junit.Test; import org.apache.geode.internal.metrics.CacheLifecycleMetricsSession.Builder; import org.apache.geode.internal.metrics.CacheLifecycleMetricsSession.CacheLifecycle; +import org.apache.geode.internal.util.CollectingServiceLoader; import org.apache.geode.metrics.MetricsPublishingService; public class CacheLifecycleMetricsSessionBuilderTest {