X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=cadi%2Fcore%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Faaf%2Fcadi%2Futil%2FPool.java;h=72d09bfe462a5dc7868412d27e2044a697e0c7de;hb=1296352d8eafee57f982a4342ad79ada4aa56d28;hp=156397b60feb2e4a943ed97d89927a122fffac9e;hpb=4b5a7d721d994a49057e9bfb403c7bff1b376660;p=aaf%2Fauthz.git diff --git a/cadi/core/src/main/java/org/onap/aaf/cadi/util/Pool.java b/cadi/core/src/main/java/org/onap/aaf/cadi/util/Pool.java index 156397b6..72d09bfe 100644 --- a/cadi/core/src/main/java/org/onap/aaf/cadi/util/Pool.java +++ b/cadi/core/src/main/java/org/onap/aaf/cadi/util/Pool.java @@ -7,9 +7,9 @@ * 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. @@ -21,7 +21,7 @@ /* * Pool - * + * * Author: Jonathan * 5/27/2011 */ @@ -35,29 +35,29 @@ import org.onap.aaf.cadi.CadiException; /** * This Class pools on an As-Needed-Basis any particular kind of class, which is * quite suitable for expensive operations. - * + * * The user calls "get" on a Pool, and if a waiting resource (T) is available, * it will be returned. Otherwise, one will be created with the "Creator" class * (must be defined for (T)). - * + * * You can Prime the instances to avoid huge startup costs - * + * * The returned "Pooled" object simply has to call "done()" and the object is * returned to the pool. If the developer does not return the object, a memory * leak does not occur. There are no references to the object once "get" is * called. However, the developer who does not return the object when done * obviates the point of the pool, as new Objects are created in place of the * Object not returned when another call to "get" is made. - * + * * There is a cushion of extra objects, currently defaulted to MAX_RANGE. If the * items returned become higher than the MAX_RANGE, the object is allowed to go * out of scope, and be cleaned up. the default can be changed on a per-pool * basis. - * + * * Class revamped for CadiExceptions and Access logging 10/4/2017 - * + * * @author Jonathan - * + * * @param */ public class Pool { @@ -69,7 +69,7 @@ public class Pool { /** * only Simple List needed. - * + * * NOTE TO MAINTAINERS: THIS OBJECT DOES IT'S OWN SYNCHRONIZATION. All * changes that touch list must account for correctly synchronizing list. */ @@ -101,7 +101,7 @@ public class Pool { /** * Create a new Pool, given the implementation of Creator, which must be * able to create/destroy T objects at will. - * + * * @param creator */ public Pool(Creator creator) { @@ -110,7 +110,7 @@ public class Pool { list = new LinkedList<>(); logger = Log.NULL; } - + /** * Attach Pool Logging activities to any other Logging Mechanism. * @param logger @@ -118,7 +118,7 @@ public class Pool { public void setLogger(Log logger) { this.logger = logger; } - + public void log(Object ...objects) { logger.log(objects); } @@ -126,10 +126,10 @@ public class Pool { /** * Preallocate a certain number of T Objects. Useful for services so that * the first transactions don't get hit with all the Object creation costs - * + * * @param lt * @param prime - * @throws CadiException + * @throws CadiException */ public void prime(int prime) throws CadiException { for (int i = 0; i < prime; ++i) { @@ -164,16 +164,16 @@ public class Pool { * This is the essential function for Pool. Get an Object "T" inside a * "Pooled" object. If there is a spare Object, then use it. If not, then * create and pass back. - * + * * This one uses a Null LogTarget - * + * * IMPORTANT: When the use of this object is done (and the object is still * in a valid state), then "done()" should be called immediately to allow * the object to be reused. That is the point of the Pool... - * + * * If the Object is in an invalid state, then "toss()" should be used so the * Pool doesn't pass on invalid objects to others. - * + * * @param lt * @return * @throws CadiException @@ -205,7 +205,7 @@ public class Pool { * state. If not, they are tossed from the Pool. This is valuable to have * when Remote Connections go down, and there is a question on whether the * Pooled Objects are still functional. - * + * * @return */ public boolean validate() { @@ -225,11 +225,11 @@ public class Pool { /** * This is an internal method, used only by the Internal Pooled class. - * + * * The Pooled class "offers" it's Object back after use. It is an * "offer", because Pool will simply destroy and remove the object if it has * more than enough spares. - * + * * @param lt * @param used * @return @@ -253,9 +253,9 @@ public class Pool { * The Creator Interface give the Pool the ability to Create, Destroy and * Validate the Objects it is maintaining. Thus, it is a specially written * Implementation for each type. - * + * * @author Jonathan - * + * * @param */ public interface Creator { @@ -270,7 +270,7 @@ public class Pool { public interface Log { public void log(Object ... o); - + public final static Log NULL = new Log() { @Override public void log(Object ... o) { @@ -281,7 +281,7 @@ public class Pool { * The "Pooled" class is the transient class that wraps the actual Object * T for API use/ It gives the ability to return ("done()", or "toss()") the * Object to the Pool when processing is finished. - * + * * For Safety, i.e. to avoid memory leaks and invalid Object States, there * is a "finalize" method. It is strictly for when coder forgets to return * the object, or perhaps hasn't covered the case during Exceptions or @@ -291,9 +291,9 @@ public class Pool { * However, we don't want Coding Mistakes to put the whole program in an * invalid state, so if something happened such that "done()" or "toss()" * were not called, the resource is still cleaned up as well as possible. - * + * * @author Jonathan - * + * * @param */ public static class Pooled { @@ -302,7 +302,7 @@ public class Pool { /** * Create the Wrapping Object Pooled. - * + * * @param t * @param pool * @param logTarget @@ -316,7 +316,7 @@ public class Pool { /** * This is the key API for the Pool, as calling "done()" offers this * object back to the Pool for reuse. - * + * * Do not use the Pooled object again after calling "done()". */ public void done() { @@ -329,12 +329,12 @@ public class Pool { * The user of the Object may discover that the Object t is no longer in * a valid state. Don't put Garbage back in the Refrigerator... Toss it, * if it's no longer valid. - * + * * toss() is also used for draining the Pool, etc. - * + * * toss() will attempt to destroy the Object by using the Creator * Interface. - * + * */ public void toss() { if (pool != null) { @@ -360,7 +360,7 @@ public class Pool { /** * Get the maximum number of spare objects allowed at any moment - * + * * @return */ public int getMaxRange() { @@ -369,9 +369,9 @@ public class Pool { /** * Set a Max Range for numbers of spare objects waiting to be used. - * + * * No negative numbers are allowed - * + * * @return */ public void setMaxRange(int max_range) {