/** * File: GroupMembershipNamingServiceFactory.java * Content: returns the GroupMembershipNamingService instance for a given configuration file * Author: LuisM Pena * Date: 5th December 2000 * Version: 0.29.00 * Last change: * **/ package sensei.gmns; import sensei.middleware.gmns.GroupMembershipNamingService; import sensei.middleware.gmns.GMNSnarrower; import sensei.middleware.gms.GMSnarrower; import sensei.middleware.util.ObjectsHandling; import sensei.util.Configuration; import java.net.URL; import java.io.InputStream; /** * returns the GroupMembershipNamingService instance for a given configuration file * every gmns related there is contacted until one returns a valid gmns instance. * They are contacted in the order specified (host.xxx), and the first one is the * given by the referenceFile or referenceSocket **/ public class GroupMembershipNamingServiceFactory { /** * Loads the GroupMembershipNamingService from the default configuration file * @returns null if no valid GroupMembershipNamingService found **/ public static GroupMembershipNamingService load() { Trace.code("GroupMembershipNamingServiceFactory.java -> GroupMembershipNamingService load ( )"); return load(Configuration.getSingleton()); } /** * Loads the GroupMembershipNamingService specified in the given configuration. * @returns null if no valid GroupMembershipNamingService found **/ public static GroupMembershipNamingService load(Configuration conf) { Trace.code("GroupMembershipNamingServiceFactory.java -> GroupMembershipNamingService load ( Configuration conf )"); GroupMembershipNamingService ret = load(conf.getGMNSHost()); if (ret==null) ret=load(conf.getGMNSHosts()); return ret; } /** * Loads the GroupMembershipNamingService specified from the given GMNShosts * @returns null if no valid GroupMembershipNamingService found **/ public static GroupMembershipNamingService load(Configuration.GMNShost[] hosts) { Trace.code("GroupMembershipNamingServiceFactory.java -> GroupMembershipNamingService load ( Configuration.GMNShost [ ] hosts )"); GroupMembershipNamingService ret=null; for (int i=0;i<hosts.length && ret==null;i++) ret=load(hosts[i]); return ret; } /** * Loads the GroupMembershipNamingService specified in the given GMNShost. * @returns null if no valid GroupMembershipNamingService found **/ public static GroupMembershipNamingService load(Configuration.GMNShost host) { Trace.code("GroupMembershipNamingServiceFactory.java -> GroupMembershipNamingService load ( Configuration.GMNShost host )"); return host.socketSpecified()? load(host.host, host.port) : load(host.url); } /** * Loads the GroupMembershipNamingService specified from the specified url, which * should had been created by a valid GroupMembershipNamingServiceImpl * @returns null if no valid GroupMembershipNamingService found **/ public static GroupMembershipNamingService load(URL url) { Trace.code("GroupMembershipNamingServiceFactory.java -> GroupMembershipNamingService load ( URL url )"); InputStream is = null; GroupMembershipNamingService ret=null; try { is=url.openStream(); if (GMSnarrower.toGroupHandler(ObjectsHandling.readObject(is)).isValidGroup()) ret = GMNSnarrower.toGroupMembershipNamingService(ObjectsHandling.readObject(is)); } catch (Exception ex) { ret=null; Trace.handledException(ex); } finally { if (is!=null) try{is.close();}catch(Exception ex){} } return ret; } /** * Loads the GroupMembershipNamingService specified from the specified port, which * should had been created by a valid GroupMembershipNamingServiceImpl * @returns null if no valid GroupMembershipNamingService found **/ public static GroupMembershipNamingService load(String host, int port) { Trace.code("GroupMembershipNamingServiceFactory.java -> GroupMembershipNamingService load ( String host , int port )"); GMNSreferenceListener socket = new GMNSreferenceListener(host, port); GroupMembershipNamingService ret=null; try { if (socket.getGroup()!=null && socket.getGroup().isValidGroup()) ret = socket.getGMSN(); } catch (Exception ex) { ret=null; Trace.handledException(ex); } return ret; } }