/* * Copyright (C) 2013 Intel Corporation * All rights reserved. */ package com.intel.mtwilson.api; import com.intel.dcsg.cpg.crypto.SimpleKeystore; import com.intel.dcsg.cpg.io.Resource; import com.intel.dcsg.cpg.tls.policy.TlsPolicy; import java.net.URL; import java.util.Iterator; import java.util.ServiceConfigurationError; import java.util.ServiceLoader; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * * To register your factory implementation, create the file * META-INF/services/com.intel.mtwilson.api.ClientFactory and set its contents like this: # My Client Factory Implementation: com.intel.my.app.MyClientFactory * * * @author jbuhacoff */ public class ClientFactory { private static final Logger log = LoggerFactory.getLogger(ClientFactory.class); public static SimpleKeystore createUserInResource(Resource keystore, String username, String password, URL webserviceUrl, TlsPolicy tlsPolicy, String[] roles) { Iterator<ClientFactorySpi> factories = ServiceLoader.load(ClientFactorySpi.class).iterator(); while(factories.hasNext()) { try { ClientFactorySpi factory = factories.next(); log.debug("ClientFactory trying implementation: "+factory.getClass().getName()); SimpleKeystore client = factory.createUserInResource(keystore, username, password, webserviceUrl, tlsPolicy, roles); if( client != null ) { return client; } } catch(ServiceConfigurationError e) { log.error(e.toString()); } } log.error("No implementation available for: "+ClientFactorySpi.class.getName()); return null; } public static MtWilson clientForUserInResource(Resource keystore, String username, String password, URL webserviceUrl, TlsPolicy tlsPolicy) { Iterator<ClientFactorySpi> factories = ServiceLoader.load(ClientFactorySpi.class).iterator(); while(factories.hasNext()) { try { ClientFactorySpi factory = factories.next(); MtWilson client = factory.clientForUserInResource(keystore, username, password, webserviceUrl, tlsPolicy); if( client != null ) { return client; } } catch(ServiceConfigurationError e) { log.error(e.toString()); } } log.error("No implementation available for: "+ClientFactorySpi.class.getName()); return null; } }