blob: 30ca8d972afd1b0cdf1d072a00dba8be309de837 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>StoragePluginRegistryImpl (Drill : 1.20.3 API)</title>
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="StoragePluginRegistryImpl (Drill : 1.20.3 API)";
}
}
catch(err) {
}
//-->
var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":9,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/StoragePluginRegistryImpl.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.PluginNotFoundException.html" title="class in org.apache.drill.exec.store"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../org/apache/drill/exec/store/StoragePluginRulesSupplier.html" title="class in org.apache.drill.exec.store"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/drill/exec/store/StoragePluginRegistryImpl.html" target="_top">Frames</a></li>
<li><a href="StoragePluginRegistryImpl.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">org.apache.drill.exec.store</div>
<h2 title="Class StoragePluginRegistryImpl" class="title">Class StoragePluginRegistryImpl</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li>org.apache.drill.exec.store.StoragePluginRegistryImpl</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/AutoCloseable.html?is-external=true" title="class or interface in java.lang">AutoCloseable</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.Entry.html?is-external=true" title="class or interface in java.util">Map.Entry</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="../../../../../org/apache/drill/exec/store/StoragePlugin.html" title="interface in org.apache.drill.exec.store">StoragePlugin</a>&gt;&gt;, <a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html" title="interface in org.apache.drill.exec.store">StoragePluginRegistry</a></dd>
</dl>
<hr>
<br>
<pre>public class <span class="typeNameLabel">StoragePluginRegistryImpl</span>
extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
implements <a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html" title="interface in org.apache.drill.exec.store">StoragePluginRegistry</a></pre>
<div class="block">Plugin registry. Caches plugin instances which correspond to configurations
stored in persistent storage. Synchronizes the instances and storage.
<p>
Allows multiple "locators" to provide plugin classes such as the "classic"
version for classes in the same class loader, the "system" version for
system-defined plugins.
<p>
provides multiple layers of abstraction:
<ul>
<li>A plugin config/implementation pair (called a "connector" here)
is located by</li>
<li>A connector locator, which also provides bootstrap plugins and can
create a plugin instance from a configuration, which are cached in</li>
<li>The plugin cache, which holds stored, system and ad-hoc plugins. The
stored plugins are backed by</li>
<li>A persistent store: the file system for tests and embedded, ZK for
a distibuted server, or</li>
<li>An ephemeral cache for unnamed configs, such as those created by
a table function.</li>
</ul>
<p>
The idea is to push most functionality into the above abstractions,
leaving overall coordination here.
<p>
Plugins themselves have multiple levels of definitions:
<ul>
<li>The config and plugin classes, provided by the locator.</li>
<li>The <a href="../../../../../org/apache/drill/exec/store/ConnectorHandle.html" title="class in org.apache.drill.exec.store"><code>ConnectorHandle</code></a> which defines the config class and
the locator which can create instances of that class.</li>
<li>A config instance which is typically deserialized from JSON
independent of the implementation class.</li>
<li>A <a href="../../../../../org/apache/drill/exec/store/PluginHandle.html" title="class in org.apache.drill.exec.store"><code>PluginHandle</code></a> which pairs the config with a name as
the unit that the user thinks of as a "plugin." The plugin entry
links to the <code>ConnectorEntry</code> to create the instance lazily
when first requested.</li>
<li>The plugin class instance, which provides long-term state and
which provides the logic for the plugin.</li>
</ul>
<h4>Concurrency</h4>
Drill is a concurrent system; multiple users can attempt to add, remove
and update plugin configurations at the same time. The only good
solution would be to version the plugin configs. Instead, we rely on
the fact that configs change infrequently.
<p>
The code syncs the in-memory cache with the persistent store on each
access (which is actually inefficient and should be reviewed.)
<p>
During refresh, it could be that another thread is doing exactly
the same thing, or even fighting us by changing the config. It is
impossible to ensure a totally consistent answer. The goal is to
make sure that the cache ends up agreeing with the persistent store
as it was at some point in time.
<p>
The <code>PluginsMap</code> class provides in-memory synchronization of the
name and config maps. Careful coding is needed when handling refresh
since another thread could make the same changes.
<p>
Once the planner obtains a plugin, another user could come along and
change the config for that plugin. Drill treats that change as another
plugin: the original one continues to be used by the planner (but see
below), while new queries use the new version.
<p>
Since the config on remote servers may have changed relative to the one
this Foreman used for planning, the plan includes the plugin config
itself (not just a reference to the config.) This works because the
config is usually small.
<h4>Ephemeral Plugins</h4>
An ephemeral plugin handles table functions which create a temporary,
unnamed configuration that is needed only for the execution of a
single query, but which may be used across many threads. If the same
table function is used multiple times, then the same ephemeral plugin
will be used across queries. Ephemeral plugins are are based on the
same connectors as stored plugins, but are not visible to the planner.
They will expire after some time or number.
<p>
The ephemeral store also acts as a graveyard for deleted or changed
plugins. When removing a plugin, the old plugin is moved to ephemeral
storage to allow running queries to locate it. Similarly, when a
new configuration is stored, the corresponding plugin is retrieved
from ephemeral storage, if it exists. This avoids odd cases where
the same plugin exists in both normal and ephemeral storage.
<h4>Caveats</h4>
The main problem with synchronization at present is that plugins
provide a <a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistryImpl.html#close--"><code>close()</code></a> method that, if used, could render the
plugin unusable. Suppose a Cassandra plugin, say, maintains a connection
to a server used across multiple queries and threads. Any change to
the config immediately calls <code>close()</code> on the plugin, even though
it may be in use in planning a query on another thread. Random failures
will result.
<p>
The same issue can affect ephemeral plugins: if the number in the cache
reaches the limit, the registry will start closing old ones, without
knowning if that plugin is actually in use.
<p>
The workaround is to not actually honor the <code>close()</code> call. Longer
term, a reference count is needed.
<h4>Error Handling</h4>
Error handling needs review. Those problems that result from user actions
should be raised as a <code>UserException</code>. Those that violate invariants
as other forms of exception.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="nested.class.summary">
<!-- -->
</a>
<h3>Nested Class Summary</h3>
<ul class="blockList">
<li class="blockList"><a name="nested.classes.inherited.from.class.org.apache.drill.exec.store.StoragePluginRegistry">
<!-- -->
</a>
<h3>Nested classes/interfaces inherited from interface&nbsp;org.apache.drill.exec.store.<a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html" title="interface in org.apache.drill.exec.store">StoragePluginRegistry</a></h3>
<code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.PluginEncodingException.html" title="class in org.apache.drill.exec.store">StoragePluginRegistry.PluginEncodingException</a>, <a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.PluginException.html" title="class in org.apache.drill.exec.store">StoragePluginRegistry.PluginException</a>, <a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.PluginFilter.html" title="enum in org.apache.drill.exec.store">StoragePluginRegistry.PluginFilter</a>, <a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.PluginNotFoundException.html" title="class in org.apache.drill.exec.store">StoragePluginRegistry.PluginNotFoundException</a></code></li>
</ul>
</li>
</ul>
<!-- =========== FIELD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<ul class="blockList">
<li class="blockList"><a name="fields.inherited.from.class.org.apache.drill.exec.store.StoragePluginRegistry">
<!-- -->
</a>
<h3>Fields inherited from interface&nbsp;org.apache.drill.exec.store.<a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html" title="interface in org.apache.drill.exec.store">StoragePluginRegistry</a></h3>
<code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html#PSTORE_NAME">PSTORE_NAME</a></code></li>
</ul>
</li>
</ul>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistryImpl.html#StoragePluginRegistryImpl-org.apache.drill.exec.server.DrillbitContext-">StoragePluginRegistryImpl</a></span>(<a href="../../../../../org/apache/drill/exec/server/DrillbitContext.html" title="class in org.apache.drill.exec.server">DrillbitContext</a>&nbsp;context)</code>&nbsp;</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistryImpl.html#availablePlugins--">availablePlugins</a></span>()</code>
<div class="block">Returns the set of available plugin names.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistryImpl.html#close--">close</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code><a href="../../../../../org/apache/drill/common/logical/StoragePluginConfig.html" title="class in org.apache.drill.common.logical">StoragePluginConfig</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistryImpl.html#copyConfig-org.apache.drill.common.logical.StoragePluginConfig-">copyConfig</a></span>(<a href="../../../../../org/apache/drill/common/logical/StoragePluginConfig.html" title="class in org.apache.drill.common.logical">StoragePluginConfig</a>&nbsp;orig)</code>
<div class="block">Copy the given storage plugin config so it may be modified.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code><a href="../../../../../org/apache/drill/common/logical/StoragePluginConfig.html" title="class in org.apache.drill.common.logical">StoragePluginConfig</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistryImpl.html#copyConfig-java.lang.String-">copyConfig</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</code>
<div class="block">Copy a stored config so that it can be modified.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>protected static void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistryImpl.html#copyPluginStatus-org.apache.drill.common.logical.StoragePluginConfig-org.apache.drill.common.logical.StoragePluginConfig-">copyPluginStatus</a></span>(<a href="../../../../../org/apache/drill/common/logical/StoragePluginConfig.html" title="class in org.apache.drill.common.logical">StoragePluginConfig</a>&nbsp;oldPluginConfig,
<a href="../../../../../org/apache/drill/common/logical/StoragePluginConfig.html" title="class in org.apache.drill.common.logical">StoragePluginConfig</a>&nbsp;newPluginConfig)</code>
<div class="block">Identifies the enabled status for new storage plugins
config.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code><a href="../../../../../org/apache/drill/common/logical/StoragePluginConfig.html" title="class in org.apache.drill.common.logical">StoragePluginConfig</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistryImpl.html#decode-java.lang.String-">decode</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;json)</code>
<div class="block">Return a config decoded from JSON.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="../../../../../org/apache/drill/common/logical/StoragePluginConfig.html" title="class in org.apache.drill.common.logical">StoragePluginConfig</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistryImpl.html#enabledConfigs--">enabledConfigs</a></span>()</code>
<div class="block">Returns a copy of the set of enabled stored plugin configurations.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistryImpl.html#encode-org.apache.drill.common.logical.StoragePluginConfig-">encode</a></span>(<a href="../../../../../org/apache/drill/common/logical/StoragePluginConfig.html" title="class in org.apache.drill.common.logical">StoragePluginConfig</a>&nbsp;config)</code>&nbsp;</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistryImpl.html#encode-java.lang.String-">encode</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</code>
<div class="block">Return a config encoded as JSON.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code><a href="../../../../../org/apache/drill/common/logical/StoragePluginConfig.html" title="class in org.apache.drill.common.logical">StoragePluginConfig</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistryImpl.html#getDefinedConfig-java.lang.String-">getDefinedConfig</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</code>
<div class="block">Retrieve an available configuration.</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code><a href="../../../../../org/apache/drill/exec/store/dfs/FormatPlugin.html" title="interface in org.apache.drill.exec.store.dfs">FormatPlugin</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistryImpl.html#getFormatPlugin-org.apache.drill.common.logical.StoragePluginConfig-org.apache.drill.common.logical.FormatPluginConfig-">getFormatPlugin</a></span>(<a href="../../../../../org/apache/drill/common/logical/StoragePluginConfig.html" title="class in org.apache.drill.common.logical">StoragePluginConfig</a>&nbsp;storageConfig,
<a href="../../../../../org/apache/drill/common/logical/FormatPluginConfig.html" title="interface in org.apache.drill.common.logical">FormatPluginConfig</a>&nbsp;formatConfig)</code>&nbsp;</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code><a href="../../../../../org/apache/drill/exec/store/dfs/FormatPlugin.html" title="interface in org.apache.drill.exec.store.dfs">FormatPlugin</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistryImpl.html#getFormatPluginByConfig-org.apache.drill.common.logical.StoragePluginConfig-org.apache.drill.common.logical.FormatPluginConfig-">getFormatPluginByConfig</a></span>(<a href="../../../../../org/apache/drill/common/logical/StoragePluginConfig.html" title="class in org.apache.drill.common.logical">StoragePluginConfig</a>&nbsp;storageConfig,
<a href="../../../../../org/apache/drill/common/logical/FormatPluginConfig.html" title="interface in org.apache.drill.common.logical">FormatPluginConfig</a>&nbsp;formatConfig)</code>
<div class="block">Get the Format plugin for the FileSystemPlugin associated with the provided
storage config and format config.</div>
</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code><a href="../../../../../org/apache/drill/exec/store/StoragePlugin.html" title="interface in org.apache.drill.exec.store">StoragePlugin</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistryImpl.html#getPlugin-org.apache.drill.common.logical.StoragePluginConfig-">getPlugin</a></span>(<a href="../../../../../org/apache/drill/common/logical/StoragePluginConfig.html" title="class in org.apache.drill.common.logical">StoragePluginConfig</a>&nbsp;config)</code>&nbsp;</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code><a href="../../../../../org/apache/drill/exec/store/StoragePlugin.html" title="interface in org.apache.drill.exec.store">StoragePlugin</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistryImpl.html#getPlugin-java.lang.String-">getPlugin</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</code>
<div class="block">Get a plugin by name.</div>
</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code><a href="../../../../../org/apache/drill/exec/store/StoragePlugin.html" title="interface in org.apache.drill.exec.store">StoragePlugin</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistryImpl.html#getPluginByConfig-org.apache.drill.common.logical.StoragePluginConfig-">getPluginByConfig</a></span>(<a href="../../../../../org/apache/drill/common/logical/StoragePluginConfig.html" title="class in org.apache.drill.common.logical">StoragePluginConfig</a>&nbsp;config)</code>
<div class="block">Get a plugin by configuration.</div>
</td>
</tr>
<tr id="i15" class="rowColor">
<td class="colFirst"><code><a href="../../../../../org/apache/drill/exec/store/SchemaFactory.html" title="interface in org.apache.drill.exec.store">SchemaFactory</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistryImpl.html#getSchemaFactory--">getSchemaFactory</a></span>()</code>
<div class="block">Get the Schema factory associated with this storage plugin registry.</div>
</td>
</tr>
<tr id="i16" class="altColor">
<td class="colFirst"><code><a href="../../../../../org/apache/drill/common/logical/StoragePluginConfig.html" title="class in org.apache.drill.common.logical">StoragePluginConfig</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistryImpl.html#getStoredConfig-java.lang.String-">getStoredConfig</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</code>
<div class="block">Configs are obtained from the persistent store.</div>
</td>
</tr>
<tr id="i17" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistryImpl.html#init--">init</a></span>()</code>
<div class="block">Initialize the storage plugin registry.</div>
</td>
</tr>
<tr id="i18" class="altColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.Entry.html?is-external=true" title="class or interface in java.util">Map.Entry</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="../../../../../org/apache/drill/exec/store/StoragePlugin.html" title="interface in org.apache.drill.exec.store">StoragePlugin</a>&gt;&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistryImpl.html#iterator--">iterator</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i19" class="rowColor">
<td class="colFirst"><code>com.fasterxml.jackson.databind.ObjectMapper</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistryImpl.html#mapper--">mapper</a></span>()</code>
<div class="block">Object mapper to read/write the JSON form of a plugin.</div>
</td>
</tr>
<tr id="i20" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistryImpl.html#put-java.lang.String-org.apache.drill.common.logical.StoragePluginConfig-">put</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
<a href="../../../../../org/apache/drill/common/logical/StoragePluginConfig.html" title="class in org.apache.drill.common.logical">StoragePluginConfig</a>&nbsp;config)</code>
<div class="block">Store a plugin by name and configuration.</div>
</td>
</tr>
<tr id="i21" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistryImpl.html#putFormatPlugin-java.lang.String-java.lang.String-org.apache.drill.common.logical.FormatPluginConfig-">putFormatPlugin</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;pluginName,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;formatName,
<a href="../../../../../org/apache/drill/common/logical/FormatPluginConfig.html" title="interface in org.apache.drill.common.logical">FormatPluginConfig</a>&nbsp;formatConfig)</code>
<div class="block">Safe way to add or remove a format plugin config from a stored file
system configuration.</div>
</td>
</tr>
<tr id="i22" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistryImpl.html#putJson-java.lang.String-java.lang.String-">putJson</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;json)</code>
<div class="block">Put a storage plugin config from JSON.</div>
</td>
</tr>
<tr id="i23" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistryImpl.html#remove-java.lang.String-">remove</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</code>
<div class="block">Remove a plugin by name</div>
</td>
</tr>
<tr id="i24" class="altColor">
<td class="colFirst"><code>&lt;T extends <a href="../../../../../org/apache/drill/exec/store/StoragePlugin.html" title="interface in org.apache.drill.exec.store">StoragePlugin</a>&gt;<br>T</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistryImpl.html#resolve-org.apache.drill.common.logical.StoragePluginConfig-java.lang.Class-">resolve</a></span>(<a href="../../../../../org/apache/drill/common/logical/StoragePluginConfig.html" title="class in org.apache.drill.common.logical">StoragePluginConfig</a>&nbsp;storageConfig,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;T&gt;&nbsp;desired)</code>&nbsp;</td>
</tr>
<tr id="i25" class="rowColor">
<td class="colFirst"><code>&lt;T extends <a href="../../../../../org/apache/drill/exec/store/dfs/FormatPlugin.html" title="interface in org.apache.drill.exec.store.dfs">FormatPlugin</a>&gt;<br>T</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistryImpl.html#resolveFormat-org.apache.drill.common.logical.StoragePluginConfig-org.apache.drill.common.logical.FormatPluginConfig-java.lang.Class-">resolveFormat</a></span>(<a href="../../../../../org/apache/drill/common/logical/StoragePluginConfig.html" title="class in org.apache.drill.common.logical">StoragePluginConfig</a>&nbsp;storageConfig,
<a href="../../../../../org/apache/drill/common/logical/FormatPluginConfig.html" title="interface in org.apache.drill.common.logical">FormatPluginConfig</a>&nbsp;formatConfig,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;T&gt;&nbsp;desired)</code>
<div class="block">Resolve a storage plugin given a storage plugin config.</div>
</td>
</tr>
<tr id="i26" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistryImpl.html#setEnabled-java.lang.String-boolean-">setEnabled</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
boolean&nbsp;enable)</code>
<div class="block">Set the plugin to the requested enabled state.</div>
</td>
</tr>
<tr id="i27" class="rowColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="../../../../../org/apache/drill/common/logical/StoragePluginConfig.html" title="class in org.apache.drill.common.logical">StoragePluginConfig</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistryImpl.html#storedConfigs--">storedConfigs</a></span>()</code>
<div class="block">Returns a set of all stored plugin configurations,
directly from the persistent store.</div>
</td>
</tr>
<tr id="i28" class="altColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="../../../../../org/apache/drill/common/logical/StoragePluginConfig.html" title="class in org.apache.drill.common.logical">StoragePluginConfig</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistryImpl.html#storedConfigs-org.apache.drill.exec.store.StoragePluginRegistry.PluginFilter-">storedConfigs</a></span>(<a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.PluginFilter.html" title="enum in org.apache.drill.exec.store">StoragePluginRegistry.PluginFilter</a>&nbsp;filter)</code>
<div class="block">Return a possibly-filtered set of plugins from the persistent
store.</div>
</td>
</tr>
<tr id="i29" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistryImpl.html#validatedPut-java.lang.String-org.apache.drill.common.logical.StoragePluginConfig-">validatedPut</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
<a href="../../../../../org/apache/drill/common/logical/StoragePluginConfig.html" title="class in org.apache.drill.common.logical">StoragePluginConfig</a>&nbsp;config)</code>
<div class="block">Like <a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html#put-java.lang.String-org.apache.drill.common.logical.StoragePluginConfig-"><code>StoragePluginRegistry.put(String, StoragePluginConfig)</code></a>, but forces instantiation of the
plugin to verify that the configuration is valid at this moment in time.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Iterable">
<!-- -->
</a>
<h3>Methods inherited from interface&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a></h3>
<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true#forEach-java.util.function.Consumer-" title="class or interface in java.lang">forEach</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true#spliterator--" title="class or interface in java.lang">spliterator</a></code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="StoragePluginRegistryImpl-org.apache.drill.exec.server.DrillbitContext-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>StoragePluginRegistryImpl</h4>
<pre>public&nbsp;StoragePluginRegistryImpl(<a href="../../../../../org/apache/drill/exec/server/DrillbitContext.html" title="class in org.apache.drill.exec.server">DrillbitContext</a>&nbsp;context)</pre>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="init--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>init</h4>
<pre>public&nbsp;void&nbsp;init()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html#init--">StoragePluginRegistry</a></code></span></div>
<div class="block">Initialize the storage plugin registry. Must be called before the registry
is used.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html#init--">init</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html" title="interface in org.apache.drill.exec.store">StoragePluginRegistry</a></code></dd>
</dl>
</li>
</ul>
<a name="copyPluginStatus-org.apache.drill.common.logical.StoragePluginConfig-org.apache.drill.common.logical.StoragePluginConfig-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>copyPluginStatus</h4>
<pre>protected static&nbsp;void&nbsp;copyPluginStatus(<a href="../../../../../org/apache/drill/common/logical/StoragePluginConfig.html" title="class in org.apache.drill.common.logical">StoragePluginConfig</a>&nbsp;oldPluginConfig,
<a href="../../../../../org/apache/drill/common/logical/StoragePluginConfig.html" title="class in org.apache.drill.common.logical">StoragePluginConfig</a>&nbsp;newPluginConfig)</pre>
<div class="block">Identifies the enabled status for new storage plugins
config. If this status is absent in the updater file, the status is kept
from the configs, which are going to be updated</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>oldPluginConfig</code> - current storage plugin config from Persistent Store or bootstrap
config file</dd>
<dd><code>newPluginConfig</code> - new storage plugin config</dd>
</dl>
</li>
</ul>
<a name="put-java.lang.String-org.apache.drill.common.logical.StoragePluginConfig-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>put</h4>
<pre>public&nbsp;void&nbsp;put(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
<a href="../../../../../org/apache/drill/common/logical/StoragePluginConfig.html" title="class in org.apache.drill.common.logical">StoragePluginConfig</a>&nbsp;config)
throws <a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.PluginException.html" title="class in org.apache.drill.exec.store">StoragePluginRegistry.PluginException</a></pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html#put-java.lang.String-org.apache.drill.common.logical.StoragePluginConfig-">StoragePluginRegistry</a></code></span></div>
<div class="block">Store a plugin by name and configuration. If the plugin already exists,
update the plugin. This form directly updates persistent storage. The
in-memory cache is updated on the next refresh. This form will accept an
invalid plugin, which will be disabled upon refresh. Since Drill is
distributed, and plugins work with external systems, the external system
can become invalid at any moment (not just when pugins are updated), so the
model used for <code>put()</code> mimics normal runtime operation.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html#put-java.lang.String-org.apache.drill.common.logical.StoragePluginConfig-">put</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html" title="interface in org.apache.drill.exec.store">StoragePluginRegistry</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - The name of the plugin</dd>
<dd><code>config</code> - The plugin configuration</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.PluginException.html" title="class in org.apache.drill.exec.store">StoragePluginRegistry.PluginException</a></code> - if plugin cannot be created</dd>
</dl>
</li>
</ul>
<a name="validatedPut-java.lang.String-org.apache.drill.common.logical.StoragePluginConfig-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>validatedPut</h4>
<pre>public&nbsp;void&nbsp;validatedPut(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
<a href="../../../../../org/apache/drill/common/logical/StoragePluginConfig.html" title="class in org.apache.drill.common.logical">StoragePluginConfig</a>&nbsp;config)
throws <a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.PluginException.html" title="class in org.apache.drill.exec.store">StoragePluginRegistry.PluginException</a></pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html#validatedPut-java.lang.String-org.apache.drill.common.logical.StoragePluginConfig-">StoragePluginRegistry</a></code></span></div>
<div class="block">Like <a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html#put-java.lang.String-org.apache.drill.common.logical.StoragePluginConfig-"><code>StoragePluginRegistry.put(String, StoragePluginConfig)</code></a>, but forces instantiation of the
plugin to verify that the configuration is valid at this moment in time.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html#validatedPut-java.lang.String-org.apache.drill.common.logical.StoragePluginConfig-">validatedPut</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html" title="interface in org.apache.drill.exec.store">StoragePluginRegistry</a></code></dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.PluginException.html" title="class in org.apache.drill.exec.store">StoragePluginRegistry.PluginException</a></code></dd>
</dl>
</li>
</ul>
<a name="setEnabled-java.lang.String-boolean-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setEnabled</h4>
<pre>public&nbsp;void&nbsp;setEnabled(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
boolean&nbsp;enable)
throws <a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.PluginException.html" title="class in org.apache.drill.exec.store">StoragePluginRegistry.PluginException</a></pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html#setEnabled-java.lang.String-boolean-">StoragePluginRegistry</a></code></span></div>
<div class="block">Set the plugin to the requested enabled state. Does nothing if the plugin
is already in the requested state. If a formerly enabled plugin is
disabled, moves the plugin from the in-memory cache to the ephemeral
store. If a formerly disabled plugin is enabled, verifies that the plugin
can be instantiated as for <code>#verifiedPut()</code>.
<p>
Use this method when changing state. Do not obtain the config and change
the state directly, doing so will make the plugin config inconsistent
with the internal state.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html#setEnabled-java.lang.String-boolean-">setEnabled</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html" title="interface in org.apache.drill.exec.store">StoragePluginRegistry</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - name of the plugin</dd>
<dd><code>enable</code> - <code>true</code> to enable the plugin, <code>false</code> to disable</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.PluginNotFoundException.html" title="class in org.apache.drill.exec.store">StoragePluginRegistry.PluginNotFoundException</a></code> - if the plugin is not found</dd>
<dd><code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.PluginException.html" title="class in org.apache.drill.exec.store">StoragePluginRegistry.PluginException</a></code> - if the plugin name is not valid or
if enabling a plugin and the plugin is not valid</dd>
</dl>
</li>
</ul>
<a name="getStoredConfig-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getStoredConfig</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/drill/common/logical/StoragePluginConfig.html" title="class in org.apache.drill.common.logical">StoragePluginConfig</a>&nbsp;getStoredConfig(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</pre>
<div class="block">Configs are obtained from the persistent store. This method is
called only by the UI to edit a stored plugin; so no benefit to
using the cache. We also want a plugin even if it is disabled,
and disabled plugins do not reside in the cache.
<p>
Note that each call (depending on the store implementation)
may return a distinct instance of the config. The instance will
be equal (unless the stored version changes.) However, other
versions of the store may return the same instance as is in
the cache. So, <b>do not</b> modify the returned config.
To modify the config, call <a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistryImpl.html#copyConfig-java.lang.String-"><code>copyConfig(String)</code></a> instead.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html#getStoredConfig-java.lang.String-">getStoredConfig</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html" title="interface in org.apache.drill.exec.store">StoragePluginRegistry</a></code></dd>
</dl>
</li>
</ul>
<a name="copyConfig-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>copyConfig</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/drill/common/logical/StoragePluginConfig.html" title="class in org.apache.drill.common.logical">StoragePluginConfig</a>&nbsp;copyConfig(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)
throws <a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.PluginException.html" title="class in org.apache.drill.exec.store">StoragePluginRegistry.PluginException</a></pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html#copyConfig-java.lang.String-">StoragePluginRegistry</a></code></span></div>
<div class="block">Copy a stored config so that it can be modified.
<p>
<i><b>Never modify a config stored in the registry!</b></i>
Configs are keyed by name and value; getting a config, then
modifying it, will cause the value maps to become out of sync.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html#copyConfig-java.lang.String-">copyConfig</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html" title="interface in org.apache.drill.exec.store">StoragePluginRegistry</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - name of the storage plugin config to copy</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a copy of the config</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.PluginException.html" title="class in org.apache.drill.exec.store">StoragePluginRegistry.PluginException</a></code> - if the name is undefined</dd>
</dl>
</li>
</ul>
<a name="encode-org.apache.drill.common.logical.StoragePluginConfig-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>encode</h4>
<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;encode(<a href="../../../../../org/apache/drill/common/logical/StoragePluginConfig.html" title="class in org.apache.drill.common.logical">StoragePluginConfig</a>&nbsp;config)</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html#encode-org.apache.drill.common.logical.StoragePluginConfig-">encode</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html" title="interface in org.apache.drill.exec.store">StoragePluginRegistry</a></code></dd>
</dl>
</li>
</ul>
<a name="encode-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>encode</h4>
<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;encode(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)
throws <a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.PluginException.html" title="class in org.apache.drill.exec.store">StoragePluginRegistry.PluginException</a></pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html#encode-java.lang.String-">StoragePluginRegistry</a></code></span></div>
<div class="block">Return a config encoded as JSON.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html#encode-java.lang.String-">encode</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html" title="interface in org.apache.drill.exec.store">StoragePluginRegistry</a></code></dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.PluginException.html" title="class in org.apache.drill.exec.store">StoragePluginRegistry.PluginException</a></code> - if the plugin is undefined</dd>
</dl>
</li>
</ul>
<a name="decode-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>decode</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/drill/common/logical/StoragePluginConfig.html" title="class in org.apache.drill.common.logical">StoragePluginConfig</a>&nbsp;decode(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;json)
throws <a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.PluginEncodingException.html" title="class in org.apache.drill.exec.store">StoragePluginRegistry.PluginEncodingException</a></pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html#decode-java.lang.String-">StoragePluginRegistry</a></code></span></div>
<div class="block">Return a config decoded from JSON.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html#decode-java.lang.String-">decode</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html" title="interface in org.apache.drill.exec.store">StoragePluginRegistry</a></code></dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.PluginEncodingException.html" title="class in org.apache.drill.exec.store">StoragePluginRegistry.PluginEncodingException</a></code> - if the JSON is invalid</dd>
</dl>
</li>
</ul>
<a name="putJson-java.lang.String-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>putJson</h4>
<pre>public&nbsp;void&nbsp;putJson(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;json)
throws <a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.PluginException.html" title="class in org.apache.drill.exec.store">StoragePluginRegistry.PluginException</a></pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html#putJson-java.lang.String-java.lang.String-">StoragePluginRegistry</a></code></span></div>
<div class="block">Put a storage plugin config from JSON. Validates the JSON and the
resulting storage plugin. Use this form for JSON received from
the UI or other external source.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html#putJson-java.lang.String-java.lang.String-">putJson</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html" title="interface in org.apache.drill.exec.store">StoragePluginRegistry</a></code></dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.PluginException.html" title="class in org.apache.drill.exec.store">StoragePluginRegistry.PluginException</a></code> - if the underlying
<a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html#validatedPut-java.lang.String-org.apache.drill.common.logical.StoragePluginConfig-"><code>StoragePluginRegistry.validatedPut(String, StoragePluginConfig)</code></a> fails</dd>
</dl>
</li>
</ul>
<a name="copyConfig-org.apache.drill.common.logical.StoragePluginConfig-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>copyConfig</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/drill/common/logical/StoragePluginConfig.html" title="class in org.apache.drill.common.logical">StoragePluginConfig</a>&nbsp;copyConfig(<a href="../../../../../org/apache/drill/common/logical/StoragePluginConfig.html" title="class in org.apache.drill.common.logical">StoragePluginConfig</a>&nbsp;orig)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html#copyConfig-org.apache.drill.common.logical.StoragePluginConfig-">StoragePluginRegistry</a></code></span></div>
<div class="block">Copy the given storage plugin config so it may be modified.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html#copyConfig-org.apache.drill.common.logical.StoragePluginConfig-">copyConfig</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html" title="interface in org.apache.drill.exec.store">StoragePluginRegistry</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>orig</code> - the storage plugin config to copy</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the copy</dd>
</dl>
</li>
</ul>
<a name="getDefinedConfig-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getDefinedConfig</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/drill/common/logical/StoragePluginConfig.html" title="class in org.apache.drill.common.logical">StoragePluginConfig</a>&nbsp;getDefinedConfig(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html#getDefinedConfig-java.lang.String-">StoragePluginRegistry</a></code></span></div>
<div class="block">Retrieve an available configuration. Returns enabled stored plugins
and system plugins. These configs are those that can be used to
plan a query.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html#getDefinedConfig-java.lang.String-">getDefinedConfig</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html" title="interface in org.apache.drill.exec.store">StoragePluginRegistry</a></code></dd>
</dl>
</li>
</ul>
<a name="getPlugin-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getPlugin</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/drill/exec/store/StoragePlugin.html" title="interface in org.apache.drill.exec.store">StoragePlugin</a>&nbsp;getPlugin(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)
throws <a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.PluginException.html" title="class in org.apache.drill.exec.store">StoragePluginRegistry.PluginException</a></pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html#getPlugin-java.lang.String-">StoragePluginRegistry</a></code></span></div>
<div class="block">Get a plugin by name. Create it based on the PStore saved definition if it doesn't exist.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html#getPlugin-java.lang.String-">getPlugin</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html" title="interface in org.apache.drill.exec.store">StoragePluginRegistry</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - The name of the plugin</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The StoragePlugin instance.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.PluginException.html" title="class in org.apache.drill.exec.store">StoragePluginRegistry.PluginException</a></code> - if plugin cannot be obtained</dd>
</dl>
</li>
</ul>
<a name="getPlugin-org.apache.drill.common.logical.StoragePluginConfig-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getPlugin</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/drill/exec/store/StoragePlugin.html" title="interface in org.apache.drill.exec.store">StoragePlugin</a>&nbsp;getPlugin(<a href="../../../../../org/apache/drill/common/logical/StoragePluginConfig.html" title="class in org.apache.drill.common.logical">StoragePluginConfig</a>&nbsp;config)
throws <a href="../../../../../org/apache/drill/common/exceptions/ExecutionSetupException.html" title="class in org.apache.drill.common.exceptions">ExecutionSetupException</a></pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html#getPlugin-org.apache.drill.common.logical.StoragePluginConfig-">getPlugin</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html" title="interface in org.apache.drill.exec.store">StoragePluginRegistry</a></code></dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../../org/apache/drill/common/exceptions/ExecutionSetupException.html" title="class in org.apache.drill.common.exceptions">ExecutionSetupException</a></code></dd>
</dl>
</li>
</ul>
<a name="getPluginByConfig-org.apache.drill.common.logical.StoragePluginConfig-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getPluginByConfig</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/drill/exec/store/StoragePlugin.html" title="interface in org.apache.drill.exec.store">StoragePlugin</a>&nbsp;getPluginByConfig(<a href="../../../../../org/apache/drill/common/logical/StoragePluginConfig.html" title="class in org.apache.drill.common.logical">StoragePluginConfig</a>&nbsp;config)
throws <a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.PluginException.html" title="class in org.apache.drill.exec.store">StoragePluginRegistry.PluginException</a></pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html#getPluginByConfig-org.apache.drill.common.logical.StoragePluginConfig-">StoragePluginRegistry</a></code></span></div>
<div class="block">Get a plugin by configuration. If it doesn't exist, create it.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html#getPluginByConfig-org.apache.drill.common.logical.StoragePluginConfig-">getPluginByConfig</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html" title="interface in org.apache.drill.exec.store">StoragePluginRegistry</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>config</code> - The configuration for the plugin.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The StoragePlugin instance.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.PluginException.html" title="class in org.apache.drill.exec.store">StoragePluginRegistry.PluginException</a></code> - if plugin cannot be obtained</dd>
</dl>
</li>
</ul>
<a name="remove-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>remove</h4>
<pre>public&nbsp;void&nbsp;remove(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)
throws <a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.PluginException.html" title="class in org.apache.drill.exec.store">StoragePluginRegistry.PluginException</a></pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html#remove-java.lang.String-">StoragePluginRegistry</a></code></span></div>
<div class="block">Remove a plugin by name</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html#remove-java.lang.String-">remove</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html" title="interface in org.apache.drill.exec.store">StoragePluginRegistry</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - The name of the storage plugin to remove</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.PluginException.html" title="class in org.apache.drill.exec.store">StoragePluginRegistry.PluginException</a></code></dd>
</dl>
</li>
</ul>
<a name="storedConfigs--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>storedConfigs</h4>
<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="../../../../../org/apache/drill/common/logical/StoragePluginConfig.html" title="class in org.apache.drill.common.logical">StoragePluginConfig</a>&gt;&nbsp;storedConfigs()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html#storedConfigs--">StoragePluginRegistry</a></code></span></div>
<div class="block">Returns a set of all stored plugin configurations,
directly from the persistent store. Note: the actual
configs may reside in the cache; make a copy before
making any changes.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html#storedConfigs--">storedConfigs</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html" title="interface in org.apache.drill.exec.store">StoragePluginRegistry</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>map of stored plugin configurations</dd>
</dl>
</li>
</ul>
<a name="storedConfigs-org.apache.drill.exec.store.StoragePluginRegistry.PluginFilter-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>storedConfigs</h4>
<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="../../../../../org/apache/drill/common/logical/StoragePluginConfig.html" title="class in org.apache.drill.common.logical">StoragePluginConfig</a>&gt;&nbsp;storedConfigs(<a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.PluginFilter.html" title="enum in org.apache.drill.exec.store">StoragePluginRegistry.PluginFilter</a>&nbsp;filter)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html#storedConfigs-org.apache.drill.exec.store.StoragePluginRegistry.PluginFilter-">StoragePluginRegistry</a></code></span></div>
<div class="block">Return a possibly-filtered set of plugins from the persistent
store.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html#storedConfigs-org.apache.drill.exec.store.StoragePluginRegistry.PluginFilter-">storedConfigs</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html" title="interface in org.apache.drill.exec.store">StoragePluginRegistry</a></code></dd>
</dl>
</li>
</ul>
<a name="enabledConfigs--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>enabledConfigs</h4>
<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="../../../../../org/apache/drill/common/logical/StoragePluginConfig.html" title="class in org.apache.drill.common.logical">StoragePluginConfig</a>&gt;&nbsp;enabledConfigs()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html#enabledConfigs--">StoragePluginRegistry</a></code></span></div>
<div class="block">Returns a copy of the set of enabled stored plugin configurations.
The registry is refreshed against the persistent store prior
to building the map.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html#enabledConfigs--">enabledConfigs</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html" title="interface in org.apache.drill.exec.store">StoragePluginRegistry</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>map of enabled, stored plugin configurations</dd>
</dl>
</li>
</ul>
<a name="putFormatPlugin-java.lang.String-java.lang.String-org.apache.drill.common.logical.FormatPluginConfig-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>putFormatPlugin</h4>
<pre>public&nbsp;void&nbsp;putFormatPlugin(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;pluginName,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;formatName,
<a href="../../../../../org/apache/drill/common/logical/FormatPluginConfig.html" title="interface in org.apache.drill.common.logical">FormatPluginConfig</a>&nbsp;formatConfig)
throws <a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.PluginException.html" title="class in org.apache.drill.exec.store">StoragePluginRegistry.PluginException</a></pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html#putFormatPlugin-java.lang.String-java.lang.String-org.apache.drill.common.logical.FormatPluginConfig-">StoragePluginRegistry</a></code></span></div>
<div class="block">Safe way to add or remove a format plugin config from a stored file
system configuration. Makes a copy of the config, adds/removes the
format plugin, and updates the persistent store with the copy.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html#putFormatPlugin-java.lang.String-java.lang.String-org.apache.drill.common.logical.FormatPluginConfig-">putFormatPlugin</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html" title="interface in org.apache.drill.exec.store">StoragePluginRegistry</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>pluginName</code> - name of the file system storage plugin config to
modify</dd>
<dd><code>formatName</code> - name of the format plugin to modify</dd>
<dd><code>formatConfig</code> - if null, removes the plugin, if non-null updates
the format plugin config with this value</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.PluginException.html" title="class in org.apache.drill.exec.store">StoragePluginRegistry.PluginException</a></code> - if the storage plugin is undefined or
is not a file format plugin</dd>
</dl>
</li>
</ul>
<a name="getFormatPluginByConfig-org.apache.drill.common.logical.StoragePluginConfig-org.apache.drill.common.logical.FormatPluginConfig-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getFormatPluginByConfig</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/drill/exec/store/dfs/FormatPlugin.html" title="interface in org.apache.drill.exec.store.dfs">FormatPlugin</a>&nbsp;getFormatPluginByConfig(<a href="../../../../../org/apache/drill/common/logical/StoragePluginConfig.html" title="class in org.apache.drill.common.logical">StoragePluginConfig</a>&nbsp;storageConfig,
<a href="../../../../../org/apache/drill/common/logical/FormatPluginConfig.html" title="interface in org.apache.drill.common.logical">FormatPluginConfig</a>&nbsp;formatConfig)
throws <a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.PluginException.html" title="class in org.apache.drill.exec.store">StoragePluginRegistry.PluginException</a></pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html#getFormatPluginByConfig-org.apache.drill.common.logical.StoragePluginConfig-org.apache.drill.common.logical.FormatPluginConfig-">StoragePluginRegistry</a></code></span></div>
<div class="block">Get the Format plugin for the FileSystemPlugin associated with the provided
storage config and format config.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html#getFormatPluginByConfig-org.apache.drill.common.logical.StoragePluginConfig-org.apache.drill.common.logical.FormatPluginConfig-">getFormatPluginByConfig</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html" title="interface in org.apache.drill.exec.store">StoragePluginRegistry</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>storageConfig</code> - The storage config for the associated FileSystemPlugin</dd>
<dd><code>formatConfig</code> - The format config for the associated FormatPlugin</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>A FormatPlugin instance</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.PluginException.html" title="class in org.apache.drill.exec.store">StoragePluginRegistry.PluginException</a></code> - if plugin cannot be obtained</dd>
</dl>
</li>
</ul>
<a name="getFormatPlugin-org.apache.drill.common.logical.StoragePluginConfig-org.apache.drill.common.logical.FormatPluginConfig-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getFormatPlugin</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/drill/exec/store/dfs/FormatPlugin.html" title="interface in org.apache.drill.exec.store.dfs">FormatPlugin</a>&nbsp;getFormatPlugin(<a href="../../../../../org/apache/drill/common/logical/StoragePluginConfig.html" title="class in org.apache.drill.common.logical">StoragePluginConfig</a>&nbsp;storageConfig,
<a href="../../../../../org/apache/drill/common/logical/FormatPluginConfig.html" title="interface in org.apache.drill.common.logical">FormatPluginConfig</a>&nbsp;formatConfig)
throws <a href="../../../../../org/apache/drill/common/exceptions/ExecutionSetupException.html" title="class in org.apache.drill.common.exceptions">ExecutionSetupException</a></pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html#getFormatPlugin-org.apache.drill.common.logical.StoragePluginConfig-org.apache.drill.common.logical.FormatPluginConfig-">getFormatPlugin</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html" title="interface in org.apache.drill.exec.store">StoragePluginRegistry</a></code></dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../../org/apache/drill/common/exceptions/ExecutionSetupException.html" title="class in org.apache.drill.common.exceptions">ExecutionSetupException</a></code></dd>
</dl>
</li>
</ul>
<a name="getSchemaFactory--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getSchemaFactory</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/drill/exec/store/SchemaFactory.html" title="interface in org.apache.drill.exec.store">SchemaFactory</a>&nbsp;getSchemaFactory()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html#getSchemaFactory--">StoragePluginRegistry</a></code></span></div>
<div class="block">Get the Schema factory associated with this storage plugin registry.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html#getSchemaFactory--">getSchemaFactory</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html" title="interface in org.apache.drill.exec.store">StoragePluginRegistry</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>A SchemaFactory that can register the schemas associated with this plugin registry.</dd>
</dl>
</li>
</ul>
<a name="iterator--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>iterator</h4>
<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.Entry.html?is-external=true" title="class or interface in java.util">Map.Entry</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="../../../../../org/apache/drill/exec/store/StoragePlugin.html" title="interface in org.apache.drill.exec.store">StoragePlugin</a>&gt;&gt;&nbsp;iterator()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true#iterator--" title="class or interface in java.lang">iterator</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.Entry.html?is-external=true" title="class or interface in java.util">Map.Entry</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="../../../../../org/apache/drill/exec/store/StoragePlugin.html" title="interface in org.apache.drill.exec.store">StoragePlugin</a>&gt;&gt;</code></dd>
</dl>
</li>
</ul>
<a name="close--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>close</h4>
<pre>public&nbsp;void&nbsp;close()
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/AutoCloseable.html?is-external=true#close--" title="class or interface in java.lang">close</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/AutoCloseable.html?is-external=true" title="class or interface in java.lang">AutoCloseable</a></code></dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd>
</dl>
</li>
</ul>
<a name="mapper--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>mapper</h4>
<pre>public&nbsp;com.fasterxml.jackson.databind.ObjectMapper&nbsp;mapper()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html#mapper--">StoragePluginRegistry</a></code></span></div>
<div class="block">Object mapper to read/write the JSON form of a plugin.
config.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html#mapper--">mapper</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html" title="interface in org.apache.drill.exec.store">StoragePluginRegistry</a></code></dd>
</dl>
</li>
</ul>
<a name="resolve-org.apache.drill.common.logical.StoragePluginConfig-java.lang.Class-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>resolve</h4>
<pre>public&nbsp;&lt;T extends <a href="../../../../../org/apache/drill/exec/store/StoragePlugin.html" title="interface in org.apache.drill.exec.store">StoragePlugin</a>&gt;&nbsp;T&nbsp;resolve(<a href="../../../../../org/apache/drill/common/logical/StoragePluginConfig.html" title="class in org.apache.drill.common.logical">StoragePluginConfig</a>&nbsp;storageConfig,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;T&gt;&nbsp;desired)</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html#resolve-org.apache.drill.common.logical.StoragePluginConfig-java.lang.Class-">resolve</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html" title="interface in org.apache.drill.exec.store">StoragePluginRegistry</a></code></dd>
</dl>
</li>
</ul>
<a name="resolveFormat-org.apache.drill.common.logical.StoragePluginConfig-org.apache.drill.common.logical.FormatPluginConfig-java.lang.Class-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>resolveFormat</h4>
<pre>public&nbsp;&lt;T extends <a href="../../../../../org/apache/drill/exec/store/dfs/FormatPlugin.html" title="interface in org.apache.drill.exec.store.dfs">FormatPlugin</a>&gt;&nbsp;T&nbsp;resolveFormat(<a href="../../../../../org/apache/drill/common/logical/StoragePluginConfig.html" title="class in org.apache.drill.common.logical">StoragePluginConfig</a>&nbsp;storageConfig,
<a href="../../../../../org/apache/drill/common/logical/FormatPluginConfig.html" title="interface in org.apache.drill.common.logical">FormatPluginConfig</a>&nbsp;formatConfig,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;T&gt;&nbsp;desired)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html#resolveFormat-org.apache.drill.common.logical.StoragePluginConfig-org.apache.drill.common.logical.FormatPluginConfig-java.lang.Class-">StoragePluginRegistry</a></code></span></div>
<div class="block">Resolve a storage plugin given a storage plugin config. Call from
within a file storage plugin to resolve the plugin.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html#resolveFormat-org.apache.drill.common.logical.StoragePluginConfig-org.apache.drill.common.logical.FormatPluginConfig-java.lang.Class-">resolveFormat</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html" title="interface in org.apache.drill.exec.store">StoragePluginRegistry</a></code></dd>
<dt><span class="paramLabel">Type Parameters:</span></dt>
<dd><code>T</code> - the required type of the plugin</dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>storageConfig</code> - storage plugin config</dd>
<dd><code>formatConfig</code> - format plugin config</dd>
<dd><code>desired</code> - desired target class</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the storage plugin</dd>
</dl>
</li>
</ul>
<a name="availablePlugins--">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>availablePlugins</h4>
<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;availablePlugins()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html#availablePlugins--">StoragePluginRegistry</a></code></span></div>
<div class="block">Returns the set of available plugin names.
Includes system plugins and enabled stored plugins.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html#availablePlugins--">availablePlugins</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.html" title="interface in org.apache.drill.exec.store">StoragePluginRegistry</a></code></dd>
</dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/StoragePluginRegistryImpl.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../org/apache/drill/exec/store/StoragePluginRegistry.PluginNotFoundException.html" title="class in org.apache.drill.exec.store"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../org/apache/drill/exec/store/StoragePluginRulesSupplier.html" title="class in org.apache.drill.exec.store"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/drill/exec/store/StoragePluginRegistryImpl.html" target="_top">Frames</a></li>
<li><a href="StoragePluginRegistryImpl.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small>Copyright &#169; 1970 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</body>
</html>