<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>sendFileTransferProtocolFactory</title>
<style type="text/css">@import url("../../../../org.eclipse.platform.doc.isv/book.css");</style>
<style type="text/css">@import url("../../../../org.eclipse.platform.doc.isv/schema.css");</style>
</HEAD>
<BODY>
<H1 style="text-align:center">sendFileTransferProtocolFactory</H1>
<p></p>
<h6 class="CaptionFigColumn SchemaHeader">Identifier: </h6>org.eclipse.ecf.provider.filetransfer.sendFileTransferProtocolFactory<p></p>
<h6 class="CaptionFigColumn SchemaHeader">Since: </h6>1.0.0
<p></p>

<h6 class="CaptionFigColumn SchemaHeader">Description: </h6>This extension point allows IRetrieveFileTransferFactorys to be defined for given file transfer protocols.<p></p>
<h6 class="CaptionFigColumn SchemaHeader">Configuration Markup:</h6>
<p></p>
<p class="code SchemaDtd">&lt;!ELEMENT <a name="e.extension">extension</a> (<a href="#e.sendFileTransferProtocolFactory">sendFileTransferProtocolFactory</a>*)&gt;</p>
<p class="code SchemaDtd">&lt;!ATTLIST extension</p>
<p class="code SchemaDtdAttlist">point&nbsp;CDATA #REQUIRED</p>
<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED</p>
<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
<p></p>
<ul class="ConfigMarkupAttlistDesc">
</ul>
<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.sendFileTransferProtocolFactory">sendFileTransferProtocolFactory</a> EMPTY&gt;</p>
<p class="code SchemaDtd">&lt;!ATTLIST sendFileTransferProtocolFactory</p>
<p class="code SchemaDtdAttlist">protocol&nbsp;CDATA #REQUIRED</p>
<p class="code SchemaDtdAttlist">class&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED</p>
<p class="code SchemaDtdAttlist">priority&nbsp;CDATA #IMPLIED</p>
<p class="code SchemaDtdAttlist">uri&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(true | false) &gt;</p>
<p></p>
<p class="ConfigMarkupElementDesc">
Send  file transfer protocol factory extention point</p>
<br>
<ul class="ConfigMarkupAttlistDesc">
<li><b>protocol</b> - Protocol to define factory for.  For example, http, https, ftp, bittorrent, my.favorite.protocol.</li>
<li><b>class</b> - The factory class to use for given protocol.  Must implement <b>org.eclipse.ecf.filetransfer.service.ISendFileTransferFactory</b></li>
<li><b>priority</b> - Priority relative to other sendFileTransferProtocolFactory extensions.  Valid priorities are 0 (highest priority) to 100 (lowest priority).  If this optional attribute is not specified, it will automatically be assigned a default priority of 100.</li>
<li><b>uri</b> - Flag to indicate that the protocol factory will use URIs (rather than URLs...which is the default).  True indicates that URIs will be used, and *no* URLStreamHandler will be registered for the associated protocol.  If false, URLs will be used and an URLStreamHandler will be registered for the given protocol factory.  NOTE:  If this flag is true, providers that attempt to access IFileID.getURL() may be unable to do so, since the URI may not be successfully parsed as a URL.</li>
</ul>
<br><h6 class="CaptionFigColumn SchemaHeader">Examples: </h6><pre class="Example"><span class="code SchemaTag">
   &lt;extension
         point=</span><span class="code SchemaCstring">&quot;org.eclipse.ecf.provider.filetransfer.sendFileTransferProtocolFactory&quot;</span><span class="code SchemaTag">&gt;
      &lt;sendFileTransferProtocolFactory
            class=</span><span class="code SchemaCstring">&quot;org.eclipse.ecf.provider.filetransfer.ssh.ScpOutgoingFileTransferFactory&quot;</span><span class="code SchemaTag">
            protocol=</span><span class="code SchemaCstring">&quot;scp&quot;</span><span class="code SchemaTag">
            priority=</span><span class="code SchemaCstring">&quot;50&quot;</span><span class="code SchemaTag">&gt;
      &lt;/sendFileTransferProtocolFactory&gt;
   &lt;/extension&gt;

</span></pre>
<p></p>

<h6 class="CaptionFigColumn SchemaHeader">API Information: </h6>Here is the <b>org.eclipse.ecf.filetransfer.service.IRetrieveFileTransferFactory</b>

<pre class="Example"><span class="code SchemaTag">
/**
 * Retrieve file transfer factory. This service interface is used by clients to
 * create a new IRetrieveFileTransfer instance.
 */
public interface IRetrieveFileTransferFactory {

 /**
  * Get new instance of IRetrieveFileTransfer.
  * 
  * @return IRetrieveFileTransfer for a given file transfer
  */
 public IRetrieveFileTransfer newInstance();

}
</span></pre>
<p></p>

<h6 class="CaptionFigColumn SchemaHeader">Supplied Implementation: </h6>None
<p></p>

<br>
<p class="note SchemaCopyright">
Copyright (c) 2004 Composent, Inc. and others.

This program and the accompanying materials are made
available under the terms of the Eclipse Public License 2.0
which is available at https://www.eclipse.org/legal/epl-2.0/

SPDX-License-Identifier: EPL-2.0

</p>
</BODY>
</HTML>
