<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (14.0.1) on Tue Jun 15 20:48:08 PDT 2021 -->
<title>BaseContainer.Instantiator (Eclipse Communication Framework (ECF) 3.14.22 API)</title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<meta name="dc.created" content="2021-06-15">
<meta name="description" content="declaration: package: org.eclipse.ecf.core, class: BaseContainer, class: Instantiator">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../script-dir/jquery-ui.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script>
<script type="text/javascript" src="../../../../script-dir/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../../../script-dir/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../../../script-dir/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../../../script-dir/jquery-3.4.1.js"></script>
<script type="text/javascript" src="../../../../script-dir/jquery-ui.js"></script>
</head>
<body class="class-declaration">
<script type="text/javascript">var data = {"i0":10,"i1":10,"i2":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
var pathtoroot = "../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flexBox">
<header role="banner" class="flexHeader">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a id="navbar.top">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/BaseContainer.Instantiator.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-files/index-1.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&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><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<div class="navListSearch"><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<div class="skipNav"><a id="skip.navbar.top">
<!--   -->
</a></div>
</nav>
</header>
<div class="flexContent">
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">org.eclipse.ecf.core</a></div>
<h1 title="Class BaseContainer.Instantiator" class="title">Class BaseContainer.Instantiator</h1>
</div>
<div class="contentContainer">
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink">java.lang.Object</a>
<div class="inheritance"><a href="provider/BaseContainerInstantiator.html" title="class in org.eclipse.ecf.core.provider">org.eclipse.ecf.core.provider.BaseContainerInstantiator</a>
<div class="inheritance">org.eclipse.ecf.core.BaseContainer.Instantiator</div>
</div>
</div>
<section class="description">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd><code><a href="provider/IContainerInstantiator.html" title="interface in org.eclipse.ecf.core.provider">IContainerInstantiator</a></code></dd>
</dl>
<dl>
<dt>Enclosing class:</dt>
<dd><a href="BaseContainer.html" title="class in org.eclipse.ecf.core">BaseContainer</a></dd>
</dl>
<hr>
<pre>public static class <span class="typeNameLabel">BaseContainer.Instantiator</span>
extends <a href="provider/BaseContainerInstantiator.html" title="class in org.eclipse.ecf.core.provider">BaseContainerInstantiator</a></pre>
</section>
<section class="summary">
<ul class="blockList">
<!-- =========== FIELD SUMMARY =========== -->
<li class="blockList">
<section class="fieldSummary"><a id="field.summary">
<!--   -->
</a>
<h2>Field Summary</h2>
<div class="memberSummary">
<table>
<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
<thead>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Field</th>
<th class="colLast" scope="col">Description</th>
</tr>
</thead>
<tbody>
<tr class="altColor">
<td class="colFirst"><code>static <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#NAME">NAME</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
</tbody>
</table>
</div>
<div class="inheritedList">
<h3>Fields inherited from class&nbsp;org.eclipse.ecf.core.provider.<a href="provider/BaseContainerInstantiator.html" title="class in org.eclipse.ecf.core.provider">BaseContainerInstantiator</a></h3>
<a id="fields.inherited.from.class.org.eclipse.ecf.core.provider.BaseContainerInstantiator">
<!--   -->
</a><code><a href="provider/BaseContainerInstantiator.html#EMPTY_CLASS_ARRAY">EMPTY_CLASS_ARRAY</a>, <a href="provider/BaseContainerInstantiator.html#EMPTY_STRING_ARRAY">EMPTY_STRING_ARRAY</a>, <a href="provider/BaseContainerInstantiator.html#NO_ADAPTERS_ARRAY">NO_ADAPTERS_ARRAY</a></code></div>
</section>
</li>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li class="blockList">
<section class="constructorSummary"><a id="constructor.summary">
<!--   -->
</a>
<h2>Constructor Summary</h2>
<div class="memberSummary">
<table>
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<thead>
<tr>
<th class="colFirst" scope="col">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr>
</thead>
<tbody>
<tr class="altColor">
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E()">Instantiator</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
</tbody>
</table>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li class="blockList">
<section class="methodSummary"><a id="method.summary">
<!--   -->
</a>
<h2>Method Summary</h2>
<div class="memberSummary">
<div role="tablist" aria-orientation="horizontal"><button role="tab" aria-selected="true" aria-controls="memberSummary_tabpanel" tabindex="0" onkeydown="switchTab(event)" id="t0" class="activeTableTab">All Methods</button><button role="tab" aria-selected="false" aria-controls="memberSummary_tabpanel" tabindex="-1" onkeydown="switchTab(event)" id="t2" class="tableTab" onclick="show(2);">Instance Methods</button><button role="tab" aria-selected="false" aria-controls="memberSummary_tabpanel" tabindex="-1" onkeydown="switchTab(event)" id="t4" class="tableTab" onclick="show(8);">Concrete Methods</button></div>
<div id="memberSummary_tabpanel" role="tabpanel">
<table aria-labelledby="t0">
<thead>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
</thead>
<tbody>
<tr class="altColor" id="i0">
<td class="colFirst"><code><a href="IContainer.html" title="interface in org.eclipse.ecf.core">IContainer</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#createInstance(org.eclipse.ecf.core.ContainerTypeDescription,java.lang.Object%5B%5D)">createInstance</a></span>&#8203;(<a href="ContainerTypeDescription.html" title="class in org.eclipse.ecf.core">ContainerTypeDescription</a>&nbsp;description,
<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink">Object</a>[]&nbsp;parameters)</code></th>
<td class="colLast">
<div class="block">Create instance of IContainer.</div>
</td>
</tr>
<tr class="rowColor" id="i1">
<td class="colFirst"><code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>[]</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getSupportedAdapterTypes(org.eclipse.ecf.core.ContainerTypeDescription)">getSupportedAdapterTypes</a></span>&#8203;(<a href="ContainerTypeDescription.html" title="class in org.eclipse.ecf.core">ContainerTypeDescription</a>&nbsp;description)</code></th>
<td class="colLast">
<div class="block">Get array of supported adapters for the given container type description.</div>
</td>
</tr>
<tr class="altColor" id="i2">
<td class="colFirst"><code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Class.html?is-external=true" title="class or interface in java.lang" class="externalLink">Class</a>[][]</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getSupportedParameterTypes(org.eclipse.ecf.core.ContainerTypeDescription)">getSupportedParameterTypes</a></span>&#8203;(<a href="ContainerTypeDescription.html" title="class in org.eclipse.ecf.core">ContainerTypeDescription</a>&nbsp;description)</code></th>
<td class="colLast">
<div class="block">Get array of parameter types for given container type description.</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="inheritedList">
<h3>Methods inherited from class&nbsp;org.eclipse.ecf.core.provider.<a href="provider/BaseContainerInstantiator.html" title="class in org.eclipse.ecf.core.provider">BaseContainerInstantiator</a></h3>
<a id="methods.inherited.from.class.org.eclipse.ecf.core.provider.BaseContainerInstantiator">
<!--   -->
</a><code><a href="provider/BaseContainerInstantiator.html#getAdaptersForClass(java.lang.Class)">getAdaptersForClass</a>, <a href="provider/BaseContainerInstantiator.html#getIDParameterValue(org.eclipse.ecf.core.identity.Namespace,java.util.Map,java.lang.String)">getIDParameterValue</a>, <a href="provider/BaseContainerInstantiator.html#getIDParameterValue(org.eclipse.ecf.core.identity.Namespace,java.util.Map,java.lang.String,java.lang.Class,T)">getIDParameterValue</a>, <a href="provider/BaseContainerInstantiator.html#getIDParameterValue(org.eclipse.ecf.core.identity.Namespace,java.util.Map,java.lang.String,java.lang.String)">getIDParameterValue</a>, <a href="provider/BaseContainerInstantiator.html#getIntegerFromArg(java.lang.Object)">getIntegerFromArg</a>, <a href="provider/BaseContainerInstantiator.html#getInterfacesAndAdaptersForClass(java.lang.Class)">getInterfacesAndAdaptersForClass</a>, <a href="provider/BaseContainerInstantiator.html#getInterfacesForClass(java.lang.Class)">getInterfacesForClass</a>, <a href="provider/BaseContainerInstantiator.html#getInterfacesForClass(java.util.Set,java.lang.Class)">getInterfacesForClass</a>, <a href="provider/BaseContainerInstantiator.html#getMap(java.lang.Object%5B%5D)">getMap</a>, <a href="provider/BaseContainerInstantiator.html#getMapParameterString(java.lang.Object%5B%5D,java.lang.String)">getMapParameterString</a>, <a href="provider/BaseContainerInstantiator.html#getMapParameterString(java.lang.Object%5B%5D,java.lang.String,java.lang.String)">getMapParameterString</a>, <a href="provider/BaseContainerInstantiator.html#getParameterValue(java.lang.Object%5B%5D,java.lang.String,java.lang.Class)">getParameterValue</a>, <a href="provider/BaseContainerInstantiator.html#getParameterValue(java.lang.Object%5B%5D,java.lang.String,java.lang.Class,T)">getParameterValue</a>, <a href="provider/BaseContainerInstantiator.html#getParameterValue(java.util.Map,java.lang.String)">getParameterValue</a>, <a href="provider/BaseContainerInstantiator.html#getParameterValue(java.util.Map,java.lang.String,java.lang.Class,T)">getParameterValue</a>, <a href="provider/BaseContainerInstantiator.html#getParameterValue(java.util.Map,java.lang.String,java.lang.String)">getParameterValue</a>, <a href="provider/BaseContainerInstantiator.html#getStringFromArg(java.lang.Object)">getStringFromArg</a>, <a href="provider/BaseContainerInstantiator.html#getSupportedIntents(org.eclipse.ecf.core.ContainerTypeDescription)">getSupportedIntents</a></code></div>
<div class="inheritedList">
<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink">Object</a></h3>
<a id="methods.inherited.from.class.java.lang.Object">
<!--   -->
</a><code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#clone()" title="class or interface in java.lang" class="externalLink">clone</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang" class="externalLink">equals</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#finalize()" title="class or interface in java.lang" class="externalLink">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang" class="externalLink">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang" class="externalLink">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang" class="externalLink">notify</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#notifyAll()" title="class or interface in java.lang" class="externalLink">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang" class="externalLink">toString</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang" class="externalLink">wait</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang" class="externalLink">wait</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#wait(long,int)" title="class or interface in java.lang" class="externalLink">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="blockList">
<!-- ============ FIELD DETAIL =========== -->
<li class="blockList">
<section class="fieldDetails"><a id="field.detail">
<!--   -->
</a>
<h2>Field Details</h2>
<ul class="blockList">
<li class="blockList">
<section class="detail">
<h3><a id="NAME">NAME</a></h3>
<div class="memberSignature"><span class="modifiers">public static final</span>&nbsp;<span class="returnType"><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a></span>&nbsp;<span class="memberName">NAME</span></div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>3.4</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../constant-values.html#org.eclipse.ecf.core.BaseContainer.Instantiator.NAME">Constant Field Values</a></dd>
</dl>
</section>
</li>
</ul>
</section>
</li>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li class="blockList">
<section class="constructorDetails"><a id="constructor.detail">
<!--   -->
</a>
<h2>Constructor Details</h2>
<ul class="blockList">
<li class="blockList">
<section class="detail">
<h3><a id="&lt;init&gt;()">Instantiator</a></h3>
<div class="memberSignature"><span class="modifiers">public</span>&nbsp;<span class="memberName">Instantiator</span>()</div>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li class="blockList">
<section class="methodDetails"><a id="method.detail">
<!--   -->
</a>
<h2>Method Details</h2>
<ul class="blockList">
<li class="blockList">
<section class="detail">
<h3><a id="createInstance(org.eclipse.ecf.core.ContainerTypeDescription,java.lang.Object[])">createInstance</a></h3>
<div class="memberSignature"><span class="modifiers">public</span>&nbsp;<span class="returnType"><a href="IContainer.html" title="interface in org.eclipse.ecf.core">IContainer</a></span>&nbsp;<span class="memberName">createInstance</span>&#8203;(<span class="arguments"><a href="ContainerTypeDescription.html" title="class in org.eclipse.ecf.core">ContainerTypeDescription</a>&nbsp;description,
<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink">Object</a>[]&nbsp;parameters)</span>
                          throws <span class="exceptions"><a href="ContainerCreateException.html" title="class in org.eclipse.ecf.core">ContainerCreateException</a></span></div>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="provider/IContainerInstantiator.html#createInstance(org.eclipse.ecf.core.ContainerTypeDescription,java.lang.Object%5B%5D)">IContainerInstantiator</a></code></span></div>
<div class="block">Create instance of IContainer. This is the interface that container
 provider implementations must implement for the containerFactory
 extension point. The caller may optionally specify both argument types
 and arguments that will be passed into this method (and therefore to the
 provider implementation implementing this method). For example:
 <p>
 <b> ContainerFactory.getDefault().createContainer("foocontainer",new
 Object { "hello" });</b>
 <p></div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="provider/IContainerInstantiator.html#createInstance(org.eclipse.ecf.core.ContainerTypeDescription,java.lang.Object%5B%5D)">createInstance</a></code>&nbsp;in interface&nbsp;<code><a href="provider/IContainerInstantiator.html" title="interface in org.eclipse.ecf.core.provider">IContainerInstantiator</a></code></dd>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="provider/BaseContainerInstantiator.html#createInstance(org.eclipse.ecf.core.ContainerTypeDescription,java.lang.Object%5B%5D)">createInstance</a></code>&nbsp;in class&nbsp;<code><a href="provider/BaseContainerInstantiator.html" title="class in org.eclipse.ecf.core.provider">BaseContainerInstantiator</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>description</code> - the ContainerTypeDescription associated with the registered
            container provider implementation</dd>
<dd><code>parameters</code> - parameters specified by the caller. May be null if no
            parameters are passed in by caller to
            ContainerFactory.getDefault().createContainer(...)</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>IContainer instance. The provider implementation must return a
         valid object implementing IContainer OR throw a
         ContainerCreateException. Null will not be returned.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="ContainerCreateException.html" title="class in org.eclipse.ecf.core">ContainerCreateException</a></code> - thrown if instance cannot be created</dd>
</dl>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="getSupportedAdapterTypes(org.eclipse.ecf.core.ContainerTypeDescription)">getSupportedAdapterTypes</a></h3>
<div class="memberSignature"><span class="modifiers">public</span>&nbsp;<span class="returnType"><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>[]</span>&nbsp;<span class="memberName">getSupportedAdapterTypes</span>&#8203;(<span class="arguments"><a href="ContainerTypeDescription.html" title="class in org.eclipse.ecf.core">ContainerTypeDescription</a>&nbsp;description)</span></div>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="provider/IContainerInstantiator.html#getSupportedAdapterTypes(org.eclipse.ecf.core.ContainerTypeDescription)">IContainerInstantiator</a></code></span></div>
<div class="block">Get array of supported adapters for the given container type description.
 Providers implement this method to allow clients to inspect the adapter
 types exposed by the container described by the given description.
 
 The returned array entries will be the fully qualified names of the
 adapter classes.
 
 Note that the returned types do not guarantee that a subsequent call to
 <a href="IContainer.html#getAdapter(java.lang.Class)"><code>IContainer.getAdapter(Class)</code></a> with the same type name as a
 returned value will return a non-<code>null</code> result. In other
 words, even if the class name is in the returned array, subsequent calls
 to <a href="IContainer.html#getAdapter(java.lang.Class)"><code>IContainer.getAdapter(Class)</code></a> may still return
 <code>null</code>.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="provider/IContainerInstantiator.html#getSupportedAdapterTypes(org.eclipse.ecf.core.ContainerTypeDescription)">getSupportedAdapterTypes</a></code>&nbsp;in interface&nbsp;<code><a href="provider/IContainerInstantiator.html" title="interface in org.eclipse.ecf.core.provider">IContainerInstantiator</a></code></dd>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="provider/BaseContainerInstantiator.html#getSupportedAdapterTypes(org.eclipse.ecf.core.ContainerTypeDescription)">getSupportedAdapterTypes</a></code>&nbsp;in class&nbsp;<code><a href="provider/BaseContainerInstantiator.html" title="class in org.eclipse.ecf.core.provider">BaseContainerInstantiator</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>description</code> - the ContainerTypeDescription to report adapters for. Must not
            be <code>null</code>.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>String[] of supported adapters. The entries in the returned array
         will be the fully qualified class names of adapters supported by
         the given description. <code>null</code> may be returned by
         the provider if no adapters are supported for this description.</dd>
</dl>
</section>
</li>
<li class="blockList">
<section class="detail">
<h3><a id="getSupportedParameterTypes(org.eclipse.ecf.core.ContainerTypeDescription)">getSupportedParameterTypes</a></h3>
<div class="memberSignature"><span class="modifiers">public</span>&nbsp;<span class="returnType"><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Class.html?is-external=true" title="class or interface in java.lang" class="externalLink">Class</a>[][]</span>&nbsp;<span class="memberName">getSupportedParameterTypes</span>&#8203;(<span class="arguments"><a href="ContainerTypeDescription.html" title="class in org.eclipse.ecf.core">ContainerTypeDescription</a>&nbsp;description)</span></div>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="provider/IContainerInstantiator.html#getSupportedParameterTypes(org.eclipse.ecf.core.ContainerTypeDescription)">IContainerInstantiator</a></code></span></div>
<div class="block">Get array of parameter types for given container type description.
 Providers implement this method to allow clients to inspect the available
 set of parameter types understood for calls to
 <a href="provider/IContainerInstantiator.html#createInstance(org.eclipse.ecf.core.ContainerTypeDescription,java.lang.Object%5B%5D)"><code>IContainerInstantiator.createInstance(ContainerTypeDescription, Object[])</code></a>.
 <p>
 Each of the rows of the returned array specifies a Class[] of parameter
 types. These parameter types correspond to the types of Object[] that can
 be passed into the second parameter of
 <a href="provider/IContainerInstantiator.html#createInstance(org.eclipse.ecf.core.ContainerTypeDescription,java.lang.Object%5B%5D)"><code>IContainerInstantiator.createInstance(ContainerTypeDescription, Object[])</code></a>.
 <p>
 Consider the following example:
 <pre>
 public Class[][] getSupportedParameterTypes() {
        return new Class[][] { { String.class }, { String.class, String.class } };
 }
 </pre>
 
 The above means that there are two acceptable values for the Object []
 passed into <a href="provider/IContainerInstantiator.html#createInstance(org.eclipse.ecf.core.ContainerTypeDescription,java.lang.Object%5B%5D)"><code>IContainerInstantiator.createInstance(ContainerTypeDescription, Object[])</code></a>:
 1) a single String, and 2) two Strings. These would therefore be
 acceptable as input to createInstance:
 
 <pre>
 IContainer container = ContainerFactory.getDefault().createContainer(
                description, new Object[] { &quot;Hello&quot; });
 
 IContainer container2 = ContainerFactory.getDefault().createContainer(
                description, new Object[] { &quot;Hello&quot; });
 </pre>
 <p></div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="provider/IContainerInstantiator.html#getSupportedParameterTypes(org.eclipse.ecf.core.ContainerTypeDescription)">getSupportedParameterTypes</a></code>&nbsp;in interface&nbsp;<code><a href="provider/IContainerInstantiator.html" title="interface in org.eclipse.ecf.core.provider">IContainerInstantiator</a></code></dd>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="provider/BaseContainerInstantiator.html#getSupportedParameterTypes(org.eclipse.ecf.core.ContainerTypeDescription)">getSupportedParameterTypes</a></code>&nbsp;in class&nbsp;<code><a href="provider/BaseContainerInstantiator.html" title="class in org.eclipse.ecf.core.provider">BaseContainerInstantiator</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>description</code> - the ContainerTypeDescription to return parameter types for</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Class[][] array of Class[]s. Each row in the table corresponds to
         a Class[] that describes the types of Objects in Object[] for
         second parameter to
         <a href="provider/IContainerInstantiator.html#createInstance(org.eclipse.ecf.core.ContainerTypeDescription,java.lang.Object%5B%5D)"><code>IContainerInstantiator.createInstance(ContainerTypeDescription, Object[])</code></a>.
         <code>null</code> returned if no parameter types supported for
         given description.</dd>
</dl>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
</div>
<!-- ========= END OF CLASS DATA ========= -->
</main>
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a id="navbar.bottom">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/BaseContainer.Instantiator.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-files/index-1.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&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><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
</div>
<a id="skip.navbar.bottom">
<!--   -->
</a>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
<p class="legalCopy"><small>Copyright &#169; 2004&#x2013;2020 <a href="https://www.eclipse.org/">Eclipse Foundation</a>. All rights reserved.</small></p>
</footer>
</div>
</div>
</body>
</html>
