Copyright (C) 2009-2013 Barchart, Inc. All rights reserved. Licensed under the OSI BSD License. http://www.opensource.org/licenses/bsd-license.php
/** * Copyright (C) 2009-2013 Barchart, Inc. <http://www.barchart.com/> * * All rights reserved. Licensed under the OSI BSD License. * * http://www.opensource.org/licenses/bsd-license.php */
package com.barchart.udt.lib; import java.util.List; import org.slf4j.Logger; import org.slf4j.LoggerFactory;
default library loader implementation;

tries to load native libraries by extracting them from from 3 possible class path locations, in the following order:

1) release : JAR packaged library

2) staging : NAR exploded class path library

3) testing : CDT exploded class path library

/** * default library loader implementation; * <p> * tries to load native libraries by extracting them from from 3 possible class * path locations, in the following order: * <p> * 1) release : JAR packaged library * <p> * 2) staging : NAR exploded class path library * <p> * 3) testing : CDT exploded class path library */
public class LibraryLoaderUDT implements LibraryLoader { private final static Logger log = LoggerFactory .getLogger(LibraryLoaderUDT.class);
load using provided extract location
/** * load using provided extract location */
@Override public void load(final String targetFolder) throws Exception { if (PluginPropsUDT.isSupportedPlatform()) { log.info("Platform supported."); } else { throw new IllegalStateException("Unsupported platform."); } if (targetFolder == null || targetFolder.length() == 0) { throw new IllegalStateException("Invalid extract location."); } try { log.info("Loading release libraries."); loadRelease(targetFolder); log.info("Release libraries loaded."); return; } catch (final Throwable e) { log.warn("Release libraries missing: {}", e.getMessage()); } try { log.info("Loading staging libraries."); loadStaging(targetFolder); log.info("Staging libraries loaded."); return; } catch (final Throwable e) { log.warn("Staging libraries missing: {}", e.getMessage()); } try { log.info("Loading testing libraries."); loadTesting(targetFolder); log.info("Testing libraries loaded."); return; } catch (final Throwable e) { log.warn("Testing libraries missing: {}", e.getMessage()); } throw new IllegalStateException("Fatal: library load failed."); } protected void loadAll(final List<String> sourceList, final String targetFolder) throws Exception { /** extract all libraries or fail */ for (final String sourcePath : sourceList) { final String targetPath = targetFolder + sourcePath; ResourceManagerUDT.extractResource(sourcePath, targetPath); } /** try to load only if all are extracted */ for (final String sourcePath : sourceList) { final String targetPath = targetFolder + sourcePath; ResourceManagerUDT.systemLoad(targetPath); } }
try to load from JAR class path library
/** try to load from JAR class path library */
protected void loadRelease(final String targetFolder) throws Exception { final String coreName = VersionUDT.BARCHART_NAME; final List<String> sourceList = PluginPropsUDT .currentReleaseLibraries(coreName); loadAll(sourceList, targetFolder); }
try to load from NAR exploded class path library
/** try to load from NAR exploded class path library */
protected void loadStaging(final String targetFolder) throws Exception { final String coreName = VersionUDT.BARCHART_NAME; final List<String> sourceList = PluginPropsUDT .currentStagingLibraries(coreName); loadAll(sourceList, targetFolder); }
try to load from CDT exploded class path library
/** try to load from CDT exploded class path library */
protected void loadTesting(final String targetFolder) throws Exception { final String coreName = VersionUDT.BARCHART_ARTIFACT + "-" + PluginPropsUDT.currentNarPath(); final List<String> sourceList = PluginPropsUDT .currentTestingLibraries(coreName); loadAll(sourceList, targetFolder); } }