src/core/net/sf/basedb/util/uri/http/HttpConnectionManagerActionFactory.java

Code
Comments
Other
Rev Date Author Line
5599 31 Mar 11 nicklas 1 /**
5599 31 Mar 11 nicklas 2   $Id$
5599 31 Mar 11 nicklas 3
5599 31 Mar 11 nicklas 4   Copyright (C) 2011 Nicklas Nordborg
5599 31 Mar 11 nicklas 5
5599 31 Mar 11 nicklas 6   This file is part of BASE - BioArray Software Environment.
5599 31 Mar 11 nicklas 7   Available at http://base.thep.lu.se/
5599 31 Mar 11 nicklas 8
5599 31 Mar 11 nicklas 9   BASE is free software; you can redistribute it and/or
5599 31 Mar 11 nicklas 10   modify it under the terms of the GNU General Public License
5599 31 Mar 11 nicklas 11   as published by the Free Software Foundation; either version 3
5599 31 Mar 11 nicklas 12   of the License, or (at your option) any later version.
5599 31 Mar 11 nicklas 13
5599 31 Mar 11 nicklas 14   BASE is distributed in the hope that it will be useful,
5599 31 Mar 11 nicklas 15   but WITHOUT ANY WARRANTY; without even the implied warranty of
5599 31 Mar 11 nicklas 16   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
5599 31 Mar 11 nicklas 17   GNU General Public License for more details.
5599 31 Mar 11 nicklas 18
5599 31 Mar 11 nicklas 19   You should have received a copy of the GNU General Public License
5599 31 Mar 11 nicklas 20   along with BASE. If not, see <http://www.gnu.org/licenses/>.
5599 31 Mar 11 nicklas 21 */
5599 31 Mar 11 nicklas 22 package net.sf.basedb.util.uri.http;
5599 31 Mar 11 nicklas 23
5599 31 Mar 11 nicklas 24 import net.sf.basedb.core.plugin.About;
5599 31 Mar 11 nicklas 25 import net.sf.basedb.util.extensions.ActionFactory;
5599 31 Mar 11 nicklas 26 import net.sf.basedb.util.extensions.Extension;
5599 31 Mar 11 nicklas 27 import net.sf.basedb.util.extensions.ExtensionsUtil;
5599 31 Mar 11 nicklas 28 import net.sf.basedb.util.extensions.InvokationContext;
5599 31 Mar 11 nicklas 29 import net.sf.basedb.util.uri.ConnectionManagerFactory;
5599 31 Mar 11 nicklas 30
5599 31 Mar 11 nicklas 31 /**
5599 31 Mar 11 nicklas 32   Action factory for http connection manager factory. This factory
5599 31 Mar 11 nicklas 33   will create a singleton instance of {@link HttpConnectionManagerFactory}
5599 31 Mar 11 nicklas 34   upon the first use. This instance will be used for all further
5599 31 Mar 11 nicklas 35   uses of this extension.
5599 31 Mar 11 nicklas 36
5599 31 Mar 11 nicklas 37   @author Nicklas
5599 31 Mar 11 nicklas 38   @since 3.0
5599 31 Mar 11 nicklas 39   @base.modified $Date$
5599 31 Mar 11 nicklas 40 */
5599 31 Mar 11 nicklas 41 public class HttpConnectionManagerActionFactory
5599 31 Mar 11 nicklas 42   implements ActionFactory<ConnectionManagerFactory>
5599 31 Mar 11 nicklas 43 {
5599 31 Mar 11 nicklas 44   
5599 31 Mar 11 nicklas 45   private volatile HttpConnectionManagerFactory factory;
5599 31 Mar 11 nicklas 46   
5599 31 Mar 11 nicklas 47   public HttpConnectionManagerActionFactory()
5599 31 Mar 11 nicklas 48   {}
5599 31 Mar 11 nicklas 49   
5599 31 Mar 11 nicklas 50   /*
5599 31 Mar 11 nicklas 51     From the ActionFactory interface
5599 31 Mar 11 nicklas 52     ---------------------------------
5599 31 Mar 11 nicklas 53   */
5599 31 Mar 11 nicklas 54   @Override
5599 31 Mar 11 nicklas 55   public boolean prepareContext(
5599 31 Mar 11 nicklas 56       InvokationContext<? super ConnectionManagerFactory> context)
5599 31 Mar 11 nicklas 57   {
5599 31 Mar 11 nicklas 58     return true;
5599 31 Mar 11 nicklas 59   }
5599 31 Mar 11 nicklas 60   
5599 31 Mar 11 nicklas 61   @Override
5599 31 Mar 11 nicklas 62   public ConnectionManagerFactory[] getActions(
5599 31 Mar 11 nicklas 63       InvokationContext<? super ConnectionManagerFactory> context)
5599 31 Mar 11 nicklas 64   {
5599 31 Mar 11 nicklas 65     if (factory == null)
5599 31 Mar 11 nicklas 66     {
5599 31 Mar 11 nicklas 67       initFactory(context);
5599 31 Mar 11 nicklas 68     }
5599 31 Mar 11 nicklas 69     return new ConnectionManagerFactory[] { factory };
5599 31 Mar 11 nicklas 70   }
5599 31 Mar 11 nicklas 71   // --------------------------------------------
5599 31 Mar 11 nicklas 72   
6875 20 Apr 15 nicklas 73   private synchronized void initFactory(InvokationContext<? super ConnectionManagerFactory> context)
5599 31 Mar 11 nicklas 74   {
5599 31 Mar 11 nicklas 75     if (factory != null) return;
6875 20 Apr 15 nicklas 76     Extension<?> ext = context.getExtension();
5599 31 Mar 11 nicklas 77     About about = ext.getAbout();
5599 31 Mar 11 nicklas 78     
5599 31 Mar 11 nicklas 79     String id = ext.getId();
5599 31 Mar 11 nicklas 80     String name = ExtensionsUtil.getName(ext);
5599 31 Mar 11 nicklas 81     String description = about != null ? about.getDescription() : null;
5599 31 Mar 11 nicklas 82     
5599 31 Mar 11 nicklas 83     HttpConnectionManagerFactory tmp = new HttpConnectionManagerFactory();
5599 31 Mar 11 nicklas 84     tmp.init(id, name, description);
5599 31 Mar 11 nicklas 85     factory = tmp;
5599 31 Mar 11 nicklas 86   }
5599 31 Mar 11 nicklas 87   
5599 31 Mar 11 nicklas 88 }