From 3da4ae9c1967442b015ce9740e3d46d32fcd4d26 Mon Sep 17 00:00:00 2001 From: Pamela Dragosh Date: Thu, 6 Sep 2018 20:17:27 -0400 Subject: Fix checkstyle policy-core Working on the policy-core submodule in drools pdp. Issue-ID: POLICY-882 Change-Id: I58d418110fe0fda90f97117ef17edfc13d648ccc Signed-off-by: Pamela Dragosh --- .../onap/policy/drools/core/PolicyContainer.java | 56 +++++---- .../org/onap/policy/drools/core/PolicySession.java | 54 +++++---- .../drools/core/PolicySessionFeatureAPI.java | 129 ++++++++++----------- .../org/onap/policy/drools/core/jmx/PdpJmx.java | 42 +++---- .../policy/drools/core/jmx/PdpJmxListener.java | 63 +++++----- .../onap/policy/drools/core/jmx/PdpJmxMBean.java | 7 +- .../org/onap/policy/drools/core/lock/Lock.java | 8 +- .../core/lock/PolicyResourceLockFeatureAPI.java | 41 ++++--- .../core/lock/PolicyResourceLockManager.java | 18 +-- .../policy/drools/core/lock/SimpleLockManager.java | 89 +++++++------- .../policy/drools/util/FeatureEnabledChecker.java | 2 +- .../java/org/onap/policy/drools/util/KieUtils.java | 28 ++--- 12 files changed, 290 insertions(+), 247 deletions(-) (limited to 'policy-core/src/main') diff --git a/policy-core/src/main/java/org/onap/policy/drools/core/PolicyContainer.java b/policy-core/src/main/java/org/onap/policy/drools/core/PolicyContainer.java index 8a86a5c5..f2a084e4 100644 --- a/policy-core/src/main/java/org/onap/policy/drools/core/PolicyContainer.java +++ b/policy-core/src/main/java/org/onap/policy/drools/core/PolicyContainer.java @@ -79,7 +79,7 @@ public class PolicyContainer implements Startable { * dependencies from the Maven repository to create the 'PolicyContainer' and associated * 'KieContainer'. * - * An exception occurs if the creation of the 'KieContainer' fails. + *

An exception occurs if the creation of the 'KieContainer' fails. * * @param groupId the 'groupId' associated with the artifact * @param artifactId the artifact name @@ -94,7 +94,7 @@ public class PolicyContainer implements Startable { * associated artifact and remaining dependencies from the Maven repository to create the * 'PolicyContainer' and associated 'KieContainer'. * - * An exception occurs if the creation of the 'KieContainer' fails. + *

An exception occurs if the creation of the 'KieContainer' fails. * * @param releaseId indicates the artifact that is to be installed in this container */ @@ -109,7 +109,7 @@ public class PolicyContainer implements Startable { } synchronized (containers) { if (newReleaseId != null) { - logger.info("Add a new kieContainer in containers: releaseId: " + newReleaseId.toString()); + logger.info("Add a new kieContainer in containers: releaseId: {}", newReleaseId.toString()); } else { logger.warn("input releaseId is null"); } @@ -133,7 +133,7 @@ public class PolicyContainer implements Startable { private ReleaseId loadArtifact(String groupId, String artifactId, String version) { String[] versions = version.split(","); if (versions.length > 1) { - logger.info("Multiple KieContainer versions are specified: " + version); + logger.info("Multiple KieContainer versions are specified: {}", version); } // indicates a 'newKieContainer' call failed @@ -147,7 +147,7 @@ public class PolicyContainer implements Startable { try { // Create a 'ReleaseId' object describing the artifact, and // create a 'KieContainer' based upon it. - logger.info("Create new KieContainer start, version = " + ver + " ..."); + logger.info("Create new KieContainer start, version = {} ...", ver); releaseId = kieServices.newReleaseId(groupId, artifactId, ver); kieContainer = kieServices.newKieContainer(releaseId); @@ -168,6 +168,8 @@ public class PolicyContainer implements Startable { } /** + * Get name. + * * @return the name of the container, which is the String equivalent of the 'ReleaseId'. It has * the form: * @@ -181,6 +183,8 @@ public class PolicyContainer implements Startable { } /** + * Get kie container. + * * @return the associated 'KieContainer' instance */ public KieContainer getKieContainer() { @@ -188,6 +192,8 @@ public class PolicyContainer implements Startable { } /** + * Get class loader. + * * @return the 'ClassLoader' associated with the 'KieContainer' instance */ public ClassLoader getClassLoader() { @@ -195,6 +201,8 @@ public class PolicyContainer implements Startable { } /** + * Get group Id. + * * @return the Maven GroupId of the top-level artifact wrapped by the container. */ public String getGroupId() { @@ -202,6 +210,8 @@ public class PolicyContainer implements Startable { } /** + * Get artifact id. + * * @return the Maven ArtifactId of the top-level artifact wrapped by the container. */ public String getArtifactId() { @@ -209,6 +219,8 @@ public class PolicyContainer implements Startable { } /** + * Get version. + * * @return the version of the top-level artifact wrapped by the container (this may change as * updates occur) */ @@ -236,10 +248,10 @@ public class PolicyContainer implements Startable { */ private PolicySession activatePolicySession(String name, String kieBaseName) { synchronized (sessions) { - logger.info("activatePolicySession:name :" + name); + logger.info("activatePolicySession:name :{}", name); PolicySession session = sessions.get(name); if (session != null) { - logger.info("activatePolicySession:session - " + session.getFullName() + " is returned."); + logger.info("activatePolicySession:session - {} is returned.", session.getFullName()); return session; } KieSession kieSession = null; @@ -275,7 +287,7 @@ public class PolicyContainer implements Startable { logger.error(ERROR_STRING + feature.getClass().getName(), e); } } - logger.info("activatePolicySession:new session was added in sessions with name " + name); + logger.info("activatePolicySession:new session was added in sessions with name {}", name); } logger.info("activatePolicySession:session - " + (session == null ? "null" : session.getFullName()) + " is returned."); @@ -310,15 +322,15 @@ public class PolicyContainer implements Startable { // fetch KieBase, and verify it belongs to this KieContainer boolean match = false; KieBase kieBase = kieSession.getKieBase(); - logger.info("adoptKieSession:kieBase: " + kieBase); + logger.info("adoptKieSession:kieBase: {}", kieBase); for (String kieBaseName : kieContainer.getKieBaseNames()) { - logger.info("adoptKieSession:kieBaseName: " + kieBaseName); + logger.info("adoptKieSession:kieBaseName: {}", kieBaseName); if (kieBase == kieContainer.getKieBase(kieBaseName)) { match = true; break; } } - logger.info("adoptKieSession:match " + match); + logger.info("adoptKieSession:match {}", match); // if we don't have a match yet, the last chance is to look at the // default KieBase, if it exists if (!match && kieBase != kieContainer.getKieBase()) { @@ -333,7 +345,7 @@ public class PolicyContainer implements Startable { // create the new 'PolicySession', add it to the table, // and return the object to the caller - logger.info("adoptKieSession:create a new policySession with name " + name); + logger.info("adoptKieSession:create a new policySession with name {}", name); PolicySession policySession = new PolicySession(name, this, kieSession); sessions.put(name, policySession); @@ -378,7 +390,7 @@ public class PolicyContainer implements Startable { if (releaseId == null) { logger.warn("updateToVersion:input releaseId is null"); } else { - logger.info("updateToVersion:releaseId " + releaseId.toString()); + logger.info("updateToVersion:releaseId {}", releaseId); } // stop all session threads @@ -399,6 +411,8 @@ public class PolicyContainer implements Startable { } /** + * Get policy containers. + * * @return all existing 'PolicyContainer' instances */ public static Collection getPolicyContainers() { @@ -408,6 +422,8 @@ public class PolicyContainer implements Startable { } /** + * Get policy sessions. + * * @return all of the 'PolicySession' instances */ public Collection getPolicySessions() { @@ -454,7 +470,7 @@ public class PolicyContainer implements Startable { } /** - * Insert a fact into a specific named session + * Insert a fact into a specific named session. * * @param name this is the session name * @param object this is the fact to be inserted into the session @@ -475,7 +491,7 @@ public class PolicyContainer implements Startable { } /** - * Insert a fact into all sessions associated with this container + * Insert a fact into all sessions associated with this container. * * @param object this is the fact to be inserted into the sessions * @return 'true' if the fact was inserted into at least one session, 'false' if not @@ -660,15 +676,15 @@ public class PolicyContainer implements Startable { /** * This method does the following: * - * 1) Initializes logging 2) Starts the DroolsPDP Integrity Monitor 3) Initilaizes persistence + *

1) Initializes logging 2) Starts the DroolsPDP Integrity Monitor 3) Initilaizes persistence * - * It no longer reads in properties files, o creates 'PolicyContainer' instances. + *

It no longer reads in properties files, o creates 'PolicyContainer' instances. * * @param args standard 'main' arguments, which are currently ignored */ public static void globalInit(String[] args) { String configDir = "config"; - logger.info("PolicyContainer.main: configDir=" + configDir); + logger.info("PolicyContainer.main: configDir={}", configDir); // invoke 'globalInit' on all of the features for (PolicySessionFeatureAPI feature : PolicySessionFeatureAPI.impl.getList()) { @@ -681,7 +697,7 @@ public class PolicyContainer implements Startable { } /** - * Fetch the adjunct object associated with a given feature + * Fetch the adjunct object associated with a given feature. * * @param object this is typically the singleton feature object that is used as a key, but it * might also be useful to use nested objects within the feature as keys. @@ -692,7 +708,7 @@ public class PolicyContainer implements Startable { } /** - * Store the adjunct object associated with a given feature + * Store the adjunct object associated with a given feature. * * @param object this is typically the singleton feature object that is used as a key, but it * might also be useful to use nested objects within the feature as keys. diff --git a/policy-core/src/main/java/org/onap/policy/drools/core/PolicySession.java b/policy-core/src/main/java/org/onap/policy/drools/core/PolicySession.java index 7646225e..bb2148c0 100644 --- a/policy-core/src/main/java/org/onap/policy/drools/core/PolicySession.java +++ b/policy-core/src/main/java/org/onap/policy/drools/core/PolicySession.java @@ -44,8 +44,8 @@ import org.slf4j.LoggerFactory; /** * This class is a wrapper around 'KieSession', which adds the following: - *

- * 1) A thread running 'KieSession.fireUntilHalt()' + * + *

1) A thread running 'KieSession.fireUntilHalt()' * 2) Access to UEB * 3) Logging of events */ @@ -75,7 +75,7 @@ public class PolicySession new ThreadLocal<>(); /** - * Internal constructor - create a 'PolicySession' instance + * Internal constructor - create a 'PolicySession' instance. * * @param name the name of this 'PolicySession' (and 'kieSession') * @param container the 'PolicyContainer' instance containing this session @@ -91,6 +91,8 @@ public class PolicySession } /** + * Get policy container. + * * @return the 'PolicyContainer' object containing this session */ public PolicyContainer getPolicyContainer() { @@ -98,6 +100,8 @@ public class PolicySession } /** + * Get Kie Session. + * * @return the associated 'KieSession' instance */ public KieSession getKieSession() { @@ -105,17 +109,21 @@ public class PolicySession } /** + * Get name. + * * @return the local name of this session, which should either match the - * name specified in 'kmodule.xml' file associated with this session, or the - * name passed on the 'PolicyContainer.adoptKieSession' method. + * name specified in 'kmodule.xml' file associated with this session, or the + * name passed on the 'PolicyContainer.adoptKieSession' method. */ public String getName() { return name; } /** + * Get full name. + * * @return the 'PolicyContainer' name, followed by ':', followed by the - * local name of the session. It should be useful in log messages. + * local name of the session. It should be useful in log messages. */ public String getFullName() { return container.getName() + ":" + name; @@ -137,8 +145,9 @@ public class PolicySession for (PolicySessionFeatureAPI feature : PolicySessionFeatureAPI.impl.getList()) { try { - if ((threadModel = feature.selectThreadModel(this)) != null) + if ((threadModel = feature.selectThreadModel(this)) != null) { break; + } } catch (Exception e) { logger.error("ERROR: Feature API: " + feature.getClass().getName(), e); @@ -164,7 +173,7 @@ public class PolicySession } /** - * Notification that 'updateToVersion' was called on the container + * Notification that 'updateToVersion' was called on the container. */ void updated() { if (threadModel != null) { @@ -183,29 +192,31 @@ public class PolicySession } /** + * Get current session. + * * @return the 'PolicySession' instance associated with the current thread - * (Note that this only works if the current thread is the one running - * 'kieSession.fireUntilHalt()'.) + * (Note that this only works if the current thread is the one running + * 'kieSession.fireUntilHalt()'.) */ public static PolicySession getCurrentSession() { return policySess.get(); } /** - * Fetch the adjunct object associated with a given feature + * Fetch the adjunct object associated with a given feature. * * @param object this is typically the singleton feature object that is * used as a key, but it might also be useful to use nested objects * within the feature as keys. * @return a feature-specific object associated with the key, or 'null' - * if it is not found. + * if it is not found. */ public Object getAdjunct(Object object) { return adjuncts.get(object); } /** - * Store the adjunct object associated with a given feature + * Store the adjunct object associated with a given feature. * * @param object this is typically the singleton feature object that is * used as a key, but it might also be useful to use nested objects @@ -253,8 +264,7 @@ public class PolicySession * {@inheritDoc} */ @Override - public void afterRuleFlowGroupDeactivated - (RuleFlowGroupDeactivatedEvent event) { + public void afterRuleFlowGroupDeactivated(RuleFlowGroupDeactivatedEvent event) { if (logger.isDebugEnabled()) { logger.debug("afterRuleFlowGroupDeactivated: " + getFullName() + ": AgendaEventListener.afterRuleFlowGroupDeactivated(" @@ -302,8 +312,7 @@ public class PolicySession * {@inheritDoc} */ @Override - public void beforeRuleFlowGroupActivated - (RuleFlowGroupActivatedEvent event) { + public void beforeRuleFlowGroupActivated(RuleFlowGroupActivatedEvent event) { if (logger.isDebugEnabled()) { logger.debug("beforeRuleFlowGroupActivated: " + getFullName() + ": AgendaEventListener.beforeRuleFlowGroupActivated(" @@ -315,8 +324,7 @@ public class PolicySession * {@inheritDoc} */ @Override - public void beforeRuleFlowGroupDeactivated - (RuleFlowGroupDeactivatedEvent event) { + public void beforeRuleFlowGroupDeactivated(RuleFlowGroupDeactivatedEvent event) { if (logger.isDebugEnabled()) { logger.debug("beforeRuleFlowGroupDeactivated: " + getFullName() + ": AgendaEventListener.beforeRuleFlowGroupDeactivated(" @@ -391,12 +399,12 @@ public class PolicySession */ public interface ThreadModel { /** - * Start the thread or threads that do the 'KieSession' processing + * Start the thread or threads that do the 'KieSession' processing. */ public void start(); /** - * Stop the thread or threads that do the 'KieSession' processing + * Stop the thread or threads that do the 'KieSession' processing. */ public void stop(); @@ -425,7 +433,7 @@ public class PolicySession volatile boolean repeat = true; /** - * Constructor - initialize 'session' and create thread + * Constructor - initialize 'session' and create thread. * * @param session the 'PolicySession' instance */ @@ -435,6 +443,8 @@ public class PolicySession } /** + * Get thread name. + * * @return the String to use as the thread name */ private String getThreadName() { diff --git a/policy-core/src/main/java/org/onap/policy/drools/core/PolicySessionFeatureAPI.java b/policy-core/src/main/java/org/onap/policy/drools/core/PolicySessionFeatureAPI.java index 867325cd..3e49ee5b 100644 --- a/policy-core/src/main/java/org/onap/policy/drools/core/PolicySessionFeatureAPI.java +++ b/policy-core/src/main/java/org/onap/policy/drools/core/PolicySessionFeatureAPI.java @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * policy-core * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * 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. @@ -32,76 +32,71 @@ import org.onap.policy.drools.utils.OrderedServiceImpl; * return a 'void' value. In other cases, such as 'activatePolicySession', * may */ -public interface PolicySessionFeatureAPI extends OrderedService -{ - /** - * 'FeatureAPI.impl.getList()' returns an ordered list of objects - * implementing the 'FeatureAPI' interface. - */ - public static OrderedServiceImpl impl = - new OrderedServiceImpl<>(PolicySessionFeatureAPI.class); +public interface PolicySessionFeatureAPI extends OrderedService { + /** + * 'FeatureAPI.impl.getList()' returns an ordered list of objects + * implementing the 'FeatureAPI' interface. + */ + public static OrderedServiceImpl impl = + new OrderedServiceImpl<>(PolicySessionFeatureAPI.class); - /** - * This method is called during initialization at a point right after - * 'PolicyContainer' initialization has completed. - * - * @param args standard 'main' arguments, which are currently ignored - * @param configDir the relative directory containing configuration files - */ - public default void globalInit(String[] args, String configDir) {} + /** + * This method is called during initialization at a point right after + * 'PolicyContainer' initialization has completed. + * + * @param args standard 'main' arguments, which are currently ignored + * @param configDir the relative directory containing configuration files + */ + public default void globalInit(String[] args, String configDir) {} - /** - * This method is used to create a 'KieSession' as part of a - * 'PolicyContainer'. The caller of this method will iterate over the - * implementers of this interface until one returns a non-null value. - * - * @param policyContainer the 'PolicyContainer' instance containing this - * session - * @param name the name of the KieSession (which is also the name of - * the associated PolicySession) - * @param kieBaseName the name of the 'KieBase' instance containing - * this session - * @return a new KieSession, if one was created, or 'null' if not - * (this depends on the capabilities and state of the object implementing - * this interface) - */ - public default KieSession activatePolicySession - (PolicyContainer policyContainer, String name, String kieBaseName) - { - return null; - } + /** + * This method is used to create a 'KieSession' as part of a + * 'PolicyContainer'. The caller of this method will iterate over the + * implementers of this interface until one returns a non-null value. + * + * @param policyContainer the 'PolicyContainer' instance containing this + * session + * @param name the name of the KieSession (which is also the name of + * the associated PolicySession) + * @param kieBaseName the name of the 'KieBase' instance containing + * this session + * @return a new KieSession, if one was created, or 'null' if not + * (this depends on the capabilities and state of the object implementing + * this interface) + */ + public default KieSession activatePolicySession(PolicyContainer policyContainer, String name, String kieBaseName) { + return null; + } - /** - * This method is called after a new 'PolicySession' has been initialized, - * and linked to the 'PolicyContainer'. - * - * @param policySession the new 'PolicySession' instance - */ - public default void newPolicySession(PolicySession policySession) {} + /** + * This method is called after a new 'PolicySession' has been initialized, + * and linked to the 'PolicyContainer'. + * + * @param policySession the new 'PolicySession' instance + */ + public default void newPolicySession(PolicySession policySession) {} - /** - * This method is called to select the 'ThreadModel' instance associated - * with a 'PolicySession' instance. - */ - public default PolicySession.ThreadModel selectThreadModel - (PolicySession session) - { - return null; - } + /** + * This method is called to select the 'ThreadModel' instance associated + * with a 'PolicySession' instance. + */ + public default PolicySession.ThreadModel selectThreadModel(PolicySession session) { + return null; + } - /** - * This method is called after 'KieSession.dispose()' is called - * - * @param policySession the 'PolicySession' object that wrapped the - * 'KieSession' - */ - public default void disposeKieSession(PolicySession policySession) {} + /** + * This method is called after 'KieSession.dispose()' is called. + * + * @param policySession the 'PolicySession' object that wrapped the + * 'KieSession' + */ + public default void disposeKieSession(PolicySession policySession) {} - /** - * This method is called after 'KieSession.destroy()' is called - * - * @param policySession the 'PolicySession' object that wrapped the - * 'KieSession' - */ - public default void destroyKieSession(PolicySession policySession) {} + /** + * This method is called after 'KieSession.destroy()' is called. + * + * @param policySession the 'PolicySession' object that wrapped the + * 'KieSession' + */ + public default void destroyKieSession(PolicySession policySession) {} } diff --git a/policy-core/src/main/java/org/onap/policy/drools/core/jmx/PdpJmx.java b/policy-core/src/main/java/org/onap/policy/drools/core/jmx/PdpJmx.java index 19f6afb4..e1a89752 100644 --- a/policy-core/src/main/java/org/onap/policy/drools/core/jmx/PdpJmx.java +++ b/policy-core/src/main/java/org/onap/policy/drools/core/jmx/PdpJmx.java @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * policy-core * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * 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. @@ -24,29 +24,29 @@ import java.util.concurrent.atomic.AtomicLong; public class PdpJmx implements PdpJmxMBean { - private static PdpJmx instance = new PdpJmx(); - private final AtomicLong updates = new AtomicLong(); - private final AtomicLong actions = new AtomicLong(); + private static PdpJmx instance = new PdpJmx(); + private final AtomicLong updates = new AtomicLong(); + private final AtomicLong actions = new AtomicLong(); - public static PdpJmx getInstance() { - return instance; - } + public static PdpJmx getInstance() { + return instance; + } - @Override - public long getUpdates(){ - return updates.longValue(); - } + @Override + public long getUpdates() { + return updates.longValue(); + } - @Override - public long getRulesFired(){ - return actions.longValue(); - } + @Override + public long getRulesFired() { + return actions.longValue(); + } - public void updateOccured(){ - updates.incrementAndGet(); - } + public void updateOccured() { + updates.incrementAndGet(); + } - public void ruleFired(){ - actions.incrementAndGet(); - } + public void ruleFired() { + actions.incrementAndGet(); + } } diff --git a/policy-core/src/main/java/org/onap/policy/drools/core/jmx/PdpJmxListener.java b/policy-core/src/main/java/org/onap/policy/drools/core/jmx/PdpJmxListener.java index 9136defb..04f0dfd0 100644 --- a/policy-core/src/main/java/org/onap/policy/drools/core/jmx/PdpJmxListener.java +++ b/policy-core/src/main/java/org/onap/policy/drools/core/jmx/PdpJmxListener.java @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * policy-core * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * 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. @@ -35,36 +35,41 @@ import org.slf4j.LoggerFactory; public class PdpJmxListener { - public static final Logger logger = LoggerFactory.getLogger(PdpJmxListener.class); + public static final Logger logger = LoggerFactory.getLogger(PdpJmxListener.class); - private PdpJmxListener() { - } + private PdpJmxListener() { + } - public static void stop() { - final MBeanServer server = ManagementFactory.getPlatformMBeanServer(); - try { - server.unregisterMBean(new ObjectName("PolicyEngine:type=PdpJmx")); - } catch (MBeanRegistrationException | InstanceNotFoundException - | MalformedObjectNameException e) { - logger.error("PdpJmxListener.stop(): " + - "Could not unregister PolicyEngine:type=PdpJmx MBean " + - "with the MBean server", e); - } - - } + /** + * Stop the listener. + */ + public static void stop() { + final MBeanServer server = ManagementFactory.getPlatformMBeanServer(); + try { + server.unregisterMBean(new ObjectName("PolicyEngine:type=PdpJmx")); + } catch (MBeanRegistrationException | InstanceNotFoundException + | MalformedObjectNameException e) { + logger.error("PdpJmxListener.stop(): " + + "Could not unregister PolicyEngine:type=PdpJmx MBean " + + "with the MBean server", e); + } - - public static void start() { - final MBeanServer server = ManagementFactory.getPlatformMBeanServer(); - try { - server.registerMBean(PdpJmx.getInstance(), new ObjectName("PolicyEngine:type=PdpJmx")); - } catch (InstanceAlreadyExistsException | MBeanRegistrationException - | NotCompliantMBeanException | MalformedObjectNameException e) { - logger.error("PdpJmxListener.start(): " + - "Could not unregister PolicyEngine:type=PdpJmx MBean " + - "with the MBean server", e); - } - - } + } + + /** + * Start. + */ + public static void start() { + final MBeanServer server = ManagementFactory.getPlatformMBeanServer(); + try { + server.registerMBean(PdpJmx.getInstance(), new ObjectName("PolicyEngine:type=PdpJmx")); + } catch (InstanceAlreadyExistsException | MBeanRegistrationException + | NotCompliantMBeanException | MalformedObjectNameException e) { + logger.error("PdpJmxListener.start(): " + + "Could not unregister PolicyEngine:type=PdpJmx MBean " + + "with the MBean server", e); + } + + } } diff --git a/policy-core/src/main/java/org/onap/policy/drools/core/jmx/PdpJmxMBean.java b/policy-core/src/main/java/org/onap/policy/drools/core/jmx/PdpJmxMBean.java index 37a9e4dc..d2c05f85 100644 --- a/policy-core/src/main/java/org/onap/policy/drools/core/jmx/PdpJmxMBean.java +++ b/policy-core/src/main/java/org/onap/policy/drools/core/jmx/PdpJmxMBean.java @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * policy-core * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * 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. @@ -22,6 +22,7 @@ package org.onap.policy.drools.core.jmx; public interface PdpJmxMBean { - public long getRulesFired(); - public long getUpdates(); + public long getRulesFired(); + + public long getUpdates(); } diff --git a/policy-core/src/main/java/org/onap/policy/drools/core/lock/Lock.java b/policy-core/src/main/java/org/onap/policy/drools/core/lock/Lock.java index d3764910..de62b24a 100644 --- a/policy-core/src/main/java/org/onap/policy/drools/core/lock/Lock.java +++ b/policy-core/src/main/java/org/onap/policy/drools/core/lock/Lock.java @@ -59,7 +59,7 @@ public class Lock { * The requester was not the owner, nor was it waiting in the queue. */ NOT_FOUND - }; + } /** * The last owner to grab the lock, never {@code null}. @@ -75,6 +75,7 @@ public class Lock { private LinkedHashMap requester2item = new LinkedHashMap<>(5); /** + * Constructor. * * @param owner the current owner of this lock */ @@ -83,6 +84,7 @@ public class Lock { } /** + * Get owner. * * @return the current owner of the lock, or the last owner of the lock, if the lock * is not currently owned. (This will never be {@code null}.) @@ -94,7 +96,7 @@ public class Lock { /** * Adds a new requester to the queue of requesters. * - * @param requester + * @param requester the requester * @param item to be associated with the requester, must not be {@code null} * @return {@code true} if the requester was added, {@code false} if it already owns * the lock or is already in the queue @@ -123,7 +125,7 @@ public class Lock { * item associated with the requester, it is unable to notify the new owner that it's * the new owner; that is left up to the code that invokes this method. * - * @param requester + * @param requester the requester * @param newOwner the new owner info is placed here, if the result is RELOCKED * @return the result */ diff --git a/policy-core/src/main/java/org/onap/policy/drools/core/lock/PolicyResourceLockFeatureAPI.java b/policy-core/src/main/java/org/onap/policy/drools/core/lock/PolicyResourceLockFeatureAPI.java index 5aee490f..105d6ec9 100644 --- a/policy-core/src/main/java/org/onap/policy/drools/core/lock/PolicyResourceLockFeatureAPI.java +++ b/policy-core/src/main/java/org/onap/policy/drools/core/lock/PolicyResourceLockFeatureAPI.java @@ -26,12 +26,12 @@ import org.onap.policy.drools.utils.OrderedServiceImpl; /** * Resource locks. Each lock has an "owner", which is intended to be unique across a * single instance of a running PolicyEngine. - *

- * This interface provides a way to invoke optional features at various points in the + * + *

This interface provides a way to invoke optional features at various points in the * code. At appropriate points in the application, the code iterates through this list, * invoking these optional methods. - *

- * Implementers may choose to implement a level of locking appropriate to the application. + * + *

Implementers may choose to implement a level of locking appropriate to the application. * For instance, they may choose to implement an engine-wide locking scheme, or they may * choose to implement a global locking scheme (e.g., through a shared DB). */ @@ -45,7 +45,6 @@ public interface PolicyResourceLockFeatureAPI extends OrderedService { new OrderedServiceImpl<>(PolicyResourceLockFeatureAPI.class); /** - * * Result of a requested operation. */ public enum OperResult { @@ -65,7 +64,7 @@ public interface PolicyResourceLockFeatureAPI extends OrderedService { /** * The implementer did not handle the request; additional locking logic should - * be performed. + * be performed. */ OPER_UNHANDLED } @@ -73,8 +72,8 @@ public interface PolicyResourceLockFeatureAPI extends OrderedService { /** * This method is called before a lock is acquired on a resource. * - * @param resourceId - * @param owner + * @param resourceId resource id + * @param owner owner * @param holdSec the amount of time, in seconds, that the lock should be held * @return the result, where OPER_DENIED indicates that the lock is currently * held by another owner @@ -86,8 +85,8 @@ public interface PolicyResourceLockFeatureAPI extends OrderedService { /** * This method is called after a lock for a resource has been acquired or denied. * - * @param resourceId - * @param owner + * @param resourceId resource id + * @param owner owner * @param locked {@code true} if the lock was acquired, {@code false} if it was denied * @return {@code true} if the implementer handled the request, {@code false} * otherwise @@ -100,8 +99,8 @@ public interface PolicyResourceLockFeatureAPI extends OrderedService { * This method is called before a lock is refreshed on a resource. It may be invoked * repeatedly to extend the time that a lock is held. * - * @param resourceId - * @param owner + * @param resourceId resource id + * @param owner owner * @param holdSec the amount of time, in seconds, that the lock should be held * @return the result, where OPER_DENIED indicates that the resource is not * currently locked by the given owner @@ -114,8 +113,8 @@ public interface PolicyResourceLockFeatureAPI extends OrderedService { * This method is called after a lock for a resource has been refreshed (or after the * refresh has been denied). * - * @param resourceId - * @param owner + * @param resourceId resource id + * @param owner owner * @param locked {@code true} if the lock was acquired, {@code false} if it was denied * @return {@code true} if the implementer handled the request, {@code false} * otherwise @@ -127,8 +126,8 @@ public interface PolicyResourceLockFeatureAPI extends OrderedService { /** * This method is called before a lock on a resource is released. * - * @param resourceId - * @param owner + * @param resourceId resource id + * @param owner owner * @return the result, where OPER_DENIED indicates that the lock is not * currently held by the given owner */ @@ -139,8 +138,8 @@ public interface PolicyResourceLockFeatureAPI extends OrderedService { /** * This method is called after a lock on a resource is released. * - * @param resourceId - * @param owner + * @param resourceId resource id + * @param owner owner * @param unlocked {@code true} if the lock was released, {@code false} if the owner * did not have a lock on the resource * @return {@code true} if the implementer handled the request, {@code false} @@ -153,7 +152,7 @@ public interface PolicyResourceLockFeatureAPI extends OrderedService { /** * This method is called before a check is made to determine if a resource is locked. * - * @param resourceId + * @param resourceId resource id * @return the result, where OPER_ACCEPTED indicates that the resource is * locked, while OPER_DENIED indicates that it is not */ @@ -165,8 +164,8 @@ public interface PolicyResourceLockFeatureAPI extends OrderedService { * This method is called before a check is made to determine if a particular owner * holds the lock on a resource. * - * @param resourceId - * @param owner + * @param resourceId resource id + * @param owner owner * @return the result, where OPER_ACCEPTED indicates that the resource is * locked by the given owner, while OPER_DENIED indicates that it is * not diff --git a/policy-core/src/main/java/org/onap/policy/drools/core/lock/PolicyResourceLockManager.java b/policy-core/src/main/java/org/onap/policy/drools/core/lock/PolicyResourceLockManager.java index 8e13ced4..3612b29d 100644 --- a/policy-core/src/main/java/org/onap/policy/drools/core/lock/PolicyResourceLockManager.java +++ b/policy-core/src/main/java/org/onap/policy/drools/core/lock/PolicyResourceLockManager.java @@ -47,6 +47,7 @@ public class PolicyResourceLockManager extends SimpleLockManager { } /** + * Get instance. * * @return the manager singleton */ @@ -61,7 +62,7 @@ public class PolicyResourceLockManager extends SimpleLockManager { /** * Sets the factory to be used by junit tests. * - * @param factory + * @param factory the factory */ protected static void setFactory(Factory factory) { PolicyResourceLockManager.factory = factory; @@ -134,6 +135,7 @@ public class PolicyResourceLockManager extends SimpleLockManager { } /** + * Is locked. * * @throws IllegalArgumentException if the resourceId is {@code null} */ @@ -146,13 +148,14 @@ public class PolicyResourceLockManager extends SimpleLockManager { return doBoolIntercept(impl -> impl.beforeIsLocked(resourceId), () -> - // implementer didn't do the work - defer to the superclass + // implementer didn't do the work - defer to the superclass super.isLocked(resourceId) ); } /** - * + * Is locked by. + * * @throws IllegalArgumentException if the resourceId or owner is {@code null} */ @Override @@ -177,8 +180,8 @@ public class PolicyResourceLockManager extends SimpleLockManager { * of them returns a result other than OPER_UNHANDLED. If they all return * OPER_UNHANDLED, then it returns the result of applying the default function. * - * @param interceptFunc - * @param defaultFunc + * @param interceptFunc intercept function + * @param defaultFunc default function * @return {@code true} if success, {@code false} otherwise */ private boolean doBoolIntercept(Function interceptFunc, @@ -199,8 +202,8 @@ public class PolicyResourceLockManager extends SimpleLockManager { * @param continueValue if the implementer returns this value, then it continues to * check addition implementers * @param func function to be applied to the implementers - * @return first non-null value returned by an implementer, continueValue if - * they all returned continueValue + * @return first non-null value returned by an implementer, continueValue if + * they all returned continueValue */ private static T doIntercept(T continueValue, Function func) { @@ -241,6 +244,7 @@ public class PolicyResourceLockManager extends SimpleLockManager { public static class Factory { /** + * Get implementers. * * @return the list of feature implementers */ diff --git a/policy-core/src/main/java/org/onap/policy/drools/core/lock/SimpleLockManager.java b/policy-core/src/main/java/org/onap/policy/drools/core/lock/SimpleLockManager.java index 243ba3cb..427fbbc6 100644 --- a/policy-core/src/main/java/org/onap/policy/drools/core/lock/SimpleLockManager.java +++ b/policy-core/src/main/java/org/onap/policy/drools/core/lock/SimpleLockManager.java @@ -67,7 +67,7 @@ public class SimpleLockManager { private final SortedSet locks = new TreeSet<>(); /** - * + * Constructor. */ public SimpleLockManager() { super(); @@ -78,8 +78,8 @@ public class SimpleLockManager { * it's the same owner; the same owner can use {@link #refresh(String, String, int) * refresh()}, instead, to extend a lock on a resource. * - * @param resourceId - * @param owner + * @param resourceId resource id + * @param owner owner * @param holdSec the amount of time, in seconds, that the lock should be held * @return {@code true} if locked, {@code false} if the resource is already locked by * a different owner @@ -97,10 +97,10 @@ public class SimpleLockManager { boolean locked = false; - synchronized(locker) { + synchronized (locker) { cleanUpLocks(); - if(!resource2data.containsKey(resourceId)) { + if (!resource2data.containsKey(resourceId)) { Data data = new Data(owner, resourceId, currentTime.getMillis() + TimeUnit.SECONDS.toMillis(holdSec)); resource2data.put(resourceId, data); locks.add(data); @@ -116,8 +116,8 @@ public class SimpleLockManager { /** * Attempts to refresh a lock on a resource. * - * @param resourceId - * @param owner + * @param resourceId resource id + * @param owner owner * @param holdSec the amount of time, in seconds, that the lock should be held * @return {@code true} if locked, {@code false} if the resource is not currently * locked by the given owner @@ -135,7 +135,7 @@ public class SimpleLockManager { boolean refreshed = false; - synchronized(locker) { + synchronized (locker) { cleanUpLocks(); Data existingLock = resource2data.get(resourceId); @@ -159,8 +159,8 @@ public class SimpleLockManager { /** * Unlocks a resource. * - * @param resourceId - * @param owner + * @param resourceId resource id + * @param owner owner * @return {@code true} if unlocked, {@code false} if the given owner does not * currently hold a lock on the resource * @throws IllegalArgumentException if the resourceId or owner is {@code null} @@ -176,11 +176,11 @@ public class SimpleLockManager { Data data; - synchronized(locker) { + synchronized (locker) { cleanUpLocks(); - if((data = resource2data.get(resourceId)) != null) { - if(owner.equals(data.getOwner())) { + if ((data = resource2data.get(resourceId)) != null) { + if (owner.equals(data.getOwner())) { resource2data.remove(resourceId); locks.remove(data); @@ -199,7 +199,7 @@ public class SimpleLockManager { /** * Determines if a resource is locked by anyone. * - * @param resourceId + * @param resourceId resource id * @return {@code true} if the resource is locked, {@code false} otherwise * @throws IllegalArgumentException if the resourceId is {@code null} */ @@ -211,7 +211,7 @@ public class SimpleLockManager { boolean locked; - synchronized(locker) { + synchronized (locker) { cleanUpLocks(); locked = resource2data.containsKey(resourceId); @@ -225,8 +225,8 @@ public class SimpleLockManager { /** * Determines if a resource is locked by a particular owner. * - * @param resourceId - * @param owner + * @param resourceId resource id + * @param owner owner * @return {@code true} if the resource is locked, {@code false} otherwise * @throws IllegalArgumentException if the resourceId or owner is {@code null} */ @@ -242,7 +242,7 @@ public class SimpleLockManager { Data data; - synchronized(locker) { + synchronized (locker) { cleanUpLocks(); data = resource2data.get(resourceId); @@ -260,14 +260,13 @@ public class SimpleLockManager { private void cleanUpLocks() { long tcur = currentTime.getMillis(); - synchronized(locker) { + synchronized (locker) { Iterator it = locks.iterator(); - while(it.hasNext()) { - Data d = it.next(); - if(d.getExpirationMs() <= tcur) { + while (it.hasNext()) { + Data data = it.next(); + if (data.getExpirationMs() <= tcur) { it.remove(); - resource2data.remove(d.getResource()); - + resource2data.remove(data.getResource()); } else { break; } @@ -307,10 +306,11 @@ public class SimpleLockManager { private final long texpireMs; /** + * Constructor. * - * @param resource - * @param owner - * @param texpireMs + * @param resource resource + * @param owner owner + * @param texpireMs time expire in milliseconds */ public Data(String owner, String resource, long texpireMs) { this.owner = owner; @@ -331,12 +331,14 @@ public class SimpleLockManager { } @Override - public int compareTo(Data o) { - int diff = Long.compare(texpireMs, o.texpireMs); - if(diff == 0) - diff = resource.compareTo(o.resource); - if(diff == 0) - diff = owner.compareTo(o.owner); + public int compareTo(Data data) { + int diff = Long.compare(texpireMs, data.texpireMs); + if (diff == 0) { + diff = resource.compareTo(data.resource); + } + if (diff == 0) { + diff = owner.compareTo(data.owner); + } return diff; } @@ -352,23 +354,30 @@ public class SimpleLockManager { @Override public boolean equals(Object obj) { - if (this == obj) + if (this == obj) { return true; - if (obj == null) + } + if (obj == null) { return false; - if (getClass() != obj.getClass()) + } + if (getClass() != obj.getClass()) { return false; + } Data other = (Data) obj; if (owner == null) { - if (other.owner != null) + if (other.owner != null) { return false; - } else if (!owner.equals(other.owner)) + } + } else if (!owner.equals(other.owner)) { return false; + } if (resource == null) { - if (other.resource != null) + if (other.resource != null) { return false; - } else if (!resource.equals(other.resource)) + } + } else if (!resource.equals(other.resource)) { return false; + } return (texpireMs == other.texpireMs); } } diff --git a/policy-core/src/main/java/org/onap/policy/drools/util/FeatureEnabledChecker.java b/policy-core/src/main/java/org/onap/policy/drools/util/FeatureEnabledChecker.java index e604c30a..3bbfdcf4 100644 --- a/policy-core/src/main/java/org/onap/policy/drools/util/FeatureEnabledChecker.java +++ b/policy-core/src/main/java/org/onap/policy/drools/util/FeatureEnabledChecker.java @@ -28,7 +28,7 @@ import java.util.Properties; public class FeatureEnabledChecker { /** - * + * Constructor. */ private FeatureEnabledChecker() { super(); diff --git a/policy-core/src/main/java/org/onap/policy/drools/util/KieUtils.java b/policy-core/src/main/java/org/onap/policy/drools/util/KieUtils.java index 16e166d2..a3efe433 100644 --- a/policy-core/src/main/java/org/onap/policy/drools/util/KieUtils.java +++ b/policy-core/src/main/java/org/onap/policy/drools/util/KieUtils.java @@ -37,16 +37,16 @@ import org.kie.api.builder.model.KieModuleModel; import org.kie.scanner.MavenRepository; /** - * Kie related utilities + * Kie related utilities. */ public class KieUtils { - private KieUtils() { - throw new IllegalStateException("Utility class"); - } - + private KieUtils() { + throw new IllegalStateException("Utility class"); + } + /** - * Installs a rules artifact in the local maven repository + * Installs a rules artifact in the local maven repository. * * @param kmodule kmodule specification * @param pom pom @@ -56,7 +56,8 @@ public class KieUtils { * @return releaseId result o a sucessful installation * @throws IOException error accessing necessary resources */ - public static ReleaseId installArtifact(String kmodule, String pom, String drlKJarPath, String drl) throws IOException { + public static ReleaseId installArtifact(String kmodule, String pom, String drlKJarPath, + String drl) throws IOException { KieModuleModel kieModule = KieModuleModelImpl.fromXML(kmodule); final KieFileSystem kieFileSystem = KieServices.Factory.get().newKieFileSystem(); @@ -72,15 +73,15 @@ public class KieUtils { pomFile.deleteOnExit(); ReleaseId releaseId = kieBuilder.getKieModule().getReleaseId(); - MavenRepository.getMavenRepository(). - installArtifact(releaseId, + MavenRepository.getMavenRepository() + .installArtifact(releaseId, (InternalKieModule) kieBuilder.getKieModule(), pomFile); return releaseId; } /** - * Installs a rules artifact in the local maven repository + * Installs a rules artifact in the local maven repository. * * @param kmodule kmodule specification * @param pom pom @@ -101,16 +102,17 @@ public class KieUtils { KieBuilder kieBuilder = kieBuild(kieFileSystem); ReleaseId releaseId = kieBuilder.getKieModule().getReleaseId(); - MavenRepository.getMavenRepository(). - installArtifact(releaseId, (InternalKieModule) kieBuilder.getKieModule(), pom); + MavenRepository.getMavenRepository() + .installArtifact(releaseId, (InternalKieModule) kieBuilder.getKieModule(), pom); return releaseId; } private static KieBuilder kieBuild(KieFileSystem kieFileSystem) { KieBuilder kieBuilder = KieServices.Factory.get().newKieBuilder(kieFileSystem); List messages = kieBuilder.buildAll().getResults().getMessages(); - if (messages != null && !messages.isEmpty()) + if (messages != null && !messages.isEmpty()) { throw new IllegalArgumentException(messages.toString()); + } return kieBuilder; } } -- cgit 1.2.3-korg