From d0715ca90465d0f7b3d090234f6b0098194f0101 Mon Sep 17 00:00:00 2001 From: Daniel Cruz Date: Tue, 19 Mar 2019 09:53:24 -0500 Subject: Remove OrderedService references Removed OrderedService and OrderedServiceImpl from the drools-pdp repo to use OrderedService and OrderedServiceImpl from the common repo. All feature interfaces were updated occordingly. Issue-ID: POLICY-1499 Change-Id: Icc80dd1cbe73a97d4832f95ad2dad52d948b711a Signed-off-by: Daniel Cruz --- .../onap/policy/drools/utils/OrderedService.java | 47 ------- .../policy/drools/utils/OrderedServiceImpl.java | 135 --------------------- 2 files changed, 182 deletions(-) delete mode 100644 policy-utils/src/main/java/org/onap/policy/drools/utils/OrderedService.java delete mode 100644 policy-utils/src/main/java/org/onap/policy/drools/utils/OrderedServiceImpl.java (limited to 'policy-utils/src/main/java/org') diff --git a/policy-utils/src/main/java/org/onap/policy/drools/utils/OrderedService.java b/policy-utils/src/main/java/org/onap/policy/drools/utils/OrderedService.java deleted file mode 100644 index 45ad85a8..00000000 --- a/policy-utils/src/main/java/org/onap/policy/drools/utils/OrderedService.java +++ /dev/null @@ -1,47 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * policy-utils - * ================================================================================ - * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.drools.utils; - -/** - * This is a base interface that is used to control the order of a list - * of services (features) discovered via 'ServiceLoader'. See - * 'OrderedServiceImpl' for more details. - */ -@FunctionalInterface -public interface OrderedService { - /** - * Get sequence number. - * - * @return an integer sequence number, which determines the order of a list - * of objects implementing this interface - */ - public int getSequenceNumber(); - - - /** - * Get the name. - * - * @return the name of the ordered service - */ - public default String getName() { - return this.getClass().getName(); - } -} diff --git a/policy-utils/src/main/java/org/onap/policy/drools/utils/OrderedServiceImpl.java b/policy-utils/src/main/java/org/onap/policy/drools/utils/OrderedServiceImpl.java deleted file mode 100644 index fa0a045c..00000000 --- a/policy-utils/src/main/java/org/onap/policy/drools/utils/OrderedServiceImpl.java +++ /dev/null @@ -1,135 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * policy-utils - * ================================================================================ - * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.drools.utils; - -import java.util.Collections; -import java.util.HashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.ServiceLoader; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * This class is a template for building a sorted list of service instances, - * which are discovered and created using 'ServiceLoader'. - */ -public class OrderedServiceImpl { - // logger - private static Logger logger = LoggerFactory.getLogger(OrderedServiceImpl.class); - - // sorted list of instances implementing the service - private List implementers = null; - - // 'ServiceLoader' that is used to discover and create the services - private ServiceLoader serviceLoader = null; - - // use this to ensure that we only use one unique instance of each class - @SuppressWarnings("rawtypes") - private static HashMap classToSingleton = new HashMap<>(); - - /** - * Constructor - create the 'ServiceLoader' instance. - * - * @param clazz the class object associated with 'T' (I supposed it could - * be a subclass, but I'm not sure this is useful) - */ - public OrderedServiceImpl(Class clazz) { - // This constructor wouldn't be needed if 'T.class' was legal - serviceLoader = ServiceLoader.load(clazz); - } - - /** - * Get List of implementers. - * - * @return the sorted list of services implementing interface 'T' discovered - * by 'ServiceLoader'. - */ - public synchronized List getList() { - if (implementers == null) { - rebuildList(); - } - return implementers; - } - - /** - * This method is called by 'getList', but could also be called directly if - * we were running with a 'ClassLoader' that supported the dynamic addition - * of JAR files. In this case, it could be invoked in order to discover any - * new services implementing interface 'T'. This is probably a relatively - * expensive operation in terms of CPU and elapsed time, so it is best if it - * isn't invoked too frequently. - * - * @return the sorted list of services implementing interface 'T' discovered - * by 'ServiceLoader'. - */ - @SuppressWarnings("unchecked") - public synchronized List rebuildList() { - // build a list of all of the current implementors - List tmp = new LinkedList<>(); - for (T service : serviceLoader) { - tmp.add((T)getSingleton(service)); - } - - // Sort the list according to sequence number, and then alphabetically - // according to full class name. - Collections.sort(tmp, (o1, o2) -> { - int s1 = o1.getSequenceNumber(); - int s2 = o2.getSequenceNumber(); - if (s1 < s2) { - return -1; - } else if (s1 > s2) { - return 1; - } else { - return o1.getClass().getName().compareTo(o2.getClass().getName()); - } - }); - - // create an unmodifiable version of this list - implementers = Collections.unmodifiableList(tmp); - logger.info("***** OrderedServiceImpl implementers:\n {}", implementers); - return implementers; - } - - /** - * If a service implements multiple APIs managed by 'ServiceLoader', a - * separate instance is created for each API. This method ensures that - * the first instance is used in all of the lists. - * - * @param service this is the object created by ServiceLoader - * @return the object to use in place of 'service'. If 'service' is the first - * object of this class created by ServiceLoader, it is returned. If not, - * the object of this class that was initially created is returned - * instead. - */ - private static synchronized OrderedService getSingleton(OrderedService service) { - // see if we already have an instance of this class - OrderedService rval = classToSingleton.get(service.getClass()); - if (rval == null) { - // No previous instance of this class exists -- use the supplied - // instance, and place it in the table. - rval = service; - classToSingleton.put(service.getClass(), service); - } - return rval; - } -} -- cgit 1.2.3-korg