blob: bb6bffe6f78c61eb7259c58b277895c4600032ad [file] [log] [blame]
/*
* $Id: NativeSupport.java 38 2012-01-04 22:44:15Z andre@naef.com $
* See LICENSE.txt for license terms.
*/
package com.naef.jnlua;
/**
* Loads the JNLua native library.
*
* The class provides and configures a default loader implementation that loads
* the JNLua native library by means of the <code>System.loadLibrary</code>
* method. In some situations, you may want to override this behavior. For
* example, when using JNLua as an OSGi bundle, the native library is loaded by
* the OSGi runtime. Therefore, the OSGi bundle activator replaces the loader by
* a no-op implementaion. Note that the loader must be configured before
* LuaState is accessed.
*/
public final class NativeSupport {
// -- Static
private static final NativeSupport INSTANCE = new NativeSupport();
// -- State
private Loader loader = new DefaultLoader();
/**
* Returns the instance.
*
* @return the instance
*/
public static NativeSupport getInstance() {
return INSTANCE;
}
// -- Construction
/**
* Private constructor to prevent external instantiation.
*/
private NativeSupport() {
}
// -- Properties
/**
* Return the native library loader.
*
* @return the loader
*/
public Loader getLoader() {
return loader;
}
/**
* Sets the native library loader.
*
* @param loader
* the loader
*/
public void setLoader(Loader loader) {
if (loader == null) {
throw new NullPointerException("loader must not be null");
}
this.loader = loader;
}
// -- Member types
/**
* Loads the library.
*/
public interface Loader {
public void load();
}
private class DefaultLoader implements Loader {
@Override
public void load() {
System.loadLibrary("jnlua52");
}
}
}