~jstys-z/helioviewer.org/timeline

« back to all changes in this revision

Viewing changes to timeline/Highstock-1.3.10/exporting-server/java/highcharts-export/highcharts-export-convert/src/main/java/com/highcharts/export/pool/BlockingQueuePool.java

  • Committer: Jeff Stys
  • Date: 2014-04-21 12:46:26 UTC
  • Revision ID: jstys@sesda3.com-20140421124626-2332pb2dyjc33jxi
Proof-of-concept version of Data Coverage Timeline using Highchart/Highstock javascript library.  Changes to getDataCoverage API in order to feed the necessary data to the Timeline

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
package com.highcharts.export.pool;
 
2
 
 
3
import java.util.concurrent.LinkedBlockingQueue;
 
4
import java.util.concurrent.TimeUnit;
 
5
 
 
6
 
 
7
public class BlockingQueuePool<T> extends AbstractPool<T>{
 
8
 
 
9
        LinkedBlockingQueue<T> linkQueue;
 
10
        /**
 
11
         * @param factory
 
12
         * @param number
 
13
         * @throws PoolException
 
14
         */
 
15
 
 
16
        public BlockingQueuePool(ObjectFactory<T> factory, int number, int maxWait, long retentionTime) throws PoolException {
 
17
                super(factory, number, maxWait, retentionTime);
 
18
                queue = new LinkedBlockingQueue<T>();
 
19
                linkQueue = (LinkedBlockingQueue<T>) queue;
 
20
        }
 
21
 
 
22
 
 
23
        @Override
 
24
        public T borrowObject() throws InterruptedException, PoolException {
 
25
                T object = linkQueue.poll(maxWait, TimeUnit.MILLISECONDS);
 
26
                if (object == null) {
 
27
                        throw new PoolException();
 
28
                }
 
29
                poolSize.getAndDecrement();
 
30
 
 
31
                return object;
 
32
        }
 
33
 
 
34
        @Override
 
35
        public void returnObject(T object, boolean validate) throws InterruptedException {
 
36
                if (object == null) {
 
37
                        return;
 
38
                }
 
39
 
 
40
                boolean valid = ( !validate || objectFactory.validate(object)) ? true : false;
 
41
 
 
42
                if (!valid) {
 
43
                        destroyObject(object);
 
44
                } else {
 
45
                        objectFactory.passivate(object);
 
46
                        linkQueue.offer(object, maxWait, TimeUnit.MILLISECONDS);
 
47
                        poolSize.incrementAndGet();
 
48
                }
 
49
        }
 
50
 
 
51
 
 
52
}