| /* |
| * $Id: NativeSupport.java 121 2012-01-22 01:40:14Z 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("jnlua5.1"); |
| } |
| } |
| } |