diff options
| author | pnehrer | 2005-02-07 15:07:57 +0000 |
|---|---|---|
| committer | pnehrer | 2005-02-07 15:07:57 +0000 |
| commit | ae09b1cbbd7d2d235bbb8fcead5bf8aac2bec4eb (patch) | |
| tree | 821044b05634e4d17958808792ec362e3bd178f1 | |
| parent | a1f071d67bc7c3d52e1c6a5b12d6323f2e965bc7 (diff) | |
| download | org.eclipse.ecf-ae09b1cbbd7d2d235bbb8fcead5bf8aac2bec4eb.tar.gz org.eclipse.ecf-ae09b1cbbd7d2d235bbb8fcead5bf8aac2bec4eb.tar.xz org.eclipse.ecf-ae09b1cbbd7d2d235bbb8fcead5bf8aac2bec4eb.zip | |
Populated with initial content.
16 files changed, 739 insertions, 8 deletions
diff --git a/doc/bundles/org.eclipse.ecf.doc/build.properties b/doc/bundles/org.eclipse.ecf.doc/build.properties index e84f9f03c..d6c421f90 100644 --- a/doc/bundles/org.eclipse.ecf.doc/build.properties +++ b/doc/bundles/org.eclipse.ecf.doc/build.properties @@ -1,3 +1,3 @@ bin.includes = plugin.xml,\ html/,\ - *.xml + toc*.xml diff --git a/doc/bundles/org.eclipse.ecf.doc/html/concepts/container.html b/doc/bundles/org.eclipse.ecf.doc/html/concepts/container.html new file mode 100644 index 000000000..6aab6aca4 --- /dev/null +++ b/doc/bundles/org.eclipse.ecf.doc/html/concepts/container.html @@ -0,0 +1,56 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html> +<head> +</head> +<body> +<h2>SharedObjectContainer Lifecycle - DRAFT</h2> +<p> SharedObjectContainers can provide access to arbitrary +communications protocols. So, for example, communication with a remote +instant messaging client, a server-based web service, or a distributed +multi-point application can all be represented through an +implementation of a SharedObjectContainer that understands the specific +application-level protocol or protocols necessary to communicate with a +given service or set of services. The primary role of the +SharedObjectContainer is to provide SharedObjects with </p> +<ol> + <li>a consistent API for achieving secure access to a remote service</li> + <li>a consistent API for sending and receiving asynchronous messages +to/from an arbitrary communications service</li> + <li>consistent information about message reliability and group +membership </li> +</ol> +All ECF containers must implement <a + href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/core/ISharedObjectContainer.html">ISharedObjectContainer</a>. +ECF also defines an extensible factory for +creating ISharedObjectContainer instances called <a + href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/core/SharedObjectContainerFactory.html">SharedObjectContainerFactory</a>. +<br> +<br> +The lifecycle of a ISharedObjectContainer is typically as follows: +<ol> + <li>An ISharedObjectContainer instance is created via +SharedObjectContainerFactory.makeSharedObjectContainer() </li> + <li>ISharedObjects are created and added to the +ISharedObjectContainer </li> + <li>The ISharedObjectContainer 'joins/connects' with a remote +communications group via +ISharedObjectContainer.joinGroup() </li> + <li>The ISharedObject instances created/added in step #2 above send +asynchronous messages and receive asynchronous +events from the remote services </li> + <li>ISharedObject implementation code presents/manages user +interfaces, handles user input, keeps local state, +communicates with replicas or external services, exposes/introduces +local Eclipse-provided services to +remotes, etc. </li> + <li>When the ISharedObjectContainer is no longer needed for +communication, the ISharedObjectContainer can be +directed to leave the group, or leave the group on its own. </li> + <li>When the ISharedObjectContainer is no longer needed at all the +ISharedObjectContainer.dispose() method +can be called to free any resources managed by the container or it's +associated ISharedObjects. </li> +</ol> +<br> +</body> +</html> diff --git a/doc/bundles/org.eclipse.ecf.doc/html/concepts/intro.html b/doc/bundles/org.eclipse.ecf.doc/html/concepts/intro.html new file mode 100644 index 000000000..f8119c872 --- /dev/null +++ b/doc/bundles/org.eclipse.ecf.doc/html/concepts/intro.html @@ -0,0 +1,37 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html> +<head> +</head> +<body> +<h2>Introduction: ECF Communication via Shared Object Containers</h2> +<p> The two fundamental concepts in ECF are the <b>SharedObjectContainer</b> +and the <b>SharedObject</b>. SharedObjectContainers provide a specific +<b><i>communications context</i></b> for contained SharedObject +instances. The context provided by ECF SharedObjectContainers allows +contained SharedObjects to communicate with a group of remote processes +using protocols provided by the container. <br> +<br> +In the ECF model, SharedObjects represent communications components or +whole communications applications. Components use container-provided +messaging to implement their necessary communications, but are +completely free to implement whatever other functionality is required. +All a given ECF component must do is implement a single interface +(org.eclipse.ecf.core.ISharedObject), and add itself/be added to some +instance of a container. <br> +<br> +ECF itself defines the basic required interfaces for +SharedObjectContainers and SharedObjects. ECF also provides +implementations of various common communications protocols, in the form +of specific type of containers, and various sorts of application-level +communications (e.g conferencing or chat) via communications components +implemented as SharedObjects. <br> +<br> +In some respects, the ECF container/shared object design resembles the +design of other container architectures such a Servlet container. The +difference, however, is that the ECF container model is based upon a +group model of communication rather than client/server, where a given +shared object can communicate with one or many remote processes either +asynchronously and/or synchronously with a single primitive. </p> +<br> +</body> +</html> diff --git a/doc/bundles/org.eclipse.ecf.doc/html/concepts/sharedobject.html b/doc/bundles/org.eclipse.ecf.doc/html/concepts/sharedobject.html new file mode 100644 index 000000000..9185c6eca --- /dev/null +++ b/doc/bundles/org.eclipse.ecf.doc/html/concepts/sharedobject.html @@ -0,0 +1,91 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html> +<head> +</head> +<body> +<h2>ISharedObject Lifecycle - DRAFT</h2> +<h4>ISharedObject Construction</h4> +A SharedObject can be instantiated two ways: +<ol> + <li>By invoking one of the 'createSharedObject' methods of an +ISharedObjectContainer. These methods require a SharedObjectDescription +parameter (which among other things defines the class of object to +instantiate). + </li> + <li>By calling the constructor of an object class which implements +the ISharedObject interface outside of any container. + </li> +</ol> +<h4>Initialization</h4> +After it has been constructed the container to +which it was added will invoke the ISharedObject.init method passing a +non-null ISharedObjectConfig. ISharedObjects created outside of a +container, will have their ISharedObject.init method invoked +immediately as part of being added to the container. +<br> +Although not required, a typical implementation of 'init' will +cache the ISharedObjectConfig for later usage by the ISharedObject: +<br> +<pre> public void init(ISharedObjectConfig config) throws<br> SharedObjectInitException {<br> this.config = config;<br> ...<br> }<br></pre> +<b>Note</b>: The ISharedObjectConfig parameter provides the +ISharedObject with access to it's +container-provided context (<a + href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/core/ISharedObjectContext.html">ISharedObjectContext</a>) +via a call to ISharedObjectConfig.getContext(). +The ISharedObject is not considered initialized until after the init +method is completed, and +therefore the ISharedObjectContext is not available until after the +init method returns. +<br> +<br> +After init completes successfully, containers are required to +immediately deliver an 'activated' event to the newly added +ISharedObject via +ISharedObject.handleEvent(SharedObjectActivatedEvent). +<h4>Relationship to its container</h4> +ISharedObjects can be created outside of a ISharedObjectContainer and +then later added to it using the +ISharedObjectContainer.getSharedObjectManager().addSharedObject() +method. +<br> +<br> +The only semantics that an ISharedObjectContainer requires of +ISharedObjects is that they implement the ISharedObject interface. +<h4>Communications</h4> +<h5>Sending Messages</h5> +Eclipse ECF provides the ISharedObject with a simple asynchronous +messaging API to send/receive +arbitrary messages via the container-provided <a + href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/core/ISharedObjectContext.html">ISharedObjectContext</a>. +On the +ISharedObjectContext, are methods to send arbitrary messages to remotes +(sendMessage). For details see +the methods on <a + href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/core/ISharedObjectContext.html">ISharedObjectContext</a>. +<br> +<h5>Receiving Events</h5> +Containers can asynchronously deliver messages to SharedObjects in the +form of Events. When a message is received +for a given ISharedObject, the enclosing container wraps that message +in the form of an event of a certain type, +and calls that ISharedObject's handleEvent method with the Event +instance. +<h4>ISharedObject removal from a container</h4> +When an ISharedObject is removed from a container (or removes itself), +it's enclosing container calls the +ISharedObject.dispose() method. +<h4>Example Creation Code</h4> +Here is a code snippet that creates a container and adds a single +shared object to that container: +<pre>ISharedObjectContainer container = SharedObjectContainerFactory.makeSharedObjectContainer('standalone');<br>ID newID = IDFactory.makeStringID('foo');<br>SharedObjectDescription sd = new SharedObjectDescription(newID,TestSharedObject.class);<br>container.getSharedObjectManager().createSharedObject(sd,null);<br></pre> +Note this creates and adds to the container a ISharedObject instance of +class "TestSharedObject". The TestSharedObject +null constructor is called, followed by a call to +ISharedObject.init(ISharedObjectConfig) by the enclosing container. +The container also sends an 'activated' event to the ISharedObject by +calling its handleEvent method with +an event of type +org.eclipse.ecf.core.events.SharedObjectActivatedEvent. +<br> +</body> +</html> diff --git a/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/connect.html b/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/connect.html new file mode 100644 index 000000000..cbc484975 --- /dev/null +++ b/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/connect.html @@ -0,0 +1,35 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html> +<head> +</head> +<body> +<h2>Connecting an ECF Collaboration Client to a Test Server</h2> +<ol> + <li> Make sure ECF plugins are installed in one of three ways +described <a href="http://www.eclipse.org/ecf/downloads.html">here</a>. + </li> + <li> Open the Navigator View or the Package Explorer View. </li> + <li> Select any Project (first create some new project if none +previously exists). </li> + <li> Right-click on the project to bring up the context menu for the +selected project. </li> + <li> Select the ECF menu toward the bottom of the menu and select one +of: </li> + <ul> + <li> 'Join Collaboration...' This will allow you to specify an URL +of the group to join. You must know of a currently running server (and +know it's URL) to use this option. </li> + <li> 'Join Test Collaboration (Localhost)' This will connect you +directly to a test server running on localhost. See <a + href="runserver.html">Running a Collaboration Server on Localhost</a> +if you wish to run this way. </li> + <li> 'Join Test Collaboration (Composent)' This will connect you +directly to a test server running on composent.com. This is a test +server setup for the ECF team usage. You are welcome to try out +connecting to this server to test out/use the ECF example client. The +server's availability may not be consistent, however. </li> + </ul> +</ol> +<br> +</body> +</html> diff --git a/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/prerequisites.html b/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/prerequisites.html new file mode 100644 index 000000000..b0e10bba4 --- /dev/null +++ b/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/prerequisites.html @@ -0,0 +1,36 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html> +<head> +</head> +<body> +<h2>System Requirements</h2> +<p>ECF plugins will be built in Java and will be portable to any +platform supported by Eclipse. For components that might not run on +Eclipse (e.g. servers), all ECF-created code will be built to depend +only upon pure Java Standard Edition (1.4+). We also will look to +support OSGI Foundation as a minimum runtime platform.</p> +<p>You will need the following already installed on your machine:</p> +<ul> + <li>Java version 1.4.2 or newer...1.5 OK also + <pre>java version "1.4.2_04"<br>Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_04-b05)<br>Java HotSpot(TM) Client VM (build 1.4.2_04-b05, mixed model</pre> + </li> + <li> <a + href="http://download.eclipse.org/downloads/drops/S-3.1M4-200412162000/index.php">Eclipse +version 3.1M4</a><br> + <br> +Earlier Eclipse Platform versions may work, but we have not tested them.<br> + </li> + <br> + <li> <a + href="http://download.eclipse.org/tools/emf/scripts/downloads.php">EMF +SDK 2.1.0 (still on integration builds)</a><br> + <br> +The EMF SDK is needed to use the shared datagraph editor, and will be +needed for SETO. It is <b>not</b> +needed to be able to use the other ECF application-level features +(chat, url sharing, etc). It is needed to in order to compile the +entire ECF source base. </li> +</ul> +<br> +</body> +</html> diff --git a/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/runserver.html b/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/runserver.html new file mode 100644 index 000000000..cf698c51d --- /dev/null +++ b/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/runserver.html @@ -0,0 +1,20 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html> +<head> +</head> +<body> +<h2>Running a Collaboration Server on Localhost</h2> +<ol> + <li> Download ECF projects from CVS as described <a + href="http://www.eclipse.org/ecf/downloads.html">here</a>. </li> + <li> Choose Run... or Debug... from the Eclipse Run Menu. </li> + <li> Under 'Java Application' choose 'ECF Collab Server'. </li> + <li> Choose 'Run' (or Debug). </li> + <li> This will run a simple server on your localhost machine with the +ECF URL: ecftcp://localhost:3282/server. You can then connect to this +server with an Eclipse client as described in Connecting an ECF +Collaboration Client to an Existing Server above.</li> +</ol> +<br> +</body> +</html> diff --git a/doc/bundles/org.eclipse.ecf.doc/html/index.html b/doc/bundles/org.eclipse.ecf.doc/html/index.html index 7a230ef50..74e7f8579 100644 --- a/doc/bundles/org.eclipse.ecf.doc/html/index.html +++ b/doc/bundles/org.eclipse.ecf.doc/html/index.html @@ -1,13 +1,37 @@ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> - <html> <head> - <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> - <title>Eclipse Communication Framework</title> + <meta http-equiv="Content-Type" + content="text/html; charset=iso-8859-1"> + <title>Eclipse Communication Framework</title> </head> - <body> <h1>Eclipse Communication Framework</h1> -<p>TBD</p> +<p> The Eclipse Communication Framework (ECF) is a project to enable +the creation of communications applications on the Eclipse Platform. +The framework provides APIs for secure asynchronous and synchronous +messaging to deliver human-to-human, human-to-plugin, and +plugin-to-plugin communications and collaboration. <br> +<br> +ECF is intended to support three types of plugin developers: </p> +<ol> + <li>Developers of communications <b>applications</b> (end-user +visible complete applications).</li> + <li>Developers of communications <b>components</b> (communications +features designed to be reused among multiple applications)</li> + <li>Communications <b>infrastructure developers</b> (providers of +standard and/or proprietary communications protocols...e.g. SIP/SIMPLE, +XMPP, JMS, JXTA, etc)</li> +</ol> +ECF provides open, secure APIs and extension points so that others may +easily build applications, reusable communications components, or +extend the framework itself in order to interoperate via standard +and/or proprietary communications protocols. <br> +<br> +The ECF project will also provide complete demonstration and example +applications such as Eclipse project team instant messaging/chat, data +and voice conferencing, application sharing, real-time and asynchronous +model sharing, and team access to web-based services such as Really +Simple Syndication (RSS) and Weblogs. </body> -</html>
\ No newline at end of file +</html> diff --git a/doc/bundles/org.eclipse.ecf.doc/html/reference/api/.cvsignore b/doc/bundles/org.eclipse.ecf.doc/html/reference/api/.cvsignore new file mode 100644 index 000000000..082f69301 --- /dev/null +++ b/doc/bundles/org.eclipse.ecf.doc/html/reference/api/.cvsignore @@ -0,0 +1,6 @@ +index-files +org +resources +package-list +*.html +*.css
\ No newline at end of file diff --git a/doc/bundles/org.eclipse.ecf.doc/html/reference/extension-points/org.eclipse.ecf.comm.html b/doc/bundles/org.eclipse.ecf.doc/html/reference/extension-points/org.eclipse.ecf.comm.html new file mode 100644 index 000000000..eebdd042d --- /dev/null +++ b/doc/bundles/org.eclipse.ecf.doc/html/reference/extension-points/org.eclipse.ecf.comm.html @@ -0,0 +1,130 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>ECF Connection Factory</title> + +<style>@import url("file:/c:/cygwin/home/pnehrer/eclipse-SDK-3.1M4/eclipse/plugins/org.eclipse.platform.doc.isv_3.1.0/book.css");</style> +<style>@import url("file:/c:/cygwin/home/pnehrer/eclipse-SDK-3.1M4/eclipse/plugins/org.eclipse.platform.doc.isv_3.1.0/schema.css");</style></head> + +<body> +<h1><center>ECF Connection Factory</center></h1> +<p></p> +<h6 class="CaptionFigColumn" id="header">Identifier: </h6>org.eclipse.ecf.comm<p></p> +<h6 class="CaptionFigColumn" id="header">Since: </h6>0.2.0 +<p></p> + +<p> +</p><h6 class="CaptionFigColumn" id="header">Description: </h6>This +extension allows plugins to register themselves as 'providers' of ECF +connection factories. Once registered via this extension point, plugins +can provide implementations of custom ISynchAsynchConnection instances +via the ECF connection factory (<b>org.eclipse.ecf.core.comm.ConnectionFactory</b>). +<p>Plugins using this extension point can define new implementation +classes of the core ISynchAsynchConnection interface. When client +requests are made to ECF to create <b>ISynchAsynchConnection</b> +instances via the ConnectionFactory.makeSynchAsynchConnection() +methods, requests to create instances of the appropriate type will be +re-directed to the given extension.</p> +<p></p><h6 class="CaptionFigColumn" id="header">Configuration Markup:</h6><p></p> +<p class="code" id="dtd"><!ELEMENT <a name="e.extension">extension</a> (<a href="#e.connectionFactory">connectionFactory</a>)></p> +<p class="code" id="dtd"><!ATTLIST extension</p> +<p class="code" id="dtdAttlist">point CDATA #REQUIRED</p><p class="code" id="dtdAttlist">id CDATA #IMPLIED</p><p class="code" id="dtdAttlist">name CDATA #IMPLIED></p> +<p></p> +<ul class="ConfigMarkup" id="attlistDesc"> +</ul> +<br><p class="code" id="dtd"><!ELEMENT <a name="e.connectionFactory">connectionFactory</a> (<a href="#e.defaultargument">defaultargument</a>)></p> +<p class="code" id="dtd"><!ATTLIST connectionFactory</p> +<p class="code" id="dtdAttlist">class CDATA #REQUIRED</p><p class="code" id="dtdAttlist">name CDATA #IMPLIED</p><p class="code" id="dtdAttlist">description CDATA #IMPLIED></p> +<p></p> +<p class="ConfigMarkup" id="elementDesc"> +Connection factory definition</p> +<br> +<ul class="ConfigMarkup" id="attlistDesc"> +<li><b>class</b> - Required class that provides implementation of connection factory. The class must implement <b>org.eclipse.ecf.core.comm.provider.ISynchAsynchConnectionInstantiator</b></li> +<li><b>name</b> - Optional name for connection factory. If this name is not explicitly given, the class will be used for the name.</li> +<li><b>description</b> - An optional description for the connection factory.</li> +</ul> +<br><p class="code" id="dtd"><!ELEMENT <a name="e.defaultargument">defaultargument</a> EMPTY></p> +<p class="code" id="dtd"><!ATTLIST defaultargument</p> +<p class="code" id="dtdAttlist">type CDATA #IMPLIED</p><p class="code" id="dtdAttlist">value CDATA #IMPLIED</p><p class="code" id="dtdAttlist">name CDATA #IMPLIED></p> +<p></p> +<p class="ConfigMarkup" id="elementDesc"> +Default argument to be passed to makeInstance method. Value of this +element (if any) is used to provide a default value for the given +argument</p> +<br> +<ul class="ConfigMarkup" id="attlistDesc"> +<li><b>type</b> - The fully qualified type of the argument.</li> +<li><b>value</b> - The value for the default argument</li> +<li><b>name</b> - An optional name for the defaultargument</li> +</ul> +<br><h6 class="CaptionFigColumn" id="header">Examples: </h6>Here's an extension that associates a class org.eclipse.ecf.test.FooContainerFactory with name 'foo' in the ECF <b>SharedObjectContainerFactory</b>: + +<pre> <p class="code" id="tag"><extension + point=</p><p class="code" id="cstring">"org.eclipse.ecf.connectionFactory"</p><p class="code" id="tag">></p> + <p class="code" id="tag"><connectionFactory + class=</p><p class="code" id="cstring">"org.eclipse.ecf.provider.comm.tcp.Client$Creator"</p><p class="code" id="tag"> + description=</p><p class="code" id="cstring">"TCP Client Connection Factory"</p><p class="code" id="tag"> + name=</p><p class="code" id="cstring">"org.eclipse.ecf.provider.comm.tcp.Client"</p><p class="code" id="tag">></p> + <p class="code" id="tag"><defaultargument + value=</p><p class="code" id="cstring">"10000"</p><p class="code" id="tag"> + type=</p><p class="code" id="cstring">"java.lang.Integer"</p><p class="code" id="tag"> + name=</p><p class="code" id="cstring">"keepAlive"</p><p class="code" id="tag">/></p> + <p class="code" id="tag"></connectionFactory></p> + <p class="code" id="tag"></extension></p> +</pre> + +Here's an example implementation of this extension point: + +<pre> public ISynchAsynchConnection makeInstance(ConnectionDescription description, + ISynchAsynchConnectionEventHandler handler, Class[] clazzes, + Object[] args) throws ConnectionInstantiationException { + try { + String [] argVals = description.getArgDefaults(); + Integer ka = null; + if (argVals != null && argVals.length != 0) { + String val = argVals[0]; + if (val != null) { + ka = new Integer(val); + } + } + if (args != null && args.length != 0) { + if (args[0] instanceof Integer) { + ka = (Integer) args[0]; + } else if (args[0] instanceof String) { + ka = new Integer((String) args[0]); + } + } + return new Client(handler, ka); + } catch (Exception e) { + throw new ConnectionInstantiationException( + "Exception in creating connection " + + Client.class.getName(), e); + } + } +</pre> +<p></p> + +<h6 class="CaptionFigColumn" id="header">API Information: </h6>The API for this extension point is provided by the <b>org.eclipse.ecf.core.comm.ContainerFactory</b> +static methods. Specifically, the 'makeSynchAsynchConnection' static +methods are to be used by clients. The functionality provided by the +extension point mechanism can be used at runtime via the <b>ConnectionFactory.addDescription(ConnectionDescription)</b> method. The available connection factories can be queried with the <b>ConnectionFactory.getDescriptions()</b> method. +<p></p> + +<h6 class="CaptionFigColumn" id="header">Supplied Implementation: </h6>The supplied implementations of this extension point are: + +In org.eclipse.ecf.provider plugin: + +org.eclipse.ecf.provider.tcp.Client$Creator +<p></p> + +<br> +<p class="note" id="copyright"> +Copyright (c) 2005 Composent, Inc. and others. +All rights reserved. This program and the accompanying materials are +made available under the terms of the Eclipse Public License v1.0 which +accompanies this distribution, and is available at +http://www.eclipse.org/legal/epl-v10.html. Contributors: Composent, +Inc. - initial API and implementation +</p><p></p> + +<p></p> +</body></html>
\ No newline at end of file diff --git a/doc/bundles/org.eclipse.ecf.doc/html/reference/extension-points/org.eclipse.ecf.containerFactory.html b/doc/bundles/org.eclipse.ecf.doc/html/reference/extension-points/org.eclipse.ecf.containerFactory.html new file mode 100644 index 000000000..988d35406 --- /dev/null +++ b/doc/bundles/org.eclipse.ecf.doc/html/reference/extension-points/org.eclipse.ecf.containerFactory.html @@ -0,0 +1,143 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>ECF Container Factory</title> + +<style>@import url("file:/c:/cygwin/home/pnehrer/eclipse-SDK-3.1M4/eclipse/plugins/org.eclipse.platform.doc.isv_3.1.0/book.css");</style> +<style>@import url("file:/c:/cygwin/home/pnehrer/eclipse-SDK-3.1M4/eclipse/plugins/org.eclipse.platform.doc.isv_3.1.0/schema.css");</style></head> + +<body> +<h1><center>ECF Container Factory</center></h1> +<p></p> +<h6 class="CaptionFigColumn" id="header">Identifier: </h6>org.eclipse.ecf.containerFactory<p></p> +<h6 class="CaptionFigColumn" id="header">Since: </h6>0.0.1 +<p></p> + +<p> +</p><h6 class="CaptionFigColumn" id="header">Description: </h6>This +extension allows plugins to register themselves as 'providers' of ECF +shared object containers. Once registered via this extension point, +plugins can then provide there own implementations of +ISharedObjectContainer in response to client request of the ECF +container factory (<b>org.eclipse.ecf.core.SharedObjectContainerFactory</b>). +<p>Plugins using this extension point can define a new implementation +of any desired communications protocol, and expose that protocol as an +instance of an <b>ISharedObjectContainer</b>. When client requests are made to ECF SharedObjectContainerFactory to create <b>ISharedObjectContainer</b> instances, those requests will be re-directed to the given ISharedObjectContainer implementer.</p> +<p></p><h6 class="CaptionFigColumn" id="header">Configuration Markup:</h6><p></p> +<p class="code" id="dtd"><!ELEMENT <a name="e.extension">extension</a> (<a href="#e.containerFactory">containerFactory</a>+)></p> +<p class="code" id="dtd"><!ATTLIST extension</p> +<p class="code" id="dtdAttlist">point CDATA #REQUIRED</p><p class="code" id="dtdAttlist">id CDATA #IMPLIED</p><p class="code" id="dtdAttlist">name CDATA #IMPLIED></p> +<p></p> +<ul class="ConfigMarkup" id="attlistDesc"> +</ul> +<br><p class="code" id="dtd"><!ELEMENT <a name="e.containerFactory">containerFactory</a> (<a href="#e.defaultargument">defaultargument</a>* , <a href="#e.property">property</a>*)></p> +<p class="code" id="dtd"><!ATTLIST containerFactory</p> +<p class="code" id="dtdAttlist">class CDATA #REQUIRED</p><p class="code" id="dtdAttlist">name CDATA #IMPLIED</p><p class="code" id="dtdAttlist">description CDATA #IMPLIED></p> +<p></p> +<p class="ConfigMarkup" id="elementDesc"> +The container factory extension point. Can optionally contain a list of +'defaultargument' elements that describe the arguments (and provide +default values) to be passed to provider implementation</p> +<br> +<ul class="ConfigMarkup" id="attlistDesc"> +<li><b>class</b> - The class implementing the containerFactory extension point. The given class must implement the <b>org.eclipse.ecf.core.provider.ISharedObjectContainerInstantiator</b> interface</li> +<li><b>name</b> - An optional name for the extension. If no name is +explicitly provided by the extension, the containerFactory class name +is used as the name. Note that this name must <b>not</b> conflict with +any other name in the ECF SharedObjectContainerFactory in order to be +successfully registered. Care should therefore be taken in selection of +a name such that it does not conflict with other pre-existing names for +this factory implementations</li> +<li><b>description</b> - An optional description of the implementation of this extension point</li> +</ul> +<br><p class="code" id="dtd"><!ELEMENT <a name="e.defaultargument">defaultargument</a> EMPTY></p> +<p class="code" id="dtd"><!ATTLIST defaultargument</p> +<p class="code" id="dtdAttlist">type CDATA #IMPLIED</p><p class="code" id="dtdAttlist">value CDATA #IMPLIED</p><p class="code" id="dtdAttlist">name CDATA #IMPLIED></p> +<p></p> +<p class="ConfigMarkup" id="elementDesc"> +Default argument to be passed to <b>org.eclipse.ecf.core.provider.makeInstance()</b> method. Value of this element (if any) is used to indicate a default value for the given argument</p> +<br> +<ul class="ConfigMarkup" id="attlistDesc"> +<li><b>type</b> - The fully qualified type of the default argument</li> +<li><b>value</b> - The value for the default argument</li> +<li><b>name</b> - An optional name for the defaultargument element</li> +</ul> +<br><p class="code" id="dtd"><!ELEMENT <a name="e.property">property</a> EMPTY></p> +<p class="code" id="dtd"><!ATTLIST property</p> +<p class="code" id="dtdAttlist">name CDATA #REQUIRED</p><p class="code" id="dtdAttlist">value CDATA #REQUIRED></p> +<p></p> +<p class="ConfigMarkup" id="elementDesc"> +Property (name,value) associated with SharedObjectContainerDescription</p> +<br> +<ul class="ConfigMarkup" id="attlistDesc"> +<li><b>name</b> - The name of the property</li> +<li><b>value</b> - The value of the property</li> +</ul> +<br><h6 class="CaptionFigColumn" id="header">Examples: </h6>Here's an extension that associates a class org.eclipse.ecf.test.FooContainerFactory with name 'foo' in the ECF <b>SharedObjectContainerFactory</b>: + +<pre><p class="code" id="tag"><extension point=</p><p class="code" id="cstring">"org.eclipse.ecf.containerFactory"</p><p class="code" id="tag">></p> + <p class="code" id="tag"><containerFactory name=</p><p class="code" id="cstring">"foo"</p><p class="code" id="tag"> class=</p><p class="code" id="cstring">"org.eclipse.ecf.test.FooContainerFactory"</p><p class="code" id="tag"> description=</p><p class="code" id="cstring">"My container factory"</p><p class="code" id="tag">/></p> + <p class="code" id="tag"><defaultargument type=</p><p class="code" id="cstring">"java.lang.String"</p><p class="code" id="tag"> value=</p><p class="code" id="cstring">"defaultvalue"</p><p class="code" id="tag"> name=</p><p class="code" id="cstring">"variablename"</p><p class="code" id="tag">/></p> +<p class="code" id="tag"></extension></p> +</pre> + +Here is some example code to implement this class: + +<pre>package org.eclipse.ecf.test; + +import org.eclipse.ecf.core.ISharedObjectContainer; +import org.eclipse.ecf.core.SharedObjectContainerInstantiationException; +import org.eclipse.ecf.core.provider.ISharedObjectContainerInstantiator; + +public class FooContainerFactory implements ISharedObjectContainerInstantiator { + + public FooContainerFactory() { + super(); + } + public ISharedObjectContainer makeInstance(SharedObjectContainterDescription description, Class[] argTypes, Object[] args) + throws SharedObjectContainerInstantiationException { + // Create/return instance of FooSharedObjectContainer + // Note that FooSharedObjectContainer class must + // implement ISharedObjectContainer + return new FooSharedObjectContainer(); + } +} +</pre> + +In this example, the given class implements the <b>ISharedObjectContainerInstantiator</b>.makeInstance +method by creating and returning a new instance of +FooSharedObjectContainer, a class also defined in the extension plugin. +As noted in the code, this class must implement <b>ISharedObjectContainer</b>, so that it can successfully be returned from makeInstance. + +<h3>Example Usage of Container by Clients</h3> + +Clients that wish to use the 'foo' container implementation can do so simply by making the following call to create an <b>ISharedObjectContainer</b>: + +<pre>ISharedObjectContainer newContainer = SharedObjectContainerFactory.makeSharedObjectContainer('foo'); +// Further use of newContainer instance here + +</pre> +<p></p> + +<h6 class="CaptionFigColumn" id="header">API Information: </h6>The API for this extension point is provided by the <b>org.eclipse.ecf.core.SharedObjectContainerFactory</b> +static methods. Specifically, the 'makeSharedObjectContainer' static +methods are to be used by clients. The functionality provided by the +extension point mechanism can be used at runtime via the <b>SharedObjectContainerFactory.addDescription(SharedObjectContainerDescription)</b> method. +<p></p> + +<h6 class="CaptionFigColumn" id="header">Supplied Implementation: </h6>The supplied implementations of this extension point are: + +org.eclipse.ecf.provider.generic.ContainerInstantiator +<b>TEST</b>: org.eclipse.ecf.test.TestContainer +<p></p> + +<br> +<p class="note" id="copyright"> +Copyright (c) 2004 Composent, Inc. and others. +All rights reserved. This program and the accompanying materials are +made available under the terms of the Eclipse Public License v1.0 which +accompanies this distribution, and is available at +http://www.eclipse.org/legal/epl-v10.html. Contributors: Composent, +Inc. - initial API and implementation +</p><p></p> + +<p></p> +</body></html>
\ No newline at end of file diff --git a/doc/bundles/org.eclipse.ecf.doc/html/reference/extension-points/org.eclipse.ecf.namespace.html b/doc/bundles/org.eclipse.ecf.doc/html/reference/extension-points/org.eclipse.ecf.namespace.html new file mode 100644 index 000000000..4b4a232f5 --- /dev/null +++ b/doc/bundles/org.eclipse.ecf.doc/html/reference/extension-points/org.eclipse.ecf.namespace.html @@ -0,0 +1,133 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>ECF Namespace</title> + +<style>@import url("file:/c:/cygwin/home/pnehrer/eclipse-SDK-3.1M4/eclipse/plugins/org.eclipse.platform.doc.isv_3.1.0/book.css");</style> +<style>@import url("file:/c:/cygwin/home/pnehrer/eclipse-SDK-3.1M4/eclipse/plugins/org.eclipse.platform.doc.isv_3.1.0/schema.css");</style></head> + +<body> +<h1><center>ECF Namespace</center></h1> +<p></p> +<h6 class="CaptionFigColumn" id="header">Identifier: </h6>org.eclipse.ecf.namespace<p></p> +<h6 class="CaptionFigColumn" id="header">Since: </h6>1.0.0 +<p></p> + +<p> +</p><h6 class="CaptionFigColumn" id="header">Description: </h6>Extension +point that allows other plugins to define new Namespaces for +instantiating new types of identity. Plugins can register themselves as +'providers' for namespaces that they define, and will then be called +when ECF clients use the <b>org.eclipse.ecf.core.identity.IDFactory.makeID</b> identity factory. +<p> +Plugins implementing this extension point must define an instantiatorClass that implements <b>org.eclipse.ecf.core.identity.provider.IDInstantiator</b>.</p> +<p></p><h6 class="CaptionFigColumn" id="header">Configuration Markup:</h6><p></p> +<p class="code" id="dtd"><!ELEMENT <a name="e.extension">extension</a> (<a href="#e.namespace">namespace</a>+)></p> +<p class="code" id="dtd"><!ATTLIST extension</p> +<p class="code" id="dtdAttlist">point CDATA #REQUIRED</p><p class="code" id="dtdAttlist">id CDATA #IMPLIED</p><p class="code" id="dtdAttlist">name CDATA #IMPLIED></p> +<p></p> +<ul class="ConfigMarkup" id="attlistDesc"> +</ul> +<br><p class="code" id="dtd"><!ELEMENT <a name="e.namespace">namespace</a> EMPTY></p> +<p class="code" id="dtd"><!ATTLIST namespace</p> +<p class="code" id="dtdAttlist">instantiatorClass CDATA #REQUIRED</p><p class="code" id="dtdAttlist">name CDATA #IMPLIED</p><p class="code" id="dtdAttlist">namespaceClass CDATA #IMPLIED</p><p class="code" id="dtdAttlist">description CDATA #IMPLIED></p> +<p></p> +<p class="ConfigMarkup" id="elementDesc"> +Element allowing extension plugins to define new namespaces</p> +<br> +<ul class="ConfigMarkup" id="attlistDesc"> +<li><b>instantiatorClass</b> - Required class name. <b>Must</b> implement <b>org.eclipse.identity.provider.IDInstantiator</b></li> +<li><b>name</b> - Optional name for new namespace. If not provided, the +name will be assumed to be the fully qualified name of the +instantiatorClass. Note that this name must <b>not</b> conflict with +any other namespace name in the ECF IDFactory in order to be +successfully registered. Care should therefore be taken in selection of +a name such that it does not conflict with other implementations.</li> +<li><b>namespaceClass</b> - Optional class name of the Namespace class. Defaults to <b>org.eclipse.ecf.core.identity.Namespace</b>. +Implementers may choose to create a subclass of the Namespace class, +and can provide that class name here to use that class as the Namespace +implementation. Note that the class, if provided, <b>must</b> extend <b>org.eclipse.ecf.core.identity.Namespace</b> and also must implement the two public constructors defined in the Namespace superclass.</li> +<li><b>description</b> - An optional description for the implementation of this extension point</li> +</ul> +<br><h6 class="CaptionFigColumn" id="header">Examples: </h6>Here's an extension definition that associates an namespace instantiatorClass with namespace 'testid' in the ECF <b>org.eclipse.ecf.core.identity.IDFactory</b>: + +<pre> <p class="code" id="tag"><extension point=</p><p class="code" id="cstring">"org.eclipse.ecf.namespace"</p><p class="code" id="tag">></p> + <p class="code" id="tag"><namespace name=</p><p class="code" id="cstring">"testid"</p><p class="code" id="tag"> instantiatorClass=</p><p class="code" id="cstring">"org.eclipse.ecf.test.FooIDInstantiator"</p><p class="code" id="tag"> description=</p><p class="code" id="cstring">"my namespace implementation"</p><p class="code" id="tag">/></p> + <p class="code" id="tag"></extension></p> +</pre> + +Here is some example code to implement this FooIDInstantiator class: + +<pre>package org.eclipse.ecf.test; + +import org.eclipse.ecf.core.identity.ID; +import org.eclipse.ecf.core.identity.IDInstantiationException; +import org.eclipse.ecf.core.identity.Namespace; + +public class FooIDInstantiator implements + org.eclipse.ecf.core.identity.provider.IDInstantiator { + + public FooIDInstantiator() { + super(); + } + public ID makeInstance(Namespace ns, Class[] argTypes, Object[] args) + throws IDInstantiationException { + return new FooID(ns, (String) args[0]); + } +} +</pre> + +In this example, the given class implements the <b>IDInstantiator</b>.makeInstance +method by creating and returning a new instance of FooID, a class also +defined in the extension plugin. This class must implement <b>ID</b>, so that it can successfully be returned from makeInstance. + +<h3>Example Usage of IDFactory by Clients</h3> + +Clients that wish to use the 'testid' ID instantiator implementation can do so simply by making the following call to create an <b>IDFactory</b>: + +<pre>ID newID = IDFactory.makeID('testid','email@emailserver.com'); +// Further use of newID instance here + +</pre> +<p></p> + +<h6 class="CaptionFigColumn" id="header">API Information: </h6>The API for this extension point is provided by the <b>org.eclipse.ecf.core.IDFactory</b> +static methods. Specifically, the 'makeID' static methods are to be +used by clients. The functionality provided by the extension point +mechanism can be used at runtime via the <b>IDFactory.addNamespace(Namespace)</b> method. +<p></p> + +<h6 class="CaptionFigColumn" id="header">Supplied Implementation: </h6>The following implementations of this extension point are provided by ECF itself: +<p> +StringID -- A namespace of ID instances that are implemented by <b>org.eclipse.ecf.core.identity.StringID</b> +</p><p>Clients may use this namespace with calls to: +</p><pre>ID newID = org.eclipse.ecf.core.identity.IDFactory.makeStringID('idstringvalue'); +</pre> +<p></p> +<p></p> +<p> +LongID -- A namespace of ID instances that are implemented by <b>org.eclipse.ecf.core.identity.LongID</b> +</p><p>Clients may use this namespace with calls to: +</p><pre>ID newID = org.eclipse.ecf.core.identity.IDFactory.makeLongID(2004L); +</pre> +<p></p> +<p></p> +<p> +GUID -- A namespace of ID instances that are implemented by <b>org.eclipse.ecf.core.identity.GUID</b> +</p><p>Clients may use this namespace with calls to: +</p><pre>ID newID = org.eclipse.ecf.core.identity.IDFactory.makeGUID(16); +</pre> +<p></p> +<p></p> +<p></p> + +<br> +<p class="note" id="copyright"> +Copyright (c) 2004 Composent, Inc. and others. +All rights reserved. This program and the accompanying materials are +made available under the terms of the Eclipse Public License v1.0 which +accompanies this distribution, and is available at +http://www.eclipse.org/legal/epl-v10.html. Contributors: Composent, +Inc. - initial API and implementation +</p><p></p> + +<p></p> +</body></html>
\ No newline at end of file diff --git a/doc/bundles/org.eclipse.ecf.doc/javadoc.xml b/doc/bundles/org.eclipse.ecf.doc/javadoc.xml new file mode 100644 index 000000000..f52ce9ce0 --- /dev/null +++ b/doc/bundles/org.eclipse.ecf.doc/javadoc.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project default="javadoc"> + <target name="javadoc"> + <javadoc access="public" author="true" classpath="." destdir="html/reference/api" doctitle="Eclipse Communication Framework (ECF) 1.0.0" nodeprecated="false" nodeprecatedlist="false" noindex="false" nonavbar="false" notree="false" packagenames="org.eclipse.ecf.core.comm,org.eclipse.ecf.provider,org.eclipse.ecf.sdo.emf,org.eclipse.ecf.core.identity,org.eclipse.ecf.provider.generic.events,org.eclipse.ecf.core.identity.provider,org.eclipse.ecf.provider.comm.tcp,org.eclipse.ecf.provider.generic.gmm,org.eclipse.ecf.provider.app,org.eclipse.ecf.provider.generic,org.eclipse.ecf.sdo,org.eclipse.ecf.provider.generic.user,org.eclipse.ecf.core,org.eclipse.ecf.provider.generic.sobject,org.eclipse.ecf.core.user,org.eclipse.ecf.core.provider,org.eclipse.ecf.core.events,org.eclipse.ecf.core.util,org.eclipse.ecf.core.comm.provider" source="1.4" sourcepath="../org.eclipse.ecf.sdo/src;../org.eclipse.ecf.provider/src;../org.eclipse.ecf/src" splitindex="true" use="true" version="true"> + <link href="http://java.sun.com/j2se/1.4.1/docs/api"/> + </javadoc> + </target> +</project> diff --git a/doc/bundles/org.eclipse.ecf.doc/tocconcepts.xml b/doc/bundles/org.eclipse.ecf.doc/tocconcepts.xml index 38e5611aa..698386881 100644 --- a/doc/bundles/org.eclipse.ecf.doc/tocconcepts.xml +++ b/doc/bundles/org.eclipse.ecf.doc/tocconcepts.xml @@ -1,5 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <?NLS TYPE="org.eclipse.help.toc"?> -<toc label="Concepts" link_to="toc.xml#concepts"> +<toc label="Concepts" link_to="toc.xml#concepts"> + <topic label="Introduction" href="html/concepts/intro.html"/> + <topic label="SharedObjectContainer" href="html/concepts/container.html"/> + <topic label="ISharedObject" href="html/concepts/sharedobject.html"/> </toc> diff --git a/doc/bundles/org.eclipse.ecf.doc/tocgettingstarted.xml b/doc/bundles/org.eclipse.ecf.doc/tocgettingstarted.xml index 36ed6e5df..c6eb8cb4d 100644 --- a/doc/bundles/org.eclipse.ecf.doc/tocgettingstarted.xml +++ b/doc/bundles/org.eclipse.ecf.doc/tocgettingstarted.xml @@ -2,4 +2,7 @@ <?NLS TYPE="org.eclipse.help.toc"?> <toc label="Getting Started" link_to="toc.xml#gettingstarted"> + <topic label="System Requirements" href="html/gettingstarted/prerequisites.html"/> + <topic label="Connecting to Test Server" href="html/gettingstarted/connect.html"/> + <topic label="Running Test Server" href="html/gettingstarted/runserver.html"/> </toc> diff --git a/doc/bundles/org.eclipse.ecf.doc/tocreference.xml b/doc/bundles/org.eclipse.ecf.doc/tocreference.xml index 7babd0319..cce211cbe 100644 --- a/doc/bundles/org.eclipse.ecf.doc/tocreference.xml +++ b/doc/bundles/org.eclipse.ecf.doc/tocreference.xml @@ -2,4 +2,10 @@ <?NLS TYPE="org.eclipse.help.toc"?> <toc label="Reference" link_to="toc.xml#reference"> + <topic label="JavaDoc" href="html/reference/api/index.html"/> + <topic label="Extension Points"> + <topic label="org.eclipse.ecf.comm" href="html/reference/extension-points/org.eclipse.ecf.comm.html"/> + <topic label="org.eclipse.ecf.containerFactory" href="html/reference/extension-points/org.eclipse.ecf.containerFactory.html"/> + <topic label="org.eclipse.ecf.namespace" href="html/reference/extension-points/org.eclipse.ecf.namespace.html"/> + </topic> </toc> |
