Class DisposablePyObjectAdapter

java.lang.Object
com.inductiveautomation.ignition.common.script.DisposablePyObjectAdapter
All Implemented Interfaces:
org.python.core.adapter.PyObjectAdapter

public class DisposablePyObjectAdapter extends Object implements org.python.core.adapter.PyObjectAdapter
This class exists so that modules can add PyObjectAdapter to the global, static extensible adapter found at Py.getAdapter() in a way that can prevent leaking the module's classloader. The module wraps up their object adapter in this wrapper, and ensures to call dispose() when the module is shut down. This will still cause a memory leak, albeit extremely small: one adapter object per module (re-)start. This is the only way to be able to use this part of the Jython API because they don't provide for removing adapters that have been registered.
  • Constructor Details

    • DisposablePyObjectAdapter

      public DisposablePyObjectAdapter(org.python.core.adapter.PyObjectAdapter delegate)
  • Method Details

    • dispose

      public void dispose()
    • canAdapt

      public boolean canAdapt(Object o)
      Specified by:
      canAdapt in interface org.python.core.adapter.PyObjectAdapter
    • adapt

      public org.python.core.PyObject adapt(Object o)
      Specified by:
      adapt in interface org.python.core.adapter.PyObjectAdapter