return new ProviderBuilder().format( providerDef );
}
protected List<String> doAdd( PlatformBroker platformBroker, boolean doActualInstall )
{
SchemaCatalog catalog = platformBroker.getSchemeCatalog();
String providerName = getOptions().getProviderName();
File jarFile = getLocalJarFile( platformBroker );
platformBroker.retrieveInstallProvider( jarFile.getPath() );
String md5Hash = Misc.getHash( jarFile );
List<String> names = new ArrayList<String>();
Properties providerProperties = getProviderProperties( jarFile );
ProviderDefinition[] providerDefinitions = ProviderDefinition.getProviderDefinitions( providerProperties );
if( providerDefinitions.length == 0 )
throw new IllegalArgumentException( "no provider definition supplied" );
for( ProviderDefinition providerDefinition : providerDefinitions )
{
if( providerName != null && !providerDefinition.getProviderName().equals( providerName ) )
continue;
if( !providerDefinition.getPlatforms().contains( platformBroker.getName() ) )
continue;
String name = providerDefinition.getProviderName();
Map<String, String> propertyMap = providerDefinition.getProviderPropertyMap();
names.add( name );
// make sure, it is actually a usable provider jar
try
{
ProviderDef providerDef = new ProviderDef( catalog.getSchemaDef( options.getSchemaName() ), name, jarFile.getName(), propertyMap );
if( providerDef.getExtends() == null )
new ProviderProxy( platformBroker, providerDef );
}
catch( RuntimeException exception )
{
String addURI = getOptions().getAddURI();
throw new IllegalArgumentException( addURI + " does not return a valid provider jar: " + jarFile.getName(), exception );
}
if( doActualInstall )
catalog.addProviderDef( getOptions().getSchemaName(), name, jarFile.getName(), propertyMap, md5Hash );
}
if( names.size() == 0 )
throw new IllegalArgumentException( "supplied provider definitions not appropriate to platform: " + platformBroker.getName() );