|  | /* | 
|  | * $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"); | 
|  | } | 
|  | } | 
|  | } |