This commit was manufactured by cvs2svn to create tag 'v20041202'.
diff --git a/plugins/org.eclipse.jst.server.generic.core/.classpath b/plugins/org.eclipse.jst.server.generic.core/.classpath
new file mode 100644
index 0000000..065ac06
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/org.eclipse.jst.server.generic.core/.cvsignore b/plugins/org.eclipse.jst.server.generic.core/.cvsignore
new file mode 100644
index 0000000..07d3079
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/.cvsignore
@@ -0,0 +1,6 @@
+bin
+build.xml
+genericserver.jar
+org.eclipse.jst.server.generic.core_1.0.0.jar
+temp.folder
+*.settings
diff --git a/plugins/org.eclipse.jst.server.generic.core/.project b/plugins/org.eclipse.jst.server.generic.core/.project
new file mode 100644
index 0000000..fe7ee06
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.jst.server.generic.core</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/plugins/org.eclipse.jst.server.generic.core/build.properties b/plugins/org.eclipse.jst.server.generic.core/build.properties
new file mode 100644
index 0000000..b68a22c
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/build.properties
@@ -0,0 +1,12 @@
+source.genericserver.jar = src/
+output.genericserver.jar = bin/
+bin.includes = plugin.xml,\
+               genericserver.jar,\
+               servers/,\
+               plugin.properties,\
+               xsd/ServerTypeDefinitionSchema.xsd
+src.includes = servers/,\
+               src/,\
+               plugin.xml,\
+               plugin.properties,\
+               xsd/
diff --git a/plugins/org.eclipse.jst.server.generic.core/plugin.properties b/plugins/org.eclipse.jst.server.generic.core/plugin.properties
new file mode 100644
index 0000000..7c92580
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/plugin.properties
@@ -0,0 +1,10 @@
+pluginName= Generic Server Plugin
+providerName=Eteration.com
+pluginDescription=Provides generic server tooling with easy to develop meta data configuration files
+
+runtimeTypeName=Generic Server Runtime
+runtimeTypeDescription=This is the Lomboz type runtime support
+
+serverTypeName=Generic server support
+serverTypeDescription=Lomboz type generic server
+launchConfigurationTypeName=Generic server launch configuration type
diff --git a/plugins/org.eclipse.jst.server.generic.core/plugin.xml b/plugins/org.eclipse.jst.server.generic.core/plugin.xml
new file mode 100644
index 0000000..7e215ad
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/plugin.xml
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+<plugin
+   id="org.eclipse.jst.server.generic.core"
+   name="%pluginName"
+   version="1.0.0"
+   provider-name="%providerName"
+   class="org.eclipse.jst.server.generic.core.CorePlugin"
+   description="%pluginDescription">
+
+   <runtime>
+      <library name="genericserver.jar">
+         <export name="*"/>
+      </library>
+   </runtime>
+
+   <requires>
+      <import plugin="org.eclipse.ui"/>
+      <import plugin="org.eclipse.core.runtime"/>
+      <import plugin="org.eclipse.core.resources"/>
+      <import plugin="org.eclipse.debug.core"/>
+      <import plugin="org.eclipse.jdt.core"/>
+      <import plugin="org.eclipse.jdt.launching"/>
+      <import plugin="org.eclipse.wst.server.core"/>
+      <import plugin="org.eclipse.jst.server.core"/>
+      <import plugin="org.eclipse.debug.ui"/>
+      <import plugin="org.eclipse.ant.core"/>
+      <import plugin="org.eclipse.ant.ui"/>
+      <import plugin="org.eclipse.jst.server.generic.modules"/>
+      <import plugin="org.eclipse.emf.common"/>
+      <import plugin="org.eclipse.emf.ecore"/>
+      <import plugin="org.eclipse.emf.ecore.xmi"/>
+   </requires>
+	
+ <extension point="org.eclipse.wst.server.core.runtimeTargetHandlers">
+     <runtimeTargetHandler
+        id="org.eclipse.jst.server.generic.runtimeTarget"
+        runtimeTypeIds="org.eclipse.jst.server.generic.runtime"
+        class="org.eclipse.jst.server.generic.internal.core.GenericServerRuntimeTargetHandler"/>
+	</extension>
+
+  <extension point="org.eclipse.wst.server.core.moduleKinds">
+    <moduleKind
+       id="j2ee.web"
+       name="war file"/>
+    <moduleKind
+       id="j2ee.ejb"
+       name="ejb"/>
+    <moduleKind
+       id="j2ee.ear"
+       name="ear"/>
+  </extension>
+  
+  <extension point="org.eclipse.wst.server.core.runtimeTypes">
+    <runtimeType
+       id="org.eclipse.jst.server.generic.runtime"
+       name="%runtimeTypeName"
+       description="%runtimeTypeDescription"
+       vendor="All"
+       version="0"
+       order="100"
+       class="org.eclipse.jst.server.generic.internal.core.GenericServerRuntime"
+       workingCopyClass="org.eclipse.jst.server.generic.internal.core.GenericServerRuntimeWorkingCopy">
+       <moduleType
+         types="j2ee.web"
+         versions="1.2, 1.3, 1.4"/>
+    </runtimeType>
+ </extension>
+
+<extension point="org.eclipse.wst.server.core.serverTypes">
+     <serverType
+           runtime="true"
+           class="org.eclipse.jst.server.generic.internal.core.GenericServer"
+           order="100"
+           hosts="localhost"
+           id="org.eclipse.jst.server.generic"
+           initialState="stopped"
+           workingCopyClass="org.eclipse.jst.server.generic.internal.core.GenericServerWorkingCopy"
+           runtimeTypeId="org.eclipse.jst.server.generic.runtime"
+           description="%serverTypeDescription"
+           launchConfigId="org.eclipse.jst.server.generic.core.launchConfigurationType"
+           monitorable="true"
+           name="%serverTypeName"
+           launchModes="run,debug">
+          
+     </serverType>
+	</extension>
+
+   <extension point="org.eclipse.debug.core.launchConfigurationTypes">
+     <launchConfigurationType
+        id="org.eclipse.jst.server.generic.core.launchConfigurationType"
+        name="%launchConfigurationTypeName"
+        delegate="org.eclipse.jst.server.generic.internal.core.GenericServerLaunchConfigurationDelegate"
+        modes="run, debug"
+        sourceLocatorId="org.eclipse.jdt.launching.sourceLocator.JavaSourceLookupDirector"
+        sourcePathComputerId="org.eclipse.jst.server.generic.core.sourcePathComputer"/>
+  </extension>
+
+   <extension point="org.eclipse.debug.core.sourcePathComputers">
+     <sourcePathComputer
+        id="org.eclipse.jst.server.generic.core.sourcePathComputer"
+        class="org.eclipse.jst.server.generic.internal.core.GenericServerSourcePathComputerDelegate"/>
+   </extension>
+ 
+   <extension point="org.eclipse.wst.server.core.launchableAdapters">
+      <launchableAdapter
+         class="org.eclipse.jst.server.generic.internal.core.GenericServerLaunchableAdapterDelegate"
+         id="org.eclipse.jst.server.generic.web"/>
+   </extension>
+</plugin>
diff --git a/plugins/org.eclipse.jst.server.generic.core/servers/jboss323.server b/plugins/org.eclipse.jst.server.generic.core/servers/jboss323.server
new file mode 100644
index 0000000..6aeccf5
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/servers/jboss323.server
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<tns:ServerRuntime

+	xmlns:tns="http://eclipse.org/jst/server/generic/ServerTypeDefinition"

+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

+	xsi:schemaLocation="http://eclipse.org/jst/server/generic/ServerTypeDefinition ServerTypeDefinitionSchema.xsd "

+	name="JBOSS 3.2.3" version="v3.2.3">

+<property id="serverRootDirectory"

+	label="Application Server Directory:"

+	type="directory"

+	context="runtime"

+	default="/your_server_root/appservers/jboss-3.2.3" />

+<property id="serverAddress"

+	label="Address:"

+	type="string"

+	context="server"

+	default="127.0.0.1" />

+<property id="port"

+	label="Port:"

+	type="string"

+	context="server"

+	default="8080" />

+<property id="serverConfig"

+	label="Server Configuration (minimal/default/all):"

+	type="string"

+	context="server"

+	default="default" />

+<property id="classPath"

+	label="Classpath Variable:"

+	type="directory"

+	context="runtime"

+	default="/your_server_root/appservers/jboss-3.2.3" />

+

+	<port>

+		<no>${port}</no>

+		<name>Http</name>

+		<protocol>http</protocol>

+	</port>

+

+	<module>

+		<type>j2ee.web</type>

+		<publishDir>${serverRootDirectory}/server/${serverConfig}/deploy</publishDir>

+		<publisherReference>jboss.web</publisherReference>

+	</module>

+

+

+	<project>

+		<classpathReference>jboss.project</classpathReference>

+	</project>

+	

+	<start>

+		<class>org.jboss.Main</class>

+		<workingDirectory>${serverRootDirectory}/bin</workingDirectory>

+		<programArguments>-c ${serverConfig}</programArguments>

+		<vmParameters></vmParameters>

+		<classpathReference>jboss</classpathReference>

+	</start>

+

+	<stop>

+		<class>org.jboss.Shutdown</class>

+		<workingDirectory>${serverRootDirectory}/bin</workingDirectory>

+		<programArguments>-S</programArguments>

+		<vmParameters></vmParameters>

+		<classpathReference>jboss</classpathReference>

+	</stop>

+	<publisher id="jboss.web">

+		<publish>

+			<task>

+		<![CDATA[

+			

+				<project name="deployextension"  default="deploy"  basedir=".">

+				    <target name="deploy">

+						<jar destfile="${deploymentUnitName}.war"> 

+							<zipfileset dir="${moduleDir}">

+	        					<include name="**/*.*"/>

+						        <exclude name="**/*.war"/>

+							</zipfileset>

+						</jar>

+  				  		<move file="${deploymentUnitName}.war" todir="${deployDir}"/>

+  					  </target>

+				</project>

+				

+		]]>			

+			</task>

+			<classpathReference>jboss</classpathReference>

+		</publish>

+		<unpublish>

+			<task>

+				<![CDATA[<project name="deployextension"  default="deploy"  basedir=".">

+				    <target name="deploy">

+  				  		<delete file="${deployDir}/${deploymentUnitName}.war"/>

+  					  </target>

+				</project>]]>

+			</task>

+			<classpathReference>jboss</classpathReference>

+		</unpublish>

+	</publisher>

+

+	<classpath id="jboss" isLibrary="true">

+		<archive path="${classPath}/bin/run.jar" />

+		<archive path="${classPath}/bin/shutdown.jar" />

+		<archive path="${classPath}/client/jboss-j2ee.jar" />

+		<archive path="${classPath}/server/${serverConfig}/lib/javax.servlet.jar" />

+		<archive path="${classPath}/lib/jboss-boot.jar" />

+		<archive path="${classPath}/lib/jboss-system.jar" />

+		<archive path="${classPath}/lib/concurrent.jar" />

+		<archive path="${classPath}/server/${serverConfig}/lib/jboss.jar" />

+		<archive path="${classPath}/server/${serverConfig}/lib/jnpserver.jar" />

+		<archive path="${classPath}/server/${serverConfig}/lib/jpl-pattern.jar" />

+		<archive path="${classPath}/server/${serverConfig}/lib/jpl-util.jar" />

+		<archive path="${classPath}/server/${serverConfig}/lib/jboss-transaction.jar" />

+		<archive path="${classPath}/server/${serverConfig}/lib/bcel.jar" />

+		<archive path="${classPath}/lib/jdom.jar" />

+		<archive path="${classPath}/lib/xercesImpl.jar" />

+		<archive path="${classPath}/lib/xml-apis.jar" />

+		<archive path="${classPath}/lib/gnu-regexp.jar" />

+		<archive path="${classPath}/lib/getopt.jar" />

+	</classpath>

+

+	<classpath id="jboss.project" isLibrary="false">

+		<archive path="${classPath}/client/jboss-j2ee.jar" />

+	</classpath>

+

+</tns:ServerRuntime>
\ No newline at end of file
diff --git a/plugins/org.eclipse.jst.server.generic.core/servers/jonas.server b/plugins/org.eclipse.jst.server.generic.core/servers/jonas.server
new file mode 100644
index 0000000..018f912
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/servers/jonas.server
@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<tns:ServerRuntime

+	xmlns:tns="http://eclipse.org/jst/server/generic/ServerTypeDefinition"

+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

+	xsi:schemaLocation="http://eclipse.org/jst/server/generic/ServerTypeDefinition ServerTypeDefinitionSchema.xsd "

+	name="JonAS 4.1.4" version="v4.1.4">

+	<property id="jonasRoot"

+		label="JonAS Installation Directory:"

+		type="directory"

+		context="runtime"

+		default="/your_server_root/JOnAS-4.1.4" />

+	<property id="jonasBase"

+		label="JonAS Configuration Directory:"

+		type="directory"

+		context="runtime"

+		default="/your_server_root/JOnAS-4.1.4" />

+	<property id="serverAddress"

+		label="Address:"

+		type="string"

+		context="server"

+		default="127.0.0.1" />

+	<property id="port"

+		label="Port:"

+		type="string"

+		context="server"

+		default="9000" />

+	<property id="protocols"

+		label="Ejb Protocols:"

+		type="string"

+		context="server"

+		default="jrmp" />

+	<property id="mappernames"

+		label="Mapper names:"

+		type="string"

+		context="server"

+		default="" />

+	<property id="classPath"

+		label="Classpath Variable:"

+		type="directory"

+		context="runtime"

+		default="/your_server_root/JOnAS-4.1.4" />

+

+	<port>

+		<no>${port}</no>

+		<name>Http</name>

+		<protocol>http</protocol>

+	</port>

+

+	<module>

+		<type>j2ee.web</type>

+		<publishDir>${jonasBase}/webapps/autoload</publishDir>

+		<publisherReference>jonas.web</publisherReference>

+	</module>

+

+

+	<project>

+		<classpathReference>jonas.project</classpathReference>

+	</project>

+	

+	<start>

+		<class>org.objectweb.jonas.server.Bootstrap</class>

+		<workingDirectory>${jonasRoot}</workingDirectory>

+		<programArguments>org.objectweb.jonas.server.Server</programArguments>

+		<vmParameters>-Dinstall.root=${jonasRoot} -Djonas.base=${jonasBase} -Djava.security.policy=${jonasRoot}/conf/java.policy -Djonas.classpath= -Djonas.default.classloader=true -Djavax.rmi.CORBA.PortableRemoteObjectClass=org.objectweb.carol.rmi.multi.MultiPRODelegate -Djava.naming.factory.initial=org.objectweb.carol.jndi.spi.MultiOrbInitialContextFactory -Djava.security.auth.login.config=${jonasRoot}/conf/jaas.config  -Djava.endorsed.dirs=${jonasRoot}/lib/endorsed -Djava.rmi.server.RMIClassLoaderSpi=org.objectweb.jonas.server.RemoteClassLoaderSpi</vmParameters>

+		<classpathReference>jonas</classpathReference>

+	</start>

+

+	<stop>

+		<class>org.objectweb.jonas.server.Bootstrap</class>

+		<workingDirectory>${jonasRoot}</workingDirectory>

+		<programArguments>org.objectweb.jonas.adm.JonasAdmin -s</programArguments>

+		<vmParameters>-Dinstall.root=${jonasRoot} -Djonas.base=${jonasBase} -Djava.security.policy=${jonasRoot}/conf/java.policy -Djonas.classpath= -Djonas.default.classloader=true -Djavax.rmi.CORBA.PortableRemoteObjectClass=org.objectweb.carol.rmi.multi.MultiPRODelegate -Djava.naming.factory.initial=org.objectweb.carol.jndi.spi.MultiOrbInitialContextFactory -Djava.security.auth.login.config=${jonasRoot}/conf/jaas.config  -Djava.endorsed.dirs=${jonasRoot}/lib/endorsed -Djava.rmi.server.RMIClassLoaderSpi=org.objectweb.jonas.server.RemoteClassLoaderSpi</vmParameters>

+		<classpathReference>jonas</classpathReference>

+	</stop>

+	<publisher id="jonas.web">

+		<publish>

+			<task><![CDATA[

+			

+				<project name="deployextension"  default="deploy"  basedir=".">

+				    <target name="deploy">

+						<jar destfile="${deploymentUnitName}.war"> 

+							<zipfileset dir="${moduleDir}">

+	        					<include name="**/*.*"/>

+						        <exclude name="**/*.war"/>

+							</zipfileset>

+						</jar>

+  				  		<move file="${deploymentUnitName}.war" todir="${deployDir}"/>

+  					  </target>

+				</project>

+				

+		]]></task>

+			<classpathReference>jonas</classpathReference>

+		</publish>

+		<unpublish>

+			<task>

+				<![CDATA[<project name="deployextension"  default="deploy"  basedir=".">

+				    <target name="deploy">

+  				  		<delete file="${deployDir}/${deploymentUnitName}.war"/>

+  					  </target>

+				</project>]]>

+			</task>

+			<classpathReference>weblogic.admin</classpathReference>

+		</unpublish>

+	</publisher>

+

+	<classpath id="jonas" isLibrary="true">

+		<archive path="${classPath}/lib/common/ow_jonas_bootstrap.jar" />

+		<archive path="${classPath}/conf" />

+	</classpath>

+

+	<classpath id="jonas.project" isLibrary="false">

+		<archive path="${classPath}/lib/common/ow_jonas_bootstrap.jar" />

+		<archive path="${classPath}/lib/commons/j2ee/ejb-2_1-api.jar" />

+		<archive path="${classPath}/lib/commons/j2ee/servlet-2_4.jar" />

+		<archive path="${classPath}/lib/commons/j2ee/jms.jar" />

+	</classpath>

+

+</tns:ServerRuntime>
\ No newline at end of file
diff --git a/plugins/org.eclipse.jst.server.generic.core/servers/weblogic81.server b/plugins/org.eclipse.jst.server.generic.core/servers/weblogic81.server
new file mode 100644
index 0000000..fe3d846
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/servers/weblogic81.server
@@ -0,0 +1,149 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<tns:ServerRuntime

+	xmlns:tns="http://eclipse.org/jst/server/generic/ServerTypeDefinition"

+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

+	xsi:schemaLocation="http://eclipse.org/jst/server/generic/ServerTypeDefinition ServerTypeDefinitionSchema.xsd "

+	name="BEA WebLogic Server v8.1" version="v8.1">

+

+

+	<property id="beaHome"

+		label="BEA Home Directory:"

+		type="directory"

+		context="runtime"

+		default="C:/bea" />

+	<property id="serverRootDirectory"

+		label="Application Server Directory:"

+		type="directory"

+		context="runtime"

+		default="C:/bea/weblogic81" />

+	<property id="domainName"

+		label="Admin Domain Name:"

+		type="string"

+		context="server"

+		default="mydomain" />

+	<property id="domainDirectory"

+		label="Administration Domain Directory:"

+		type="directory"

+		context="server"

+		default="C:/bea/user_projects/domains/mydomain" />

+	<property id="serverName"

+		label="Server Name:"

+		type="string"

+		context="server"

+		default="myserver" />

+	<property id="userName"

+		label="User Name:"

+		type="string"

+		context="server"

+		default="system" />

+	<property id="password"

+		label="Password:"

+		type="string"

+		context="server"

+		default="weblogic" />

+	<property id="productionMode"

+		label="Production Mode:"

+		type="boolean"

+		context="server"

+		default="false" />

+	<property id="serverAddress"

+		label="Address:"

+		type="string"

+		context="server"

+		default="127.0.0.1" />

+	<property id="port"

+		label="Port:"

+		type="string"

+		context="server"

+		default="7001" />

+	<property id="classPath"

+		label="Classpath Variable:"

+		type="directory"

+		context="runtime"

+		default="C:/bea/weblogic81/server/lib" />

+	

+

+

+	<port>

+		<no>${port}</no>

+		<name>Http</name>

+		<protocol>http</protocol>

+	</port>

+

+	<module>

+		<type>j2ee.web</type>

+		<publishDir>${domainDirectory}/applications</publishDir>

+		<publisherReference>weblogic.web</publisherReference>

+	</module>

+

+

+	<project>

+		<classpathReference>weblogic</classpathReference>

+	</project>

+	

+	<start>

+		<class>weblogic.Server</class>

+		<workingDirectory>${domainDirectory}</workingDirectory>

+		<programArguments></programArguments>

+		<vmParameters>

+			-Xms32m -Xmx200m -XX:MaxPermSize=128m

+			-Dweblogic.Name=${serverName} -Dbea.home="${beaHome}"

+			-Dweblogic.management.username=${userName}

+			-Dweblogic.management.password=${password}

+			-Dweblogic.ProductionModeEnabled=${productionMode}

+			-Djava.security.policy=="${serverRootDirectory}/server/lib/weblogic.policy"

+		</vmParameters>

+		<classpathReference>weblogic</classpathReference>

+	</start>

+

+	<stop>

+		<class>weblogic.Admin</class>

+		<workingDirectory>${domainDirectory}</workingDirectory>

+		<programArguments>

+			-url t3://${serverAddress}:${port} -username ${userName}

+			-password ${password} SHUTDOWN

+		</programArguments>

+		<vmParameters></vmParameters>

+		<classpathReference>weblogic.admin</classpathReference>

+	</stop>

+	<publisher id="weblogic.web">

+		<publish>

+			<task>

+				<![CDATA[<project name="deployextension"  default="deploy"  basedir=".">

+				    <target name="deploy">

+						<jar destfile="${module.name}.war"> 

+							<zipfileset dir="${module.dir}">

+	        					<include name="**/*.*"/>

+	       						<exclude name="**/jsp_servlet/*.class"/>

+						        <exclude name="**/*.war"/>

+							</zipfileset>

+						</jar>

+  				  		<move file="${module.name}.war" todir="${server.publish.dir}"/>

+  					  </target>

+				</project>]]>

+			</task>

+			<classpathReference>weblogic.admin</classpathReference>

+		</publish>

+		<unpublish>

+			<task>

+				<![CDATA[<project name="deployextension"  default="deploy"  basedir=".">

+				    <target name="deploy">

+  				  		<delete file="${server.publish.dir}/${module.name}.war"/>

+  					  </target>

+				</project>]]>

+			</task>

+			<classpathReference>weblogic.admin</classpathReference>

+		</unpublish>

+	</publisher>

+

+	<classpath id="weblogic" isLibrary="true">

+		<archive path="${classPath}/weblogic.jar" />

+		<archive path="${classPath}/ojdbc14.jar" />

+		<archive path="${classPath}/webservices.jar" />

+	</classpath>

+

+	<classpath id="weblogic.admin" isLibrary="false">

+		<archive path="${classPath}/weblogic.jar" />

+	</classpath>

+

+</tns:ServerRuntime>
\ No newline at end of file
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/CorePlugin.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/CorePlugin.java
new file mode 100644
index 0000000..aeda021
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/CorePlugin.java
@@ -0,0 +1,130 @@
+/*******************************************************************************
+ * Copyright (c) 2004 Eteration Bilisim A.S.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ * 
+ * Contributors:
+ *     Gorkem Ercan - initial API and implementation
+ *     Naci M. Dai
+ * 
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL ETERATION A.S. OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Eteration Bilisim A.S.  For more
+ * information on eteration, please see
+ * <http://www.eteration.com/>.
+ ***************************************************************************/
+package org.eclipse.jst.server.generic.core;
+
+
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.jst.server.generic.internal.core.ServerTypeDefinitionManager;
+import org.eclipse.ui.plugin.*;
+import org.osgi.framework.BundleContext;
+import java.io.IOException;
+import java.net.URL;
+import java.util.*;
+
+/**
+ * The main plugin class to be used in the desktop.
+ * 
+ * @author Gorkem Ercan
+ */
+public class CorePlugin extends AbstractUIPlugin {
+
+	public static final String PLUGIN_ID = "org.eclipse.jst.server.generic.core";
+
+	//The shared instance.
+	private static CorePlugin plugin;
+	//Resource bundle.
+	private ResourceBundle resourceBundle;
+	private ServerTypeDefinitionManager fServerTypeDefinitionManager;
+	/**
+	 * The constructor.
+	 */
+	public CorePlugin() {
+		super();
+		plugin = this;
+		try {
+			resourceBundle = ResourceBundle.getBundle("org.eclipse.jst.server.generic.core.CorePluginResources");
+		} catch (MissingResourceException x) {
+			resourceBundle = null;
+		}
+	}
+
+	/**
+	 * This method is called upon plug-in activation
+	 */
+	public void start(BundleContext context) throws Exception {
+		super.start(context);
+	}
+
+	/**
+	 * This method is called when the plug-in is stopped
+	 */
+	public void stop(BundleContext context) throws Exception {
+		super.stop(context);
+	}
+
+	/**
+	 * Returns the shared instance.
+	 */
+	public static CorePlugin getDefault() {
+		return plugin;
+	}
+
+	/**
+	 * Returns the string from the plugin's resource bundle,
+	 * or 'key' if not found.
+	 */
+	public static String getResourceString(String key) {
+		ResourceBundle bundle = CorePlugin.getDefault().getResourceBundle();
+		try {
+			return (bundle != null) ? bundle.getString(key) : key;
+		} catch (MissingResourceException e) {
+			return key;
+		}
+	}
+
+	/**
+	 * Returns the plugin's resource bundle,
+	 */
+	public ResourceBundle getResourceBundle() {
+		return resourceBundle;
+	}
+	/**
+	 * 
+	 * @return
+	 */
+	public ServerTypeDefinitionManager getServerTypeDefinitionManager()
+	{
+		if(fServerTypeDefinitionManager==null)
+			fServerTypeDefinitionManager = new ServerTypeDefinitionManager(getInstallUrl());
+		return fServerTypeDefinitionManager;
+	}
+	
+	private URL getInstallUrl()
+	{
+		try {
+			return Platform.resolve(this.getBundle().getEntry("/"));
+		} catch (IOException e) {
+			return null;
+		}	
+	}
+	
+	
+}
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/GenericServerCoreMessages.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/GenericServerCoreMessages.java
new file mode 100644
index 0000000..046187a
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/GenericServerCoreMessages.java
@@ -0,0 +1,63 @@
+package org.eclipse.jst.server.generic.core;
+
+import java.text.MessageFormat;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+/**
+ * Helper class to get messages
+ * 
+ * @author Gorkem Ercan
+ */
+public class GenericServerCoreMessages {
+
+	private static final String RESOURCE_BUNDLE= "org.eclipse.jst.server.generic.core.GenericServerCoreMessages";//$NON-NLS-1$
+
+	private static ResourceBundle fResourceBundle= ResourceBundle.getBundle(RESOURCE_BUNDLE);
+
+	private GenericServerCoreMessages() {
+	}
+
+	/**
+	 * Return string from the resource bundle.
+	 * 
+	 * @param key the string used to get the bundle value, must not be <code>null</code>
+	 * @return the string from the resource bundle
+	 */
+	public static String getString(String key) {
+		try {
+			return fResourceBundle.getString(key);
+		} catch (MissingResourceException e) {
+			return "!" + key + "!";
+		}
+	}
+	
+	/**
+	 * Gets a string from the resource bundle that is 
+	 * formatted it with the given argument.
+	 * 
+	 * @param key the string used to get the bundle value, must not be null
+	 * @param arg the argument used to format the string
+	 * @return the formatted string
+	 */
+	public static String getFormattedString(String key, Object[] arg) {
+		String format= null;
+		try {
+			format= fResourceBundle.getString(key);
+		} catch (MissingResourceException e) {
+			return "!" + key + "!";
+		}
+		if (arg == null)
+			arg= new Object[0];
+		return MessageFormat.format(format,  arg);
+	}
+	
+	/**
+	 * Returns a resource bundle.
+	 * 
+	 * @return the resource bundle
+	 */
+	public static ResourceBundle getResourceBundle() {
+		return fResourceBundle;
+	}
+}
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/GenericServerCoreMessages.properties b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/GenericServerCoreMessages.properties
new file mode 100644
index 0000000..0c696d7
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/GenericServerCoreMessages.properties
@@ -0,0 +1,7 @@
+errorName=Invalid name.
+errorJRE=Invalid JRE.
+errorNoServerType=No server type definition
+errorDuplicateRuntimeName=Name is already in use
+errorMissingClasspathEntry=Missing classpath entry {0}
+errorPortInUse=Server port In Use {0}-{1}
+cancelNoPublish=Nothing to publish
\ No newline at end of file
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/core/AntPublisher.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/core/AntPublisher.java
new file mode 100644
index 0000000..3606913
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/core/AntPublisher.java
@@ -0,0 +1,195 @@
+/*******************************************************************************
+ * Copyright (c) 2004 Eteration Bilisim A.S.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ * 
+ * Contributors:
+ *     Naci M. Dai - initial API and implementation
+ * 
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL ETERATION A.S. OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Eteration Bilisim A.S.  For more
+ * information on eteration, please see
+ * <http://www.eteration.com/>.
+ ***************************************************************************/
+package org.eclipse.jst.server.generic.internal.core;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import org.eclipse.ant.core.AntRunner;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jst.server.generic.core.CorePlugin;
+import org.eclipse.jst.server.generic.modules.WebModule;
+import org.eclipse.jst.server.generic.servertype.definition.Module;
+import org.eclipse.jst.server.generic.servertype.definition.PublishType;
+import org.eclipse.jst.server.generic.servertype.definition.Publisher;
+import org.eclipse.jst.server.generic.servertype.definition.ServerRuntime;
+import org.eclipse.wst.server.core.model.IModule;
+import org.eclipse.wst.server.core.model.IPublisher;
+import org.eclipse.wst.server.core.resources.IModuleFolder;
+import org.eclipse.wst.server.core.resources.IModuleResource;
+import org.eclipse.wst.server.core.resources.IRemoteResource;
+/**
+ * Ant based publisher.
+ *
+ * @author Gorkem Ercan
+ */
+
+public class AntPublisher implements IPublisher {
+
+	/**
+	 * @param parents
+	 * @param module
+	 * @param serverDefinition
+	 */
+	private List parents;
+	private IModule module;
+	private ServerRuntime serverTypeDefinition;
+	
+	public AntPublisher(List parents, IModule module, ServerRuntime serverDefinition) {
+		this.parents = parents;
+		this.module = module;
+		this.serverTypeDefinition = serverDefinition;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.wtp.server.core.model.IPublisher#getMappedLocation(org.eclipse.wtp.server.core.resources.IModuleResource)
+	 */
+	public IPath getMappedLocation(IModuleResource resource) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.wtp.server.core.model.IPublisher#shouldMapMembers(org.eclipse.wtp.server.core.resources.IModuleFolder)
+	 */
+	public boolean shouldMapMembers(IModuleFolder folder) {
+		// TODO Auto-generated method stub
+		return false;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.wtp.server.core.model.IPublisher#getRemoteResources(org.eclipse.core.runtime.IProgressMonitor)
+	 */
+	public IRemoteResource[] getRemoteResources(IProgressMonitor monitor)
+			throws CoreException {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.wtp.server.core.model.IPublisher#delete(org.eclipse.wtp.server.core.resources.IRemoteResource[], org.eclipse.core.runtime.IProgressMonitor)
+	 */
+	public IStatus[] delete(IRemoteResource[] resource, IProgressMonitor monitor)
+			throws CoreException {
+		
+		return new IStatus[]{new Status(IStatus.OK,CorePlugin.PLUGIN_ID,0,"DeleteResource",null)};
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.wtp.server.core.model.IPublisher#publish(org.eclipse.wtp.server.core.resources.IModuleResource[], org.eclipse.core.runtime.IProgressMonitor)
+	 */
+	public IStatus[] publish(IModuleResource[] resource,
+			IProgressMonitor monitor) throws CoreException {
+		Module sModule =  serverTypeDefinition.getModule(this.module.getType());
+		Publisher publisher =  serverTypeDefinition.getPublisher(sModule.getPublisherReference());
+		String deployAnt = ((PublishType)publisher.getPublish().get(0)).getTask();
+		deployAnt = serverTypeDefinition.getResolver().resolveProperties(deployAnt);
+		
+		if(deployAnt == null || deployAnt.length()<1)
+			return new IStatus[]{new Status(IStatus.ERROR,CorePlugin.PLUGIN_ID,0,"AntBuildFileDoesNotExist",null)};
+		
+		
+		IPath file = CorePlugin.getDefault().getStateLocation().append("tempAnt.xml");
+		try {
+			createNewFile(file.toFile(),deployAnt.getBytes());
+		} catch (IOException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+				
+		runAnt(file.toString(),new String[]{"deploy"},getPublishProperties(resource),monitor);
+		
+		file.toFile().delete();
+		
+		// TODO Auto-generated method stub
+		return null;
+	}
+	private Map getPublishProperties(IModuleResource[] resource)
+	{
+		Module module =  serverTypeDefinition.getModule(this.module.getType());
+
+		Map props = new HashMap();
+		String modDir = module.getPublishDir();
+		modDir = serverTypeDefinition.getResolver().resolveProperties(modDir);
+
+		props.put("deploymentUnitName",this.module.getName());
+		props.put("moduleDir",((WebModule)this.module).getLocation().toString());
+		props.put("deployDir",modDir);
+		return props;
+		
+		
+	}
+	private void runAnt(String buildFile,String[] targets,Map properties ,IProgressMonitor monitor)throws CoreException
+	{
+		AntRunner runner = new AntRunner();
+		runner.setBuildFileLocation(buildFile);
+		runner.setExecutionTargets(targets);
+		runner.addUserProperties(properties);
+		runner.run(monitor);
+	}
+	
+	
+	
+
+    public boolean createNewFile(File f,byte[] content) throws IOException {
+        if (f != null) {
+            if (f.exists()) {
+                return false;
+            }
+            FileOutputStream fos = null;
+            try {
+                fos = new FileOutputStream(f);
+                fos.write(content);
+            } finally {
+                if (fos != null) {
+                    fos.close();
+                }
+            }
+            return true;
+        }
+        return false;
+    }
+	/* (non-Javadoc)
+	 * @see org.eclipse.wtp.server.core.model.IPublisher#deleteAll(org.eclipse.core.runtime.IProgressMonitor)
+	 */
+	public IStatus deleteAll(IProgressMonitor monitor) throws CoreException {
+		// TODO Auto-generated method stub
+		return null;
+	}
+	
+
+}
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/core/GenericServer.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/core/GenericServer.java
new file mode 100644
index 0000000..01c75b4
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/core/GenericServer.java
@@ -0,0 +1,671 @@
+/*******************************************************************************
+ * Copyright (c) 2004 Eteration Bilisim A.S.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ * 
+ * Contributors:
+ *     Gorkem Ercan - initial API and implementation
+ *     Naci M. Dai
+ * 
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL ETERATION A.S. OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Eteration Bilisim A.S.  For more
+ * information on eteration, please see
+ * <http://www.eteration.com/>.
+ ***************************************************************************/
+package org.eclipse.jst.server.generic.internal.core;
+
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.debug.core.DebugEvent;
+import org.eclipse.debug.core.DebugPlugin;
+import org.eclipse.debug.core.IDebugEventSetListener;
+import org.eclipse.debug.core.ILaunch;
+import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.debug.core.ILaunchConfigurationType;
+import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
+import org.eclipse.debug.core.ILaunchManager;
+import org.eclipse.debug.core.model.IProcess;
+import org.eclipse.debug.ui.IDebugUIConstants;
+import org.eclipse.jdt.launching.IJavaLaunchConfigurationConstants;
+import org.eclipse.jdt.launching.IRuntimeClasspathEntry;
+import org.eclipse.jdt.launching.IVMInstall;
+import org.eclipse.jdt.launching.JavaRuntime;
+import org.eclipse.jst.server.generic.core.CorePlugin;
+import org.eclipse.jst.server.generic.core.GenericServerCoreMessages;
+import org.eclipse.jst.server.generic.modules.J2eeSpecModuleFactoryDelegate;
+import org.eclipse.jst.server.generic.servertype.definition.ArchiveType;
+import org.eclipse.jst.server.generic.servertype.definition.Classpath;
+import org.eclipse.jst.server.generic.servertype.definition.Port;
+import org.eclipse.jst.server.generic.servertype.definition.ServerRuntime;
+import org.eclipse.jst.server.j2ee.IWebModule;
+import org.eclipse.wst.server.core.IServer;
+import org.eclipse.wst.server.core.IServerConfiguration;
+import org.eclipse.wst.server.core.IServerState;
+import org.eclipse.wst.server.core.ITask;
+import org.eclipse.wst.server.core.ServerCore;
+import org.eclipse.wst.server.core.model.IModule;
+import org.eclipse.wst.server.core.model.IModuleEvent;
+import org.eclipse.wst.server.core.model.IModuleFactoryEvent;
+import org.eclipse.wst.server.core.model.IMonitorableServer;
+import org.eclipse.wst.server.core.model.IPublisher;
+import org.eclipse.wst.server.core.model.IServerDelegate;
+import org.eclipse.wst.server.core.model.IServerPort;
+import org.eclipse.wst.server.core.model.IStartableServer;
+import org.eclipse.wst.server.core.model.IURLProvider;
+import org.eclipse.wst.server.core.resources.IModuleResourceDelta;
+import org.eclipse.wst.server.core.util.ServerPort;
+import org.eclipse.wst.server.core.util.SocketUtil;
+
+/**
+ * Generic XML based server implementation.
+ * 
+ * @author Gorkem Ercan
+ */
+public class GenericServer implements IServerDelegate, IStartableServer, IMonitorableServer,IURLProvider {
+	private IServerState fLiveServer;
+	private static final String ATTR_STOP = "stop-server";
+	
+	// the thread used to ping the server to check for startup
+	protected transient PingThread ping = null;
+	protected transient IProcess process;
+	protected transient IDebugEventSetListener processListener;
+	
+	private ServerRuntime fServerDefinition;
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.wst.server.core.model.IServerDelegate#initialize(org.eclipse.wst.server.core.IServerState)
+	 */
+	public void initialize(IServerState liveServer) {
+		this.fLiveServer = liveServer;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.wst.server.core.model.IServerDelegate#dispose()
+	 */
+	public void dispose() {
+		this.fLiveServer = null;
+	}
+
+	/**
+	 * Returns the project publisher that can be used to
+	 * publish the given project.
+	 *
+	 * @param project org.eclipse.core.resources.IProject
+	 * @return org.eclipse.wst.server.core.model.IProjectPublisher
+	 */
+	public IPublisher getPublisher(List parents, IModule module) {
+		return new AntPublisher(parents, module, this.getServerDefinition());
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.wst.server.core.model.IServerDelegate#updateConfiguration()
+	 */
+	public void updateConfiguration() {
+		Trace.trace(Trace.FINEST, "updateConfiguration" + this);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.wst.server.core.model.IServerDelegate#updateModule(org.eclipse.wst.server.core.model.IModule,
+	 *      org.eclipse.wst.server.core.resources.IModuleResourceDelta)
+	 */
+	public void updateModule(IModule module, IModuleResourceDelta delta) {
+		// TODO Auto-generated method stub
+		Trace.trace(Trace.FINEST, "Configuration updated " + this);
+		//setConfigurationSyncState(SYNC_STATE_DIRTY);
+		//setRestartNeeded(true);
+
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.wst.server.core.model.IServerDelegate#publishStart(org.eclipse.core.runtime.IProgressMonitor)
+	 */
+	public IStatus publishStart(IProgressMonitor monitor) {
+	    if(getModules().length<1)
+	        return new Status(IStatus.CANCEL,CorePlugin.PLUGIN_ID,0,GenericServerCoreMessages.getString("cancelNoPublish"),null);
+		return new Status(IStatus.OK, CorePlugin.PLUGIN_ID, 0, "PublishingStarted", null);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.wst.server.core.model.IServerDelegate#publishConfiguration(org.eclipse.core.runtime.IProgressMonitor)
+	 */
+	public IStatus publishConfiguration(IProgressMonitor monitor) {
+
+		return new Status(IStatus.OK, CorePlugin.PLUGIN_ID, 0, "Published Configuration", null);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.wst.server.core.model.IServerDelegate#publishStop(org.eclipse.core.runtime.IProgressMonitor)
+	 */
+	public IStatus publishStop(IProgressMonitor monitor) {
+		fLiveServer.setConfigurationSyncState(IServer.SYNC_STATE_IN_SYNC);
+		return new Status(IStatus.OK, CorePlugin.PLUGIN_ID, 0, "Published Configuration", null);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.wst.server.core.model.IServerDelegate#canModifyModules(org.eclipse.wst.server.core.model.IModule[],
+	 *      org.eclipse.wst.server.core.model.IModule[])
+	 */
+	public IStatus canModifyModules(IModule[] add, IModule[] remove) {
+		// TODO Auto-generated method stub
+		return new Status(IStatus.OK, CorePlugin.PLUGIN_ID, 0, "CanModifyModules", null);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.wst.server.core.model.IServerDelegate#getModules()
+	 */
+	public IModule[] getModules() {
+		// TODO Auto-generated method stub
+		List list =  J2eeSpecModuleFactoryDelegate.getInstance().getModules();
+		return (IModule[])list.toArray(new IModule[list.size()]);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.wst.server.core.model.IServerDelegate#getModuleState(org.eclipse.wst.server.core.model.IModule)
+	 */
+	public byte getModuleState(IModule module) {
+		IModule[] modules = getModules();
+	    if (modules!= null && modules.length>0)
+	        return IServer.MODULE_STATE_STARTED;
+	    return IServer.MODULE_STATE_UNKNOWN;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.wst.server.core.model.IServerDelegate#getRepairCommands(org.eclipse.wst.server.core.model.IModuleFactoryEvent[],
+	 *      org.eclipse.wst.server.core.model.IModuleEvent[])
+	 */
+	public ITask[] getRepairCommands(IModuleFactoryEvent[] factoryEvent,
+			IModuleEvent[] moduleEvent) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.wst.server.core.model.IServerDelegate#getChildModules(org.eclipse.wst.server.core.model.IModule)
+	 */
+	public List getChildModules(IModule module) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.wst.server.core.model.IServerDelegate#getParentModules(org.eclipse.wst.server.core.model.IModule)
+	 */
+	public List getParentModules(IModule module) throws CoreException {
+			//FIXME This is valid for only web modules. A generic server should support any 
+			// kind of j2ee module. Fix this after the server architectures are determined.
+		if (module instanceof IWebModule) {
+			IWebModule webModule = (IWebModule) module;
+			IStatus status = canModifyModules(new IModule[] { module }, null);
+			if (status == null || !status.isOK())
+				throw new CoreException(status);
+			ArrayList l = new ArrayList();
+			l.add(webModule);
+			return l;
+		}
+		return null;
+	
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.wst.server.core.model.IServerDelegate#setLaunchDefaults(org.eclipse.debug.core.ILaunchConfigurationWorkingCopy)
+	 */
+	public void setLaunchDefaults(ILaunchConfigurationWorkingCopy workingCopy) {
+		workingCopy.setAttribute(
+				IJavaLaunchConfigurationConstants.ATTR_MAIN_TYPE_NAME,
+				getStartClassName());
+
+		GenericServerRuntime runtime = (GenericServerRuntime) fLiveServer
+				.getRuntime().getDelegate();
+
+		IVMInstall vmInstall = runtime.getVMInstall();
+		workingCopy.setAttribute(
+				IJavaLaunchConfigurationConstants.ATTR_VM_INSTALL_TYPE, runtime
+						.getVMInstallTypeId());
+		workingCopy.setAttribute(
+				IJavaLaunchConfigurationConstants.ATTR_VM_INSTALL_NAME,
+				vmInstall.getName());
+
+		setupLaunchClasspath(workingCopy, vmInstall, getStartClasspath());
+
+
+		workingCopy.setAttribute(
+				IJavaLaunchConfigurationConstants.ATTR_WORKING_DIRECTORY,
+				getWorkingDirectory());
+		workingCopy.setAttribute(
+				IJavaLaunchConfigurationConstants.ATTR_PROGRAM_ARGUMENTS,
+				getProgramArguments());
+		workingCopy.setAttribute(
+				IJavaLaunchConfigurationConstants.ATTR_VM_ARGUMENTS,
+				getVmArguments());
+	}
+
+	
+	private List getStartClasspath() {
+		String cpRef = getServerDefinition().getStart().getClasspathReference();
+		return serverClasspath(cpRef);
+	}
+	private List getStopClasspath() {
+		String cpRef = getServerDefinition().getStop().getClasspathReference();
+		return serverClasspath(cpRef);
+	}
+
+	/**
+	 * @param cpRef
+	 * @return
+	 */
+	private List serverClasspath(String cpRef) {
+		Classpath classpath = getServerDefinition().getClasspath(cpRef);
+		
+	    List mementoList = new ArrayList(classpath.getArchive().size());
+	    Iterator iterator= classpath.getArchive().iterator();
+	    while(iterator.hasNext())
+	    {
+	    	ArchiveType archive = (ArchiveType)iterator.next();
+	    	String cpath = getServerDefinition().getResolver().resolveProperties(archive.getPath());
+			try {
+				mementoList.add(JavaRuntime.newArchiveRuntimeClasspathEntry(
+						new Path(cpath)).getMemento());
+			} catch (CoreException e) {
+			    //ignored
+			}
+	    }
+		return mementoList;
+	}
+
+	private String getVmArguments() {
+		return getServerDefinition().getResolver().resolveProperties(getServerDefinition().getStart().getVmParameters());
+	}
+
+	private String getProgramArguments() {
+		return getServerDefinition().getResolver().resolveProperties(getServerDefinition().getStart().getProgramArguments());
+	}
+
+	private String getWorkingDirectory() {
+		return getServerDefinition().getResolver().resolveProperties(getServerDefinition().getStart().getWorkingDirectory());
+	}
+
+	public String getStartClassName() {
+		return getServerDefinition().getResolver().resolveProperties(getServerDefinition().getStart().getClass_());
+	}
+
+	/**
+	 * @return
+	 */
+	private Map getServerInstanceProperties() {
+		Map runtimeProperties = fLiveServer.getRuntime().getAttribute(
+				GenericServerRuntime.SERVER_INSTANCE_PROPERTIES, new HashMap());
+		Map serverProperties = this.fLiveServer.getAttribute(GenericServerRuntime.SERVER_INSTANCE_PROPERTIES,new HashMap(1));
+		Map instanceProperties = new HashMap(runtimeProperties.size()+serverProperties.size());
+		instanceProperties.putAll(runtimeProperties);
+		instanceProperties.putAll(serverProperties);
+		return instanceProperties;
+	}
+
+	public ServerRuntime getServerDefinition() {
+		if (fServerDefinition == null)
+			fServerDefinition = CorePlugin.getDefault()
+					.getServerTypeDefinitionManager()
+					.getServerRuntimeDefinition(
+							fLiveServer.getRuntime().getAttribute(
+									GenericServerRuntime.SERVER_DEFINITION_ID,
+									""), getServerInstanceProperties());
+		return fServerDefinition;
+	}
+
+
+	
+	
+	
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.wst.server.core.model.IMonitorableServer#getServerPorts()
+	 */
+	public List getServerPorts() {
+		List ports = new ArrayList();
+					
+		Iterator pIter = this.getServerDefinition().getPort().iterator();
+		while (pIter.hasNext()) {
+			Port element = (Port) pIter.next();
+			int port = Integer.parseInt(getServerDefinition().getResolver().resolveProperties(element.getNo()));
+			ports.add(new ServerPort("server", element.getName(), port, element.getProtocol()));		
+		}
+	
+		return ports;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.wst.server.core.model.IStartableServer#isTerminateOnShutdown()
+	 */
+	public boolean isTerminateOnShutdown() {
+		return true;
+	}
+
+	/**
+	 * Setup for starting the server.
+	 * 
+	 * @param launch ILaunch
+	 * @param launchMode String
+	 * @param monitor IProgressMonitor
+	 */
+	public void setupLaunch(ILaunch launch, String launchMode, IProgressMonitor monitor) throws CoreException {
+		if ("true".equals(launch.getLaunchConfiguration().getAttribute(ATTR_STOP, "false")))
+			return;
+//		IStatus status = getRuntime().validate();
+//		if (status != null && !status.isOK())
+//			throw new CoreException(status);
+
+	
+		Iterator iterator = this.getServerPorts().iterator();
+		IServerPort sp = null;
+		while (iterator.hasNext()) {
+			sp = (IServerPort) iterator.next();
+			if (SocketUtil.isPortInUse(sp.getPort(), 5))
+				throw new CoreException(new Status(IStatus.ERROR, CorePlugin.PLUGIN_ID, 0, GenericServerCoreMessages.getFormattedString("errorPortInUse",new String[] {Integer.toString(sp.getPort()),sp.getName()}),null));
+		}
+		
+		fLiveServer.setServerState(IServer.SERVER_STARTING);
+	
+		// ping server to check for startup
+		try {
+			String url = "http://localhost";
+			int port = sp.getPort();
+			if (port != 80)
+				url += ":" + port;
+			ping = new PingThread(this, fLiveServer, url, launchMode);
+			ping.start();
+		} catch (Exception e) {
+			Trace.trace(Trace.SEVERE, "Can't ping for server startup.");
+		}
+	}
+	
+	/**
+	 * Cleanly shuts down and terminates the server.
+	 */
+	public void stop() {
+		byte state = this.fLiveServer.getServerState();
+		if (state == IServer.SERVER_STOPPED)
+			return;
+		else if (state == IServer.SERVER_STARTING || state == IServer.SERVER_STOPPING) {
+			terminate();
+			return;
+		}
+
+		try {
+			Trace.trace(Trace.FINEST, "Stopping Server");
+			if (state != IServer.SERVER_STOPPED)
+				fLiveServer.setServerState(IServer.SERVER_STOPPING);
+			ILaunchManager mgr = DebugPlugin.getDefault().getLaunchManager();
+
+			ILaunchConfigurationType type =
+				mgr.getLaunchConfigurationType(
+					IJavaLaunchConfigurationConstants.ID_JAVA_APPLICATION);
+
+			String launchName = "GenericServerStopper";
+			String uniqueLaunchName =
+				mgr.generateUniqueLaunchConfigurationNameFrom(launchName);
+			ILaunchConfiguration conf = null;
+
+			ILaunchConfiguration[] lch = mgr.getLaunchConfigurations(type);
+			for (int i = 0; i < lch.length; i++) {
+				if (launchName.equals(lch[i].getName())) {
+					conf = lch[i];
+					break;
+				}
+			}
+
+			ILaunchConfigurationWorkingCopy wc = null;
+			if (conf != null) {
+				wc = conf.getWorkingCopy();
+			} else {
+				wc = type.newInstance(null, uniqueLaunchName);
+			}
+			//To stop from appearing in history lists
+			wc.setAttribute(IDebugUIConstants.ATTR_PRIVATE, true);			
+	
+			wc.setAttribute(
+					IJavaLaunchConfigurationConstants.ATTR_MAIN_TYPE_NAME,
+					getServerDefinition().getResolver().resolveProperties(this.getServerDefinition().getStop().getClass_()));
+
+			GenericServerRuntime runtime = (GenericServerRuntime) fLiveServer
+					.getRuntime().getDelegate();
+
+			IVMInstall vmInstall = runtime.getVMInstall();
+			wc.setAttribute(
+					IJavaLaunchConfigurationConstants.ATTR_VM_INSTALL_TYPE, runtime
+							.getVMInstallTypeId());
+			wc.setAttribute(
+					IJavaLaunchConfigurationConstants.ATTR_VM_INSTALL_NAME,
+					vmInstall.getName());
+
+			setupLaunchClasspath(wc, vmInstall, getStopClasspath());
+
+			wc.setAttribute(
+					IJavaLaunchConfigurationConstants.ATTR_WORKING_DIRECTORY,
+					getServerDefinition().getResolver().resolveProperties(getServerDefinition().getStop().getWorkingDirectory()));
+			wc.setAttribute(
+					IJavaLaunchConfigurationConstants.ATTR_PROGRAM_ARGUMENTS,
+					getServerDefinition().getResolver().resolveProperties(getServerDefinition().getStop().getProgramArguments()));
+			wc.setAttribute(
+					IJavaLaunchConfigurationConstants.ATTR_VM_ARGUMENTS,
+					getServerDefinition().getResolver().resolveProperties(getServerDefinition().getStop().getVmParameters()));				
+			wc.setAttribute(ATTR_STOP, "true");
+			wc.launch(ILaunchManager.RUN_MODE, new NullProgressMonitor());
+		} catch (Exception e) {
+			Trace.trace(Trace.SEVERE, "Error stopping Server", e);
+		}
+	}
+
+
+	/**
+	 * @param wc
+	 * @param vmInstall
+	 */
+	private void setupLaunchClasspath(ILaunchConfigurationWorkingCopy wc, IVMInstall vmInstall, List cp) {
+		// add tools.jar to the path
+		if (vmInstall != null) {
+			try {
+				cp.add(JavaRuntime
+								.newRuntimeContainerClasspathEntry(
+										new Path(JavaRuntime.JRE_CONTAINER)
+												.append(
+														"org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType")
+												.append(vmInstall.getName()),
+										IRuntimeClasspathEntry.BOOTSTRAP_CLASSES)
+								.getMemento());
+			} catch (Exception e) {
+			}
+
+			IPath jrePath = new Path(vmInstall.getInstallLocation()
+					.getAbsolutePath());
+			if (jrePath != null) {
+				IPath toolsPath = jrePath.append("lib").append("tools.jar");
+				if (toolsPath.toFile().exists()) {
+					try {
+						cp.add(JavaRuntime.newArchiveRuntimeClasspathEntry(
+								toolsPath).getMemento());
+					} catch (CoreException e1) {
+						// TODO Auto-generated catch block
+						e1.printStackTrace();
+					}
+				}
+			}
+		}
+
+		wc.setAttribute(
+				IJavaLaunchConfigurationConstants.ATTR_CLASSPATH, cp);
+		wc.setAttribute(
+						IJavaLaunchConfigurationConstants.ATTR_DEFAULT_CLASSPATH,
+						false);
+	}
+
+	/**
+	 * Terminates the server.
+	 */
+	public void terminate() {
+		if (fLiveServer.getServerState() == IServer.SERVER_STOPPED)
+			return;
+
+		try {
+			fLiveServer.setServerState(IServer.SERVER_STOPPING);
+			Trace.trace(Trace.FINEST, "Killing the Server process");
+			if (process != null && !process.isTerminated()) {
+				process.terminate();
+				stopImpl();
+			}
+		} catch (Exception e) {
+			Trace.trace(Trace.SEVERE, "Error killing the process", e);
+		}
+	}
+	
+	protected void stopImpl() {
+		if (ping != null) {
+			ping.stopPinging();
+			ping = null;
+		}
+		if (process != null) {
+			process = null;
+			DebugPlugin.getDefault().removeDebugEventListener(processListener);
+			processListener = null;
+		}
+		fLiveServer.setServerState(IServer.SERVER_STOPPED);
+	}	
+	public void setProcess(final IProcess newProcess) {
+		if (process != null)
+			return;
+
+		process = newProcess;
+		processListener = new IDebugEventSetListener() {
+			public void handleDebugEvents(DebugEvent[] events) {
+				if (events != null) {
+					int size = events.length;
+					for (int i = 0; i < size; i++) {
+						if (process.equals(events[i].getSource()) && events[i].getKind() == DebugEvent.TERMINATE) {
+							DebugPlugin.getDefault().removeDebugEventListener(this);
+							stopImpl();
+						}
+					}
+				}
+			}
+		};
+		DebugPlugin.getDefault().addDebugEventListener(processListener);
+	}
+	
+	public int getStartTimeout() {
+		return 300000;
+	}
+	
+	public int getStopTimeout() {
+		return 300000;
+	}
+	/* (non-Javadoc)
+	 * @see org.eclipse.wtp.server.core.model.IURLProvider#getModuleRootURL(org.eclipse.wtp.server.core.model.IModule)
+	 */
+	public URL getModuleRootURL(IModule module) {
+
+		try {
+			if (module == null || !(module instanceof IWebModule))
+				return null;
+
+			IServerConfiguration serverConfig = fLiveServer
+					.getServerConfiguration();
+			if (serverConfig == null)
+				return null;
+
+			String url = "http://localhost";
+			int port = 0;
+			
+			port = getHttpPort();
+			
+			port = ServerCore.getServerMonitorManager().getMonitoredPort(
+					fLiveServer, port, "web");
+			if (port != 80)
+				url += ":" + port;
+
+			url += "/"+module.getName();
+
+			if (!url.endsWith("/"))
+				url += "/";
+
+			return new URL(url);
+		} catch (Exception e) {
+			Trace.trace("Could not get root URL", e);
+			return null;
+		}
+
+	}
+
+	/**
+	 * @return
+	 */
+	private int getHttpPort() {
+		int port=-1;
+		Iterator pIter = this.getServerDefinition().getPort().iterator();
+		while (pIter.hasNext()) {
+			Port aPort = (Port) pIter.next();
+			if(port== -1)
+				port = Integer.parseInt(getServerDefinition().getResolver().resolveProperties(aPort.getNo()));
+			else if( "http".equals(aPort.getProtocol() ) )
+				port = Integer.parseInt(aPort.getNo());	
+		}
+		if( port == -1)
+			port = 8080;
+		return port;
+	}
+
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/core/GenericServerLaunchConfigurationDelegate.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/core/GenericServerLaunchConfigurationDelegate.java
new file mode 100644
index 0000000..123816f
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/core/GenericServerLaunchConfigurationDelegate.java
@@ -0,0 +1,130 @@
+/*******************************************************************************
+ * Copyright (c) 2004 Eteration Bilisim A.S.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ * 
+ * Contributors:
+ *     Gorkem Ercan - initial API and implementation
+ *     Naci M. Dai
+ * 
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL ETERATION A.S. OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Eteration Bilisim A.S.  For more
+ * information on eteration, please see
+ * <http://www.eteration.com/>.
+ ***************************************************************************/
+package org.eclipse.jst.server.generic.internal.core;
+
+import java.io.File;
+import java.util.Map;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.debug.core.ILaunch;
+import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.jdt.launching.AbstractJavaLaunchConfigurationDelegate;
+import org.eclipse.jdt.launching.ExecutionArguments;
+import org.eclipse.jdt.launching.IJavaLaunchConfigurationConstants;
+import org.eclipse.jdt.launching.IVMInstall;
+import org.eclipse.jdt.launching.IVMRunner;
+import org.eclipse.jdt.launching.VMRunnerConfiguration;
+import org.eclipse.jst.server.generic.core.CorePlugin;
+import org.eclipse.wst.server.core.IServer;
+import org.eclipse.wst.server.core.ServerCore;
+/**
+ * ServerLaunchConfiguration for the generic server.
+ *
+ * @author Gorkem Ercan
+ */
+public class GenericServerLaunchConfigurationDelegate extends AbstractJavaLaunchConfigurationDelegate {
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.debug.core.model.ILaunchConfigurationDelegate#launch(org.eclipse.debug.core.ILaunchConfiguration, java.lang.String, org.eclipse.debug.core.ILaunch, org.eclipse.core.runtime.IProgressMonitor)
+	 */
+	public void launch(ILaunchConfiguration configuration, String mode,
+			ILaunch launch, IProgressMonitor monitor) throws CoreException {
+		
+		String serverId = configuration.getAttribute(IServer.ATTR_SERVER_ID, (String) null);
+
+		IServer server = ServerCore.getResourceManager().getServer(serverId);
+		if (server == null) 
+		{
+			abort("Server "+serverId+" does not exist", null, IJavaLaunchConfigurationConstants.ERR_INTERNAL_ERROR);
+		}	
+		
+		GenericServer genericServer = (GenericServer)server.getDelegate();
+		genericServer.setupLaunch(launch, mode, monitor);
+	
+		String mainTypeName = genericServer.getStartClassName(); 
+
+		IVMInstall vm = verifyVMInstall(configuration);
+		
+		IVMRunner runner = vm.getVMRunner(mode);
+
+		File workingDir = verifyWorkingDirectory(configuration);
+		String workingDirName = null;
+		if (workingDir != null)
+			workingDirName = workingDir.getAbsolutePath();
+		
+		// Program & VM args
+		String pgmArgs = getProgramArguments(configuration);
+		String vmArgs = getVMArguments(configuration);
+
+		ExecutionArguments execArgs = new ExecutionArguments(vmArgs, pgmArgs);
+		
+		// VM-specific attributes
+		Map vmAttributesMap = getVMSpecificAttributesMap(configuration);
+		
+		// Classpath
+		String[] classpath = getClasspath(configuration);
+		
+		// Create VM config
+		VMRunnerConfiguration runConfig = new VMRunnerConfiguration(mainTypeName, classpath);
+		runConfig.setProgramArguments(execArgs.getProgramArgumentsArray());
+		runConfig.setVMArguments(execArgs.getVMArgumentsArray());
+		runConfig.setWorkingDirectory(workingDirName);
+		runConfig.setVMSpecificAttributesMap(vmAttributesMap);
+
+		// Bootpath
+		String[] bootpath = getBootpath(configuration);
+		if (bootpath != null && bootpath.length > 0)
+			runConfig.setBootClassPath(bootpath);
+		
+		setDefaultSourceLocator(launch, configuration);
+		
+		// Launch the configuration
+		runner.run(runConfig, launch, monitor);
+		genericServer.setProcess(launch.getProcesses()[0]);
+		
+	}
+
+	/**
+	 * Throws a core exception with the given message and optional
+	 * exception. The exception's status code will indicate an error.
+	 * 
+	 * @param message error message
+	 * @param exception cause of the error, or <code>null</code>
+	 * @exception CoreException with the given message and underlying
+	 *  exception
+	 */
+	protected void abort(String message, Throwable exception, int code) throws CoreException {
+		throw new CoreException(new Status(IStatus.ERROR, CorePlugin.getDefault().getBundle().getSymbolicName(), code, message, exception));
+	}
+	
+}
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/core/GenericServerLaunchableAdapterDelegate.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/core/GenericServerLaunchableAdapterDelegate.java
new file mode 100644
index 0000000..a374bcc
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/core/GenericServerLaunchableAdapterDelegate.java
@@ -0,0 +1,92 @@
+/*******************************************************************************
+ * Copyright (c) 2004 Eteration Bilisim A.S.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ * 
+ * Contributors:
+ *     Gorkem Ercan - initial API and implementation
+ * 
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL ETERATION A.S. OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Eteration Bilisim A.S.  For more
+ * information on eteration, please see
+ * <http://www.eteration.com/>.
+ ***************************************************************************/
+package org.eclipse.jst.server.generic.internal.core;
+
+import java.net.URL;
+import org.eclipse.wst.server.core.IServer;
+import org.eclipse.wst.server.core.model.*;
+import org.eclipse.wst.server.core.util.HttpLaunchable;
+import org.eclipse.wst.server.core.util.NullLaunchable;
+import org.eclipse.wst.server.core.util.NullModuleObject;
+import org.eclipse.jst.server.j2ee.IWebModule;
+import org.eclipse.jst.server.j2ee.Servlet;
+import org.eclipse.jst.server.j2ee.WebResource;
+/**
+ * Web Launchable adapter delegate
+ * @author Gorkem Ercan 
+ */
+public class GenericServerLaunchableAdapterDelegate implements ILaunchableAdapterDelegate {
+	/*
+	 * @see ILaunchableAdapterDelegate#getLaunchable(IServer, IModuleObject)
+	 */
+	public ILaunchable getLaunchable(IServer server, IModuleObject moduleObject) {
+		
+		IServerDelegate delegate = server.getDelegate();
+		if (!(delegate instanceof GenericServer))
+			return null;
+		if (!(moduleObject instanceof Servlet) &&
+			!(moduleObject instanceof WebResource) &&
+			!(moduleObject instanceof NullModuleObject))
+			return null;
+		if (!(moduleObject.getModule() instanceof IWebModule))
+			return null;
+
+		try {
+			URL url = ((IURLProvider) delegate).getModuleRootURL(moduleObject.getModule());
+			
+			Trace.trace("root: " + url);
+
+			if (moduleObject instanceof Servlet) {
+				Servlet servlet = (Servlet) moduleObject;
+				if (servlet.getAlias() != null) {
+					String path = servlet.getAlias();
+					if (path.startsWith("/"))
+						path = path.substring(1);
+					url = new URL(url, path);
+				} else
+					url = new URL(url, "servlet/" + servlet.getServletClassName());
+			} else if (moduleObject instanceof WebResource) {
+				WebResource resource = (WebResource) moduleObject;
+				String path = resource.getPath().toString();
+				Trace.trace("path: " + path);
+				if (path != null && path.startsWith("/") && path.length() > 0)
+					path = path.substring(1);
+				if (path != null && path.length() > 0)
+					url = new URL(url, path);
+			} else { // null
+				return new NullLaunchable();
+			}
+			return new HttpLaunchable(url);
+		} catch (Exception e) {
+			Trace.trace("Error getting URL for " + moduleObject, e);
+			return null;
+		}
+	}
+}
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/core/GenericServerRuntime.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/core/GenericServerRuntime.java
new file mode 100644
index 0000000..fb1a3d3
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/core/GenericServerRuntime.java
@@ -0,0 +1,147 @@
+/*******************************************************************************
+ * Copyright (c) 2004 Eteration Bilisim A.S.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ * 
+ * Contributors:
+ *     Gorkem Ercan - initial API and implementation
+ *     Naci M. Dai
+ * 
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL ETERATION A.S. OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Eteration Bilisim A.S.  For more
+ * information on eteration, please see
+ * <http://www.eteration.com/>.
+ ***************************************************************************/
+package org.eclipse.jst.server.generic.internal.core;
+
+import java.io.File;
+import java.util.Iterator;
+import java.util.Map;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jdt.launching.IVMInstall;
+import org.eclipse.jdt.launching.JavaRuntime;
+import org.eclipse.jst.server.core.IGenericRuntime;
+import org.eclipse.jst.server.generic.core.CorePlugin;
+import org.eclipse.jst.server.generic.core.GenericServerCoreMessages;
+import org.eclipse.jst.server.generic.servertype.definition.ArchiveType;
+import org.eclipse.jst.server.generic.servertype.definition.Classpath;
+import org.eclipse.jst.server.generic.servertype.definition.ServerRuntime;
+import org.eclipse.wst.server.core.IRuntime;
+import org.eclipse.wst.server.core.ServerUtil;
+/**
+ * Generic server runtime support.
+ *
+ * @author Gorkem Ercan
+ */
+public class GenericServerRuntime implements IGenericRuntime
+{
+
+	private IRuntime fRuntime;
+	public static final String SERVER_DEFINITION_ID = "server_definition_id";
+	public static final String SERVER_INSTANCE_PROPERTIES = "generic_server_instance_properties";
+	/* (non-Javadoc)
+	 * @see org.eclipse.jst.server.core.IGenericRuntime#getVMInstallTypeId()
+	 */
+	public String getVMInstallTypeId() {
+		return JavaRuntime.getDefaultVMInstall().getVMInstallType().getId();
+		// TODO configurable.
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.jst.server.core.IGenericRuntime#getVMInstallId()
+	 */
+	public String getVMInstallId() {
+		return JavaRuntime.getDefaultVMInstall().getId();
+		// TODO configurable.
+		
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.jst.server.core.IGenericRuntime#getVMInstall()
+	 */
+	public IVMInstall getVMInstall() {
+		return JavaRuntime.getDefaultVMInstall();
+		// TODO configurable
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.jst.server.core.IGenericRuntime#validate()
+	 */
+	public IStatus validate() {
+		if (fRuntime.getName() == null || fRuntime.getName().length() == 0)
+			return new Status(IStatus.ERROR, CorePlugin.PLUGIN_ID, 0,  GenericServerCoreMessages.getString("errorName"), null);
+		if (ServerUtil.isNameInUse(fRuntime))
+			return new Status(IStatus.ERROR, CorePlugin.PLUGIN_ID, 0, GenericServerCoreMessages.getString("errorDuplicateRuntimeName"), null);
+		if (getVMInstall() == null)
+			return new Status(IStatus.ERROR, CorePlugin.PLUGIN_ID, 0, GenericServerCoreMessages.getString("errorJRE"), null);
+		
+		ServerRuntime serverTypeDefinition = getServerTypeDefinition();
+        if(serverTypeDefinition == null)
+		    return new Status(IStatus.ERROR, CorePlugin.PLUGIN_ID, 0, GenericServerCoreMessages.getString("errorNoServerType"), null);
+        if(serverTypeDefinition.getClasspath()== null || serverTypeDefinition.getClasspath().size()<1)
+            return new Status(IStatus.ERROR, CorePlugin.PLUGIN_ID, 0 ,GenericServerCoreMessages.getString("errorNoClasspath"),null);
+		Iterator cpList  = serverTypeDefinition.getClasspath().iterator();
+        while (cpList.hasNext()) {
+			Classpath cpth = (Classpath) cpList.next();
+	        if(cpth.getArchive()== null || cpth.getArchive().size()<1)
+	            return new Status(IStatus.ERROR, CorePlugin.PLUGIN_ID, 0 ,GenericServerCoreMessages.getString("errorNoClasspath"),null);
+			Iterator archIter = cpth.getArchive().iterator();
+			while (archIter.hasNext()) {
+				ArchiveType arch = (ArchiveType) archIter.next();
+				String arcPath = serverTypeDefinition.getResolver().resolveProperties((String)arch.getPath());
+		           File f = new File(arcPath);
+		            if(f.exists()==false)
+		                return new Status(IStatus.ERROR, CorePlugin.PLUGIN_ID, 0 ,GenericServerCoreMessages.getFormattedString("errorMissingClasspathEntry",new String[]{f.getPath()} ),null);	
+			}
+ 			
+		}
+        return new Status(IStatus.OK, CorePlugin.PLUGIN_ID, 0, "", null);
+	}
+	/**
+	 * Returns the ServerTypeDefinition for this runtime. 
+	 * Populated with the user properties if exists. 
+	 * 
+	 * @return populated ServerTypeDefinition
+	 */
+	public ServerRuntime getServerTypeDefinition()
+	{
+	   String id=  fRuntime.getAttribute(SERVER_DEFINITION_ID,(String)null);
+	   Map properties = fRuntime.getAttribute(SERVER_INSTANCE_PROPERTIES,(Map)null);
+	   if(id==null)
+	       return null;
+	   return CorePlugin.getDefault().getServerTypeDefinitionManager().getServerRuntimeDefinition(id,properties);
+	}
+	
+	/* (non-Javadoc)
+	 * @see org.eclipse.wst.server.core.model.IRuntimeDelegate#initialize(org.eclipse.wst.server.core.IRuntime)
+	 */
+	public void initialize(IRuntime runtime) {
+		this.fRuntime = runtime;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.wst.server.core.model.IRuntimeDelegate#dispose()
+	 */
+	public void dispose() {
+		this.fRuntime=null;
+	}
+	
+}
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/core/GenericServerRuntimeTargetHandler.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/core/GenericServerRuntimeTargetHandler.java
new file mode 100644
index 0000000..b930400
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/core/GenericServerRuntimeTargetHandler.java
@@ -0,0 +1,88 @@
+/*******************************************************************************
+ * Copyright (c) 2004 Eteration Bilisim A.S.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ * 
+ * Contributors:
+ *     Gorkem Ercan - initial API and implementation
+ *     Naci M. Dai
+ * 
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL ETERATION A.S. OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Eteration Bilisim A.S.  For more
+ * information on eteration, please see
+ * <http://www.eteration.com/>.
+ ***************************************************************************/
+package org.eclipse.jst.server.generic.internal.core;
+
+import org.eclipse.core.runtime.Path;
+import org.eclipse.jdt.core.IClasspathEntry;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jdt.launching.IVMInstall;
+import org.eclipse.jdt.launching.JavaRuntime;
+import org.eclipse.jst.server.core.ClasspathRuntimeTargetHandler;
+import org.eclipse.jst.server.generic.servertype.definition.ServerRuntime;
+import org.eclipse.wst.server.core.IRuntime;
+/**
+ * Provides the Classpath containers to be added into project classpaths.
+ *
+ * @author Gorkem Ercan
+ */
+public class GenericServerRuntimeTargetHandler extends
+		ClasspathRuntimeTargetHandler {
+
+	/* (non-Javadoc)
+	 * @see com.ibm.wtp.server.java.core.ClasspathRuntimeTargetHandler#getId()
+	 */
+	public String getId() {
+		return "org.eclipse.jst.server.generic.runtimeTarget";
+	}          
+
+	/* (non-Javadoc)
+	 * @see com.ibm.wtp.server.java.core.ClasspathRuntimeTargetHandler#getClasspathContainerLabel(com.ibm.wtp.server.core.IRuntime, java.lang.String)
+	 */
+	public String getClasspathContainerLabel(IRuntime runtime, String id) {
+		ServerRuntime definition= ServerTypeDefinitionUtil.getServerTypeDefinition(runtime);
+		return definition.getName();
+	}
+
+	/* (non-Javadoc)
+	 * @see com.ibm.wtp.server.java.core.ClasspathRuntimeTargetHandler#resolveClasspathContainer(com.ibm.wtp.server.core.IRuntime, java.lang.String)
+	 */
+	public IClasspathEntry[] resolveClasspathContainer(IRuntime runtime,
+			String id) 
+	{		
+		return ServerTypeDefinitionUtil.getServerClassPathEntry(runtime);
+	}
+	
+	public String[] getClasspathEntryIds(IRuntime runtime) {
+		// Values do not realy have any use but the number of entries give the number of
+		// containers you have.
+		return new String[1];
+	}
+
+	public IClasspathEntry[] getDelegateClasspathEntries(IRuntime runtime) {
+		GenericServerRuntime genericRuntime = (GenericServerRuntime)runtime.getDelegate();
+		IVMInstall vmInstall = genericRuntime.getVMInstall();
+		if (vmInstall != null) {
+			String name = vmInstall.getName();
+			return new IClasspathEntry[] { JavaCore.newContainerEntry(new Path(JavaRuntime.JRE_CONTAINER).append("org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType").append(name)) };
+		}
+		return null;
+	}
+}
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/core/GenericServerRuntimeWorkingCopy.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/core/GenericServerRuntimeWorkingCopy.java
new file mode 100644
index 0000000..cd019e4
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/core/GenericServerRuntimeWorkingCopy.java
@@ -0,0 +1,80 @@
+/*******************************************************************************
+ * Copyright (c) 2004 Eteration Bilisim A.S.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ * 
+ * Contributors:
+ *     Gorkem Ercan - initial API and implementation
+ *     Naci M. Dai
+ * 
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL ETERATION A.S. OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Eteration Bilisim A.S.  For more
+ * information on eteration, please see
+ * <http://www.eteration.com/>.
+ ***************************************************************************/
+package org.eclipse.jst.server.generic.internal.core;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.jst.server.core.IGenericRuntimeWorkingCopy;
+import org.eclipse.wst.server.core.IRuntimeWorkingCopy;
+
+/**
+ * Working copy. This does not really do much delegates 
+ * to GenericServerRuntime.
+ * 
+ * @author Gorkem Ercan
+ * @see org.eclipse.jst.server.generic.internal.core.GenericServerRuntime
+ */
+public class GenericServerRuntimeWorkingCopy extends GenericServerRuntime implements IGenericRuntimeWorkingCopy 
+{
+//	private IRuntimeWorkingCopy wc;
+	
+	public void initialize(IRuntimeWorkingCopy runtime) {
+//		wc = runtime;
+	}
+    
+    public IStatus validate() {
+        return super.validate();
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.jst.server.core.IGenericRuntimeWorkingCopy#setVMInstall(java.lang.String, java.lang.String)
+     */
+    public void setVMInstall(String typeId, String id) {
+        // TODO Auto-generated method stub
+        
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.wst.server.core.model.IRuntimeWorkingCopyDelegate#setDefaults()
+     */
+    public void setDefaults() {
+        // TODO Auto-generated method stub
+        
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.wst.server.core.model.IRuntimeWorkingCopyDelegate#handleSave(byte, org.eclipse.core.runtime.IProgressMonitor)
+     */
+    public void handleSave(byte id, IProgressMonitor monitor) {
+        // TODO Auto-generated method stub
+        
+    }
+}
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/core/GenericServerSourcePathComputerDelegate.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/core/GenericServerSourcePathComputerDelegate.java
new file mode 100644
index 0000000..feb058e
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/core/GenericServerSourcePathComputerDelegate.java
@@ -0,0 +1,82 @@
+/*******************************************************************************
+ * Copyright (c) 2004 Eteration Bilisim A.S.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ * 
+ * Contributors:
+ *     Gorkem Ercan - initial API and implementation
+ *     Naci M. Dai
+ * 
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL ETERATION A.S. OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Eteration Bilisim A.S.  For more
+ * information on eteration, please see
+ * <http://www.eteration.com/>.
+ ***************************************************************************/
+package org.eclipse.jst.server.generic.internal.core;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.debug.core.sourcelookup.ISourceContainer;
+import org.eclipse.debug.core.sourcelookup.ISourcePathComputerDelegate;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jdt.internal.launching.JavaSourceLookupUtil;
+import org.eclipse.jdt.launching.IRuntimeClasspathEntry;
+import org.eclipse.jdt.launching.JavaRuntime;
+/**
+ * SourcePathComputer for the GenericLaunchConfiguration.
+ * 
+ * @author Gorkem Ercan
+ */
+public class GenericServerSourcePathComputerDelegate implements ISourcePathComputerDelegate  {
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.debug.core.sourcelookup.ISourcePathComputerDelegate#computeSourceContainers(org.eclipse.debug.core.ILaunchConfiguration, org.eclipse.core.runtime.IProgressMonitor)
+	 */
+	public ISourceContainer[] computeSourceContainers(ILaunchConfiguration configuration, IProgressMonitor monitor) throws CoreException {
+		
+		IRuntimeClasspathEntry[] unresolvedEntries = JavaRuntime.computeUnresolvedSourceLookupPath(configuration);
+		// FIXME have only the projects of registered modules. 
+		IProject[] projects = ResourcesPlugin.getWorkspace().getRoot().getProjects();
+		List javaProjectList = new ArrayList();
+		for(int i = 0; i<projects.length;i++)
+		{
+			if(projects[i].hasNature(JavaCore.NATURE_ID))
+			{
+				IJavaProject javaProject = (IJavaProject) projects[i].getNature(JavaCore.NATURE_ID);
+				javaProjectList.add(javaProject);
+			}
+		}
+		IRuntimeClasspathEntry[] projectEntries = new IRuntimeClasspathEntry[javaProjectList.size()];
+		for (int i = 0; i < javaProjectList.size(); i++) {
+			projectEntries[i] = JavaRuntime.newProjectRuntimeClasspathEntry((IJavaProject)javaProjectList.get(i)); 
+		}
+		IRuntimeClasspathEntry[] entries =  new IRuntimeClasspathEntry[projectEntries.length+unresolvedEntries.length]; 
+		System.arraycopy(unresolvedEntries,0,entries,0,unresolvedEntries.length);
+		System.arraycopy(projectEntries,0,entries,unresolvedEntries.length,projectEntries.length);
+		
+		IRuntimeClasspathEntry[] resolved = JavaRuntime.resolveSourceLookupPath(entries, configuration);
+		return JavaSourceLookupUtil.translate(resolved, true);
+	}}
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/core/GenericServerWorkingCopy.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/core/GenericServerWorkingCopy.java
new file mode 100644
index 0000000..fdfd4ce
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/core/GenericServerWorkingCopy.java
@@ -0,0 +1,246 @@
+/*******************************************************************************
+ * Copyright (c) 2004 Eteration Bilisim A.S. All rights reserved.   This program
+ * and the accompanying materials are made available under the terms of the
+ * Common Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/cpl-v10.html
+ * 
+ * Contributors: Gorkem Ercan - initial API and implementation 
+ *               Naci M. Dai
+ * 
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ETERATIOn A.S.
+ * OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
+ * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * ====================================================================
+ * 
+ * This software consists of voluntary contributions made by many individuals on
+ * behalf of the Eteration Bilisim A.S. For more information on eteration,
+ * please see <http://www.eteration.com/>.
+ ******************************************************************************/
+package org.eclipse.jst.server.generic.internal.core;
+
+import java.util.List;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
+import org.eclipse.wst.server.core.IServerState;
+import org.eclipse.wst.server.core.IServerWorkingCopy;
+import org.eclipse.wst.server.core.ITask;
+import org.eclipse.wst.server.core.model.IModule;
+import org.eclipse.wst.server.core.model.IModuleEvent;
+import org.eclipse.wst.server.core.model.IModuleFactoryEvent;
+import org.eclipse.wst.server.core.model.IPublisher;
+import org.eclipse.wst.server.core.model.IServerWorkingCopyDelegate;
+import org.eclipse.wst.server.core.resources.IModuleResourceDelta;
+
+public class GenericServerWorkingCopy extends GenericServer implements
+		IServerWorkingCopyDelegate {
+
+	protected IServerWorkingCopy workingCopy;
+
+	private IServerState liveServer;
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see com.ibm.wtp.server.core.model.IServerWorkingCopyDelegate#initialize(com.ibm.wtp.server.core.IServerWorkingCopy)
+	 */
+	public void initialize(IServerWorkingCopy workingCopy) {
+		this.workingCopy = workingCopy;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see com.ibm.wtp.server.core.model.IServerWorkingCopyDelegate#setDefaults()
+	 */
+	public void setDefaults() {
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see com.ibm.wtp.server.core.model.IServerWorkingCopyDelegate#modifyModules(com.ibm.wtp.server.core.model.IModule[],
+	 *      com.ibm.wtp.server.core.model.IModule[],
+	 *      org.eclipse.core.runtime.IProgressMonitor)
+	 */
+	public void modifyModules(IModule[] add, IModule[] remove,
+			IProgressMonitor monitor) throws CoreException {
+	    //todo implement module add/remove.
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see com.ibm.wtp.server.core.model.IServerDelegate#initialize(com.ibm.wtp.server.core.IServerState)
+	 */
+	public void initialize(IServerState liveServer) {
+		this.liveServer = liveServer;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see com.ibm.wtp.server.core.model.IServerDelegate#dispose()
+	 */
+	public void dispose() {
+		// TODO Auto-generated method stub
+
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see com.ibm.wtp.server.core.model.IServerDelegate#getPublisher(java.util.List,
+	 *      com.ibm.wtp.server.core.model.IModule)
+	 */
+	public IPublisher getPublisher(List parents, IModule module) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see com.ibm.wtp.server.core.model.IServerDelegate#updateConfiguration()
+	 */
+	public void updateConfiguration() {
+		// TODO Auto-generated method stub
+
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see com.ibm.wtp.server.core.model.IServerDelegate#updateModule(com.ibm.wtp.server.core.model.IModule,
+	 *      com.ibm.wtp.server.core.resources.IModuleResourceDelta)
+	 */
+	public void updateModule(IModule module, IModuleResourceDelta delta) {
+		// TODO Auto-generated method stub
+
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see com.ibm.wtp.server.core.model.IServerDelegate#publishStart(org.eclipse.core.runtime.IProgressMonitor)
+	 */
+	public IStatus publishStart(IProgressMonitor monitor) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see com.ibm.wtp.server.core.model.IServerDelegate#publishConfiguration(org.eclipse.core.runtime.IProgressMonitor)
+	 */
+	public IStatus publishConfiguration(IProgressMonitor monitor) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see com.ibm.wtp.server.core.model.IServerDelegate#publishStop(org.eclipse.core.runtime.IProgressMonitor)
+	 */
+	public IStatus publishStop(IProgressMonitor monitor) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see com.ibm.wtp.server.core.model.IServerDelegate#canModifyModules(com.ibm.wtp.server.core.model.IModule[],
+	 *      com.ibm.wtp.server.core.model.IModule[])
+	 */
+	public IStatus canModifyModules(IModule[] add, IModule[] remove) {
+		// TODO Auto-generated method stub
+		return Status.OK_STATUS;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see com.ibm.wtp.server.core.model.IServerDelegate#getModules()
+	 */
+	public IModule[] getModules() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see com.ibm.wtp.server.core.model.IServerDelegate#getRepairCommands(com.ibm.wtp.server.core.model.IModuleFactoryEvent[],
+	 *      com.ibm.wtp.server.core.model.IModuleEvent[])
+	 */
+	public ITask[] getRepairCommands(IModuleFactoryEvent[] factoryEvent,
+			IModuleEvent[] moduleEvent) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see com.ibm.wtp.server.core.model.IServerDelegate#getChildModules(com.ibm.wtp.server.core.model.IModule)
+	 */
+	public List getChildModules(IModule module) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see com.ibm.wtp.server.core.model.IServerDelegate#getParentModules(com.ibm.wtp.server.core.model.IModule)
+	 */
+	public List getParentModules(IModule module) throws CoreException {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see com.ibm.wtp.server.core.model.IServerDelegate#setLaunchDefaults(org.eclipse.debug.core.ILaunchConfigurationWorkingCopy)
+	 */
+	public void setLaunchDefaults(ILaunchConfigurationWorkingCopy workingCopy) {
+		// TODO Auto-generated method stub
+
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.wst.server.core.model.IServerWorkingCopyDelegate#handleSave(byte,
+	 *      org.eclipse.core.runtime.IProgressMonitor)
+	 */
+	public void handleSave(byte id, IProgressMonitor monitor) {
+		// TODO Auto-generated method stub
+
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.wst.server.core.model.IServerDelegate#getModuleState(org.eclipse.wst.server.core.model.IModule)
+	 */
+	public byte getModuleState(IModule module) {
+		// TODO Auto-generated method stub
+		return 0;
+	}
+
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/core/PingThread.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/core/PingThread.java
new file mode 100644
index 0000000..10badb7
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/core/PingThread.java
@@ -0,0 +1,110 @@
+package org.eclipse.jst.server.generic.internal.core;
+/**********************************************************************
+ * Copyright (c) 2003 IBM Corporation and others.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ *
+ * Contributors:
+ *    IBM - Initial API and implementation
+ **********************************************************************/
+import java.io.FileNotFoundException;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.net.URLConnection;
+
+import org.eclipse.debug.core.ILaunchManager;
+
+import org.eclipse.wst.server.core.IServer;
+import org.eclipse.wst.server.core.IServerState;
+/**
+ * Thread used to ping server to test when it is started.
+ */
+public class PingThread extends Thread {
+	// delay before pinging starts
+	private static final int PING_DELAY = 2000;
+
+	// delay between pings
+	private static final int PING_INTERVAL = 250;
+
+	// maximum number of pings before giving up
+	private static final int MAX_PINGS = 56; // total: 16 seconds
+
+	private boolean stop = false;
+	private String mode;
+	private String url = "";
+	private GenericServer serverType;
+	private IServerState control;
+
+	public PingThread(GenericServer serverType, IServerState control, String url, String mode) {	super();
+		this.control = control;
+		this.url = url;
+		this.mode = mode;
+		this.serverType = serverType;
+		setDaemon(true);
+	}
+	
+	/**
+	 * Ping the server until it is started. Then set the server
+	 * state to SERVER_STARTED.
+	 */
+	public void run() {
+		int count = 0;
+		try {
+			sleep(PING_DELAY);
+		} catch (Exception e) { }
+		while (!stop) {
+			try {
+				if (count == MAX_PINGS) {
+					serverType.stop();
+					stop = true;
+					break;
+				}
+				Trace.trace(Trace.FINEST, "Ping: pinging");
+				URL pingUrl = new URL(url);
+				URLConnection conn = pingUrl.openConnection();
+				((HttpURLConnection)conn).getResponseCode();
+				count++;
+	
+				// ping worked - server is up
+				if (!stop) {
+					Trace.trace(Trace.FINEST, "Ping: success");
+					Thread.sleep(200);
+					if (ILaunchManager.DEBUG_MODE.equals(mode))
+						control.setServerState(IServer.SERVER_STARTED_DEBUG);
+					else if (ILaunchManager.PROFILE_MODE.equals(mode))
+						control.setServerState(IServer.SERVER_STARTED_PROFILE);
+					else
+						control.setServerState(IServer.SERVER_STARTED);
+				}
+				stop = true;
+			} catch (FileNotFoundException fe) {
+				try { Thread.sleep(200); } catch (Exception e) { }
+				if (ILaunchManager.DEBUG_MODE.equals(mode))
+					control.setServerState(IServer.SERVER_STARTED_DEBUG);
+				else if (ILaunchManager.PROFILE_MODE.equals(mode))
+					control.setServerState(IServer.SERVER_STARTED_PROFILE);
+				else
+					control.setServerState(IServer.SERVER_STARTED);
+				stop = true;
+			} catch (Exception e) {
+				Trace.trace(Trace.FINEST, "Ping: failed");
+				// pinging failed
+				if (!stop) {
+					try {
+						sleep(PING_INTERVAL);
+					} catch (InterruptedException e2) { }
+				}
+			}
+		}
+	}
+	
+	/**
+	 * Tell the pinging to stop.
+	 */
+	public void stopPinging() {
+		//Trace.trace("Ping: stopping");
+		stop = true;
+	}
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/core/ServerTypeDefinitionManager.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/core/ServerTypeDefinitionManager.java
new file mode 100644
index 0000000..1c52ad2
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/core/ServerTypeDefinitionManager.java
@@ -0,0 +1,68 @@
+/*******************************************************************************
+ * Copyright (c) 2004 Eteration Bilisim A.S.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ * 
+ * Contributors:
+ *     Gorkem Ercan - initial API and implementation
+ *     Naci M. Dai
+ * 
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL ETERATION A.S. OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Eteration Bilisim A.S.  For more
+ * information on eteration, please see
+ * <http://www.eteration.com/>.
+ ***************************************************************************/
+package org.eclipse.jst.server.generic.internal.core;
+
+import java.net.URL;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.jst.server.generic.internal.xml.XMLUtils;
+import org.eclipse.jst.server.generic.servertype.definition.ServerRuntime;
+/**
+ * Manages the retrieaval of ServerTypeDefinitions.
+ * 
+ * @author Gorkem Ercan
+ */
+
+public class ServerTypeDefinitionManager 
+{
+	private XMLUtils fXmlUtils;
+	
+	public ServerTypeDefinitionManager(URL serverDefinitionURL)
+	{
+		super();
+		fXmlUtils = new XMLUtils(serverDefinitionURL); 
+	}
+
+
+	public ServerRuntime getServerRuntimeDefinition(String id, Map properties)
+	{
+		ServerRuntime definition =  fXmlUtils.getServerTypeDefinitionNamed(id);
+		definition.setPropertyValues(properties);
+		return definition;
+	}
+	
+	public ServerRuntime[] getServerTypeDefinitions()
+	{
+		 List definitionList = fXmlUtils.getServerTypeDefinitions();
+		 return (ServerRuntime[])definitionList.toArray(new ServerRuntime[definitionList.size()]);
+	}
+}
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/core/ServerTypeDefinitionUtil.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/core/ServerTypeDefinitionUtil.java
new file mode 100644
index 0000000..aeb9d2b
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/core/ServerTypeDefinitionUtil.java
@@ -0,0 +1,81 @@
+/*******************************************************************************
+ * Copyright (c) 2004 Eteration Bilisim A.S.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ * 
+ * Contributors:
+ *     Gorkem Ercan - initial API and implementation
+ *     Naci M. Dai
+ * 
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL ETERATION A.S. OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Eteration Bilisim A.S.  For more
+ * information on eteration, please see
+ * <http://www.eteration.com/>.
+ ***************************************************************************/
+
+package org.eclipse.jst.server.generic.internal.core;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.Map;
+
+import org.eclipse.core.runtime.Path;
+import org.eclipse.jdt.core.IClasspathEntry;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jst.server.generic.core.CorePlugin;
+import org.eclipse.jst.server.generic.servertype.definition.ArchiveType;
+import org.eclipse.jst.server.generic.servertype.definition.Classpath;
+import org.eclipse.jst.server.generic.servertype.definition.ServerRuntime;
+import org.eclipse.wst.server.core.IRuntime;
+
+
+public class ServerTypeDefinitionUtil 
+{
+	/**
+	 * 
+	 * @param runtime
+	 * @return
+	 */
+	public static ServerRuntime getServerTypeDefinition(IRuntime runtime)
+	{
+		String serverType = runtime.getAttribute(GenericServerRuntime.SERVER_DEFINITION_ID,(String)null);
+		Map properties = runtime.getAttribute(GenericServerRuntime.SERVER_INSTANCE_PROPERTIES,(Map)null);
+		ServerRuntime definition = 
+			CorePlugin.getDefault().getServerTypeDefinitionManager().getServerRuntimeDefinition(serverType,properties);
+		return definition;
+	}
+	
+	public static IClasspathEntry[] getServerClassPathEntry(IRuntime runtime)
+	{
+		ServerRuntime definition = getServerTypeDefinition(runtime);		
+		String ref = definition.getProject().getClasspathReference();
+		Classpath cp = definition.getClasspath(ref);
+		Iterator archives = cp.getArchive().iterator();
+		ArrayList entryList = new ArrayList();
+		while (archives.hasNext()) {
+			ArchiveType archive = (ArchiveType) archives.next();
+			String item = definition.getResolver().resolveProperties(archive.getPath());
+			IClasspathEntry entry = JavaCore.newLibraryEntry(new Path(item),null,null );
+			entryList.add(entry);
+		}
+
+		return (IClasspathEntry[])entryList.toArray(new IClasspathEntry[entryList.size()]);
+	}
+	
+}
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/core/Trace.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/core/Trace.java
new file mode 100644
index 0000000..6484869
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/core/Trace.java
@@ -0,0 +1,74 @@
+package org.eclipse.jst.server.generic.internal.core;
+
+import org.eclipse.jst.server.generic.core.CorePlugin;
+
+/**********************************************************************
+ * Copyright (c) 2003 IBM Corporation and others.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ *
+ * Contributors:
+ *    IBM - Initial API and implementation
+ **********************************************************************/
+/**
+ * Helper class to route trace output.
+ */
+public class Trace {
+	public static byte CONFIG = 0;
+	public static byte WARNING = 1;
+	public static byte SEVERE = 2;
+	public static byte FINEST = 3;
+	public static byte FINER = 4;
+	
+	/**
+	 * Trace constructor comment.
+	 */
+	private Trace() {
+		super();
+	}
+	
+	/**
+	 * Trace the given text.
+	 *
+	 * @param s java.lang.String
+	 */
+	public static void trace(byte level, String s) {
+		Trace.trace(level, s, null);
+	}
+	
+	/**
+	 * Trace the given message and exception.
+	 *
+	 * @param s java.lang.String
+	 * @param t java.lang.Throwable
+	 */
+	public static void trace(byte level, String s, Throwable t) {
+		if (!CorePlugin.getDefault().isDebugging())
+			return;
+
+		System.out.println(s);
+		if (t != null)
+			t.printStackTrace();
+	}
+	
+	/**
+	 * Trace the given text.
+	 *
+	 * @param s java.lang.String
+	 */
+	public static void trace(String s) {
+		trace(s, null);
+	}
+	
+	/**
+	 * Trace the given exception.
+	 *
+	 * @param s java.lang.String
+	 * @param e java.lang.Throwable
+	 */
+	public static void trace(String s, Throwable t) {
+		trace(FINEST, s, t);
+	}
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/xml/Resolver.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/xml/Resolver.java
new file mode 100644
index 0000000..ddf43e4
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/xml/Resolver.java
@@ -0,0 +1,174 @@
+/*******************************************************************************
+ * Copyright (c) 2004 Eteration Bilisim A.S.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ * 
+ * Contributors:
+ *     Naci M. Dai - initial API and implementation
+ *     
+ * 
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL ETERATION A.S. OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Eteration Bilisim A.S.  For more
+ * information on eteration, please see
+ * <http://www.eteration.com/>.
+ ***************************************************************************/
+
+package org.eclipse.jst.server.generic.internal.xml;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.jst.server.generic.servertype.definition.ArchiveType;
+import org.eclipse.jst.server.generic.servertype.definition.Property;
+import org.eclipse.jst.server.generic.servertype.definition.ServerRuntime;
+
+
+public class Resolver {
+
+
+
+	private Map fPropertyValues = new HashMap();
+	private ServerRuntime server;
+
+	/**
+	 * @param impl
+	 */
+	public Resolver(ServerRuntime runtime) {
+		this.server = runtime;
+	}
+	
+	public List resolveClasspathProperties(List cpList)
+	{
+		ArrayList list = new ArrayList(cpList.size());
+		for (int i = 0; i < cpList.size(); i++) {
+			ArchiveType item = (ArchiveType) cpList.get(i);
+			String cpath = resolveProperties(item.getPath());
+			list.add(cpath);
+		}
+		return list;
+	}	
+	public String resolveProperties(String proppedString) {
+		HashMap cache = new HashMap(getProperties().size());
+		Iterator itr = getProperties().iterator();
+		while (itr.hasNext()) {
+			Property element =(Property) itr.next();
+			String value = element.getDefault();
+			if(fPropertyValues != null && fPropertyValues.containsKey(element.getId()))
+			    value=(String)fPropertyValues.get(element.getId());
+			 cache.put(element.getId(), value);
+		}
+		//String vmPath = install.getInstallLocation().getCanonicalPath();
+		//vmPath = vmPath.replace('\\', '/');
+		cache.put("jrePath", "JRE");
+
+		String str = resolvePropertiesFromCache(proppedString, cache);
+		str = fixPassthroughProperties(str);
+		return str;
+	}
+
+	/**
+	 * @return
+	 */
+	private List getProperties() {
+		return this.server.getProperty();
+	}
+
+	/**
+	 * @param str
+	 * @return
+	 */
+	private String fixPassthroughProperties(String str) {
+		String resolvedString = str;
+		if (isPassPropertyLeft(resolvedString)) {
+			resolvedString = fixParam(resolvedString);
+			resolvedString = fixPassthroughProperties(resolvedString);
+		}
+		return resolvedString;
+	}
+
+	private String resolvePropertiesFromCache(
+		String proppedString,
+		HashMap cache) {
+		String resolvedString = proppedString;
+		int start = skipToProperty(resolvedString,cache);
+		if (start >= 0) {
+			resolvedString = resolveProperty(resolvedString, start, cache);
+			resolvedString = resolvePropertiesFromCache(resolvedString, cache);
+		}
+		return resolvedString;
+	}
+
+	private int skipToProperty(String str,HashMap cache) {
+		int start = -1; 
+		int end =  0;
+		String value = null;
+		do {
+			start =  str.indexOf("${",end);
+			if( start < 0)
+				return start;
+			end = str.indexOf("}", start);
+			
+			String key = str.substring(start + 2, end);
+			value = (String)cache.get(key);
+		}
+		while(value == null);
+		return start;
+	}
+	
+	private boolean isPassPropertyLeft(String str) {
+		return str.indexOf("%{") >= 0;
+	}
+
+	private String resolveProperty(String proppedString, int start, HashMap cache) {
+		String str = proppedString;
+		start = str.indexOf("${");
+		int end = str.indexOf("}", start);
+		String key = str.substring(start + 2, end);
+		String value = (String)cache.get(key);
+		if(value == null )
+			return str;
+		return str.substring(0, start)
+			+ value
+			+ str.substring(end + 1);
+	}
+	
+	private String fixParam(String proppedString) {
+		String str = proppedString;
+		int start = str.indexOf("%{");
+		return str.substring(0, start)
+			+ "${"
+			+ str.substring(start+2);
+	}
+	
+	/**
+	 * @return Returns the fPropertyValues.
+	 */
+	public Map getPropertyValues() {
+		return fPropertyValues;
+	}
+	/**
+	 * @param propertyValues The fPropertyValues to set.
+	 */
+	public void setPropertyValues(Map propertyValues) {
+		fPropertyValues = propertyValues;
+	}
+}
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/xml/XMLUtils.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/xml/XMLUtils.java
new file mode 100644
index 0000000..75968e8
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/xml/XMLUtils.java
@@ -0,0 +1,204 @@
+/*******************************************************************************
+ * Copyright (c) 2004 Eteration Bilisim A.S.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ * 
+ * Contributors:
+ *     Naci M. Dai - initial API and implementation
+ *     
+ * 
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL ETERATION A.S. OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Eteration Bilisim A.S.  For more
+ * information on eteration, please see
+ * <http://www.eteration.com/>.
+ ***************************************************************************/
+
+package org.eclipse.jst.server.generic.internal.xml;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.FilenameFilter;
+import java.io.IOException;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Iterator;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.emf.common.util.WrappedException;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
+import org.eclipse.jst.server.generic.core.CorePlugin;
+import org.eclipse.jst.server.generic.servertype.definition.ServerRuntime;
+import org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage;
+
+/**
+ * @author Naci Dai
+ */
+public class XMLUtils {
+
+	ArrayList definitions;
+
+	File sourceDir;
+
+	public XMLUtils(URL installUrl) {
+		String serversPath = installUrl.getPath() + "/servers";
+		URI uri;
+		try {
+			uri = new URI(installUrl.getProtocol(), installUrl.getHost(),
+					serversPath, installUrl.getQuery());
+			sourceDir = new File(uri);
+		} catch (URISyntaxException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+
+		refresh();
+	}
+
+	public void refresh() {
+		definitions = scanFiles(sourceDir);
+	}
+
+	public void update(ServerRuntime element) {
+		toFile(element);
+	}
+
+	public void update() {
+		Iterator defs = definitions.iterator();
+		while (defs.hasNext()) {
+			ServerRuntime element = (ServerRuntime) defs.next();
+			update(element);
+		}
+	}
+
+	private void toFile(ServerRuntime def) {
+		try {
+
+			File f = new File(def.getFilename());
+			f.renameTo(new File(f.getCanonicalFile() + ".bak"));
+		} catch (IOException e) {
+		}
+
+		try {
+			FileOutputStream out = new FileOutputStream(def.getFilename());
+			out.write(def.toString().getBytes());
+			out.close();
+		} catch (FileNotFoundException e) {
+		} catch (IOException e) {
+		}
+	}
+
+	private ArrayList scanFiles(File dir) {
+		ArrayList all = new ArrayList();
+		if (dir.isDirectory()) {
+			File[] allServers = dir.listFiles(new FilenameFilter() {
+				/*
+				 * (non-Javadoc)
+				 * 
+				 * @see java.io.FilenameFilter#accept(java.io.File,
+				 *      java.lang.String)
+				 */
+				public boolean accept(File dir, String name) {
+					if (name.endsWith(".server"))
+						return true;
+					return false;
+				}
+
+			});
+
+			for (int i = 0; i < allServers.length; i++) {
+				File file = allServers[i];
+
+				// Create a resource set.
+				ResourceSet resourceSet = new ResourceSetImpl();
+
+				// Register the default resource factory -- only needed for
+				// stand-alone!
+				resourceSet.getResourceFactoryRegistry()
+						.getExtensionToFactoryMap().put(
+								Resource.Factory.Registry.DEFAULT_EXTENSION,
+								new XMIResourceFactoryImpl());
+
+				ServerTypePackage gstPack = ServerTypePackage.eINSTANCE;
+
+				// Get the URI of the model file.
+				org.eclipse.emf.common.util.URI fileURI = org.eclipse.emf.common.util.URI
+						.createFileURI(file.getAbsolutePath());
+
+				// Demand load the resource for this file.
+				Resource resource=null;
+                try {
+                    resource = resourceSet.getResource(fileURI, true);
+                } catch (WrappedException e) {
+//                  sth wrong with this .server file.
+                    CorePlugin.getDefault().getLog().log(new Status(IStatus.ERROR,CorePlugin.PLUGIN_ID,1,"Error loading the server type definition",e));
+                }
+                if(resource!=null) {
+                    ServerRuntime def = (ServerRuntime) resource.getContents().get(0);
+					if (def != null) {
+						def.setFilename(file.getAbsolutePath());
+						all.add(def);
+					}
+	            }
+			}
+		}
+
+		return all;
+	}
+
+	/**
+	 * @return ArrayList
+	 */
+	public ArrayList getServerTypeDefinitions() {
+		return definitions;
+	}
+
+	/**
+	 * @return ArrayList
+	 */
+	public ServerRuntime getServerTypeDefinitionNamed(String name) {
+		refresh();
+		Iterator defs = getServerTypeDefinitions().iterator();
+		while (defs.hasNext()) {
+			ServerRuntime elem = (ServerRuntime) defs.next();
+			if (name.equals(elem.getName()))
+				return elem;
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the definitions.
+	 * 
+	 * @param definitions
+	 *            The definitions to set
+	 */
+	public void setDefinitions(ArrayList definitions) {
+		this.definitions = definitions;
+	}
+
+	
+	
+}
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/ArchiveType.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/ArchiveType.java
new file mode 100644
index 0000000..d5c641c
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/ArchiveType.java
@@ -0,0 +1,80 @@
+/**
+ * <copyright>
+ *******************************************************************************
+ * Copyright (c) 2004 Eteration Bilisim A.S.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ * 
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL ETERATION A.S. OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Eteration Bilisim A.S.  For more
+ * information on eteration, please see
+ * <http://www.eteration.com/>.
+ ***************************************************************************
+ * </copyright>
+ *
+ * $Id: ArchiveType.java,v 1.1 2004/11/20 21:18:10 ndai Exp $
+ */
+package org.eclipse.jst.server.generic.servertype.definition;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Archive Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.ArchiveType#getPath <em>Path</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage#getArchiveType()
+ * @model 
+ * @generated
+ */
+public interface ArchiveType extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Path</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Path</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Path</em>' attribute.
+	 * @see #setPath(String)
+	 * @see org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage#getArchiveType_Path()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String"
+	 * @generated
+	 */
+	String getPath();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.jst.server.generic.servertype.definition.ArchiveType#getPath <em>Path</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Path</em>' attribute.
+	 * @see #getPath()
+	 * @generated
+	 */
+	void setPath(String value);
+
+} // ArchiveType
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/Classpath.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/Classpath.java
new file mode 100644
index 0000000..716d138
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/Classpath.java
@@ -0,0 +1,172 @@
+/**
+ * <copyright>
+ *******************************************************************************
+ * Copyright (c) 2004 Eteration Bilisim A.S.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ * 
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL ETERATION A.S. OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Eteration Bilisim A.S.  For more
+ * information on eteration, please see
+ * <http://www.eteration.com/>.
+ ***************************************************************************
+ * </copyright>
+ *
+ * $Id: Classpath.java,v 1.1 2004/11/20 21:18:10 ndai Exp $
+ */
+package org.eclipse.jst.server.generic.servertype.definition;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.emf.ecore.util.FeatureMap;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Classpath</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.Classpath#getGroup <em>Group</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.Classpath#getArchive <em>Archive</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.Classpath#getId <em>Id</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.Classpath#isIsLibrary <em>Is Library</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage#getClasspath()
+ * @model 
+ * @generated
+ */
+public interface Classpath extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Group</b></em>' attribute list.
+	 * The list contents are of type {@link org.eclipse.emf.ecore.util.FeatureMap.Entry}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Group</em>' attribute list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Group</em>' attribute list.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage#getClasspath_Group()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.EFeatureMapEntry" many="true"
+	 * @generated
+	 */
+	FeatureMap getGroup();
+
+	/**
+	 * Returns the value of the '<em><b>Archive</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.jst.server.generic.servertype.definition.ArchiveType}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Archive</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Archive</em>' containment reference list.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage#getClasspath_Archive()
+	 * @model type="org.eclipse.jst.server.generic.servertype.definition.ArchiveType" containment="true" resolveProxies="false" required="true" transient="true" volatile="true" derived="true"
+	 * @generated
+	 */
+	EList getArchive();
+
+	/**
+	 * Returns the value of the '<em><b>Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Id</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Id</em>' attribute.
+	 * @see #setId(String)
+	 * @see org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage#getClasspath_Id()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String"
+	 * @generated
+	 */
+	String getId();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.jst.server.generic.servertype.definition.Classpath#getId <em>Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Id</em>' attribute.
+	 * @see #getId()
+	 * @generated
+	 */
+	void setId(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Is Library</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Is Library</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Is Library</em>' attribute.
+	 * @see #isSetIsLibrary()
+	 * @see #unsetIsLibrary()
+	 * @see #setIsLibrary(boolean)
+	 * @see org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage#getClasspath_IsLibrary()
+	 * @model unique="false" unsettable="true" dataType="org.eclipse.emf.ecore.xml.type.Boolean"
+	 * @generated
+	 */
+	boolean isIsLibrary();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.jst.server.generic.servertype.definition.Classpath#isIsLibrary <em>Is Library</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Is Library</em>' attribute.
+	 * @see #isSetIsLibrary()
+	 * @see #unsetIsLibrary()
+	 * @see #isIsLibrary()
+	 * @generated
+	 */
+	void setIsLibrary(boolean value);
+
+	/**
+	 * Unsets the value of the '{@link org.eclipse.jst.server.generic.servertype.definition.Classpath#isIsLibrary <em>Is Library</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isSetIsLibrary()
+	 * @see #isIsLibrary()
+	 * @see #setIsLibrary(boolean)
+	 * @generated
+	 */
+	void unsetIsLibrary();
+
+	/**
+	 * Returns whether the value of the '{@link org.eclipse.jst.server.generic.servertype.definition.Classpath#isIsLibrary <em>Is Library</em>}' attribute is set.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return whether the value of the '<em>Is Library</em>' attribute is set.
+	 * @see #unsetIsLibrary()
+	 * @see #isIsLibrary()
+	 * @see #setIsLibrary(boolean)
+	 * @generated
+	 */
+	boolean isSetIsLibrary();
+
+} // Classpath
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/LaunchConfiguration.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/LaunchConfiguration.java
new file mode 100644
index 0000000..6f7ef6a
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/LaunchConfiguration.java
@@ -0,0 +1,188 @@
+/**
+ * <copyright>
+ *******************************************************************************
+ * Copyright (c) 2004 Eteration Bilisim A.S.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ * 
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL ETERATION A.S. OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Eteration Bilisim A.S.  For more
+ * information on eteration, please see
+ * <http://www.eteration.com/>.
+ ***************************************************************************
+ * </copyright>
+ *
+ * $Id: LaunchConfiguration.java,v 1.1 2004/11/20 21:18:10 ndai Exp $
+ */
+package org.eclipse.jst.server.generic.servertype.definition;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Launch Configuration</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.LaunchConfiguration#getClass_ <em>Class</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.LaunchConfiguration#getWorkingDirectory <em>Working Directory</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.LaunchConfiguration#getProgramArguments <em>Program Arguments</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.LaunchConfiguration#getVmParameters <em>Vm Parameters</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.LaunchConfiguration#getClasspathReference <em>Classpath Reference</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage#getLaunchConfiguration()
+ * @model 
+ * @generated
+ */
+public interface LaunchConfiguration extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Class</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Class</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Class</em>' attribute.
+	 * @see #setClass(String)
+	 * @see org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage#getLaunchConfiguration_Class()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String" required="true"
+	 * @generated
+	 */
+	String getClass_();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.jst.server.generic.servertype.definition.LaunchConfiguration#getClass_ <em>Class</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Class</em>' attribute.
+	 * @see #getClass_()
+	 * @generated
+	 */
+	void setClass(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Working Directory</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Working Directory</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Working Directory</em>' attribute.
+	 * @see #setWorkingDirectory(String)
+	 * @see org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage#getLaunchConfiguration_WorkingDirectory()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String" required="true"
+	 * @generated
+	 */
+	String getWorkingDirectory();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.jst.server.generic.servertype.definition.LaunchConfiguration#getWorkingDirectory <em>Working Directory</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Working Directory</em>' attribute.
+	 * @see #getWorkingDirectory()
+	 * @generated
+	 */
+	void setWorkingDirectory(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Program Arguments</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Program Arguments</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Program Arguments</em>' attribute.
+	 * @see #setProgramArguments(String)
+	 * @see org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage#getLaunchConfiguration_ProgramArguments()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String" required="true"
+	 * @generated
+	 */
+	String getProgramArguments();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.jst.server.generic.servertype.definition.LaunchConfiguration#getProgramArguments <em>Program Arguments</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Program Arguments</em>' attribute.
+	 * @see #getProgramArguments()
+	 * @generated
+	 */
+	void setProgramArguments(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Vm Parameters</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Vm Parameters</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Vm Parameters</em>' attribute.
+	 * @see #setVmParameters(String)
+	 * @see org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage#getLaunchConfiguration_VmParameters()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String" required="true"
+	 * @generated
+	 */
+	String getVmParameters();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.jst.server.generic.servertype.definition.LaunchConfiguration#getVmParameters <em>Vm Parameters</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Vm Parameters</em>' attribute.
+	 * @see #getVmParameters()
+	 * @generated
+	 */
+	void setVmParameters(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Classpath Reference</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Classpath Reference</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Classpath Reference</em>' attribute.
+	 * @see #setClasspathReference(String)
+	 * @see org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage#getLaunchConfiguration_ClasspathReference()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String" required="true"
+	 * @generated
+	 */
+	String getClasspathReference();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.jst.server.generic.servertype.definition.LaunchConfiguration#getClasspathReference <em>Classpath Reference</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Classpath Reference</em>' attribute.
+	 * @see #getClasspathReference()
+	 * @generated
+	 */
+	void setClasspathReference(String value);
+
+} // LaunchConfiguration
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/Module.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/Module.java
new file mode 100644
index 0000000..c9fdc40
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/Module.java
@@ -0,0 +1,134 @@
+/**
+ * <copyright>
+ *******************************************************************************
+ * Copyright (c) 2004 Eteration Bilisim A.S.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ * 
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL ETERATION A.S. OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Eteration Bilisim A.S.  For more
+ * information on eteration, please see
+ * <http://www.eteration.com/>.
+ ***************************************************************************
+ * </copyright>
+ *
+ * $Id: Module.java,v 1.1 2004/11/20 21:18:10 ndai Exp $
+ */
+package org.eclipse.jst.server.generic.servertype.definition;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Module</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.Module#getType <em>Type</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.Module#getPublishDir <em>Publish Dir</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.Module#getPublisherReference <em>Publisher Reference</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage#getModule()
+ * @model 
+ * @generated
+ */
+public interface Module extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Type</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Type</em>' attribute.
+	 * @see #setType(String)
+	 * @see org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage#getModule_Type()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String" required="true"
+	 * @generated
+	 */
+	String getType();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.jst.server.generic.servertype.definition.Module#getType <em>Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Type</em>' attribute.
+	 * @see #getType()
+	 * @generated
+	 */
+	void setType(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Publish Dir</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Publish Dir</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Publish Dir</em>' attribute.
+	 * @see #setPublishDir(String)
+	 * @see org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage#getModule_PublishDir()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String" required="true"
+	 * @generated
+	 */
+	String getPublishDir();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.jst.server.generic.servertype.definition.Module#getPublishDir <em>Publish Dir</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Publish Dir</em>' attribute.
+	 * @see #getPublishDir()
+	 * @generated
+	 */
+	void setPublishDir(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Publisher Reference</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Publisher Reference</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Publisher Reference</em>' attribute.
+	 * @see #setPublisherReference(String)
+	 * @see org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage#getModule_PublisherReference()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String" required="true"
+	 * @generated
+	 */
+	String getPublisherReference();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.jst.server.generic.servertype.definition.Module#getPublisherReference <em>Publisher Reference</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Publisher Reference</em>' attribute.
+	 * @see #getPublisherReference()
+	 * @generated
+	 */
+	void setPublisherReference(String value);
+
+} // Module
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/Port.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/Port.java
new file mode 100644
index 0000000..a933a53
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/Port.java
@@ -0,0 +1,134 @@
+/**
+ * <copyright>
+ *******************************************************************************
+ * Copyright (c) 2004 Eteration Bilisim A.S.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ * 
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL ETERATION A.S. OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Eteration Bilisim A.S.  For more
+ * information on eteration, please see
+ * <http://www.eteration.com/>.
+ ***************************************************************************
+ * </copyright>
+ *
+ * $Id: Port.java,v 1.1 2004/11/20 21:18:10 ndai Exp $
+ */
+package org.eclipse.jst.server.generic.servertype.definition;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Port</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.Port#getNo <em>No</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.Port#getName <em>Name</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.Port#getProtocol <em>Protocol</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage#getPort()
+ * @model 
+ * @generated
+ */
+public interface Port extends EObject {
+	/**
+	 * Returns the value of the '<em><b>No</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>No</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>No</em>' attribute.
+	 * @see #setNo(String)
+	 * @see org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage#getPort_No()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String" required="true"
+	 * @generated
+	 */
+	String getNo();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.jst.server.generic.servertype.definition.Port#getNo <em>No</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>No</em>' attribute.
+	 * @see #getNo()
+	 * @generated
+	 */
+	void setNo(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Name</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Name</em>' attribute.
+	 * @see #setName(String)
+	 * @see org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage#getPort_Name()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String" required="true"
+	 * @generated
+	 */
+	String getName();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.jst.server.generic.servertype.definition.Port#getName <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Name</em>' attribute.
+	 * @see #getName()
+	 * @generated
+	 */
+	void setName(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Protocol</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Protocol</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Protocol</em>' attribute.
+	 * @see #setProtocol(String)
+	 * @see org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage#getPort_Protocol()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String" required="true"
+	 * @generated
+	 */
+	String getProtocol();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.jst.server.generic.servertype.definition.Port#getProtocol <em>Protocol</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Protocol</em>' attribute.
+	 * @see #getProtocol()
+	 * @generated
+	 */
+	void setProtocol(String value);
+
+} // Port
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/Project.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/Project.java
new file mode 100644
index 0000000..91980f3
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/Project.java
@@ -0,0 +1,80 @@
+/**
+ * <copyright>
+ *******************************************************************************
+ * Copyright (c) 2004 Eteration Bilisim A.S.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ * 
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL ETERATION A.S. OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Eteration Bilisim A.S.  For more
+ * information on eteration, please see
+ * <http://www.eteration.com/>.
+ ***************************************************************************
+ * </copyright>
+ *
+ * $Id: Project.java,v 1.1 2004/11/20 21:18:10 ndai Exp $
+ */
+package org.eclipse.jst.server.generic.servertype.definition;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Project</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.Project#getClasspathReference <em>Classpath Reference</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage#getProject()
+ * @model 
+ * @generated
+ */
+public interface Project extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Classpath Reference</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Classpath Reference</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Classpath Reference</em>' attribute.
+	 * @see #setClasspathReference(String)
+	 * @see org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage#getProject_ClasspathReference()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String" required="true"
+	 * @generated
+	 */
+	String getClasspathReference();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.jst.server.generic.servertype.definition.Project#getClasspathReference <em>Classpath Reference</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Classpath Reference</em>' attribute.
+	 * @see #getClasspathReference()
+	 * @generated
+	 */
+	void setClasspathReference(String value);
+
+} // Project
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/Property.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/Property.java
new file mode 100644
index 0000000..45f92eb
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/Property.java
@@ -0,0 +1,191 @@
+/**
+ * <copyright>
+ *******************************************************************************
+ * Copyright (c) 2004 Eteration Bilisim A.S.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ * 
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL ETERATION A.S. OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Eteration Bilisim A.S.  For more
+ * information on eteration, please see
+ * <http://www.eteration.com/>.
+ ***************************************************************************
+ * </copyright>
+ *
+ * $Id: Property.java,v 1.1 2004/11/20 21:18:10 ndai Exp $
+ */
+package org.eclipse.jst.server.generic.servertype.definition;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Property</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.Property#getContext <em>Context</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.Property#getDefault <em>Default</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.Property#getId <em>Id</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.Property#getLabel <em>Label</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.Property#getType <em>Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage#getProperty()
+ * @model 
+ * @generated
+ */
+public interface Property extends EObject {
+	String CONTEXT_RUNTIME = "runtime";
+	String CONTEXT_SERVER = "server";
+
+	/**
+	 * Returns the value of the '<em><b>Context</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Context</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Context</em>' attribute.
+	 * @see #setContext(String)
+	 * @see org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage#getProperty_Context()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String"
+	 * @generated
+	 */
+	String getContext();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.jst.server.generic.servertype.definition.Property#getContext <em>Context</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Context</em>' attribute.
+	 * @see #getContext()
+	 * @generated
+	 */
+	void setContext(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Default</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Default</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Default</em>' attribute.
+	 * @see #setDefault(String)
+	 * @see org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage#getProperty_Default()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String"
+	 * @generated
+	 */
+	String getDefault();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.jst.server.generic.servertype.definition.Property#getDefault <em>Default</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Default</em>' attribute.
+	 * @see #getDefault()
+	 * @generated
+	 */
+	void setDefault(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Id</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Id</em>' attribute.
+	 * @see #setId(String)
+	 * @see org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage#getProperty_Id()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String"
+	 * @generated
+	 */
+	String getId();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.jst.server.generic.servertype.definition.Property#getId <em>Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Id</em>' attribute.
+	 * @see #getId()
+	 * @generated
+	 */
+	void setId(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Label</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Label</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Label</em>' attribute.
+	 * @see #setLabel(String)
+	 * @see org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage#getProperty_Label()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String"
+	 * @generated
+	 */
+	String getLabel();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.jst.server.generic.servertype.definition.Property#getLabel <em>Label</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Label</em>' attribute.
+	 * @see #getLabel()
+	 * @generated
+	 */
+	void setLabel(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Type</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Type</em>' attribute.
+	 * @see #setType(String)
+	 * @see org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage#getProperty_Type()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String"
+	 * @generated
+	 */
+	String getType();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.jst.server.generic.servertype.definition.Property#getType <em>Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Type</em>' attribute.
+	 * @see #getType()
+	 * @generated
+	 */
+	void setType(String value);
+
+} // Property
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/PublishType.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/PublishType.java
new file mode 100644
index 0000000..e25cc36
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/PublishType.java
@@ -0,0 +1,107 @@
+/**
+ * <copyright>
+ *******************************************************************************
+ * Copyright (c) 2004 Eteration Bilisim A.S.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ * 
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL ETERATION A.S. OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Eteration Bilisim A.S.  For more
+ * information on eteration, please see
+ * <http://www.eteration.com/>.
+ ***************************************************************************
+ * </copyright>
+ *
+ * $Id: PublishType.java,v 1.1 2004/11/20 21:18:10 ndai Exp $
+ */
+package org.eclipse.jst.server.generic.servertype.definition;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Publish Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.PublishType#getTask <em>Task</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.PublishType#getClasspathReference <em>Classpath Reference</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage#getPublishType()
+ * @model 
+ * @generated
+ */
+public interface PublishType extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Task</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Task</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Task</em>' attribute.
+	 * @see #setTask(String)
+	 * @see org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage#getPublishType_Task()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String" required="true"
+	 * @generated
+	 */
+	String getTask();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.jst.server.generic.servertype.definition.PublishType#getTask <em>Task</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Task</em>' attribute.
+	 * @see #getTask()
+	 * @generated
+	 */
+	void setTask(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Classpath Reference</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Classpath Reference</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Classpath Reference</em>' attribute.
+	 * @see #setClasspathReference(String)
+	 * @see org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage#getPublishType_ClasspathReference()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String" required="true"
+	 * @generated
+	 */
+	String getClasspathReference();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.jst.server.generic.servertype.definition.PublishType#getClasspathReference <em>Classpath Reference</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Classpath Reference</em>' attribute.
+	 * @see #getClasspathReference()
+	 * @generated
+	 */
+	void setClasspathReference(String value);
+
+} // PublishType
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/Publisher.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/Publisher.java
new file mode 100644
index 0000000..542e36f
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/Publisher.java
@@ -0,0 +1,135 @@
+/**
+ * <copyright>
+ *******************************************************************************
+ * Copyright (c) 2004 Eteration Bilisim A.S.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ * 
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL ETERATION A.S. OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Eteration Bilisim A.S.  For more
+ * information on eteration, please see
+ * <http://www.eteration.com/>.
+ ***************************************************************************
+ * </copyright>
+ *
+ * $Id: Publisher.java,v 1.1 2004/11/20 21:18:10 ndai Exp $
+ */
+package org.eclipse.jst.server.generic.servertype.definition;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.emf.ecore.util.FeatureMap;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Publisher</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.Publisher#getGroup <em>Group</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.Publisher#getPublish <em>Publish</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.Publisher#getUnpublish <em>Unpublish</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.Publisher#getId <em>Id</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage#getPublisher()
+ * @model 
+ * @generated
+ */
+public interface Publisher extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Group</b></em>' attribute list.
+	 * The list contents are of type {@link org.eclipse.emf.ecore.util.FeatureMap.Entry}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Group</em>' attribute list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Group</em>' attribute list.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage#getPublisher_Group()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.EFeatureMapEntry" many="true"
+	 * @generated
+	 */
+	FeatureMap getGroup();
+
+	/**
+	 * Returns the value of the '<em><b>Publish</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.jst.server.generic.servertype.definition.PublishType}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Publish</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Publish</em>' containment reference list.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage#getPublisher_Publish()
+	 * @model type="org.eclipse.jst.server.generic.servertype.definition.PublishType" containment="true" resolveProxies="false" required="true" transient="true" volatile="true" derived="true"
+	 * @generated
+	 */
+	EList getPublish();
+
+	/**
+	 * Returns the value of the '<em><b>Unpublish</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.jst.server.generic.servertype.definition.UnpublishType}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Unpublish</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Unpublish</em>' containment reference list.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage#getPublisher_Unpublish()
+	 * @model type="org.eclipse.jst.server.generic.servertype.definition.UnpublishType" containment="true" resolveProxies="false" required="true" transient="true" volatile="true" derived="true"
+	 * @generated
+	 */
+	EList getUnpublish();
+
+	/**
+	 * Returns the value of the '<em><b>Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Id</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Id</em>' attribute.
+	 * @see #setId(String)
+	 * @see org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage#getPublisher_Id()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String"
+	 * @generated
+	 */
+	String getId();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.jst.server.generic.servertype.definition.Publisher#getId <em>Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Id</em>' attribute.
+	 * @see #getId()
+	 * @generated
+	 */
+	void setId(String value);
+
+} // Publisher
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/ServerRuntime.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/ServerRuntime.java
new file mode 100644
index 0000000..33e5b2d
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/ServerRuntime.java
@@ -0,0 +1,413 @@
+/**
+ * <copyright>
+ *******************************************************************************
+ * Copyright (c) 2004 Eteration Bilisim A.S.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ * 
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL ETERATION A.S. OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Eteration Bilisim A.S.  For more
+ * information on eteration, please see
+ * <http://www.eteration.com/>.
+ ***************************************************************************
+ * </copyright>
+ *
+ * $Id: ServerRuntime.java,v 1.1 2004/11/20 21:18:10 ndai Exp $
+ */
+package org.eclipse.jst.server.generic.servertype.definition;
+
+import java.util.Map;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.emf.ecore.util.FeatureMap;
+import org.eclipse.jst.server.generic.internal.xml.Resolver;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Server Runtime</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * 
+ * 				Generic Server Type Definition. It must have a list of
+ * 				properties.
+ * 			
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.ServerRuntime#getGroup <em>Group</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.ServerRuntime#getProperty <em>Property</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.ServerRuntime#getGroup1 <em>Group1</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.ServerRuntime#getPort <em>Port</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.ServerRuntime#getGroup2 <em>Group2</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.ServerRuntime#getModule <em>Module</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.ServerRuntime#getProject <em>Project</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.ServerRuntime#getStart <em>Start</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.ServerRuntime#getStop <em>Stop</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.ServerRuntime#getGroup3 <em>Group3</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.ServerRuntime#getPublisher <em>Publisher</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.ServerRuntime#getGroup4 <em>Group4</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.ServerRuntime#getClasspath <em>Classpath</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.ServerRuntime#getName <em>Name</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.ServerRuntime#getVersion <em>Version</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage#getServerRuntime()
+ * @model 
+ * @generated
+ */
+public interface ServerRuntime extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Group</b></em>' attribute list.
+	 * The list contents are of type {@link org.eclipse.emf.ecore.util.FeatureMap.Entry}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Group</em>' attribute list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Group</em>' attribute list.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage#getServerRuntime_Group()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.EFeatureMapEntry" many="true"
+	 * @generated
+	 */
+	FeatureMap getGroup();
+
+	/**
+	 * Returns the value of the '<em><b>Property</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.jst.server.generic.servertype.definition.Property}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Property</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Property</em>' containment reference list.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage#getServerRuntime_Property()
+	 * @model type="org.eclipse.jst.server.generic.servertype.definition.Property" containment="true" resolveProxies="false" transient="true" volatile="true" derived="true"
+	 * @generated
+	 */
+	EList getProperty();
+
+	/**
+	 * Returns the value of the '<em><b>Group1</b></em>' attribute list.
+	 * The list contents are of type {@link org.eclipse.emf.ecore.util.FeatureMap.Entry}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Group1</em>' attribute list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Group1</em>' attribute list.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage#getServerRuntime_Group1()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.EFeatureMapEntry" many="true"
+	 * @generated
+	 */
+	FeatureMap getGroup1();
+
+	/**
+	 * Returns the value of the '<em><b>Port</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.jst.server.generic.servertype.definition.Port}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Port</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Port</em>' containment reference list.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage#getServerRuntime_Port()
+	 * @model type="org.eclipse.jst.server.generic.servertype.definition.Port" containment="true" resolveProxies="false" transient="true" volatile="true" derived="true"
+	 * @generated
+	 */
+	EList getPort();
+
+	/**
+	 * Returns the value of the '<em><b>Group2</b></em>' attribute list.
+	 * The list contents are of type {@link org.eclipse.emf.ecore.util.FeatureMap.Entry}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Group2</em>' attribute list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Group2</em>' attribute list.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage#getServerRuntime_Group2()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.EFeatureMapEntry" many="true"
+	 * @generated
+	 */
+	FeatureMap getGroup2();
+
+	/**
+	 * Returns the value of the '<em><b>Module</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.jst.server.generic.servertype.definition.Module}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Module</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Module</em>' containment reference list.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage#getServerRuntime_Module()
+	 * @model type="org.eclipse.jst.server.generic.servertype.definition.Module" containment="true" resolveProxies="false" required="true" transient="true" volatile="true" derived="true"
+	 * @generated
+	 */
+	EList getModule();
+
+	/**
+	 * Returns the value of the '<em><b>Project</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Project</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Project</em>' containment reference.
+	 * @see #setProject(Project)
+	 * @see org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage#getServerRuntime_Project()
+	 * @model containment="true" resolveProxies="false" required="true"
+	 * @generated
+	 */
+	Project getProject();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.jst.server.generic.servertype.definition.ServerRuntime#getProject <em>Project</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Project</em>' containment reference.
+	 * @see #getProject()
+	 * @generated
+	 */
+	void setProject(Project value);
+
+	/**
+	 * Returns the value of the '<em><b>Start</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Start</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Start</em>' containment reference.
+	 * @see #setStart(LaunchConfiguration)
+	 * @see org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage#getServerRuntime_Start()
+	 * @model containment="true" resolveProxies="false" required="true"
+	 * @generated
+	 */
+	LaunchConfiguration getStart();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.jst.server.generic.servertype.definition.ServerRuntime#getStart <em>Start</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Start</em>' containment reference.
+	 * @see #getStart()
+	 * @generated
+	 */
+	void setStart(LaunchConfiguration value);
+
+	/**
+	 * Returns the value of the '<em><b>Stop</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Stop</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Stop</em>' containment reference.
+	 * @see #setStop(LaunchConfiguration)
+	 * @see org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage#getServerRuntime_Stop()
+	 * @model containment="true" resolveProxies="false" required="true"
+	 * @generated
+	 */
+	LaunchConfiguration getStop();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.jst.server.generic.servertype.definition.ServerRuntime#getStop <em>Stop</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Stop</em>' containment reference.
+	 * @see #getStop()
+	 * @generated
+	 */
+	void setStop(LaunchConfiguration value);
+
+	/**
+	 * Returns the value of the '<em><b>Group3</b></em>' attribute list.
+	 * The list contents are of type {@link org.eclipse.emf.ecore.util.FeatureMap.Entry}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Group3</em>' attribute list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Group3</em>' attribute list.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage#getServerRuntime_Group3()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.EFeatureMapEntry" many="true"
+	 * @generated
+	 */
+	FeatureMap getGroup3();
+
+	/**
+	 * Returns the value of the '<em><b>Publisher</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.jst.server.generic.servertype.definition.Publisher}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Publisher</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Publisher</em>' containment reference list.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage#getServerRuntime_Publisher()
+	 * @model type="org.eclipse.jst.server.generic.servertype.definition.Publisher" containment="true" resolveProxies="false" transient="true" volatile="true" derived="true"
+	 * @generated
+	 */
+	EList getPublisher();
+
+	/**
+	 * Returns the value of the '<em><b>Group4</b></em>' attribute list.
+	 * The list contents are of type {@link org.eclipse.emf.ecore.util.FeatureMap.Entry}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Group4</em>' attribute list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Group4</em>' attribute list.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage#getServerRuntime_Group4()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.EFeatureMapEntry" many="true"
+	 * @generated
+	 */
+	FeatureMap getGroup4();
+
+	/**
+	 * Returns the value of the '<em><b>Classpath</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.jst.server.generic.servertype.definition.Classpath}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Classpath</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Classpath</em>' containment reference list.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage#getServerRuntime_Classpath()
+	 * @model type="org.eclipse.jst.server.generic.servertype.definition.Classpath" containment="true" resolveProxies="false" required="true" transient="true" volatile="true" derived="true"
+	 * @generated
+	 */
+	EList getClasspath();
+
+	/**
+	 * Returns the value of the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Name</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Name</em>' attribute.
+	 * @see #setName(String)
+	 * @see org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage#getServerRuntime_Name()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String" required="true"
+	 * @generated
+	 */
+	String getName();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.jst.server.generic.servertype.definition.ServerRuntime#getName <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Name</em>' attribute.
+	 * @see #getName()
+	 * @generated
+	 */
+	void setName(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Version</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Version</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Version</em>' attribute.
+	 * @see #setVersion(String)
+	 * @see org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage#getServerRuntime_Version()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String"
+	 * @generated
+	 */
+	String getVersion();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.jst.server.generic.servertype.definition.ServerRuntime#getVersion <em>Version</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Version</em>' attribute.
+	 * @see #getVersion()
+	 * @generated
+	 */
+	void setVersion(String value);
+
+	/**
+	 * @param id the id of the '<em>Publisher</em>' attribute.
+	 * @return
+	 * @generated NOT
+	 */
+	Publisher getPublisher(String id);
+
+	/**
+	 * @param type the type of the '<em>Module</em>' attribute.
+	 * @return
+	 * @generated NOT
+	 */
+	Module getModule(String type);
+
+	/**
+	 * @param cpRef the reference id of the '<em>Classpath</em>' attribute.
+	 * @return
+	 * @generated NOT
+	 */
+	Classpath getClasspath(String cpRef);
+
+	/**
+	 * @generated NOT
+	 */
+	String getFilename();
+
+	/**
+	 * @generated NOT
+	 */
+	void setFilename(String fn);
+
+	/**
+	 * @generated NOT
+	 */
+	void setPropertyValues(Map properties);
+
+	/**
+	 * @generated NOT
+	 */
+	Resolver getResolver();
+
+} // ServerRuntime
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/ServerTypeFactory.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/ServerTypeFactory.java
new file mode 100644
index 0000000..c6fd3b1
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/ServerTypeFactory.java
@@ -0,0 +1,162 @@
+/**
+ * <copyright>
+ *******************************************************************************
+ * Copyright (c) 2004 Eteration Bilisim A.S.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ * 
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL ETERATION A.S. OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Eteration Bilisim A.S.  For more
+ * information on eteration, please see
+ * <http://www.eteration.com/>.
+ ***************************************************************************
+ * </copyright>
+ *
+ * $Id: ServerTypeFactory.java,v 1.1 2004/11/20 21:18:10 ndai Exp $
+ */
+package org.eclipse.jst.server.generic.servertype.definition;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage
+ * @generated
+ */
+public interface ServerTypeFactory extends EFactory {
+	/**
+	 * The singleton instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	ServerTypeFactory eINSTANCE = new org.eclipse.jst.server.generic.servertype.definition.impl.ServerTypeFactoryImpl();
+
+	/**
+	 * Returns a new object of class '<em>Archive Type</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Archive Type</em>'.
+	 * @generated
+	 */
+	ArchiveType createArchiveType();
+
+	/**
+	 * Returns a new object of class '<em>Classpath</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Classpath</em>'.
+	 * @generated
+	 */
+	Classpath createClasspath();
+
+	/**
+	 * Returns a new object of class '<em>Launch Configuration</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Launch Configuration</em>'.
+	 * @generated
+	 */
+	LaunchConfiguration createLaunchConfiguration();
+
+	/**
+	 * Returns a new object of class '<em>Module</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Module</em>'.
+	 * @generated
+	 */
+	Module createModule();
+
+	/**
+	 * Returns a new object of class '<em>Port</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Port</em>'.
+	 * @generated
+	 */
+	Port createPort();
+
+	/**
+	 * Returns a new object of class '<em>Project</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Project</em>'.
+	 * @generated
+	 */
+	Project createProject();
+
+	/**
+	 * Returns a new object of class '<em>Property</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Property</em>'.
+	 * @generated
+	 */
+	Property createProperty();
+
+	/**
+	 * Returns a new object of class '<em>Publisher</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Publisher</em>'.
+	 * @generated
+	 */
+	Publisher createPublisher();
+
+	/**
+	 * Returns a new object of class '<em>Publish Type</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Publish Type</em>'.
+	 * @generated
+	 */
+	PublishType createPublishType();
+
+	/**
+	 * Returns a new object of class '<em>Server Runtime</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Server Runtime</em>'.
+	 * @generated
+	 */
+	ServerRuntime createServerRuntime();
+
+	/**
+	 * Returns a new object of class '<em>Unpublish Type</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Unpublish Type</em>'.
+	 * @generated
+	 */
+	UnpublishType createUnpublishType();
+
+	/**
+	 * Returns the package supported by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the package supported by this factory.
+	 * @generated
+	 */
+	ServerTypePackage getServerTypePackage();
+
+} //ServerTypeFactory
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/ServerTypePackage.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/ServerTypePackage.java
new file mode 100644
index 0000000..f2f1e14
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/ServerTypePackage.java
@@ -0,0 +1,1316 @@
+/**
+ * <copyright>
+ *******************************************************************************
+ * Copyright (c) 2004 Eteration Bilisim A.S.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ * 
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL ETERATION A.S. OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Eteration Bilisim A.S.  For more
+ * information on eteration, please see
+ * <http://www.eteration.com/>.
+ ***************************************************************************
+ * </copyright>
+ *
+ * $Id: ServerTypePackage.java,v 1.1 2004/11/20 21:18:10 ndai Exp $
+ */
+package org.eclipse.jst.server.generic.servertype.definition;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ *   <li>each class,</li>
+ *   <li>each feature of each class,</li>
+ *   <li>each enum,</li>
+ *   <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jst.server.generic.servertype.definition.ServerTypeFactory
+ * @generated
+ */
+public interface ServerTypePackage extends EPackage {
+	/**
+	 * The package name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNAME = "definition";
+
+	/**
+	 * The package namespace URI.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_URI = "http://eclipse.org/jst/server/generic/ServerTypeDefinition";
+
+	/**
+	 * The package namespace name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_PREFIX = "definition";
+
+	/**
+	 * The singleton instance of the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	ServerTypePackage eINSTANCE = org.eclipse.jst.server.generic.servertype.definition.impl.ServerTypePackageImpl.init();
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.jst.server.generic.servertype.definition.impl.ArchiveTypeImpl <em>Archive Type</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.jst.server.generic.servertype.definition.impl.ArchiveTypeImpl
+	 * @see org.eclipse.jst.server.generic.servertype.definition.impl.ServerTypePackageImpl#getArchiveType()
+	 * @generated
+	 */
+	int ARCHIVE_TYPE = 0;
+
+	/**
+	 * The feature id for the '<em><b>Path</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ARCHIVE_TYPE__PATH = 0;
+
+	/**
+	 * The number of structural features of the the '<em>Archive Type</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ARCHIVE_TYPE_FEATURE_COUNT = 1;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.jst.server.generic.servertype.definition.impl.ClasspathImpl <em>Classpath</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.jst.server.generic.servertype.definition.impl.ClasspathImpl
+	 * @see org.eclipse.jst.server.generic.servertype.definition.impl.ServerTypePackageImpl#getClasspath()
+	 * @generated
+	 */
+	int CLASSPATH = 1;
+
+	/**
+	 * The feature id for the '<em><b>Group</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CLASSPATH__GROUP = 0;
+
+	/**
+	 * The feature id for the '<em><b>Archive</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CLASSPATH__ARCHIVE = 1;
+
+	/**
+	 * The feature id for the '<em><b>Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CLASSPATH__ID = 2;
+
+	/**
+	 * The feature id for the '<em><b>Is Library</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CLASSPATH__IS_LIBRARY = 3;
+
+	/**
+	 * The number of structural features of the the '<em>Classpath</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CLASSPATH_FEATURE_COUNT = 4;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.jst.server.generic.servertype.definition.impl.LaunchConfigurationImpl <em>Launch Configuration</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.jst.server.generic.servertype.definition.impl.LaunchConfigurationImpl
+	 * @see org.eclipse.jst.server.generic.servertype.definition.impl.ServerTypePackageImpl#getLaunchConfiguration()
+	 * @generated
+	 */
+	int LAUNCH_CONFIGURATION = 2;
+
+	/**
+	 * The feature id for the '<em><b>Class</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LAUNCH_CONFIGURATION__CLASS = 0;
+
+	/**
+	 * The feature id for the '<em><b>Working Directory</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LAUNCH_CONFIGURATION__WORKING_DIRECTORY = 1;
+
+	/**
+	 * The feature id for the '<em><b>Program Arguments</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LAUNCH_CONFIGURATION__PROGRAM_ARGUMENTS = 2;
+
+	/**
+	 * The feature id for the '<em><b>Vm Parameters</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LAUNCH_CONFIGURATION__VM_PARAMETERS = 3;
+
+	/**
+	 * The feature id for the '<em><b>Classpath Reference</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LAUNCH_CONFIGURATION__CLASSPATH_REFERENCE = 4;
+
+	/**
+	 * The number of structural features of the the '<em>Launch Configuration</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LAUNCH_CONFIGURATION_FEATURE_COUNT = 5;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.jst.server.generic.servertype.definition.impl.ModuleImpl <em>Module</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.jst.server.generic.servertype.definition.impl.ModuleImpl
+	 * @see org.eclipse.jst.server.generic.servertype.definition.impl.ServerTypePackageImpl#getModule()
+	 * @generated
+	 */
+	int MODULE = 3;
+
+	/**
+	 * The feature id for the '<em><b>Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MODULE__TYPE = 0;
+
+	/**
+	 * The feature id for the '<em><b>Publish Dir</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MODULE__PUBLISH_DIR = 1;
+
+	/**
+	 * The feature id for the '<em><b>Publisher Reference</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MODULE__PUBLISHER_REFERENCE = 2;
+
+	/**
+	 * The number of structural features of the the '<em>Module</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MODULE_FEATURE_COUNT = 3;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.jst.server.generic.servertype.definition.impl.PortImpl <em>Port</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.jst.server.generic.servertype.definition.impl.PortImpl
+	 * @see org.eclipse.jst.server.generic.servertype.definition.impl.ServerTypePackageImpl#getPort()
+	 * @generated
+	 */
+	int PORT = 4;
+
+	/**
+	 * The feature id for the '<em><b>No</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PORT__NO = 0;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PORT__NAME = 1;
+
+	/**
+	 * The feature id for the '<em><b>Protocol</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PORT__PROTOCOL = 2;
+
+	/**
+	 * The number of structural features of the the '<em>Port</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PORT_FEATURE_COUNT = 3;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.jst.server.generic.servertype.definition.impl.ProjectImpl <em>Project</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.jst.server.generic.servertype.definition.impl.ProjectImpl
+	 * @see org.eclipse.jst.server.generic.servertype.definition.impl.ServerTypePackageImpl#getProject()
+	 * @generated
+	 */
+	int PROJECT = 5;
+
+	/**
+	 * The feature id for the '<em><b>Classpath Reference</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROJECT__CLASSPATH_REFERENCE = 0;
+
+	/**
+	 * The number of structural features of the the '<em>Project</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROJECT_FEATURE_COUNT = 1;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.jst.server.generic.servertype.definition.impl.PropertyImpl <em>Property</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.jst.server.generic.servertype.definition.impl.PropertyImpl
+	 * @see org.eclipse.jst.server.generic.servertype.definition.impl.ServerTypePackageImpl#getProperty()
+	 * @generated
+	 */
+	int PROPERTY = 6;
+
+	/**
+	 * The feature id for the '<em><b>Context</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY__CONTEXT = 0;
+
+	/**
+	 * The feature id for the '<em><b>Default</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY__DEFAULT = 1;
+
+	/**
+	 * The feature id for the '<em><b>Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY__ID = 2;
+
+	/**
+	 * The feature id for the '<em><b>Label</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY__LABEL = 3;
+
+	/**
+	 * The feature id for the '<em><b>Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY__TYPE = 4;
+
+	/**
+	 * The number of structural features of the the '<em>Property</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FEATURE_COUNT = 5;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.jst.server.generic.servertype.definition.impl.PublisherImpl <em>Publisher</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.jst.server.generic.servertype.definition.impl.PublisherImpl
+	 * @see org.eclipse.jst.server.generic.servertype.definition.impl.ServerTypePackageImpl#getPublisher()
+	 * @generated
+	 */
+	int PUBLISHER = 7;
+
+	/**
+	 * The feature id for the '<em><b>Group</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PUBLISHER__GROUP = 0;
+
+	/**
+	 * The feature id for the '<em><b>Publish</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PUBLISHER__PUBLISH = 1;
+
+	/**
+	 * The feature id for the '<em><b>Unpublish</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PUBLISHER__UNPUBLISH = 2;
+
+	/**
+	 * The feature id for the '<em><b>Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PUBLISHER__ID = 3;
+
+	/**
+	 * The number of structural features of the the '<em>Publisher</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PUBLISHER_FEATURE_COUNT = 4;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.jst.server.generic.servertype.definition.impl.PublishTypeImpl <em>Publish Type</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.jst.server.generic.servertype.definition.impl.PublishTypeImpl
+	 * @see org.eclipse.jst.server.generic.servertype.definition.impl.ServerTypePackageImpl#getPublishType()
+	 * @generated
+	 */
+	int PUBLISH_TYPE = 8;
+
+	/**
+	 * The feature id for the '<em><b>Task</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PUBLISH_TYPE__TASK = 0;
+
+	/**
+	 * The feature id for the '<em><b>Classpath Reference</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PUBLISH_TYPE__CLASSPATH_REFERENCE = 1;
+
+	/**
+	 * The number of structural features of the the '<em>Publish Type</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PUBLISH_TYPE_FEATURE_COUNT = 2;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.jst.server.generic.servertype.definition.impl.ServerRuntimeImpl <em>Server Runtime</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.jst.server.generic.servertype.definition.impl.ServerRuntimeImpl
+	 * @see org.eclipse.jst.server.generic.servertype.definition.impl.ServerTypePackageImpl#getServerRuntime()
+	 * @generated
+	 */
+	int SERVER_RUNTIME = 9;
+
+	/**
+	 * The feature id for the '<em><b>Group</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SERVER_RUNTIME__GROUP = 0;
+
+	/**
+	 * The feature id for the '<em><b>Property</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SERVER_RUNTIME__PROPERTY = 1;
+
+	/**
+	 * The feature id for the '<em><b>Group1</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SERVER_RUNTIME__GROUP1 = 2;
+
+	/**
+	 * The feature id for the '<em><b>Port</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SERVER_RUNTIME__PORT = 3;
+
+	/**
+	 * The feature id for the '<em><b>Group2</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SERVER_RUNTIME__GROUP2 = 4;
+
+	/**
+	 * The feature id for the '<em><b>Module</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SERVER_RUNTIME__MODULE = 5;
+
+	/**
+	 * The feature id for the '<em><b>Project</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SERVER_RUNTIME__PROJECT = 6;
+
+	/**
+	 * The feature id for the '<em><b>Start</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SERVER_RUNTIME__START = 7;
+
+	/**
+	 * The feature id for the '<em><b>Stop</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SERVER_RUNTIME__STOP = 8;
+
+	/**
+	 * The feature id for the '<em><b>Group3</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SERVER_RUNTIME__GROUP3 = 9;
+
+	/**
+	 * The feature id for the '<em><b>Publisher</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SERVER_RUNTIME__PUBLISHER = 10;
+
+	/**
+	 * The feature id for the '<em><b>Group4</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SERVER_RUNTIME__GROUP4 = 11;
+
+	/**
+	 * The feature id for the '<em><b>Classpath</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SERVER_RUNTIME__CLASSPATH = 12;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SERVER_RUNTIME__NAME = 13;
+
+	/**
+	 * The feature id for the '<em><b>Version</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SERVER_RUNTIME__VERSION = 14;
+
+	/**
+	 * The number of structural features of the the '<em>Server Runtime</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SERVER_RUNTIME_FEATURE_COUNT = 15;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.jst.server.generic.servertype.definition.impl.UnpublishTypeImpl <em>Unpublish Type</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.jst.server.generic.servertype.definition.impl.UnpublishTypeImpl
+	 * @see org.eclipse.jst.server.generic.servertype.definition.impl.ServerTypePackageImpl#getUnpublishType()
+	 * @generated
+	 */
+	int UNPUBLISH_TYPE = 10;
+
+	/**
+	 * The feature id for the '<em><b>Task</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int UNPUBLISH_TYPE__TASK = 0;
+
+	/**
+	 * The feature id for the '<em><b>Classpath Reference</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int UNPUBLISH_TYPE__CLASSPATH_REFERENCE = 1;
+
+	/**
+	 * The number of structural features of the the '<em>Unpublish Type</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int UNPUBLISH_TYPE_FEATURE_COUNT = 2;
+
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.jst.server.generic.servertype.definition.ArchiveType <em>Archive Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Archive Type</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.ArchiveType
+	 * @generated
+	 */
+	EClass getArchiveType();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.jst.server.generic.servertype.definition.ArchiveType#getPath <em>Path</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Path</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.ArchiveType#getPath()
+	 * @see #getArchiveType()
+	 * @generated
+	 */
+	EAttribute getArchiveType_Path();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.jst.server.generic.servertype.definition.Classpath <em>Classpath</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Classpath</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.Classpath
+	 * @generated
+	 */
+	EClass getClasspath();
+
+	/**
+	 * Returns the meta object for the attribute list '{@link org.eclipse.jst.server.generic.servertype.definition.Classpath#getGroup <em>Group</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute list '<em>Group</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.Classpath#getGroup()
+	 * @see #getClasspath()
+	 * @generated
+	 */
+	EAttribute getClasspath_Group();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.jst.server.generic.servertype.definition.Classpath#getArchive <em>Archive</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Archive</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.Classpath#getArchive()
+	 * @see #getClasspath()
+	 * @generated
+	 */
+	EReference getClasspath_Archive();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.jst.server.generic.servertype.definition.Classpath#getId <em>Id</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Id</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.Classpath#getId()
+	 * @see #getClasspath()
+	 * @generated
+	 */
+	EAttribute getClasspath_Id();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.jst.server.generic.servertype.definition.Classpath#isIsLibrary <em>Is Library</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Is Library</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.Classpath#isIsLibrary()
+	 * @see #getClasspath()
+	 * @generated
+	 */
+	EAttribute getClasspath_IsLibrary();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.jst.server.generic.servertype.definition.LaunchConfiguration <em>Launch Configuration</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Launch Configuration</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.LaunchConfiguration
+	 * @generated
+	 */
+	EClass getLaunchConfiguration();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.jst.server.generic.servertype.definition.LaunchConfiguration#getClass_ <em>Class</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Class</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.LaunchConfiguration#getClass_()
+	 * @see #getLaunchConfiguration()
+	 * @generated
+	 */
+	EAttribute getLaunchConfiguration_Class();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.jst.server.generic.servertype.definition.LaunchConfiguration#getWorkingDirectory <em>Working Directory</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Working Directory</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.LaunchConfiguration#getWorkingDirectory()
+	 * @see #getLaunchConfiguration()
+	 * @generated
+	 */
+	EAttribute getLaunchConfiguration_WorkingDirectory();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.jst.server.generic.servertype.definition.LaunchConfiguration#getProgramArguments <em>Program Arguments</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Program Arguments</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.LaunchConfiguration#getProgramArguments()
+	 * @see #getLaunchConfiguration()
+	 * @generated
+	 */
+	EAttribute getLaunchConfiguration_ProgramArguments();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.jst.server.generic.servertype.definition.LaunchConfiguration#getVmParameters <em>Vm Parameters</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Vm Parameters</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.LaunchConfiguration#getVmParameters()
+	 * @see #getLaunchConfiguration()
+	 * @generated
+	 */
+	EAttribute getLaunchConfiguration_VmParameters();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.jst.server.generic.servertype.definition.LaunchConfiguration#getClasspathReference <em>Classpath Reference</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Classpath Reference</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.LaunchConfiguration#getClasspathReference()
+	 * @see #getLaunchConfiguration()
+	 * @generated
+	 */
+	EAttribute getLaunchConfiguration_ClasspathReference();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.jst.server.generic.servertype.definition.Module <em>Module</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Module</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.Module
+	 * @generated
+	 */
+	EClass getModule();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.jst.server.generic.servertype.definition.Module#getType <em>Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Type</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.Module#getType()
+	 * @see #getModule()
+	 * @generated
+	 */
+	EAttribute getModule_Type();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.jst.server.generic.servertype.definition.Module#getPublishDir <em>Publish Dir</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Publish Dir</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.Module#getPublishDir()
+	 * @see #getModule()
+	 * @generated
+	 */
+	EAttribute getModule_PublishDir();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.jst.server.generic.servertype.definition.Module#getPublisherReference <em>Publisher Reference</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Publisher Reference</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.Module#getPublisherReference()
+	 * @see #getModule()
+	 * @generated
+	 */
+	EAttribute getModule_PublisherReference();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.jst.server.generic.servertype.definition.Port <em>Port</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Port</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.Port
+	 * @generated
+	 */
+	EClass getPort();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.jst.server.generic.servertype.definition.Port#getNo <em>No</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>No</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.Port#getNo()
+	 * @see #getPort()
+	 * @generated
+	 */
+	EAttribute getPort_No();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.jst.server.generic.servertype.definition.Port#getName <em>Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Name</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.Port#getName()
+	 * @see #getPort()
+	 * @generated
+	 */
+	EAttribute getPort_Name();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.jst.server.generic.servertype.definition.Port#getProtocol <em>Protocol</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Protocol</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.Port#getProtocol()
+	 * @see #getPort()
+	 * @generated
+	 */
+	EAttribute getPort_Protocol();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.jst.server.generic.servertype.definition.Project <em>Project</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Project</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.Project
+	 * @generated
+	 */
+	EClass getProject();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.jst.server.generic.servertype.definition.Project#getClasspathReference <em>Classpath Reference</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Classpath Reference</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.Project#getClasspathReference()
+	 * @see #getProject()
+	 * @generated
+	 */
+	EAttribute getProject_ClasspathReference();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.jst.server.generic.servertype.definition.Property <em>Property</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Property</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.Property
+	 * @generated
+	 */
+	EClass getProperty();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.jst.server.generic.servertype.definition.Property#getContext <em>Context</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Context</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.Property#getContext()
+	 * @see #getProperty()
+	 * @generated
+	 */
+	EAttribute getProperty_Context();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.jst.server.generic.servertype.definition.Property#getDefault <em>Default</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Default</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.Property#getDefault()
+	 * @see #getProperty()
+	 * @generated
+	 */
+	EAttribute getProperty_Default();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.jst.server.generic.servertype.definition.Property#getId <em>Id</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Id</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.Property#getId()
+	 * @see #getProperty()
+	 * @generated
+	 */
+	EAttribute getProperty_Id();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.jst.server.generic.servertype.definition.Property#getLabel <em>Label</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Label</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.Property#getLabel()
+	 * @see #getProperty()
+	 * @generated
+	 */
+	EAttribute getProperty_Label();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.jst.server.generic.servertype.definition.Property#getType <em>Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Type</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.Property#getType()
+	 * @see #getProperty()
+	 * @generated
+	 */
+	EAttribute getProperty_Type();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.jst.server.generic.servertype.definition.Publisher <em>Publisher</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Publisher</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.Publisher
+	 * @generated
+	 */
+	EClass getPublisher();
+
+	/**
+	 * Returns the meta object for the attribute list '{@link org.eclipse.jst.server.generic.servertype.definition.Publisher#getGroup <em>Group</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute list '<em>Group</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.Publisher#getGroup()
+	 * @see #getPublisher()
+	 * @generated
+	 */
+	EAttribute getPublisher_Group();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.jst.server.generic.servertype.definition.Publisher#getPublish <em>Publish</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Publish</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.Publisher#getPublish()
+	 * @see #getPublisher()
+	 * @generated
+	 */
+	EReference getPublisher_Publish();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.jst.server.generic.servertype.definition.Publisher#getUnpublish <em>Unpublish</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Unpublish</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.Publisher#getUnpublish()
+	 * @see #getPublisher()
+	 * @generated
+	 */
+	EReference getPublisher_Unpublish();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.jst.server.generic.servertype.definition.Publisher#getId <em>Id</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Id</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.Publisher#getId()
+	 * @see #getPublisher()
+	 * @generated
+	 */
+	EAttribute getPublisher_Id();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.jst.server.generic.servertype.definition.PublishType <em>Publish Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Publish Type</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.PublishType
+	 * @generated
+	 */
+	EClass getPublishType();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.jst.server.generic.servertype.definition.PublishType#getTask <em>Task</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Task</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.PublishType#getTask()
+	 * @see #getPublishType()
+	 * @generated
+	 */
+	EAttribute getPublishType_Task();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.jst.server.generic.servertype.definition.PublishType#getClasspathReference <em>Classpath Reference</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Classpath Reference</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.PublishType#getClasspathReference()
+	 * @see #getPublishType()
+	 * @generated
+	 */
+	EAttribute getPublishType_ClasspathReference();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.jst.server.generic.servertype.definition.ServerRuntime <em>Server Runtime</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Server Runtime</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.ServerRuntime
+	 * @generated
+	 */
+	EClass getServerRuntime();
+
+	/**
+	 * Returns the meta object for the attribute list '{@link org.eclipse.jst.server.generic.servertype.definition.ServerRuntime#getGroup <em>Group</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute list '<em>Group</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.ServerRuntime#getGroup()
+	 * @see #getServerRuntime()
+	 * @generated
+	 */
+	EAttribute getServerRuntime_Group();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.jst.server.generic.servertype.definition.ServerRuntime#getProperty <em>Property</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Property</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.ServerRuntime#getProperty()
+	 * @see #getServerRuntime()
+	 * @generated
+	 */
+	EReference getServerRuntime_Property();
+
+	/**
+	 * Returns the meta object for the attribute list '{@link org.eclipse.jst.server.generic.servertype.definition.ServerRuntime#getGroup1 <em>Group1</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute list '<em>Group1</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.ServerRuntime#getGroup1()
+	 * @see #getServerRuntime()
+	 * @generated
+	 */
+	EAttribute getServerRuntime_Group1();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.jst.server.generic.servertype.definition.ServerRuntime#getPort <em>Port</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Port</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.ServerRuntime#getPort()
+	 * @see #getServerRuntime()
+	 * @generated
+	 */
+	EReference getServerRuntime_Port();
+
+	/**
+	 * Returns the meta object for the attribute list '{@link org.eclipse.jst.server.generic.servertype.definition.ServerRuntime#getGroup2 <em>Group2</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute list '<em>Group2</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.ServerRuntime#getGroup2()
+	 * @see #getServerRuntime()
+	 * @generated
+	 */
+	EAttribute getServerRuntime_Group2();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.jst.server.generic.servertype.definition.ServerRuntime#getModule <em>Module</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Module</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.ServerRuntime#getModule()
+	 * @see #getServerRuntime()
+	 * @generated
+	 */
+	EReference getServerRuntime_Module();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.jst.server.generic.servertype.definition.ServerRuntime#getProject <em>Project</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Project</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.ServerRuntime#getProject()
+	 * @see #getServerRuntime()
+	 * @generated
+	 */
+	EReference getServerRuntime_Project();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.jst.server.generic.servertype.definition.ServerRuntime#getStart <em>Start</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Start</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.ServerRuntime#getStart()
+	 * @see #getServerRuntime()
+	 * @generated
+	 */
+	EReference getServerRuntime_Start();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.jst.server.generic.servertype.definition.ServerRuntime#getStop <em>Stop</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Stop</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.ServerRuntime#getStop()
+	 * @see #getServerRuntime()
+	 * @generated
+	 */
+	EReference getServerRuntime_Stop();
+
+	/**
+	 * Returns the meta object for the attribute list '{@link org.eclipse.jst.server.generic.servertype.definition.ServerRuntime#getGroup3 <em>Group3</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute list '<em>Group3</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.ServerRuntime#getGroup3()
+	 * @see #getServerRuntime()
+	 * @generated
+	 */
+	EAttribute getServerRuntime_Group3();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.jst.server.generic.servertype.definition.ServerRuntime#getPublisher <em>Publisher</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Publisher</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.ServerRuntime#getPublisher()
+	 * @see #getServerRuntime()
+	 * @generated
+	 */
+	EReference getServerRuntime_Publisher();
+
+	/**
+	 * Returns the meta object for the attribute list '{@link org.eclipse.jst.server.generic.servertype.definition.ServerRuntime#getGroup4 <em>Group4</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute list '<em>Group4</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.ServerRuntime#getGroup4()
+	 * @see #getServerRuntime()
+	 * @generated
+	 */
+	EAttribute getServerRuntime_Group4();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.jst.server.generic.servertype.definition.ServerRuntime#getClasspath <em>Classpath</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Classpath</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.ServerRuntime#getClasspath()
+	 * @see #getServerRuntime()
+	 * @generated
+	 */
+	EReference getServerRuntime_Classpath();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.jst.server.generic.servertype.definition.ServerRuntime#getName <em>Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Name</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.ServerRuntime#getName()
+	 * @see #getServerRuntime()
+	 * @generated
+	 */
+	EAttribute getServerRuntime_Name();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.jst.server.generic.servertype.definition.ServerRuntime#getVersion <em>Version</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Version</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.ServerRuntime#getVersion()
+	 * @see #getServerRuntime()
+	 * @generated
+	 */
+	EAttribute getServerRuntime_Version();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.jst.server.generic.servertype.definition.UnpublishType <em>Unpublish Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Unpublish Type</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.UnpublishType
+	 * @generated
+	 */
+	EClass getUnpublishType();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.jst.server.generic.servertype.definition.UnpublishType#getTask <em>Task</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Task</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.UnpublishType#getTask()
+	 * @see #getUnpublishType()
+	 * @generated
+	 */
+	EAttribute getUnpublishType_Task();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.jst.server.generic.servertype.definition.UnpublishType#getClasspathReference <em>Classpath Reference</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Classpath Reference</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.UnpublishType#getClasspathReference()
+	 * @see #getUnpublishType()
+	 * @generated
+	 */
+	EAttribute getUnpublishType_ClasspathReference();
+
+	/**
+	 * Returns the factory that creates the instances of the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the factory that creates the instances of the model.
+	 * @generated
+	 */
+	ServerTypeFactory getServerTypeFactory();
+
+} //ServerTypePackage
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/UnpublishType.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/UnpublishType.java
new file mode 100644
index 0000000..cb39c33
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/UnpublishType.java
@@ -0,0 +1,107 @@
+/**
+ * <copyright>
+ *******************************************************************************
+ * Copyright (c) 2004 Eteration Bilisim A.S.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ * 
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL ETERATION A.S. OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Eteration Bilisim A.S.  For more
+ * information on eteration, please see
+ * <http://www.eteration.com/>.
+ ***************************************************************************
+ * </copyright>
+ *
+ * $Id: UnpublishType.java,v 1.1 2004/11/20 21:18:10 ndai Exp $
+ */
+package org.eclipse.jst.server.generic.servertype.definition;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Unpublish Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.UnpublishType#getTask <em>Task</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.UnpublishType#getClasspathReference <em>Classpath Reference</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage#getUnpublishType()
+ * @model 
+ * @generated
+ */
+public interface UnpublishType extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Task</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Task</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Task</em>' attribute.
+	 * @see #setTask(String)
+	 * @see org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage#getUnpublishType_Task()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String" required="true"
+	 * @generated
+	 */
+	String getTask();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.jst.server.generic.servertype.definition.UnpublishType#getTask <em>Task</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Task</em>' attribute.
+	 * @see #getTask()
+	 * @generated
+	 */
+	void setTask(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Classpath Reference</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Classpath Reference</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Classpath Reference</em>' attribute.
+	 * @see #setClasspathReference(String)
+	 * @see org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage#getUnpublishType_ClasspathReference()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String" required="true"
+	 * @generated
+	 */
+	String getClasspathReference();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.jst.server.generic.servertype.definition.UnpublishType#getClasspathReference <em>Classpath Reference</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Classpath Reference</em>' attribute.
+	 * @see #getClasspathReference()
+	 * @generated
+	 */
+	void setClasspathReference(String value);
+
+} // UnpublishType
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/impl/ArchiveTypeImpl.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/impl/ArchiveTypeImpl.java
new file mode 100644
index 0000000..93bc447
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/impl/ArchiveTypeImpl.java
@@ -0,0 +1,188 @@
+/**
+ * <copyright>
+ *******************************************************************************
+ * Copyright (c) 2004 Eteration Bilisim A.S.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ * 
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL ETERATION A.S. OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Eteration Bilisim A.S.  For more
+ * information on eteration, please see
+ * <http://www.eteration.com/>.
+ ***************************************************************************
+ * </copyright>
+ *
+ * $Id: ArchiveTypeImpl.java,v 1.1 2004/11/20 21:18:10 ndai Exp $
+ */
+package org.eclipse.jst.server.generic.servertype.definition.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.eclipse.jst.server.generic.servertype.definition.ArchiveType;
+import org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Archive Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.impl.ArchiveTypeImpl#getPath <em>Path</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ArchiveTypeImpl extends EObjectImpl implements ArchiveType {
+	/**
+	 * The default value of the '{@link #getPath() <em>Path</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPath()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String PATH_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getPath() <em>Path</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPath()
+	 * @generated
+	 * @ordered
+	 */
+	protected String path = PATH_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ArchiveTypeImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EClass eStaticClass() {
+		return ServerTypePackage.eINSTANCE.getArchiveType();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getPath() {
+		return path;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setPath(String newPath) {
+		String oldPath = path;
+		path = newPath;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ServerTypePackage.ARCHIVE_TYPE__PATH, oldPath, path));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Object eGet(EStructuralFeature eFeature, boolean resolve) {
+		switch (eDerivedStructuralFeatureID(eFeature)) {
+			case ServerTypePackage.ARCHIVE_TYPE__PATH:
+				return getPath();
+		}
+		return eDynamicGet(eFeature, resolve);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void eSet(EStructuralFeature eFeature, Object newValue) {
+		switch (eDerivedStructuralFeatureID(eFeature)) {
+			case ServerTypePackage.ARCHIVE_TYPE__PATH:
+				setPath((String)newValue);
+				return;
+		}
+		eDynamicSet(eFeature, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void eUnset(EStructuralFeature eFeature) {
+		switch (eDerivedStructuralFeatureID(eFeature)) {
+			case ServerTypePackage.ARCHIVE_TYPE__PATH:
+				setPath(PATH_EDEFAULT);
+				return;
+		}
+		eDynamicUnset(eFeature);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean eIsSet(EStructuralFeature eFeature) {
+		switch (eDerivedStructuralFeatureID(eFeature)) {
+			case ServerTypePackage.ARCHIVE_TYPE__PATH:
+				return PATH_EDEFAULT == null ? path != null : !PATH_EDEFAULT.equals(path);
+		}
+		return eDynamicIsSet(eFeature);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (path: ");
+		result.append(path);
+		result.append(')');
+		return result.toString();
+	}
+
+} //ArchiveTypeImpl
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/impl/ClasspathImpl.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/impl/ClasspathImpl.java
new file mode 100644
index 0000000..edf0de6
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/impl/ClasspathImpl.java
@@ -0,0 +1,362 @@
+/**
+ * <copyright>
+ *******************************************************************************
+ * Copyright (c) 2004 Eteration Bilisim A.S.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ * 
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL ETERATION A.S. OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Eteration Bilisim A.S.  For more
+ * information on eteration, please see
+ * <http://www.eteration.com/>.
+ ***************************************************************************
+ * </copyright>
+ *
+ * $Id: ClasspathImpl.java,v 1.1 2004/11/20 21:18:10 ndai Exp $
+ */
+package org.eclipse.jst.server.generic.servertype.definition.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.eclipse.emf.ecore.util.BasicFeatureMap;
+import org.eclipse.emf.ecore.util.FeatureMap;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.jst.server.generic.servertype.definition.Classpath;
+import org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Classpath</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.impl.ClasspathImpl#getGroup <em>Group</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.impl.ClasspathImpl#getArchive <em>Archive</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.impl.ClasspathImpl#getId <em>Id</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.impl.ClasspathImpl#isIsLibrary <em>Is Library</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ClasspathImpl extends EObjectImpl implements Classpath {
+	/**
+	 * The cached value of the '{@link #getGroup() <em>Group</em>}' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getGroup()
+	 * @generated
+	 * @ordered
+	 */
+	protected FeatureMap group = null;
+
+	/**
+	 * The default value of the '{@link #getId() <em>Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getId()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String ID_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getId() <em>Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getId()
+	 * @generated
+	 * @ordered
+	 */
+	protected String id = ID_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isIsLibrary() <em>Is Library</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isIsLibrary()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean IS_LIBRARY_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isIsLibrary() <em>Is Library</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isIsLibrary()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean isLibrary = IS_LIBRARY_EDEFAULT;
+
+	/**
+	 * This is true if the Is Library attribute has been set.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean isLibraryESet = false;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ClasspathImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EClass eStaticClass() {
+		return ServerTypePackage.eINSTANCE.getClasspath();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FeatureMap getGroup() {
+		if (group == null) {
+			group = new BasicFeatureMap(this, ServerTypePackage.CLASSPATH__GROUP);
+		}
+		return group;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList getArchive() {
+		return ((FeatureMap)getGroup()).list(ServerTypePackage.eINSTANCE.getClasspath_Archive());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getId() {
+		return id;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setId(String newId) {
+		String oldId = id;
+		id = newId;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ServerTypePackage.CLASSPATH__ID, oldId, id));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isIsLibrary() {
+		return isLibrary;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setIsLibrary(boolean newIsLibrary) {
+		boolean oldIsLibrary = isLibrary;
+		isLibrary = newIsLibrary;
+		boolean oldIsLibraryESet = isLibraryESet;
+		isLibraryESet = true;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ServerTypePackage.CLASSPATH__IS_LIBRARY, oldIsLibrary, isLibrary, !oldIsLibraryESet));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void unsetIsLibrary() {
+		boolean oldIsLibrary = isLibrary;
+		boolean oldIsLibraryESet = isLibraryESet;
+		isLibrary = IS_LIBRARY_EDEFAULT;
+		isLibraryESet = false;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.UNSET, ServerTypePackage.CLASSPATH__IS_LIBRARY, oldIsLibrary, IS_LIBRARY_EDEFAULT, oldIsLibraryESet));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isSetIsLibrary() {
+		return isLibraryESet;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, Class baseClass, NotificationChain msgs) {
+		if (featureID >= 0) {
+			switch (eDerivedStructuralFeatureID(featureID, baseClass)) {
+				case ServerTypePackage.CLASSPATH__GROUP:
+					return ((InternalEList)getGroup()).basicRemove(otherEnd, msgs);
+				case ServerTypePackage.CLASSPATH__ARCHIVE:
+					return ((InternalEList)getArchive()).basicRemove(otherEnd, msgs);
+				default:
+					return eDynamicInverseRemove(otherEnd, featureID, baseClass, msgs);
+			}
+		}
+		return eBasicSetContainer(null, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Object eGet(EStructuralFeature eFeature, boolean resolve) {
+		switch (eDerivedStructuralFeatureID(eFeature)) {
+			case ServerTypePackage.CLASSPATH__GROUP:
+				return getGroup();
+			case ServerTypePackage.CLASSPATH__ARCHIVE:
+				return getArchive();
+			case ServerTypePackage.CLASSPATH__ID:
+				return getId();
+			case ServerTypePackage.CLASSPATH__IS_LIBRARY:
+				return isIsLibrary() ? Boolean.TRUE : Boolean.FALSE;
+		}
+		return eDynamicGet(eFeature, resolve);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void eSet(EStructuralFeature eFeature, Object newValue) {
+		switch (eDerivedStructuralFeatureID(eFeature)) {
+			case ServerTypePackage.CLASSPATH__GROUP:
+				getGroup().clear();
+				getGroup().addAll((Collection)newValue);
+				return;
+			case ServerTypePackage.CLASSPATH__ARCHIVE:
+				getArchive().clear();
+				getArchive().addAll((Collection)newValue);
+				return;
+			case ServerTypePackage.CLASSPATH__ID:
+				setId((String)newValue);
+				return;
+			case ServerTypePackage.CLASSPATH__IS_LIBRARY:
+				setIsLibrary(((Boolean)newValue).booleanValue());
+				return;
+		}
+		eDynamicSet(eFeature, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void eUnset(EStructuralFeature eFeature) {
+		switch (eDerivedStructuralFeatureID(eFeature)) {
+			case ServerTypePackage.CLASSPATH__GROUP:
+				getGroup().clear();
+				return;
+			case ServerTypePackage.CLASSPATH__ARCHIVE:
+				getArchive().clear();
+				return;
+			case ServerTypePackage.CLASSPATH__ID:
+				setId(ID_EDEFAULT);
+				return;
+			case ServerTypePackage.CLASSPATH__IS_LIBRARY:
+				unsetIsLibrary();
+				return;
+		}
+		eDynamicUnset(eFeature);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean eIsSet(EStructuralFeature eFeature) {
+		switch (eDerivedStructuralFeatureID(eFeature)) {
+			case ServerTypePackage.CLASSPATH__GROUP:
+				return group != null && !group.isEmpty();
+			case ServerTypePackage.CLASSPATH__ARCHIVE:
+				return !getArchive().isEmpty();
+			case ServerTypePackage.CLASSPATH__ID:
+				return ID_EDEFAULT == null ? id != null : !ID_EDEFAULT.equals(id);
+			case ServerTypePackage.CLASSPATH__IS_LIBRARY:
+				return isSetIsLibrary();
+		}
+		return eDynamicIsSet(eFeature);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (group: ");
+		result.append(group);
+		result.append(", id: ");
+		result.append(id);
+		result.append(", isLibrary: ");
+		if (isLibraryESet) result.append(isLibrary); else result.append("<unset>");
+		result.append(')');
+		return result.toString();
+	}
+
+} //ClasspathImpl
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/impl/LaunchConfigurationImpl.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/impl/LaunchConfigurationImpl.java
new file mode 100644
index 0000000..067da61
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/impl/LaunchConfigurationImpl.java
@@ -0,0 +1,404 @@
+/**
+ * <copyright>
+ *******************************************************************************
+ * Copyright (c) 2004 Eteration Bilisim A.S.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ * 
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL ETERATION A.S. OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Eteration Bilisim A.S.  For more
+ * information on eteration, please see
+ * <http://www.eteration.com/>.
+ ***************************************************************************
+ * </copyright>
+ *
+ * $Id: LaunchConfigurationImpl.java,v 1.1 2004/11/20 21:18:10 ndai Exp $
+ */
+package org.eclipse.jst.server.generic.servertype.definition.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.eclipse.jst.server.generic.servertype.definition.LaunchConfiguration;
+import org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Launch Configuration</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.impl.LaunchConfigurationImpl#getClass_ <em>Class</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.impl.LaunchConfigurationImpl#getWorkingDirectory <em>Working Directory</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.impl.LaunchConfigurationImpl#getProgramArguments <em>Program Arguments</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.impl.LaunchConfigurationImpl#getVmParameters <em>Vm Parameters</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.impl.LaunchConfigurationImpl#getClasspathReference <em>Classpath Reference</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LaunchConfigurationImpl extends EObjectImpl implements LaunchConfiguration {
+	/**
+	 * The default value of the '{@link #getClass_() <em>Class</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getClass_()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String CLASS_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getClass_() <em>Class</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getClass_()
+	 * @generated
+	 * @ordered
+	 */
+	protected String class_ = CLASS_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getWorkingDirectory() <em>Working Directory</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getWorkingDirectory()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String WORKING_DIRECTORY_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getWorkingDirectory() <em>Working Directory</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getWorkingDirectory()
+	 * @generated
+	 * @ordered
+	 */
+	protected String workingDirectory = WORKING_DIRECTORY_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getProgramArguments() <em>Program Arguments</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getProgramArguments()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String PROGRAM_ARGUMENTS_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getProgramArguments() <em>Program Arguments</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getProgramArguments()
+	 * @generated
+	 * @ordered
+	 */
+	protected String programArguments = PROGRAM_ARGUMENTS_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getVmParameters() <em>Vm Parameters</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getVmParameters()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String VM_PARAMETERS_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getVmParameters() <em>Vm Parameters</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getVmParameters()
+	 * @generated
+	 * @ordered
+	 */
+	protected String vmParameters = VM_PARAMETERS_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getClasspathReference() <em>Classpath Reference</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getClasspathReference()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String CLASSPATH_REFERENCE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getClasspathReference() <em>Classpath Reference</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getClasspathReference()
+	 * @generated
+	 * @ordered
+	 */
+	protected String classpathReference = CLASSPATH_REFERENCE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LaunchConfigurationImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EClass eStaticClass() {
+		return ServerTypePackage.eINSTANCE.getLaunchConfiguration();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getClass_() {
+		return class_;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setClass(String newClass) {
+		String oldClass = class_;
+		class_ = newClass;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ServerTypePackage.LAUNCH_CONFIGURATION__CLASS, oldClass, class_));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getWorkingDirectory() {
+		return workingDirectory;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setWorkingDirectory(String newWorkingDirectory) {
+		String oldWorkingDirectory = workingDirectory;
+		workingDirectory = newWorkingDirectory;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ServerTypePackage.LAUNCH_CONFIGURATION__WORKING_DIRECTORY, oldWorkingDirectory, workingDirectory));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getProgramArguments() {
+		return programArguments;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setProgramArguments(String newProgramArguments) {
+		String oldProgramArguments = programArguments;
+		programArguments = newProgramArguments;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ServerTypePackage.LAUNCH_CONFIGURATION__PROGRAM_ARGUMENTS, oldProgramArguments, programArguments));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getVmParameters() {
+		return vmParameters;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setVmParameters(String newVmParameters) {
+		String oldVmParameters = vmParameters;
+		vmParameters = newVmParameters;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ServerTypePackage.LAUNCH_CONFIGURATION__VM_PARAMETERS, oldVmParameters, vmParameters));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getClasspathReference() {
+		return classpathReference;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setClasspathReference(String newClasspathReference) {
+		String oldClasspathReference = classpathReference;
+		classpathReference = newClasspathReference;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ServerTypePackage.LAUNCH_CONFIGURATION__CLASSPATH_REFERENCE, oldClasspathReference, classpathReference));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Object eGet(EStructuralFeature eFeature, boolean resolve) {
+		switch (eDerivedStructuralFeatureID(eFeature)) {
+			case ServerTypePackage.LAUNCH_CONFIGURATION__CLASS:
+				return getClass_();
+			case ServerTypePackage.LAUNCH_CONFIGURATION__WORKING_DIRECTORY:
+				return getWorkingDirectory();
+			case ServerTypePackage.LAUNCH_CONFIGURATION__PROGRAM_ARGUMENTS:
+				return getProgramArguments();
+			case ServerTypePackage.LAUNCH_CONFIGURATION__VM_PARAMETERS:
+				return getVmParameters();
+			case ServerTypePackage.LAUNCH_CONFIGURATION__CLASSPATH_REFERENCE:
+				return getClasspathReference();
+		}
+		return eDynamicGet(eFeature, resolve);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void eSet(EStructuralFeature eFeature, Object newValue) {
+		switch (eDerivedStructuralFeatureID(eFeature)) {
+			case ServerTypePackage.LAUNCH_CONFIGURATION__CLASS:
+				setClass((String)newValue);
+				return;
+			case ServerTypePackage.LAUNCH_CONFIGURATION__WORKING_DIRECTORY:
+				setWorkingDirectory((String)newValue);
+				return;
+			case ServerTypePackage.LAUNCH_CONFIGURATION__PROGRAM_ARGUMENTS:
+				setProgramArguments((String)newValue);
+				return;
+			case ServerTypePackage.LAUNCH_CONFIGURATION__VM_PARAMETERS:
+				setVmParameters((String)newValue);
+				return;
+			case ServerTypePackage.LAUNCH_CONFIGURATION__CLASSPATH_REFERENCE:
+				setClasspathReference((String)newValue);
+				return;
+		}
+		eDynamicSet(eFeature, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void eUnset(EStructuralFeature eFeature) {
+		switch (eDerivedStructuralFeatureID(eFeature)) {
+			case ServerTypePackage.LAUNCH_CONFIGURATION__CLASS:
+				setClass(CLASS_EDEFAULT);
+				return;
+			case ServerTypePackage.LAUNCH_CONFIGURATION__WORKING_DIRECTORY:
+				setWorkingDirectory(WORKING_DIRECTORY_EDEFAULT);
+				return;
+			case ServerTypePackage.LAUNCH_CONFIGURATION__PROGRAM_ARGUMENTS:
+				setProgramArguments(PROGRAM_ARGUMENTS_EDEFAULT);
+				return;
+			case ServerTypePackage.LAUNCH_CONFIGURATION__VM_PARAMETERS:
+				setVmParameters(VM_PARAMETERS_EDEFAULT);
+				return;
+			case ServerTypePackage.LAUNCH_CONFIGURATION__CLASSPATH_REFERENCE:
+				setClasspathReference(CLASSPATH_REFERENCE_EDEFAULT);
+				return;
+		}
+		eDynamicUnset(eFeature);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean eIsSet(EStructuralFeature eFeature) {
+		switch (eDerivedStructuralFeatureID(eFeature)) {
+			case ServerTypePackage.LAUNCH_CONFIGURATION__CLASS:
+				return CLASS_EDEFAULT == null ? class_ != null : !CLASS_EDEFAULT.equals(class_);
+			case ServerTypePackage.LAUNCH_CONFIGURATION__WORKING_DIRECTORY:
+				return WORKING_DIRECTORY_EDEFAULT == null ? workingDirectory != null : !WORKING_DIRECTORY_EDEFAULT.equals(workingDirectory);
+			case ServerTypePackage.LAUNCH_CONFIGURATION__PROGRAM_ARGUMENTS:
+				return PROGRAM_ARGUMENTS_EDEFAULT == null ? programArguments != null : !PROGRAM_ARGUMENTS_EDEFAULT.equals(programArguments);
+			case ServerTypePackage.LAUNCH_CONFIGURATION__VM_PARAMETERS:
+				return VM_PARAMETERS_EDEFAULT == null ? vmParameters != null : !VM_PARAMETERS_EDEFAULT.equals(vmParameters);
+			case ServerTypePackage.LAUNCH_CONFIGURATION__CLASSPATH_REFERENCE:
+				return CLASSPATH_REFERENCE_EDEFAULT == null ? classpathReference != null : !CLASSPATH_REFERENCE_EDEFAULT.equals(classpathReference);
+		}
+		return eDynamicIsSet(eFeature);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (class: ");
+		result.append(class_);
+		result.append(", workingDirectory: ");
+		result.append(workingDirectory);
+		result.append(", programArguments: ");
+		result.append(programArguments);
+		result.append(", vmParameters: ");
+		result.append(vmParameters);
+		result.append(", classpathReference: ");
+		result.append(classpathReference);
+		result.append(')');
+		return result.toString();
+	}
+
+} //LaunchConfigurationImpl
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/impl/ModuleImpl.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/impl/ModuleImpl.java
new file mode 100644
index 0000000..e3e314f
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/impl/ModuleImpl.java
@@ -0,0 +1,296 @@
+/**
+ * <copyright>
+ *******************************************************************************
+ * Copyright (c) 2004 Eteration Bilisim A.S.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ * 
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL ETERATION A.S. OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Eteration Bilisim A.S.  For more
+ * information on eteration, please see
+ * <http://www.eteration.com/>.
+ ***************************************************************************
+ * </copyright>
+ *
+ * $Id: ModuleImpl.java,v 1.1 2004/11/20 21:18:10 ndai Exp $
+ */
+package org.eclipse.jst.server.generic.servertype.definition.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.eclipse.jst.server.generic.servertype.definition.Module;
+import org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Module</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.impl.ModuleImpl#getType <em>Type</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.impl.ModuleImpl#getPublishDir <em>Publish Dir</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.impl.ModuleImpl#getPublisherReference <em>Publisher Reference</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ModuleImpl extends EObjectImpl implements Module {
+	/**
+	 * The default value of the '{@link #getType() <em>Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getType()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String TYPE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getType() <em>Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getType()
+	 * @generated
+	 * @ordered
+	 */
+	protected String type = TYPE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getPublishDir() <em>Publish Dir</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPublishDir()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String PUBLISH_DIR_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getPublishDir() <em>Publish Dir</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPublishDir()
+	 * @generated
+	 * @ordered
+	 */
+	protected String publishDir = PUBLISH_DIR_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getPublisherReference() <em>Publisher Reference</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPublisherReference()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String PUBLISHER_REFERENCE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getPublisherReference() <em>Publisher Reference</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPublisherReference()
+	 * @generated
+	 * @ordered
+	 */
+	protected String publisherReference = PUBLISHER_REFERENCE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ModuleImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EClass eStaticClass() {
+		return ServerTypePackage.eINSTANCE.getModule();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getType() {
+		return type;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setType(String newType) {
+		String oldType = type;
+		type = newType;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ServerTypePackage.MODULE__TYPE, oldType, type));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getPublishDir() {
+		return publishDir;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setPublishDir(String newPublishDir) {
+		String oldPublishDir = publishDir;
+		publishDir = newPublishDir;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ServerTypePackage.MODULE__PUBLISH_DIR, oldPublishDir, publishDir));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getPublisherReference() {
+		return publisherReference;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setPublisherReference(String newPublisherReference) {
+		String oldPublisherReference = publisherReference;
+		publisherReference = newPublisherReference;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ServerTypePackage.MODULE__PUBLISHER_REFERENCE, oldPublisherReference, publisherReference));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Object eGet(EStructuralFeature eFeature, boolean resolve) {
+		switch (eDerivedStructuralFeatureID(eFeature)) {
+			case ServerTypePackage.MODULE__TYPE:
+				return getType();
+			case ServerTypePackage.MODULE__PUBLISH_DIR:
+				return getPublishDir();
+			case ServerTypePackage.MODULE__PUBLISHER_REFERENCE:
+				return getPublisherReference();
+		}
+		return eDynamicGet(eFeature, resolve);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void eSet(EStructuralFeature eFeature, Object newValue) {
+		switch (eDerivedStructuralFeatureID(eFeature)) {
+			case ServerTypePackage.MODULE__TYPE:
+				setType((String)newValue);
+				return;
+			case ServerTypePackage.MODULE__PUBLISH_DIR:
+				setPublishDir((String)newValue);
+				return;
+			case ServerTypePackage.MODULE__PUBLISHER_REFERENCE:
+				setPublisherReference((String)newValue);
+				return;
+		}
+		eDynamicSet(eFeature, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void eUnset(EStructuralFeature eFeature) {
+		switch (eDerivedStructuralFeatureID(eFeature)) {
+			case ServerTypePackage.MODULE__TYPE:
+				setType(TYPE_EDEFAULT);
+				return;
+			case ServerTypePackage.MODULE__PUBLISH_DIR:
+				setPublishDir(PUBLISH_DIR_EDEFAULT);
+				return;
+			case ServerTypePackage.MODULE__PUBLISHER_REFERENCE:
+				setPublisherReference(PUBLISHER_REFERENCE_EDEFAULT);
+				return;
+		}
+		eDynamicUnset(eFeature);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean eIsSet(EStructuralFeature eFeature) {
+		switch (eDerivedStructuralFeatureID(eFeature)) {
+			case ServerTypePackage.MODULE__TYPE:
+				return TYPE_EDEFAULT == null ? type != null : !TYPE_EDEFAULT.equals(type);
+			case ServerTypePackage.MODULE__PUBLISH_DIR:
+				return PUBLISH_DIR_EDEFAULT == null ? publishDir != null : !PUBLISH_DIR_EDEFAULT.equals(publishDir);
+			case ServerTypePackage.MODULE__PUBLISHER_REFERENCE:
+				return PUBLISHER_REFERENCE_EDEFAULT == null ? publisherReference != null : !PUBLISHER_REFERENCE_EDEFAULT.equals(publisherReference);
+		}
+		return eDynamicIsSet(eFeature);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (type: ");
+		result.append(type);
+		result.append(", publishDir: ");
+		result.append(publishDir);
+		result.append(", publisherReference: ");
+		result.append(publisherReference);
+		result.append(')');
+		return result.toString();
+	}
+
+} //ModuleImpl
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/impl/PortImpl.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/impl/PortImpl.java
new file mode 100644
index 0000000..a91f336
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/impl/PortImpl.java
@@ -0,0 +1,296 @@
+/**
+ * <copyright>
+ *******************************************************************************
+ * Copyright (c) 2004 Eteration Bilisim A.S.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ * 
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL ETERATION A.S. OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Eteration Bilisim A.S.  For more
+ * information on eteration, please see
+ * <http://www.eteration.com/>.
+ ***************************************************************************
+ * </copyright>
+ *
+ * $Id: PortImpl.java,v 1.1 2004/11/20 21:18:10 ndai Exp $
+ */
+package org.eclipse.jst.server.generic.servertype.definition.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.eclipse.jst.server.generic.servertype.definition.Port;
+import org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Port</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.impl.PortImpl#getNo <em>No</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.impl.PortImpl#getName <em>Name</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.impl.PortImpl#getProtocol <em>Protocol</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class PortImpl extends EObjectImpl implements Port {
+	/**
+	 * The default value of the '{@link #getNo() <em>No</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getNo()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String NO_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getNo() <em>No</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getNo()
+	 * @generated
+	 * @ordered
+	 */
+	protected String no = NO_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String NAME_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String name = NAME_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getProtocol() <em>Protocol</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getProtocol()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String PROTOCOL_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getProtocol() <em>Protocol</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getProtocol()
+	 * @generated
+	 * @ordered
+	 */
+	protected String protocol = PROTOCOL_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PortImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EClass eStaticClass() {
+		return ServerTypePackage.eINSTANCE.getPort();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getNo() {
+		return no;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setNo(String newNo) {
+		String oldNo = no;
+		no = newNo;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ServerTypePackage.PORT__NO, oldNo, no));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setName(String newName) {
+		String oldName = name;
+		name = newName;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ServerTypePackage.PORT__NAME, oldName, name));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getProtocol() {
+		return protocol;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setProtocol(String newProtocol) {
+		String oldProtocol = protocol;
+		protocol = newProtocol;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ServerTypePackage.PORT__PROTOCOL, oldProtocol, protocol));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Object eGet(EStructuralFeature eFeature, boolean resolve) {
+		switch (eDerivedStructuralFeatureID(eFeature)) {
+			case ServerTypePackage.PORT__NO:
+				return getNo();
+			case ServerTypePackage.PORT__NAME:
+				return getName();
+			case ServerTypePackage.PORT__PROTOCOL:
+				return getProtocol();
+		}
+		return eDynamicGet(eFeature, resolve);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void eSet(EStructuralFeature eFeature, Object newValue) {
+		switch (eDerivedStructuralFeatureID(eFeature)) {
+			case ServerTypePackage.PORT__NO:
+				setNo((String)newValue);
+				return;
+			case ServerTypePackage.PORT__NAME:
+				setName((String)newValue);
+				return;
+			case ServerTypePackage.PORT__PROTOCOL:
+				setProtocol((String)newValue);
+				return;
+		}
+		eDynamicSet(eFeature, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void eUnset(EStructuralFeature eFeature) {
+		switch (eDerivedStructuralFeatureID(eFeature)) {
+			case ServerTypePackage.PORT__NO:
+				setNo(NO_EDEFAULT);
+				return;
+			case ServerTypePackage.PORT__NAME:
+				setName(NAME_EDEFAULT);
+				return;
+			case ServerTypePackage.PORT__PROTOCOL:
+				setProtocol(PROTOCOL_EDEFAULT);
+				return;
+		}
+		eDynamicUnset(eFeature);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean eIsSet(EStructuralFeature eFeature) {
+		switch (eDerivedStructuralFeatureID(eFeature)) {
+			case ServerTypePackage.PORT__NO:
+				return NO_EDEFAULT == null ? no != null : !NO_EDEFAULT.equals(no);
+			case ServerTypePackage.PORT__NAME:
+				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+			case ServerTypePackage.PORT__PROTOCOL:
+				return PROTOCOL_EDEFAULT == null ? protocol != null : !PROTOCOL_EDEFAULT.equals(protocol);
+		}
+		return eDynamicIsSet(eFeature);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (no: ");
+		result.append(no);
+		result.append(", name: ");
+		result.append(name);
+		result.append(", protocol: ");
+		result.append(protocol);
+		result.append(')');
+		return result.toString();
+	}
+
+} //PortImpl
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/impl/ProjectImpl.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/impl/ProjectImpl.java
new file mode 100644
index 0000000..18ca93a
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/impl/ProjectImpl.java
@@ -0,0 +1,188 @@
+/**
+ * <copyright>
+ *******************************************************************************
+ * Copyright (c) 2004 Eteration Bilisim A.S.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ * 
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL ETERATION A.S. OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Eteration Bilisim A.S.  For more
+ * information on eteration, please see
+ * <http://www.eteration.com/>.
+ ***************************************************************************
+ * </copyright>
+ *
+ * $Id: ProjectImpl.java,v 1.1 2004/11/20 21:18:10 ndai Exp $
+ */
+package org.eclipse.jst.server.generic.servertype.definition.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.eclipse.jst.server.generic.servertype.definition.Project;
+import org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Project</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.impl.ProjectImpl#getClasspathReference <em>Classpath Reference</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ProjectImpl extends EObjectImpl implements Project {
+	/**
+	 * The default value of the '{@link #getClasspathReference() <em>Classpath Reference</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getClasspathReference()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String CLASSPATH_REFERENCE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getClasspathReference() <em>Classpath Reference</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getClasspathReference()
+	 * @generated
+	 * @ordered
+	 */
+	protected String classpathReference = CLASSPATH_REFERENCE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ProjectImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EClass eStaticClass() {
+		return ServerTypePackage.eINSTANCE.getProject();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getClasspathReference() {
+		return classpathReference;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setClasspathReference(String newClasspathReference) {
+		String oldClasspathReference = classpathReference;
+		classpathReference = newClasspathReference;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ServerTypePackage.PROJECT__CLASSPATH_REFERENCE, oldClasspathReference, classpathReference));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Object eGet(EStructuralFeature eFeature, boolean resolve) {
+		switch (eDerivedStructuralFeatureID(eFeature)) {
+			case ServerTypePackage.PROJECT__CLASSPATH_REFERENCE:
+				return getClasspathReference();
+		}
+		return eDynamicGet(eFeature, resolve);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void eSet(EStructuralFeature eFeature, Object newValue) {
+		switch (eDerivedStructuralFeatureID(eFeature)) {
+			case ServerTypePackage.PROJECT__CLASSPATH_REFERENCE:
+				setClasspathReference((String)newValue);
+				return;
+		}
+		eDynamicSet(eFeature, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void eUnset(EStructuralFeature eFeature) {
+		switch (eDerivedStructuralFeatureID(eFeature)) {
+			case ServerTypePackage.PROJECT__CLASSPATH_REFERENCE:
+				setClasspathReference(CLASSPATH_REFERENCE_EDEFAULT);
+				return;
+		}
+		eDynamicUnset(eFeature);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean eIsSet(EStructuralFeature eFeature) {
+		switch (eDerivedStructuralFeatureID(eFeature)) {
+			case ServerTypePackage.PROJECT__CLASSPATH_REFERENCE:
+				return CLASSPATH_REFERENCE_EDEFAULT == null ? classpathReference != null : !CLASSPATH_REFERENCE_EDEFAULT.equals(classpathReference);
+		}
+		return eDynamicIsSet(eFeature);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (classpathReference: ");
+		result.append(classpathReference);
+		result.append(')');
+		return result.toString();
+	}
+
+} //ProjectImpl
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/impl/PropertyImpl.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/impl/PropertyImpl.java
new file mode 100644
index 0000000..7171921
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/impl/PropertyImpl.java
@@ -0,0 +1,404 @@
+/**
+ * <copyright>
+ *******************************************************************************
+ * Copyright (c) 2004 Eteration Bilisim A.S.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ * 
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL ETERATION A.S. OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Eteration Bilisim A.S.  For more
+ * information on eteration, please see
+ * <http://www.eteration.com/>.
+ ***************************************************************************
+ * </copyright>
+ *
+ * $Id: PropertyImpl.java,v 1.1 2004/11/20 21:18:10 ndai Exp $
+ */
+package org.eclipse.jst.server.generic.servertype.definition.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.eclipse.jst.server.generic.servertype.definition.Property;
+import org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Property</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.impl.PropertyImpl#getContext <em>Context</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.impl.PropertyImpl#getDefault <em>Default</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.impl.PropertyImpl#getId <em>Id</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.impl.PropertyImpl#getLabel <em>Label</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.impl.PropertyImpl#getType <em>Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class PropertyImpl extends EObjectImpl implements Property {
+	/**
+	 * The default value of the '{@link #getContext() <em>Context</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getContext()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String CONTEXT_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getContext() <em>Context</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getContext()
+	 * @generated
+	 * @ordered
+	 */
+	protected String context = CONTEXT_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getDefault() <em>Default</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDefault()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String DEFAULT_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getDefault() <em>Default</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDefault()
+	 * @generated
+	 * @ordered
+	 */
+	protected String default_ = DEFAULT_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getId() <em>Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getId()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String ID_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getId() <em>Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getId()
+	 * @generated
+	 * @ordered
+	 */
+	protected String id = ID_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getLabel() <em>Label</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getLabel()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String LABEL_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getLabel() <em>Label</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getLabel()
+	 * @generated
+	 * @ordered
+	 */
+	protected String label = LABEL_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getType() <em>Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getType()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String TYPE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getType() <em>Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getType()
+	 * @generated
+	 * @ordered
+	 */
+	protected String type = TYPE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PropertyImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EClass eStaticClass() {
+		return ServerTypePackage.eINSTANCE.getProperty();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getContext() {
+		return context;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setContext(String newContext) {
+		String oldContext = context;
+		context = newContext;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ServerTypePackage.PROPERTY__CONTEXT, oldContext, context));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getDefault() {
+		return default_;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDefault(String newDefault) {
+		String oldDefault = default_;
+		default_ = newDefault;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ServerTypePackage.PROPERTY__DEFAULT, oldDefault, default_));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getId() {
+		return id;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setId(String newId) {
+		String oldId = id;
+		id = newId;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ServerTypePackage.PROPERTY__ID, oldId, id));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getLabel() {
+		return label;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setLabel(String newLabel) {
+		String oldLabel = label;
+		label = newLabel;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ServerTypePackage.PROPERTY__LABEL, oldLabel, label));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getType() {
+		return type;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setType(String newType) {
+		String oldType = type;
+		type = newType;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ServerTypePackage.PROPERTY__TYPE, oldType, type));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Object eGet(EStructuralFeature eFeature, boolean resolve) {
+		switch (eDerivedStructuralFeatureID(eFeature)) {
+			case ServerTypePackage.PROPERTY__CONTEXT:
+				return getContext();
+			case ServerTypePackage.PROPERTY__DEFAULT:
+				return getDefault();
+			case ServerTypePackage.PROPERTY__ID:
+				return getId();
+			case ServerTypePackage.PROPERTY__LABEL:
+				return getLabel();
+			case ServerTypePackage.PROPERTY__TYPE:
+				return getType();
+		}
+		return eDynamicGet(eFeature, resolve);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void eSet(EStructuralFeature eFeature, Object newValue) {
+		switch (eDerivedStructuralFeatureID(eFeature)) {
+			case ServerTypePackage.PROPERTY__CONTEXT:
+				setContext((String)newValue);
+				return;
+			case ServerTypePackage.PROPERTY__DEFAULT:
+				setDefault((String)newValue);
+				return;
+			case ServerTypePackage.PROPERTY__ID:
+				setId((String)newValue);
+				return;
+			case ServerTypePackage.PROPERTY__LABEL:
+				setLabel((String)newValue);
+				return;
+			case ServerTypePackage.PROPERTY__TYPE:
+				setType((String)newValue);
+				return;
+		}
+		eDynamicSet(eFeature, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void eUnset(EStructuralFeature eFeature) {
+		switch (eDerivedStructuralFeatureID(eFeature)) {
+			case ServerTypePackage.PROPERTY__CONTEXT:
+				setContext(CONTEXT_EDEFAULT);
+				return;
+			case ServerTypePackage.PROPERTY__DEFAULT:
+				setDefault(DEFAULT_EDEFAULT);
+				return;
+			case ServerTypePackage.PROPERTY__ID:
+				setId(ID_EDEFAULT);
+				return;
+			case ServerTypePackage.PROPERTY__LABEL:
+				setLabel(LABEL_EDEFAULT);
+				return;
+			case ServerTypePackage.PROPERTY__TYPE:
+				setType(TYPE_EDEFAULT);
+				return;
+		}
+		eDynamicUnset(eFeature);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean eIsSet(EStructuralFeature eFeature) {
+		switch (eDerivedStructuralFeatureID(eFeature)) {
+			case ServerTypePackage.PROPERTY__CONTEXT:
+				return CONTEXT_EDEFAULT == null ? context != null : !CONTEXT_EDEFAULT.equals(context);
+			case ServerTypePackage.PROPERTY__DEFAULT:
+				return DEFAULT_EDEFAULT == null ? default_ != null : !DEFAULT_EDEFAULT.equals(default_);
+			case ServerTypePackage.PROPERTY__ID:
+				return ID_EDEFAULT == null ? id != null : !ID_EDEFAULT.equals(id);
+			case ServerTypePackage.PROPERTY__LABEL:
+				return LABEL_EDEFAULT == null ? label != null : !LABEL_EDEFAULT.equals(label);
+			case ServerTypePackage.PROPERTY__TYPE:
+				return TYPE_EDEFAULT == null ? type != null : !TYPE_EDEFAULT.equals(type);
+		}
+		return eDynamicIsSet(eFeature);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (context: ");
+		result.append(context);
+		result.append(", default: ");
+		result.append(default_);
+		result.append(", id: ");
+		result.append(id);
+		result.append(", label: ");
+		result.append(label);
+		result.append(", type: ");
+		result.append(type);
+		result.append(')');
+		return result.toString();
+	}
+
+} //PropertyImpl
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/impl/PublishTypeImpl.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/impl/PublishTypeImpl.java
new file mode 100644
index 0000000..cef3bad
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/impl/PublishTypeImpl.java
@@ -0,0 +1,242 @@
+/**
+ * <copyright>
+ *******************************************************************************
+ * Copyright (c) 2004 Eteration Bilisim A.S.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ * 
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL ETERATION A.S. OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Eteration Bilisim A.S.  For more
+ * information on eteration, please see
+ * <http://www.eteration.com/>.
+ ***************************************************************************
+ * </copyright>
+ *
+ * $Id: PublishTypeImpl.java,v 1.1 2004/11/20 21:18:10 ndai Exp $
+ */
+package org.eclipse.jst.server.generic.servertype.definition.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.eclipse.jst.server.generic.servertype.definition.PublishType;
+import org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Publish Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.impl.PublishTypeImpl#getTask <em>Task</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.impl.PublishTypeImpl#getClasspathReference <em>Classpath Reference</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class PublishTypeImpl extends EObjectImpl implements PublishType {
+	/**
+	 * The default value of the '{@link #getTask() <em>Task</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getTask()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String TASK_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getTask() <em>Task</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getTask()
+	 * @generated
+	 * @ordered
+	 */
+	protected String task = TASK_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getClasspathReference() <em>Classpath Reference</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getClasspathReference()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String CLASSPATH_REFERENCE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getClasspathReference() <em>Classpath Reference</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getClasspathReference()
+	 * @generated
+	 * @ordered
+	 */
+	protected String classpathReference = CLASSPATH_REFERENCE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PublishTypeImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EClass eStaticClass() {
+		return ServerTypePackage.eINSTANCE.getPublishType();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getTask() {
+		return task;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setTask(String newTask) {
+		String oldTask = task;
+		task = newTask;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ServerTypePackage.PUBLISH_TYPE__TASK, oldTask, task));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getClasspathReference() {
+		return classpathReference;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setClasspathReference(String newClasspathReference) {
+		String oldClasspathReference = classpathReference;
+		classpathReference = newClasspathReference;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ServerTypePackage.PUBLISH_TYPE__CLASSPATH_REFERENCE, oldClasspathReference, classpathReference));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Object eGet(EStructuralFeature eFeature, boolean resolve) {
+		switch (eDerivedStructuralFeatureID(eFeature)) {
+			case ServerTypePackage.PUBLISH_TYPE__TASK:
+				return getTask();
+			case ServerTypePackage.PUBLISH_TYPE__CLASSPATH_REFERENCE:
+				return getClasspathReference();
+		}
+		return eDynamicGet(eFeature, resolve);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void eSet(EStructuralFeature eFeature, Object newValue) {
+		switch (eDerivedStructuralFeatureID(eFeature)) {
+			case ServerTypePackage.PUBLISH_TYPE__TASK:
+				setTask((String)newValue);
+				return;
+			case ServerTypePackage.PUBLISH_TYPE__CLASSPATH_REFERENCE:
+				setClasspathReference((String)newValue);
+				return;
+		}
+		eDynamicSet(eFeature, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void eUnset(EStructuralFeature eFeature) {
+		switch (eDerivedStructuralFeatureID(eFeature)) {
+			case ServerTypePackage.PUBLISH_TYPE__TASK:
+				setTask(TASK_EDEFAULT);
+				return;
+			case ServerTypePackage.PUBLISH_TYPE__CLASSPATH_REFERENCE:
+				setClasspathReference(CLASSPATH_REFERENCE_EDEFAULT);
+				return;
+		}
+		eDynamicUnset(eFeature);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean eIsSet(EStructuralFeature eFeature) {
+		switch (eDerivedStructuralFeatureID(eFeature)) {
+			case ServerTypePackage.PUBLISH_TYPE__TASK:
+				return TASK_EDEFAULT == null ? task != null : !TASK_EDEFAULT.equals(task);
+			case ServerTypePackage.PUBLISH_TYPE__CLASSPATH_REFERENCE:
+				return CLASSPATH_REFERENCE_EDEFAULT == null ? classpathReference != null : !CLASSPATH_REFERENCE_EDEFAULT.equals(classpathReference);
+		}
+		return eDynamicIsSet(eFeature);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (task: ");
+		result.append(task);
+		result.append(", classpathReference: ");
+		result.append(classpathReference);
+		result.append(')');
+		return result.toString();
+	}
+
+} //PublishTypeImpl
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/impl/PublisherImpl.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/impl/PublisherImpl.java
new file mode 100644
index 0000000..08b1db5
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/impl/PublisherImpl.java
@@ -0,0 +1,297 @@
+/**
+ * <copyright>
+ *******************************************************************************
+ * Copyright (c) 2004 Eteration Bilisim A.S.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ * 
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL ETERATION A.S. OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Eteration Bilisim A.S.  For more
+ * information on eteration, please see
+ * <http://www.eteration.com/>.
+ ***************************************************************************
+ * </copyright>
+ *
+ * $Id: PublisherImpl.java,v 1.1 2004/11/20 21:18:10 ndai Exp $
+ */
+package org.eclipse.jst.server.generic.servertype.definition.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.eclipse.emf.ecore.util.BasicFeatureMap;
+import org.eclipse.emf.ecore.util.FeatureMap;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.jst.server.generic.servertype.definition.Publisher;
+import org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Publisher</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.impl.PublisherImpl#getGroup <em>Group</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.impl.PublisherImpl#getPublish <em>Publish</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.impl.PublisherImpl#getUnpublish <em>Unpublish</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.impl.PublisherImpl#getId <em>Id</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class PublisherImpl extends EObjectImpl implements Publisher {
+	/**
+	 * The cached value of the '{@link #getGroup() <em>Group</em>}' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getGroup()
+	 * @generated
+	 * @ordered
+	 */
+	protected FeatureMap group = null;
+
+	/**
+	 * The default value of the '{@link #getId() <em>Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getId()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String ID_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getId() <em>Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getId()
+	 * @generated
+	 * @ordered
+	 */
+	protected String id = ID_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PublisherImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EClass eStaticClass() {
+		return ServerTypePackage.eINSTANCE.getPublisher();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FeatureMap getGroup() {
+		if (group == null) {
+			group = new BasicFeatureMap(this, ServerTypePackage.PUBLISHER__GROUP);
+		}
+		return group;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList getPublish() {
+		return ((FeatureMap)getGroup()).list(ServerTypePackage.eINSTANCE.getPublisher_Publish());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList getUnpublish() {
+		return ((FeatureMap)getGroup()).list(ServerTypePackage.eINSTANCE.getPublisher_Unpublish());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getId() {
+		return id;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setId(String newId) {
+		String oldId = id;
+		id = newId;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ServerTypePackage.PUBLISHER__ID, oldId, id));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, Class baseClass, NotificationChain msgs) {
+		if (featureID >= 0) {
+			switch (eDerivedStructuralFeatureID(featureID, baseClass)) {
+				case ServerTypePackage.PUBLISHER__GROUP:
+					return ((InternalEList)getGroup()).basicRemove(otherEnd, msgs);
+				case ServerTypePackage.PUBLISHER__PUBLISH:
+					return ((InternalEList)getPublish()).basicRemove(otherEnd, msgs);
+				case ServerTypePackage.PUBLISHER__UNPUBLISH:
+					return ((InternalEList)getUnpublish()).basicRemove(otherEnd, msgs);
+				default:
+					return eDynamicInverseRemove(otherEnd, featureID, baseClass, msgs);
+			}
+		}
+		return eBasicSetContainer(null, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Object eGet(EStructuralFeature eFeature, boolean resolve) {
+		switch (eDerivedStructuralFeatureID(eFeature)) {
+			case ServerTypePackage.PUBLISHER__GROUP:
+				return getGroup();
+			case ServerTypePackage.PUBLISHER__PUBLISH:
+				return getPublish();
+			case ServerTypePackage.PUBLISHER__UNPUBLISH:
+				return getUnpublish();
+			case ServerTypePackage.PUBLISHER__ID:
+				return getId();
+		}
+		return eDynamicGet(eFeature, resolve);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void eSet(EStructuralFeature eFeature, Object newValue) {
+		switch (eDerivedStructuralFeatureID(eFeature)) {
+			case ServerTypePackage.PUBLISHER__GROUP:
+				getGroup().clear();
+				getGroup().addAll((Collection)newValue);
+				return;
+			case ServerTypePackage.PUBLISHER__PUBLISH:
+				getPublish().clear();
+				getPublish().addAll((Collection)newValue);
+				return;
+			case ServerTypePackage.PUBLISHER__UNPUBLISH:
+				getUnpublish().clear();
+				getUnpublish().addAll((Collection)newValue);
+				return;
+			case ServerTypePackage.PUBLISHER__ID:
+				setId((String)newValue);
+				return;
+		}
+		eDynamicSet(eFeature, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void eUnset(EStructuralFeature eFeature) {
+		switch (eDerivedStructuralFeatureID(eFeature)) {
+			case ServerTypePackage.PUBLISHER__GROUP:
+				getGroup().clear();
+				return;
+			case ServerTypePackage.PUBLISHER__PUBLISH:
+				getPublish().clear();
+				return;
+			case ServerTypePackage.PUBLISHER__UNPUBLISH:
+				getUnpublish().clear();
+				return;
+			case ServerTypePackage.PUBLISHER__ID:
+				setId(ID_EDEFAULT);
+				return;
+		}
+		eDynamicUnset(eFeature);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean eIsSet(EStructuralFeature eFeature) {
+		switch (eDerivedStructuralFeatureID(eFeature)) {
+			case ServerTypePackage.PUBLISHER__GROUP:
+				return group != null && !group.isEmpty();
+			case ServerTypePackage.PUBLISHER__PUBLISH:
+				return !getPublish().isEmpty();
+			case ServerTypePackage.PUBLISHER__UNPUBLISH:
+				return !getUnpublish().isEmpty();
+			case ServerTypePackage.PUBLISHER__ID:
+				return ID_EDEFAULT == null ? id != null : !ID_EDEFAULT.equals(id);
+		}
+		return eDynamicIsSet(eFeature);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (group: ");
+		result.append(group);
+		result.append(", id: ");
+		result.append(id);
+		result.append(')');
+		return result.toString();
+	}
+
+} //PublisherImpl
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/impl/ServerRuntimeImpl.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/impl/ServerRuntimeImpl.java
new file mode 100644
index 0000000..052ca32
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/impl/ServerRuntimeImpl.java
@@ -0,0 +1,881 @@
+/**
+ * <copyright>
+ *******************************************************************************
+ * Copyright (c) 2004 Eteration Bilisim A.S.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ * 
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL ETERATION A.S. OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Eteration Bilisim A.S.  For more
+ * information on eteration, please see
+ * <http://www.eteration.com/>.
+ ***************************************************************************
+ * </copyright>
+ *
+ * $Id: ServerRuntimeImpl.java,v 1.2 2004/12/02 17:56:53 ndai Exp $
+ */
+package org.eclipse.jst.server.generic.servertype.definition.impl;
+
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.Map;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.eclipse.emf.ecore.util.BasicFeatureMap;
+import org.eclipse.emf.ecore.util.FeatureMap;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.jst.server.generic.internal.xml.Resolver;
+import org.eclipse.jst.server.generic.servertype.definition.Classpath;
+import org.eclipse.jst.server.generic.servertype.definition.LaunchConfiguration;
+import org.eclipse.jst.server.generic.servertype.definition.Module;
+import org.eclipse.jst.server.generic.servertype.definition.Project;
+import org.eclipse.jst.server.generic.servertype.definition.Publisher;
+import org.eclipse.jst.server.generic.servertype.definition.ServerRuntime;
+import org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Server Runtime</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.impl.ServerRuntimeImpl#getGroup <em>Group</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.impl.ServerRuntimeImpl#getProperty <em>Property</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.impl.ServerRuntimeImpl#getGroup1 <em>Group1</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.impl.ServerRuntimeImpl#getPort <em>Port</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.impl.ServerRuntimeImpl#getGroup2 <em>Group2</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.impl.ServerRuntimeImpl#getModule <em>Module</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.impl.ServerRuntimeImpl#getProject <em>Project</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.impl.ServerRuntimeImpl#getStart <em>Start</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.impl.ServerRuntimeImpl#getStop <em>Stop</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.impl.ServerRuntimeImpl#getGroup3 <em>Group3</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.impl.ServerRuntimeImpl#getPublisher <em>Publisher</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.impl.ServerRuntimeImpl#getGroup4 <em>Group4</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.impl.ServerRuntimeImpl#getClasspath <em>Classpath</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.impl.ServerRuntimeImpl#getName <em>Name</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.impl.ServerRuntimeImpl#getVersion <em>Version</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ServerRuntimeImpl extends EObjectImpl implements ServerRuntime {
+	/**
+	 * The cached value of the '{@link #getGroup() <em>Group</em>}' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getGroup()
+	 * @generated
+	 * @ordered
+	 */
+	protected FeatureMap group = null;
+
+	/**
+	 * The cached value of the '{@link #getGroup1() <em>Group1</em>}' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getGroup1()
+	 * @generated
+	 * @ordered
+	 */
+	protected FeatureMap group1 = null;
+
+	/**
+	 * The cached value of the '{@link #getGroup2() <em>Group2</em>}' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getGroup2()
+	 * @generated
+	 * @ordered
+	 */
+	protected FeatureMap group2 = null;
+
+	/**
+	 * The cached value of the '{@link #getProject() <em>Project</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getProject()
+	 * @generated
+	 * @ordered
+	 */
+	protected Project project = null;
+
+	/**
+	 * The cached value of the '{@link #getStart() <em>Start</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getStart()
+	 * @generated
+	 * @ordered
+	 */
+	protected LaunchConfiguration start = null;
+
+	/**
+	 * The cached value of the '{@link #getStop() <em>Stop</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getStop()
+	 * @generated
+	 * @ordered
+	 */
+	protected LaunchConfiguration stop = null;
+
+	/**
+	 * The cached value of the '{@link #getGroup3() <em>Group3</em>}' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getGroup3()
+	 * @generated
+	 * @ordered
+	 */
+	protected FeatureMap group3 = null;
+
+	/**
+	 * The cached value of the '{@link #getGroup4() <em>Group4</em>}' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getGroup4()
+	 * @generated
+	 * @ordered
+	 */
+	protected FeatureMap group4 = null;
+
+	/**
+	 * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String NAME_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String name = NAME_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getVersion() <em>Version</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getVersion()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String VERSION_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getVersion() <em>Version</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getVersion()
+	 * @generated
+	 * @ordered
+	 */
+	protected String version = VERSION_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getGroup() <em>Group</em>}' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getGroup()
+	 * @generated NOT
+	 * @ordered
+	 */
+	protected String filename = null;
+	
+
+	/**
+	 * The cached value of the '{@link #getGroup() <em>Group</em>}' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getGroup()
+	 * @generated NOT
+	 * @ordered
+	 */
+	protected Resolver resolver = new Resolver(this);
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ServerRuntimeImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EClass eStaticClass() {
+		return ServerTypePackage.eINSTANCE.getServerRuntime();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FeatureMap getGroup() {
+		if (group == null) {
+			group = new BasicFeatureMap(this, ServerTypePackage.SERVER_RUNTIME__GROUP);
+		}
+		return group;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList getProperty() {
+		return ((FeatureMap)getGroup()).list(ServerTypePackage.eINSTANCE.getServerRuntime_Property());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FeatureMap getGroup1() {
+		if (group1 == null) {
+			group1 = new BasicFeatureMap(this, ServerTypePackage.SERVER_RUNTIME__GROUP1);
+		}
+		return group1;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList getPort() {
+		return ((FeatureMap)getGroup1()).list(ServerTypePackage.eINSTANCE.getServerRuntime_Port());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FeatureMap getGroup2() {
+		if (group2 == null) {
+			group2 = new BasicFeatureMap(this, ServerTypePackage.SERVER_RUNTIME__GROUP2);
+		}
+		return group2;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList getModule() {
+		return ((FeatureMap)getGroup2()).list(ServerTypePackage.eINSTANCE.getServerRuntime_Module());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Project getProject() {
+		return project;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetProject(Project newProject, NotificationChain msgs) {
+		Project oldProject = project;
+		project = newProject;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ServerTypePackage.SERVER_RUNTIME__PROJECT, oldProject, newProject);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setProject(Project newProject) {
+		if (newProject != project) {
+			NotificationChain msgs = null;
+			if (project != null)
+				msgs = ((InternalEObject)project).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ServerTypePackage.SERVER_RUNTIME__PROJECT, null, msgs);
+			if (newProject != null)
+				msgs = ((InternalEObject)newProject).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ServerTypePackage.SERVER_RUNTIME__PROJECT, null, msgs);
+			msgs = basicSetProject(newProject, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ServerTypePackage.SERVER_RUNTIME__PROJECT, newProject, newProject));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LaunchConfiguration getStart() {
+		return start;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetStart(LaunchConfiguration newStart, NotificationChain msgs) {
+		LaunchConfiguration oldStart = start;
+		start = newStart;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ServerTypePackage.SERVER_RUNTIME__START, oldStart, newStart);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setStart(LaunchConfiguration newStart) {
+		if (newStart != start) {
+			NotificationChain msgs = null;
+			if (start != null)
+				msgs = ((InternalEObject)start).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ServerTypePackage.SERVER_RUNTIME__START, null, msgs);
+			if (newStart != null)
+				msgs = ((InternalEObject)newStart).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ServerTypePackage.SERVER_RUNTIME__START, null, msgs);
+			msgs = basicSetStart(newStart, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ServerTypePackage.SERVER_RUNTIME__START, newStart, newStart));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LaunchConfiguration getStop() {
+		return stop;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetStop(LaunchConfiguration newStop, NotificationChain msgs) {
+		LaunchConfiguration oldStop = stop;
+		stop = newStop;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ServerTypePackage.SERVER_RUNTIME__STOP, oldStop, newStop);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setStop(LaunchConfiguration newStop) {
+		if (newStop != stop) {
+			NotificationChain msgs = null;
+			if (stop != null)
+				msgs = ((InternalEObject)stop).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ServerTypePackage.SERVER_RUNTIME__STOP, null, msgs);
+			if (newStop != null)
+				msgs = ((InternalEObject)newStop).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ServerTypePackage.SERVER_RUNTIME__STOP, null, msgs);
+			msgs = basicSetStop(newStop, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ServerTypePackage.SERVER_RUNTIME__STOP, newStop, newStop));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FeatureMap getGroup3() {
+		if (group3 == null) {
+			group3 = new BasicFeatureMap(this, ServerTypePackage.SERVER_RUNTIME__GROUP3);
+		}
+		return group3;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList getPublisher() {
+		return ((FeatureMap)getGroup3()).list(ServerTypePackage.eINSTANCE.getServerRuntime_Publisher());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FeatureMap getGroup4() {
+		if (group4 == null) {
+			group4 = new BasicFeatureMap(this, ServerTypePackage.SERVER_RUNTIME__GROUP4);
+		}
+		return group4;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList getClasspath() {
+		return ((FeatureMap)getGroup4()).list(ServerTypePackage.eINSTANCE.getServerRuntime_Classpath());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setName(String newName) {
+		String oldName = name;
+		name = newName;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ServerTypePackage.SERVER_RUNTIME__NAME, oldName, name));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getVersion() {
+		return version;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setVersion(String newVersion) {
+		String oldVersion = version;
+		version = newVersion;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ServerTypePackage.SERVER_RUNTIME__VERSION, oldVersion, version));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, Class baseClass, NotificationChain msgs) {
+		if (featureID >= 0) {
+			switch (eDerivedStructuralFeatureID(featureID, baseClass)) {
+				case ServerTypePackage.SERVER_RUNTIME__GROUP:
+					return ((InternalEList)getGroup()).basicRemove(otherEnd, msgs);
+				case ServerTypePackage.SERVER_RUNTIME__PROPERTY:
+					return ((InternalEList)getProperty()).basicRemove(otherEnd, msgs);
+				case ServerTypePackage.SERVER_RUNTIME__GROUP1:
+					return ((InternalEList)getGroup1()).basicRemove(otherEnd, msgs);
+				case ServerTypePackage.SERVER_RUNTIME__PORT:
+					return ((InternalEList)getPort()).basicRemove(otherEnd, msgs);
+				case ServerTypePackage.SERVER_RUNTIME__GROUP2:
+					return ((InternalEList)getGroup2()).basicRemove(otherEnd, msgs);
+				case ServerTypePackage.SERVER_RUNTIME__MODULE:
+					return ((InternalEList)getModule()).basicRemove(otherEnd, msgs);
+				case ServerTypePackage.SERVER_RUNTIME__PROJECT:
+					return basicSetProject(null, msgs);
+				case ServerTypePackage.SERVER_RUNTIME__START:
+					return basicSetStart(null, msgs);
+				case ServerTypePackage.SERVER_RUNTIME__STOP:
+					return basicSetStop(null, msgs);
+				case ServerTypePackage.SERVER_RUNTIME__GROUP3:
+					return ((InternalEList)getGroup3()).basicRemove(otherEnd, msgs);
+				case ServerTypePackage.SERVER_RUNTIME__PUBLISHER:
+					return ((InternalEList)getPublisher()).basicRemove(otherEnd, msgs);
+				case ServerTypePackage.SERVER_RUNTIME__GROUP4:
+					return ((InternalEList)getGroup4()).basicRemove(otherEnd, msgs);
+				case ServerTypePackage.SERVER_RUNTIME__CLASSPATH:
+					return ((InternalEList)getClasspath()).basicRemove(otherEnd, msgs);
+				default:
+					return eDynamicInverseRemove(otherEnd, featureID, baseClass, msgs);
+			}
+		}
+		return eBasicSetContainer(null, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Object eGet(EStructuralFeature eFeature, boolean resolve) {
+		switch (eDerivedStructuralFeatureID(eFeature)) {
+			case ServerTypePackage.SERVER_RUNTIME__GROUP:
+				return getGroup();
+			case ServerTypePackage.SERVER_RUNTIME__PROPERTY:
+				return getProperty();
+			case ServerTypePackage.SERVER_RUNTIME__GROUP1:
+				return getGroup1();
+			case ServerTypePackage.SERVER_RUNTIME__PORT:
+				return getPort();
+			case ServerTypePackage.SERVER_RUNTIME__GROUP2:
+				return getGroup2();
+			case ServerTypePackage.SERVER_RUNTIME__MODULE:
+				return getModule();
+			case ServerTypePackage.SERVER_RUNTIME__PROJECT:
+				return getProject();
+			case ServerTypePackage.SERVER_RUNTIME__START:
+				return getStart();
+			case ServerTypePackage.SERVER_RUNTIME__STOP:
+				return getStop();
+			case ServerTypePackage.SERVER_RUNTIME__GROUP3:
+				return getGroup3();
+			case ServerTypePackage.SERVER_RUNTIME__PUBLISHER:
+				return getPublisher();
+			case ServerTypePackage.SERVER_RUNTIME__GROUP4:
+				return getGroup4();
+			case ServerTypePackage.SERVER_RUNTIME__CLASSPATH:
+				return getClasspath();
+			case ServerTypePackage.SERVER_RUNTIME__NAME:
+				return getName();
+			case ServerTypePackage.SERVER_RUNTIME__VERSION:
+				return getVersion();
+		}
+		return eDynamicGet(eFeature, resolve);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void eSet(EStructuralFeature eFeature, Object newValue) {
+		switch (eDerivedStructuralFeatureID(eFeature)) {
+			case ServerTypePackage.SERVER_RUNTIME__GROUP:
+				getGroup().clear();
+				getGroup().addAll((Collection)newValue);
+				return;
+			case ServerTypePackage.SERVER_RUNTIME__PROPERTY:
+				getProperty().clear();
+				getProperty().addAll((Collection)newValue);
+				return;
+			case ServerTypePackage.SERVER_RUNTIME__GROUP1:
+				getGroup1().clear();
+				getGroup1().addAll((Collection)newValue);
+				return;
+			case ServerTypePackage.SERVER_RUNTIME__PORT:
+				getPort().clear();
+				getPort().addAll((Collection)newValue);
+				return;
+			case ServerTypePackage.SERVER_RUNTIME__GROUP2:
+				getGroup2().clear();
+				getGroup2().addAll((Collection)newValue);
+				return;
+			case ServerTypePackage.SERVER_RUNTIME__MODULE:
+				getModule().clear();
+				getModule().addAll((Collection)newValue);
+				return;
+			case ServerTypePackage.SERVER_RUNTIME__PROJECT:
+				setProject((Project)newValue);
+				return;
+			case ServerTypePackage.SERVER_RUNTIME__START:
+				setStart((LaunchConfiguration)newValue);
+				return;
+			case ServerTypePackage.SERVER_RUNTIME__STOP:
+				setStop((LaunchConfiguration)newValue);
+				return;
+			case ServerTypePackage.SERVER_RUNTIME__GROUP3:
+				getGroup3().clear();
+				getGroup3().addAll((Collection)newValue);
+				return;
+			case ServerTypePackage.SERVER_RUNTIME__PUBLISHER:
+				getPublisher().clear();
+				getPublisher().addAll((Collection)newValue);
+				return;
+			case ServerTypePackage.SERVER_RUNTIME__GROUP4:
+				getGroup4().clear();
+				getGroup4().addAll((Collection)newValue);
+				return;
+			case ServerTypePackage.SERVER_RUNTIME__CLASSPATH:
+				getClasspath().clear();
+				getClasspath().addAll((Collection)newValue);
+				return;
+			case ServerTypePackage.SERVER_RUNTIME__NAME:
+				setName((String)newValue);
+				return;
+			case ServerTypePackage.SERVER_RUNTIME__VERSION:
+				setVersion((String)newValue);
+				return;
+		}
+		eDynamicSet(eFeature, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void eUnset(EStructuralFeature eFeature) {
+		switch (eDerivedStructuralFeatureID(eFeature)) {
+			case ServerTypePackage.SERVER_RUNTIME__GROUP:
+				getGroup().clear();
+				return;
+			case ServerTypePackage.SERVER_RUNTIME__PROPERTY:
+				getProperty().clear();
+				return;
+			case ServerTypePackage.SERVER_RUNTIME__GROUP1:
+				getGroup1().clear();
+				return;
+			case ServerTypePackage.SERVER_RUNTIME__PORT:
+				getPort().clear();
+				return;
+			case ServerTypePackage.SERVER_RUNTIME__GROUP2:
+				getGroup2().clear();
+				return;
+			case ServerTypePackage.SERVER_RUNTIME__MODULE:
+				getModule().clear();
+				return;
+			case ServerTypePackage.SERVER_RUNTIME__PROJECT:
+				setProject((Project)null);
+				return;
+			case ServerTypePackage.SERVER_RUNTIME__START:
+				setStart((LaunchConfiguration)null);
+				return;
+			case ServerTypePackage.SERVER_RUNTIME__STOP:
+				setStop((LaunchConfiguration)null);
+				return;
+			case ServerTypePackage.SERVER_RUNTIME__GROUP3:
+				getGroup3().clear();
+				return;
+			case ServerTypePackage.SERVER_RUNTIME__PUBLISHER:
+				getPublisher().clear();
+				return;
+			case ServerTypePackage.SERVER_RUNTIME__GROUP4:
+				getGroup4().clear();
+				return;
+			case ServerTypePackage.SERVER_RUNTIME__CLASSPATH:
+				getClasspath().clear();
+				return;
+			case ServerTypePackage.SERVER_RUNTIME__NAME:
+				setName(NAME_EDEFAULT);
+				return;
+			case ServerTypePackage.SERVER_RUNTIME__VERSION:
+				setVersion(VERSION_EDEFAULT);
+				return;
+		}
+		eDynamicUnset(eFeature);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean eIsSet(EStructuralFeature eFeature) {
+		switch (eDerivedStructuralFeatureID(eFeature)) {
+			case ServerTypePackage.SERVER_RUNTIME__GROUP:
+				return group != null && !group.isEmpty();
+			case ServerTypePackage.SERVER_RUNTIME__PROPERTY:
+				return !getProperty().isEmpty();
+			case ServerTypePackage.SERVER_RUNTIME__GROUP1:
+				return group1 != null && !group1.isEmpty();
+			case ServerTypePackage.SERVER_RUNTIME__PORT:
+				return !getPort().isEmpty();
+			case ServerTypePackage.SERVER_RUNTIME__GROUP2:
+				return group2 != null && !group2.isEmpty();
+			case ServerTypePackage.SERVER_RUNTIME__MODULE:
+				return !getModule().isEmpty();
+			case ServerTypePackage.SERVER_RUNTIME__PROJECT:
+				return project != null;
+			case ServerTypePackage.SERVER_RUNTIME__START:
+				return start != null;
+			case ServerTypePackage.SERVER_RUNTIME__STOP:
+				return stop != null;
+			case ServerTypePackage.SERVER_RUNTIME__GROUP3:
+				return group3 != null && !group3.isEmpty();
+			case ServerTypePackage.SERVER_RUNTIME__PUBLISHER:
+				return !getPublisher().isEmpty();
+			case ServerTypePackage.SERVER_RUNTIME__GROUP4:
+				return group4 != null && !group4.isEmpty();
+			case ServerTypePackage.SERVER_RUNTIME__CLASSPATH:
+				return !getClasspath().isEmpty();
+			case ServerTypePackage.SERVER_RUNTIME__NAME:
+				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+			case ServerTypePackage.SERVER_RUNTIME__VERSION:
+				return VERSION_EDEFAULT == null ? version != null : !VERSION_EDEFAULT.equals(version);
+		}
+		return eDynamicIsSet(eFeature);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (group: ");
+		result.append(group);
+		result.append(", group1: ");
+		result.append(group1);
+		result.append(", group2: ");
+		result.append(group2);
+		result.append(", group3: ");
+		result.append(group3);
+		result.append(", group4: ");
+		result.append(group4);
+		result.append(", name: ");
+		result.append(name);
+		result.append(", version: ");
+		result.append(version);
+		result.append(')');
+		return result.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
+	public Publisher getPublisher(String id) {
+		Iterator iterator = this.getPublisher().iterator();
+		while (iterator.hasNext()) {
+			Publisher publisher = (Publisher) iterator.next();
+			if(id.equals(publisher.getId()))
+				return publisher;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
+	public Module getModule(String type) {
+		Iterator iterator = this.getModule().iterator();
+		while (iterator.hasNext()) {
+			Module module = (Module) iterator.next();
+			if(type.equals(module.getType()))
+				return module;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
+	public Classpath getClasspath(String ref) {
+		Iterator iterator = this.getClasspath().iterator();
+		while (iterator.hasNext()) {
+			Classpath cp = (Classpath) iterator.next();
+			if(ref.equals(cp.getId()))
+				return cp;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
+	public String getFilename() {
+		return filename;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
+	public void setFilename(String fn) {
+		this.filename = fn;		
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
+	public void setPropertyValues(Map properties) {
+		this.resolver.setPropertyValues(properties);
+		
+	}
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
+	public Resolver getResolver() {
+		return this.resolver;
+	}
+	
+	
+} //ServerRuntimeImpl
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/impl/ServerTypeFactoryImpl.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/impl/ServerTypeFactoryImpl.java
new file mode 100644
index 0000000..9002e4b
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/impl/ServerTypeFactoryImpl.java
@@ -0,0 +1,211 @@
+/**
+ * <copyright>
+ *******************************************************************************
+ * Copyright (c) 2004 Eteration Bilisim A.S.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ * 
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL ETERATION A.S. OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Eteration Bilisim A.S.  For more
+ * information on eteration, please see
+ * <http://www.eteration.com/>.
+ ***************************************************************************
+ * </copyright>
+ *
+ * $Id: ServerTypeFactoryImpl.java,v 1.1 2004/11/20 21:18:10 ndai Exp $
+ */
+package org.eclipse.jst.server.generic.servertype.definition.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.jst.server.generic.servertype.definition.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ServerTypeFactoryImpl extends EFactoryImpl implements ServerTypeFactory {
+	/**
+	 * Creates and instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ServerTypeFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+			case ServerTypePackage.ARCHIVE_TYPE: return createArchiveType();
+			case ServerTypePackage.CLASSPATH: return createClasspath();
+			case ServerTypePackage.LAUNCH_CONFIGURATION: return createLaunchConfiguration();
+			case ServerTypePackage.MODULE: return createModule();
+			case ServerTypePackage.PORT: return createPort();
+			case ServerTypePackage.PROJECT: return createProject();
+			case ServerTypePackage.PROPERTY: return createProperty();
+			case ServerTypePackage.PUBLISHER: return createPublisher();
+			case ServerTypePackage.PUBLISH_TYPE: return createPublishType();
+			case ServerTypePackage.SERVER_RUNTIME: return createServerRuntime();
+			case ServerTypePackage.UNPUBLISH_TYPE: return createUnpublishType();
+			default:
+				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ArchiveType createArchiveType() {
+		ArchiveTypeImpl archiveType = new ArchiveTypeImpl();
+		return archiveType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Classpath createClasspath() {
+		ClasspathImpl classpath = new ClasspathImpl();
+		return classpath;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LaunchConfiguration createLaunchConfiguration() {
+		LaunchConfigurationImpl launchConfiguration = new LaunchConfigurationImpl();
+		return launchConfiguration;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Module createModule() {
+		ModuleImpl module = new ModuleImpl();
+		return module;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Port createPort() {
+		PortImpl port = new PortImpl();
+		return port;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Project createProject() {
+		ProjectImpl project = new ProjectImpl();
+		return project;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Property createProperty() {
+		PropertyImpl property = new PropertyImpl();
+		return property;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Publisher createPublisher() {
+		PublisherImpl publisher = new PublisherImpl();
+		return publisher;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public PublishType createPublishType() {
+		PublishTypeImpl publishType = new PublishTypeImpl();
+		return publishType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ServerRuntime createServerRuntime() {
+		ServerRuntimeImpl serverRuntime = new ServerRuntimeImpl();
+		return serverRuntime;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public UnpublishType createUnpublishType() {
+		UnpublishTypeImpl unpublishType = new UnpublishTypeImpl();
+		return unpublishType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ServerTypePackage getServerTypePackage() {
+		return (ServerTypePackage)getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @deprecated
+	 * @generated
+	 */
+	public static ServerTypePackage getPackage() {
+		return ServerTypePackage.eINSTANCE;
+	}
+
+} //ServerTypeFactoryImpl
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/impl/ServerTypePackageImpl.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/impl/ServerTypePackageImpl.java
new file mode 100644
index 0000000..02e6613
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/impl/ServerTypePackageImpl.java
@@ -0,0 +1,1329 @@
+/**
+ * <copyright>
+ *******************************************************************************
+ * Copyright (c) 2004 Eteration Bilisim A.S.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ * 
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL ETERATION A.S. OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Eteration Bilisim A.S.  For more
+ * information on eteration, please see
+ * <http://www.eteration.com/>.
+ ***************************************************************************
+ * </copyright>
+ *
+ * $Id: ServerTypePackageImpl.java,v 1.1 2004/11/20 21:18:10 ndai Exp $
+ */
+package org.eclipse.jst.server.generic.servertype.definition.impl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import org.eclipse.emf.ecore.xml.type.XMLTypePackage;
+
+import org.eclipse.emf.ecore.xml.type.impl.XMLTypePackageImpl;
+
+import org.eclipse.jst.server.generic.servertype.definition.ArchiveType;
+import org.eclipse.jst.server.generic.servertype.definition.Classpath;
+import org.eclipse.jst.server.generic.servertype.definition.LaunchConfiguration;
+import org.eclipse.jst.server.generic.servertype.definition.Module;
+import org.eclipse.jst.server.generic.servertype.definition.Port;
+import org.eclipse.jst.server.generic.servertype.definition.Project;
+import org.eclipse.jst.server.generic.servertype.definition.Property;
+import org.eclipse.jst.server.generic.servertype.definition.PublishType;
+import org.eclipse.jst.server.generic.servertype.definition.Publisher;
+import org.eclipse.jst.server.generic.servertype.definition.ServerRuntime;
+import org.eclipse.jst.server.generic.servertype.definition.ServerTypeFactory;
+import org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage;
+import org.eclipse.jst.server.generic.servertype.definition.UnpublishType;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ServerTypePackageImpl extends EPackageImpl implements ServerTypePackage {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass archiveTypeEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass classpathEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass launchConfigurationEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass moduleEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass portEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass projectEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass propertyEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass publisherEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass publishTypeEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass serverRuntimeEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass unpublishTypeEClass = null;
+
+	/**
+	 * Creates an instance of the model <b>Package</b>, registered with
+	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+	 * package URI value.
+	 * <p>Note: the correct way to create the package is via the static
+	 * factory method {@link #init init()}, which also performs
+	 * initialization of the package, or returns the registered package,
+	 * if one already exists.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.emf.ecore.EPackage.Registry
+	 * @see org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private ServerTypePackageImpl() {
+		super(eNS_URI, ServerTypeFactory.eINSTANCE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static boolean isInited = false;
+
+	/**
+	 * Creates, registers, and initializes the <b>Package</b> for this
+	 * model, and for any others upon which it depends.  Simple
+	 * dependencies are satisfied by calling this method on all
+	 * dependent packages before doing anything else.  This method drives
+	 * initialization for interdependent packages directly, in parallel
+	 * with this package, itself.
+	 * <p>Of this package and its interdependencies, all packages which
+	 * have not yet been registered by their URI values are first created
+	 * and registered.  The packages are then initialized in two steps:
+	 * meta-model objects for all of the packages are created before any
+	 * are initialized, since one package's meta-model objects may refer to
+	 * those of another.
+	 * <p>Invocation of this method will not affect any packages that have
+	 * already been initialized.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #eNS_URI
+	 * @see #createPackageContents()
+	 * @see #initializePackageContents()
+	 * @generated
+	 */
+	public static ServerTypePackage init() {
+		if (isInited) return (ServerTypePackage)EPackage.Registry.INSTANCE.getEPackage(ServerTypePackage.eNS_URI);
+
+		// Obtain or create and register package
+		ServerTypePackageImpl theServerTypePackage = (ServerTypePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(eNS_URI) instanceof ServerTypePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(eNS_URI) : new ServerTypePackageImpl());
+
+		isInited = true;
+
+		// Initialize simple dependencies
+		XMLTypePackageImpl.init();
+
+		// Create package meta-data objects
+		theServerTypePackage.createPackageContents();
+
+		// Initialize created meta-data
+		theServerTypePackage.initializePackageContents();
+
+		// Mark meta-data to indicate it can't be changed
+		theServerTypePackage.freeze();
+
+		return theServerTypePackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getArchiveType() {
+		return archiveTypeEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getArchiveType_Path() {
+		return (EAttribute)archiveTypeEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getClasspath() {
+		return classpathEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getClasspath_Group() {
+		return (EAttribute)classpathEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getClasspath_Archive() {
+		return (EReference)classpathEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getClasspath_Id() {
+		return (EAttribute)classpathEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getClasspath_IsLibrary() {
+		return (EAttribute)classpathEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLaunchConfiguration() {
+		return launchConfigurationEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLaunchConfiguration_Class() {
+		return (EAttribute)launchConfigurationEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLaunchConfiguration_WorkingDirectory() {
+		return (EAttribute)launchConfigurationEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLaunchConfiguration_ProgramArguments() {
+		return (EAttribute)launchConfigurationEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLaunchConfiguration_VmParameters() {
+		return (EAttribute)launchConfigurationEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLaunchConfiguration_ClasspathReference() {
+		return (EAttribute)launchConfigurationEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getModule() {
+		return moduleEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getModule_Type() {
+		return (EAttribute)moduleEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getModule_PublishDir() {
+		return (EAttribute)moduleEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getModule_PublisherReference() {
+		return (EAttribute)moduleEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getPort() {
+		return portEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getPort_No() {
+		return (EAttribute)portEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getPort_Name() {
+		return (EAttribute)portEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getPort_Protocol() {
+		return (EAttribute)portEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getProject() {
+		return projectEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getProject_ClasspathReference() {
+		return (EAttribute)projectEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getProperty() {
+		return propertyEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getProperty_Context() {
+		return (EAttribute)propertyEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getProperty_Default() {
+		return (EAttribute)propertyEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getProperty_Id() {
+		return (EAttribute)propertyEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getProperty_Label() {
+		return (EAttribute)propertyEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getProperty_Type() {
+		return (EAttribute)propertyEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getPublisher() {
+		return publisherEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getPublisher_Group() {
+		return (EAttribute)publisherEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getPublisher_Publish() {
+		return (EReference)publisherEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getPublisher_Unpublish() {
+		return (EReference)publisherEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getPublisher_Id() {
+		return (EAttribute)publisherEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getPublishType() {
+		return publishTypeEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getPublishType_Task() {
+		return (EAttribute)publishTypeEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getPublishType_ClasspathReference() {
+		return (EAttribute)publishTypeEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getServerRuntime() {
+		return serverRuntimeEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getServerRuntime_Group() {
+		return (EAttribute)serverRuntimeEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getServerRuntime_Property() {
+		return (EReference)serverRuntimeEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getServerRuntime_Group1() {
+		return (EAttribute)serverRuntimeEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getServerRuntime_Port() {
+		return (EReference)serverRuntimeEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getServerRuntime_Group2() {
+		return (EAttribute)serverRuntimeEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getServerRuntime_Module() {
+		return (EReference)serverRuntimeEClass.getEStructuralFeatures().get(5);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getServerRuntime_Project() {
+		return (EReference)serverRuntimeEClass.getEStructuralFeatures().get(6);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getServerRuntime_Start() {
+		return (EReference)serverRuntimeEClass.getEStructuralFeatures().get(7);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getServerRuntime_Stop() {
+		return (EReference)serverRuntimeEClass.getEStructuralFeatures().get(8);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getServerRuntime_Group3() {
+		return (EAttribute)serverRuntimeEClass.getEStructuralFeatures().get(9);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getServerRuntime_Publisher() {
+		return (EReference)serverRuntimeEClass.getEStructuralFeatures().get(10);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getServerRuntime_Group4() {
+		return (EAttribute)serverRuntimeEClass.getEStructuralFeatures().get(11);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getServerRuntime_Classpath() {
+		return (EReference)serverRuntimeEClass.getEStructuralFeatures().get(12);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getServerRuntime_Name() {
+		return (EAttribute)serverRuntimeEClass.getEStructuralFeatures().get(13);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getServerRuntime_Version() {
+		return (EAttribute)serverRuntimeEClass.getEStructuralFeatures().get(14);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getUnpublishType() {
+		return unpublishTypeEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getUnpublishType_Task() {
+		return (EAttribute)unpublishTypeEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getUnpublishType_ClasspathReference() {
+		return (EAttribute)unpublishTypeEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ServerTypeFactory getServerTypeFactory() {
+		return (ServerTypeFactory)getEFactoryInstance();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isCreated = false;
+
+	/**
+	 * Creates the meta-model objects for the package.  This method is
+	 * guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void createPackageContents() {
+		if (isCreated) return;
+		isCreated = true;
+
+		// Create classes and their features
+		archiveTypeEClass = createEClass(ARCHIVE_TYPE);
+		createEAttribute(archiveTypeEClass, ARCHIVE_TYPE__PATH);
+
+		classpathEClass = createEClass(CLASSPATH);
+		createEAttribute(classpathEClass, CLASSPATH__GROUP);
+		createEReference(classpathEClass, CLASSPATH__ARCHIVE);
+		createEAttribute(classpathEClass, CLASSPATH__ID);
+		createEAttribute(classpathEClass, CLASSPATH__IS_LIBRARY);
+
+		launchConfigurationEClass = createEClass(LAUNCH_CONFIGURATION);
+		createEAttribute(launchConfigurationEClass, LAUNCH_CONFIGURATION__CLASS);
+		createEAttribute(launchConfigurationEClass, LAUNCH_CONFIGURATION__WORKING_DIRECTORY);
+		createEAttribute(launchConfigurationEClass, LAUNCH_CONFIGURATION__PROGRAM_ARGUMENTS);
+		createEAttribute(launchConfigurationEClass, LAUNCH_CONFIGURATION__VM_PARAMETERS);
+		createEAttribute(launchConfigurationEClass, LAUNCH_CONFIGURATION__CLASSPATH_REFERENCE);
+
+		moduleEClass = createEClass(MODULE);
+		createEAttribute(moduleEClass, MODULE__TYPE);
+		createEAttribute(moduleEClass, MODULE__PUBLISH_DIR);
+		createEAttribute(moduleEClass, MODULE__PUBLISHER_REFERENCE);
+
+		portEClass = createEClass(PORT);
+		createEAttribute(portEClass, PORT__NO);
+		createEAttribute(portEClass, PORT__NAME);
+		createEAttribute(portEClass, PORT__PROTOCOL);
+
+		projectEClass = createEClass(PROJECT);
+		createEAttribute(projectEClass, PROJECT__CLASSPATH_REFERENCE);
+
+		propertyEClass = createEClass(PROPERTY);
+		createEAttribute(propertyEClass, PROPERTY__CONTEXT);
+		createEAttribute(propertyEClass, PROPERTY__DEFAULT);
+		createEAttribute(propertyEClass, PROPERTY__ID);
+		createEAttribute(propertyEClass, PROPERTY__LABEL);
+		createEAttribute(propertyEClass, PROPERTY__TYPE);
+
+		publisherEClass = createEClass(PUBLISHER);
+		createEAttribute(publisherEClass, PUBLISHER__GROUP);
+		createEReference(publisherEClass, PUBLISHER__PUBLISH);
+		createEReference(publisherEClass, PUBLISHER__UNPUBLISH);
+		createEAttribute(publisherEClass, PUBLISHER__ID);
+
+		publishTypeEClass = createEClass(PUBLISH_TYPE);
+		createEAttribute(publishTypeEClass, PUBLISH_TYPE__TASK);
+		createEAttribute(publishTypeEClass, PUBLISH_TYPE__CLASSPATH_REFERENCE);
+
+		serverRuntimeEClass = createEClass(SERVER_RUNTIME);
+		createEAttribute(serverRuntimeEClass, SERVER_RUNTIME__GROUP);
+		createEReference(serverRuntimeEClass, SERVER_RUNTIME__PROPERTY);
+		createEAttribute(serverRuntimeEClass, SERVER_RUNTIME__GROUP1);
+		createEReference(serverRuntimeEClass, SERVER_RUNTIME__PORT);
+		createEAttribute(serverRuntimeEClass, SERVER_RUNTIME__GROUP2);
+		createEReference(serverRuntimeEClass, SERVER_RUNTIME__MODULE);
+		createEReference(serverRuntimeEClass, SERVER_RUNTIME__PROJECT);
+		createEReference(serverRuntimeEClass, SERVER_RUNTIME__START);
+		createEReference(serverRuntimeEClass, SERVER_RUNTIME__STOP);
+		createEAttribute(serverRuntimeEClass, SERVER_RUNTIME__GROUP3);
+		createEReference(serverRuntimeEClass, SERVER_RUNTIME__PUBLISHER);
+		createEAttribute(serverRuntimeEClass, SERVER_RUNTIME__GROUP4);
+		createEReference(serverRuntimeEClass, SERVER_RUNTIME__CLASSPATH);
+		createEAttribute(serverRuntimeEClass, SERVER_RUNTIME__NAME);
+		createEAttribute(serverRuntimeEClass, SERVER_RUNTIME__VERSION);
+
+		unpublishTypeEClass = createEClass(UNPUBLISH_TYPE);
+		createEAttribute(unpublishTypeEClass, UNPUBLISH_TYPE__TASK);
+		createEAttribute(unpublishTypeEClass, UNPUBLISH_TYPE__CLASSPATH_REFERENCE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isInitialized = false;
+
+	/**
+	 * Complete the initialization of the package and its meta-model.  This
+	 * method is guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void initializePackageContents() {
+		if (isInitialized) return;
+		isInitialized = true;
+
+		// Initialize package
+		setName(eNAME);
+		setNsPrefix(eNS_PREFIX);
+		setNsURI(eNS_URI);
+
+		// Obtain other dependent packages
+		XMLTypePackageImpl theXMLTypePackage = (XMLTypePackageImpl)EPackage.Registry.INSTANCE.getEPackage(XMLTypePackage.eNS_URI);
+
+		// Add supertypes to classes
+
+		// Initialize classes and features; add operations and parameters
+		initEClass(archiveTypeEClass, ArchiveType.class, "ArchiveType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getArchiveType_Path(), theXMLTypePackage.getString(), "path", null, 0, 1, ArchiveType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(classpathEClass, Classpath.class, "Classpath", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getClasspath_Group(), ecorePackage.getEFeatureMapEntry(), "group", null, 0, -1, Classpath.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getClasspath_Archive(), this.getArchiveType(), null, "archive", null, 1, -1, Classpath.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+		initEAttribute(getClasspath_Id(), theXMLTypePackage.getString(), "id", null, 0, 1, Classpath.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getClasspath_IsLibrary(), theXMLTypePackage.getBoolean(), "isLibrary", null, 0, 1, Classpath.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(launchConfigurationEClass, LaunchConfiguration.class, "LaunchConfiguration", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getLaunchConfiguration_Class(), theXMLTypePackage.getString(), "class", null, 1, 1, LaunchConfiguration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getLaunchConfiguration_WorkingDirectory(), theXMLTypePackage.getString(), "workingDirectory", null, 1, 1, LaunchConfiguration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getLaunchConfiguration_ProgramArguments(), theXMLTypePackage.getString(), "programArguments", null, 1, 1, LaunchConfiguration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getLaunchConfiguration_VmParameters(), theXMLTypePackage.getString(), "vmParameters", null, 1, 1, LaunchConfiguration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getLaunchConfiguration_ClasspathReference(), theXMLTypePackage.getString(), "classpathReference", null, 1, 1, LaunchConfiguration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(moduleEClass, Module.class, "Module", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getModule_Type(), theXMLTypePackage.getString(), "type", null, 1, 1, Module.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getModule_PublishDir(), theXMLTypePackage.getString(), "publishDir", null, 1, 1, Module.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getModule_PublisherReference(), theXMLTypePackage.getString(), "publisherReference", null, 1, 1, Module.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(portEClass, Port.class, "Port", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getPort_No(), theXMLTypePackage.getString(), "no", null, 1, 1, Port.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getPort_Name(), theXMLTypePackage.getString(), "name", null, 1, 1, Port.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getPort_Protocol(), theXMLTypePackage.getString(), "protocol", null, 1, 1, Port.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(projectEClass, Project.class, "Project", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getProject_ClasspathReference(), theXMLTypePackage.getString(), "classpathReference", null, 1, 1, Project.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(propertyEClass, Property.class, "Property", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getProperty_Context(), theXMLTypePackage.getString(), "context", null, 0, 1, Property.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getProperty_Default(), theXMLTypePackage.getString(), "default", null, 0, 1, Property.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getProperty_Id(), theXMLTypePackage.getString(), "id", null, 0, 1, Property.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getProperty_Label(), theXMLTypePackage.getString(), "label", null, 0, 1, Property.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getProperty_Type(), theXMLTypePackage.getString(), "type", null, 0, 1, Property.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(publisherEClass, Publisher.class, "Publisher", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getPublisher_Group(), ecorePackage.getEFeatureMapEntry(), "group", null, 0, -1, Publisher.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getPublisher_Publish(), this.getPublishType(), null, "publish", null, 1, -1, Publisher.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+		initEReference(getPublisher_Unpublish(), this.getUnpublishType(), null, "unpublish", null, 1, -1, Publisher.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+		initEAttribute(getPublisher_Id(), theXMLTypePackage.getString(), "id", null, 0, 1, Publisher.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(publishTypeEClass, PublishType.class, "PublishType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getPublishType_Task(), theXMLTypePackage.getString(), "task", null, 1, 1, PublishType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getPublishType_ClasspathReference(), theXMLTypePackage.getString(), "classpathReference", null, 1, 1, PublishType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(serverRuntimeEClass, ServerRuntime.class, "ServerRuntime", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getServerRuntime_Group(), ecorePackage.getEFeatureMapEntry(), "group", null, 0, -1, ServerRuntime.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getServerRuntime_Property(), this.getProperty(), null, "property", null, 0, -1, ServerRuntime.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+		initEAttribute(getServerRuntime_Group1(), ecorePackage.getEFeatureMapEntry(), "group1", null, 0, -1, ServerRuntime.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getServerRuntime_Port(), this.getPort(), null, "port", null, 0, -1, ServerRuntime.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+		initEAttribute(getServerRuntime_Group2(), ecorePackage.getEFeatureMapEntry(), "group2", null, 0, -1, ServerRuntime.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getServerRuntime_Module(), this.getModule(), null, "module", null, 1, -1, ServerRuntime.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+		initEReference(getServerRuntime_Project(), this.getProject(), null, "project", null, 1, 1, ServerRuntime.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getServerRuntime_Start(), this.getLaunchConfiguration(), null, "start", null, 1, 1, ServerRuntime.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getServerRuntime_Stop(), this.getLaunchConfiguration(), null, "stop", null, 1, 1, ServerRuntime.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getServerRuntime_Group3(), ecorePackage.getEFeatureMapEntry(), "group3", null, 0, -1, ServerRuntime.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getServerRuntime_Publisher(), this.getPublisher(), null, "publisher", null, 0, -1, ServerRuntime.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+		initEAttribute(getServerRuntime_Group4(), ecorePackage.getEFeatureMapEntry(), "group4", null, 0, -1, ServerRuntime.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getServerRuntime_Classpath(), this.getClasspath(), null, "classpath", null, 1, -1, ServerRuntime.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+		initEAttribute(getServerRuntime_Name(), theXMLTypePackage.getString(), "name", null, 1, 1, ServerRuntime.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getServerRuntime_Version(), theXMLTypePackage.getString(), "version", null, 0, 1, ServerRuntime.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(unpublishTypeEClass, UnpublishType.class, "UnpublishType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getUnpublishType_Task(), theXMLTypePackage.getString(), "task", null, 1, 1, UnpublishType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getUnpublishType_ClasspathReference(), theXMLTypePackage.getString(), "classpathReference", null, 1, 1, UnpublishType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		// Create resource
+		createResource(eNS_URI);
+
+		// Create annotations
+		// http:///org/eclipse/emf/ecore/util/ExtendedMetaData
+		createExtendedMetaDataAnnotations();
+	}
+
+	/**
+	 * Initializes the annotations for <b>http:///org/eclipse/emf/ecore/util/ExtendedMetaData</b>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void createExtendedMetaDataAnnotations() {
+		String source = "http:///org/eclipse/emf/ecore/util/ExtendedMetaData";		
+		addAnnotation
+		  (archiveTypeEClass, 
+		   source, 
+		   new String[] {
+			 "name", "archive_._type",
+			 "kind", "empty"
+		   });		
+		addAnnotation
+		  (getArchiveType_Path(), 
+		   source, 
+		   new String[] {
+			 "kind", "attribute",
+			 "name", "path"
+		   });		
+		addAnnotation
+		  (classpathEClass, 
+		   source, 
+		   new String[] {
+			 "name", "Classpath",
+			 "kind", "elementOnly"
+		   });		
+		addAnnotation
+		  (getClasspath_Group(), 
+		   source, 
+		   new String[] {
+			 "kind", "group",
+			 "name", "group:0"
+		   });		
+		addAnnotation
+		  (getClasspath_Archive(), 
+		   source, 
+		   new String[] {
+			 "kind", "element",
+			 "name", "archive",
+			 "group", "#group:0"
+		   });		
+		addAnnotation
+		  (getClasspath_Id(), 
+		   source, 
+		   new String[] {
+			 "kind", "attribute",
+			 "name", "id"
+		   });		
+		addAnnotation
+		  (getClasspath_IsLibrary(), 
+		   source, 
+		   new String[] {
+			 "kind", "attribute",
+			 "name", "isLibrary"
+		   });		
+		addAnnotation
+		  (launchConfigurationEClass, 
+		   source, 
+		   new String[] {
+			 "name", "LaunchConfiguration",
+			 "kind", "elementOnly"
+		   });		
+		addAnnotation
+		  (getLaunchConfiguration_Class(), 
+		   source, 
+		   new String[] {
+			 "kind", "element",
+			 "name", "class"
+		   });		
+		addAnnotation
+		  (getLaunchConfiguration_WorkingDirectory(), 
+		   source, 
+		   new String[] {
+			 "kind", "element",
+			 "name", "workingDirectory"
+		   });		
+		addAnnotation
+		  (getLaunchConfiguration_ProgramArguments(), 
+		   source, 
+		   new String[] {
+			 "kind", "element",
+			 "name", "programArguments"
+		   });		
+		addAnnotation
+		  (getLaunchConfiguration_VmParameters(), 
+		   source, 
+		   new String[] {
+			 "kind", "element",
+			 "name", "vmParameters"
+		   });		
+		addAnnotation
+		  (getLaunchConfiguration_ClasspathReference(), 
+		   source, 
+		   new String[] {
+			 "kind", "element",
+			 "name", "classpathReference"
+		   });		
+		addAnnotation
+		  (moduleEClass, 
+		   source, 
+		   new String[] {
+			 "name", "Module",
+			 "kind", "elementOnly"
+		   });		
+		addAnnotation
+		  (getModule_Type(), 
+		   source, 
+		   new String[] {
+			 "kind", "element",
+			 "name", "type"
+		   });		
+		addAnnotation
+		  (getModule_PublishDir(), 
+		   source, 
+		   new String[] {
+			 "kind", "element",
+			 "name", "publishDir"
+		   });		
+		addAnnotation
+		  (getModule_PublisherReference(), 
+		   source, 
+		   new String[] {
+			 "kind", "element",
+			 "name", "publisherReference"
+		   });		
+		addAnnotation
+		  (portEClass, 
+		   source, 
+		   new String[] {
+			 "name", "Port",
+			 "kind", "elementOnly"
+		   });		
+		addAnnotation
+		  (getPort_No(), 
+		   source, 
+		   new String[] {
+			 "kind", "element",
+			 "name", "no"
+		   });		
+		addAnnotation
+		  (getPort_Name(), 
+		   source, 
+		   new String[] {
+			 "kind", "element",
+			 "name", "name"
+		   });		
+		addAnnotation
+		  (getPort_Protocol(), 
+		   source, 
+		   new String[] {
+			 "kind", "element",
+			 "name", "protocol"
+		   });		
+		addAnnotation
+		  (projectEClass, 
+		   source, 
+		   new String[] {
+			 "name", "Project",
+			 "kind", "elementOnly"
+		   });		
+		addAnnotation
+		  (getProject_ClasspathReference(), 
+		   source, 
+		   new String[] {
+			 "kind", "element",
+			 "name", "classpathReference"
+		   });		
+		addAnnotation
+		  (propertyEClass, 
+		   source, 
+		   new String[] {
+			 "name", "Property",
+			 "kind", "empty"
+		   });		
+		addAnnotation
+		  (getProperty_Context(), 
+		   source, 
+		   new String[] {
+			 "kind", "attribute",
+			 "name", "context"
+		   });		
+		addAnnotation
+		  (getProperty_Default(), 
+		   source, 
+		   new String[] {
+			 "kind", "attribute",
+			 "name", "default"
+		   });		
+		addAnnotation
+		  (getProperty_Id(), 
+		   source, 
+		   new String[] {
+			 "kind", "attribute",
+			 "name", "id"
+		   });		
+		addAnnotation
+		  (getProperty_Label(), 
+		   source, 
+		   new String[] {
+			 "kind", "attribute",
+			 "name", "label"
+		   });		
+		addAnnotation
+		  (getProperty_Type(), 
+		   source, 
+		   new String[] {
+			 "kind", "attribute",
+			 "name", "type"
+		   });		
+		addAnnotation
+		  (publisherEClass, 
+		   source, 
+		   new String[] {
+			 "name", "Publisher",
+			 "kind", "elementOnly"
+		   });		
+		addAnnotation
+		  (getPublisher_Group(), 
+		   source, 
+		   new String[] {
+			 "kind", "group",
+			 "name", "group:0"
+		   });		
+		addAnnotation
+		  (getPublisher_Publish(), 
+		   source, 
+		   new String[] {
+			 "kind", "element",
+			 "name", "publish",
+			 "group", "#group:0"
+		   });		
+		addAnnotation
+		  (getPublisher_Unpublish(), 
+		   source, 
+		   new String[] {
+			 "kind", "element",
+			 "name", "unpublish",
+			 "group", "#group:0"
+		   });		
+		addAnnotation
+		  (getPublisher_Id(), 
+		   source, 
+		   new String[] {
+			 "kind", "attribute",
+			 "name", "id"
+		   });		
+		addAnnotation
+		  (publishTypeEClass, 
+		   source, 
+		   new String[] {
+			 "name", "publish_._type",
+			 "kind", "elementOnly"
+		   });		
+		addAnnotation
+		  (getPublishType_Task(), 
+		   source, 
+		   new String[] {
+			 "kind", "element",
+			 "name", "task"
+		   });		
+		addAnnotation
+		  (getPublishType_ClasspathReference(), 
+		   source, 
+		   new String[] {
+			 "kind", "element",
+			 "name", "classpathReference"
+		   });			
+		addAnnotation
+		  (serverRuntimeEClass, 
+		   source, 
+		   new String[] {
+			 "name", "ServerRuntime",
+			 "kind", "elementOnly"
+		   });		
+		addAnnotation
+		  (getServerRuntime_Group(), 
+		   source, 
+		   new String[] {
+			 "kind", "group",
+			 "name", "group:0"
+		   });		
+		addAnnotation
+		  (getServerRuntime_Property(), 
+		   source, 
+		   new String[] {
+			 "kind", "element",
+			 "name", "property",
+			 "group", "#group:0"
+		   });		
+		addAnnotation
+		  (getServerRuntime_Group1(), 
+		   source, 
+		   new String[] {
+			 "kind", "group",
+			 "name", "group:2"
+		   });		
+		addAnnotation
+		  (getServerRuntime_Port(), 
+		   source, 
+		   new String[] {
+			 "kind", "element",
+			 "name", "port",
+			 "group", "#group:2"
+		   });		
+		addAnnotation
+		  (getServerRuntime_Group2(), 
+		   source, 
+		   new String[] {
+			 "kind", "group",
+			 "name", "group:4"
+		   });		
+		addAnnotation
+		  (getServerRuntime_Module(), 
+		   source, 
+		   new String[] {
+			 "kind", "element",
+			 "name", "module",
+			 "group", "#group:4"
+		   });		
+		addAnnotation
+		  (getServerRuntime_Project(), 
+		   source, 
+		   new String[] {
+			 "kind", "element",
+			 "name", "project"
+		   });		
+		addAnnotation
+		  (getServerRuntime_Start(), 
+		   source, 
+		   new String[] {
+			 "kind", "element",
+			 "name", "start"
+		   });		
+		addAnnotation
+		  (getServerRuntime_Stop(), 
+		   source, 
+		   new String[] {
+			 "kind", "element",
+			 "name", "stop"
+		   });		
+		addAnnotation
+		  (getServerRuntime_Group3(), 
+		   source, 
+		   new String[] {
+			 "kind", "group",
+			 "name", "group:9"
+		   });		
+		addAnnotation
+		  (getServerRuntime_Publisher(), 
+		   source, 
+		   new String[] {
+			 "kind", "element",
+			 "name", "publisher",
+			 "group", "#group:9"
+		   });		
+		addAnnotation
+		  (getServerRuntime_Group4(), 
+		   source, 
+		   new String[] {
+			 "kind", "group",
+			 "name", "group:11"
+		   });		
+		addAnnotation
+		  (getServerRuntime_Classpath(), 
+		   source, 
+		   new String[] {
+			 "kind", "element",
+			 "name", "classpath",
+			 "group", "#group:11"
+		   });		
+		addAnnotation
+		  (getServerRuntime_Name(), 
+		   source, 
+		   new String[] {
+			 "kind", "attribute",
+			 "name", "name"
+		   });		
+		addAnnotation
+		  (getServerRuntime_Version(), 
+		   source, 
+		   new String[] {
+			 "kind", "attribute",
+			 "name", "version"
+		   });		
+		addAnnotation
+		  (unpublishTypeEClass, 
+		   source, 
+		   new String[] {
+			 "name", "unpublish_._type",
+			 "kind", "elementOnly"
+		   });		
+		addAnnotation
+		  (getUnpublishType_Task(), 
+		   source, 
+		   new String[] {
+			 "kind", "element",
+			 "name", "task"
+		   });		
+		addAnnotation
+		  (getUnpublishType_ClasspathReference(), 
+		   source, 
+		   new String[] {
+			 "kind", "element",
+			 "name", "classpathReference"
+		   });
+	}
+
+} //ServerTypePackageImpl
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/impl/UnpublishTypeImpl.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/impl/UnpublishTypeImpl.java
new file mode 100644
index 0000000..451a60e
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/impl/UnpublishTypeImpl.java
@@ -0,0 +1,242 @@
+/**
+ * <copyright>
+ *******************************************************************************
+ * Copyright (c) 2004 Eteration Bilisim A.S.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ * 
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL ETERATION A.S. OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Eteration Bilisim A.S.  For more
+ * information on eteration, please see
+ * <http://www.eteration.com/>.
+ ***************************************************************************
+ * </copyright>
+ *
+ * $Id: UnpublishTypeImpl.java,v 1.1 2004/11/20 21:18:10 ndai Exp $
+ */
+package org.eclipse.jst.server.generic.servertype.definition.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage;
+import org.eclipse.jst.server.generic.servertype.definition.UnpublishType;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Unpublish Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.impl.UnpublishTypeImpl#getTask <em>Task</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.impl.UnpublishTypeImpl#getClasspathReference <em>Classpath Reference</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class UnpublishTypeImpl extends EObjectImpl implements UnpublishType {
+	/**
+	 * The default value of the '{@link #getTask() <em>Task</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getTask()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String TASK_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getTask() <em>Task</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getTask()
+	 * @generated
+	 * @ordered
+	 */
+	protected String task = TASK_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getClasspathReference() <em>Classpath Reference</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getClasspathReference()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String CLASSPATH_REFERENCE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getClasspathReference() <em>Classpath Reference</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getClasspathReference()
+	 * @generated
+	 * @ordered
+	 */
+	protected String classpathReference = CLASSPATH_REFERENCE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected UnpublishTypeImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EClass eStaticClass() {
+		return ServerTypePackage.eINSTANCE.getUnpublishType();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getTask() {
+		return task;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setTask(String newTask) {
+		String oldTask = task;
+		task = newTask;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ServerTypePackage.UNPUBLISH_TYPE__TASK, oldTask, task));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getClasspathReference() {
+		return classpathReference;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setClasspathReference(String newClasspathReference) {
+		String oldClasspathReference = classpathReference;
+		classpathReference = newClasspathReference;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ServerTypePackage.UNPUBLISH_TYPE__CLASSPATH_REFERENCE, oldClasspathReference, classpathReference));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Object eGet(EStructuralFeature eFeature, boolean resolve) {
+		switch (eDerivedStructuralFeatureID(eFeature)) {
+			case ServerTypePackage.UNPUBLISH_TYPE__TASK:
+				return getTask();
+			case ServerTypePackage.UNPUBLISH_TYPE__CLASSPATH_REFERENCE:
+				return getClasspathReference();
+		}
+		return eDynamicGet(eFeature, resolve);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void eSet(EStructuralFeature eFeature, Object newValue) {
+		switch (eDerivedStructuralFeatureID(eFeature)) {
+			case ServerTypePackage.UNPUBLISH_TYPE__TASK:
+				setTask((String)newValue);
+				return;
+			case ServerTypePackage.UNPUBLISH_TYPE__CLASSPATH_REFERENCE:
+				setClasspathReference((String)newValue);
+				return;
+		}
+		eDynamicSet(eFeature, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void eUnset(EStructuralFeature eFeature) {
+		switch (eDerivedStructuralFeatureID(eFeature)) {
+			case ServerTypePackage.UNPUBLISH_TYPE__TASK:
+				setTask(TASK_EDEFAULT);
+				return;
+			case ServerTypePackage.UNPUBLISH_TYPE__CLASSPATH_REFERENCE:
+				setClasspathReference(CLASSPATH_REFERENCE_EDEFAULT);
+				return;
+		}
+		eDynamicUnset(eFeature);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean eIsSet(EStructuralFeature eFeature) {
+		switch (eDerivedStructuralFeatureID(eFeature)) {
+			case ServerTypePackage.UNPUBLISH_TYPE__TASK:
+				return TASK_EDEFAULT == null ? task != null : !TASK_EDEFAULT.equals(task);
+			case ServerTypePackage.UNPUBLISH_TYPE__CLASSPATH_REFERENCE:
+				return CLASSPATH_REFERENCE_EDEFAULT == null ? classpathReference != null : !CLASSPATH_REFERENCE_EDEFAULT.equals(classpathReference);
+		}
+		return eDynamicIsSet(eFeature);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (task: ");
+		result.append(task);
+		result.append(", classpathReference: ");
+		result.append(classpathReference);
+		result.append(')');
+		return result.toString();
+	}
+
+} //UnpublishTypeImpl
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/util/ServerTypeAdapterFactory.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/util/ServerTypeAdapterFactory.java
new file mode 100644
index 0000000..891ba08
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/util/ServerTypeAdapterFactory.java
@@ -0,0 +1,316 @@
+/**
+ * <copyright>
+ *******************************************************************************
+ * Copyright (c) 2004 Eteration Bilisim A.S.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ * 
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL ETERATION A.S. OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Eteration Bilisim A.S.  For more
+ * information on eteration, please see
+ * <http://www.eteration.com/>.
+ ***************************************************************************
+ * </copyright>
+ *
+ * $Id: ServerTypeAdapterFactory.java,v 1.1 2004/11/20 21:18:10 ndai Exp $
+ */
+package org.eclipse.jst.server.generic.servertype.definition.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.jst.server.generic.servertype.definition.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage
+ * @generated
+ */
+public class ServerTypeAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * The cached model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static ServerTypePackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ServerTypeAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = ServerTypePackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Returns whether this factory is applicable for the type of the object.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+	 * <!-- end-user-doc -->
+	 * @return whether this factory is applicable for the type of the object.
+	 * @generated
+	 */
+	public boolean isFactoryForType(Object object) {
+		if (object == modelPackage) {
+			return true;
+		}
+		if (object instanceof EObject) {
+			return ((EObject)object).eClass().getEPackage() == modelPackage;
+		}
+		return false;
+	}
+
+	/**
+	 * The switch the delegates to the <code>createXXX</code> methods.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ServerTypeSwitch modelSwitch =
+		new ServerTypeSwitch() {
+			public Object caseArchiveType(ArchiveType object) {
+				return createArchiveTypeAdapter();
+			}
+			public Object caseClasspath(Classpath object) {
+				return createClasspathAdapter();
+			}
+			public Object caseLaunchConfiguration(LaunchConfiguration object) {
+				return createLaunchConfigurationAdapter();
+			}
+			public Object caseModule(Module object) {
+				return createModuleAdapter();
+			}
+			public Object casePort(Port object) {
+				return createPortAdapter();
+			}
+			public Object caseProject(Project object) {
+				return createProjectAdapter();
+			}
+			public Object caseProperty(Property object) {
+				return createPropertyAdapter();
+			}
+			public Object casePublisher(Publisher object) {
+				return createPublisherAdapter();
+			}
+			public Object casePublishType(PublishType object) {
+				return createPublishTypeAdapter();
+			}
+			public Object caseServerRuntime(ServerRuntime object) {
+				return createServerRuntimeAdapter();
+			}
+			public Object caseUnpublishType(UnpublishType object) {
+				return createUnpublishTypeAdapter();
+			}
+			public Object defaultCase(EObject object) {
+				return createEObjectAdapter();
+			}
+		};
+
+	/**
+	 * Creates an adapter for the <code>target</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param target the object to adapt.
+	 * @return the adapter for the <code>target</code>.
+	 * @generated
+	 */
+	public Adapter createAdapter(Notifier target) {
+		return (Adapter)modelSwitch.doSwitch((EObject)target);
+	}
+
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.jst.server.generic.servertype.definition.ArchiveType <em>Archive Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.ArchiveType
+	 * @generated
+	 */
+	public Adapter createArchiveTypeAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.jst.server.generic.servertype.definition.Classpath <em>Classpath</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.Classpath
+	 * @generated
+	 */
+	public Adapter createClasspathAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.jst.server.generic.servertype.definition.LaunchConfiguration <em>Launch Configuration</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.LaunchConfiguration
+	 * @generated
+	 */
+	public Adapter createLaunchConfigurationAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.jst.server.generic.servertype.definition.Module <em>Module</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.Module
+	 * @generated
+	 */
+	public Adapter createModuleAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.jst.server.generic.servertype.definition.Port <em>Port</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.Port
+	 * @generated
+	 */
+	public Adapter createPortAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.jst.server.generic.servertype.definition.Project <em>Project</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.Project
+	 * @generated
+	 */
+	public Adapter createProjectAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.jst.server.generic.servertype.definition.Property <em>Property</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.Property
+	 * @generated
+	 */
+	public Adapter createPropertyAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.jst.server.generic.servertype.definition.Publisher <em>Publisher</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.Publisher
+	 * @generated
+	 */
+	public Adapter createPublisherAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.jst.server.generic.servertype.definition.PublishType <em>Publish Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.PublishType
+	 * @generated
+	 */
+	public Adapter createPublishTypeAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.jst.server.generic.servertype.definition.ServerRuntime <em>Server Runtime</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.ServerRuntime
+	 * @generated
+	 */
+	public Adapter createServerRuntimeAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.jst.server.generic.servertype.definition.UnpublishType <em>Unpublish Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.UnpublishType
+	 * @generated
+	 */
+	public Adapter createUnpublishTypeAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for the default case.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @generated
+	 */
+	public Adapter createEObjectAdapter() {
+		return null;
+	}
+
+} //ServerTypeAdapterFactory
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/util/ServerTypeResourceFactoryImpl.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/util/ServerTypeResourceFactoryImpl.java
new file mode 100644
index 0000000..f472d2e
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/util/ServerTypeResourceFactoryImpl.java
@@ -0,0 +1,89 @@
+/**
+ * <copyright>
+ *******************************************************************************
+ * Copyright (c) 2004 Eteration Bilisim A.S.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ * 
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL ETERATION A.S. OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Eteration Bilisim A.S.  For more
+ * information on eteration, please see
+ * <http://www.eteration.com/>.
+ ***************************************************************************
+ * </copyright>
+ *
+ * $Id: ServerTypeResourceFactoryImpl.java,v 1.1 2004/11/20 21:18:10 ndai Exp $
+ */
+package org.eclipse.jst.server.generic.servertype.definition.util;
+
+import org.eclipse.emf.common.util.URI;
+
+import org.eclipse.emf.ecore.resource.Resource;
+
+import org.eclipse.emf.ecore.util.ExtendedMetaData;
+
+import org.eclipse.emf.ecore.xmi.XMLResource;
+
+import org.eclipse.emf.ecore.xmi.impl.XMLResourceFactoryImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Resource Factory</b> associated with the package.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jst.server.generic.servertype.definition.util.ServerTypeResourceImpl
+ * @generated
+ */
+public class ServerTypeResourceFactoryImpl extends XMLResourceFactoryImpl {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ExtendedMetaData extendedMetaData;
+
+	/**
+	 * Creates an instance of the resource factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ServerTypeResourceFactoryImpl() {
+		super();
+		extendedMetaData = ExtendedMetaData.INSTANCE;
+	}
+
+	/**
+	 * Creates an instance of the resource.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Resource createResource(URI uri) {
+		XMLResource result = new ServerTypeResourceImpl(uri);
+		result.getDefaultSaveOptions().put(XMLResource.OPTION_EXTENDED_META_DATA, extendedMetaData);
+		result.getDefaultLoadOptions().put(XMLResource.OPTION_EXTENDED_META_DATA, extendedMetaData);
+
+		result.getDefaultSaveOptions().put(XMLResource.OPTION_SCHEMA_LOCATION, Boolean.TRUE);
+		result.getDefaultSaveOptions().put(XMLResource.OPTION_USE_ENCODED_ATTRIBUTE_STYLE, Boolean.TRUE);
+
+		result.getDefaultLoadOptions().put(XMLResource.OPTION_USE_LEXICAL_HANDLER, Boolean.TRUE);
+		return result;
+	}
+
+} //ServerTypeResourceFactoryImpl
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/util/ServerTypeResourceImpl.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/util/ServerTypeResourceImpl.java
new file mode 100644
index 0000000..d3030a2
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/util/ServerTypeResourceImpl.java
@@ -0,0 +1,58 @@
+/**
+ * <copyright>
+ *******************************************************************************
+ * Copyright (c) 2004 Eteration Bilisim A.S.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ * 
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL ETERATION A.S. OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Eteration Bilisim A.S.  For more
+ * information on eteration, please see
+ * <http://www.eteration.com/>.
+ ***************************************************************************
+ * </copyright>
+ *
+ * $Id: ServerTypeResourceImpl.java,v 1.1 2004/11/20 21:18:10 ndai Exp $
+ */
+package org.eclipse.jst.server.generic.servertype.definition.util;
+
+import org.eclipse.emf.common.util.URI;
+
+import org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Resource </b> associated with the package.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jst.server.generic.servertype.definition.util.ServerTypeResourceFactoryImpl
+ * @generated
+ */
+public class ServerTypeResourceImpl extends XMLResourceImpl {
+	/**
+	 * Creates an instance of the resource.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param uri the URI of the new resource.
+	 * @generated
+	 */
+	public ServerTypeResourceImpl(URI uri) {
+		super(uri);
+	}
+
+} //ServerTypeResourceFactoryImpl
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/util/ServerTypeSwitch.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/util/ServerTypeSwitch.java
new file mode 100644
index 0000000..b891eb7
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/util/ServerTypeSwitch.java
@@ -0,0 +1,366 @@
+/**
+ * <copyright>
+ *******************************************************************************
+ * Copyright (c) 2004 Eteration Bilisim A.S.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ * 
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL ETERATION A.S. OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Eteration Bilisim A.S.  For more
+ * information on eteration, please see
+ * <http://www.eteration.com/>.
+ ***************************************************************************
+ * </copyright>
+ *
+ * $Id: ServerTypeSwitch.java,v 1.1 2004/11/20 21:18:10 ndai Exp $
+ */
+package org.eclipse.jst.server.generic.servertype.definition.util;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.jst.server.generic.servertype.definition.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jst.server.generic.servertype.definition.ServerTypePackage
+ * @generated
+ */
+public class ServerTypeSwitch {
+	/**
+	 * The cached model package
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static ServerTypePackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ServerTypeSwitch() {
+		if (modelPackage == null) {
+			modelPackage = ServerTypePackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
+	public Object doSwitch(EObject theEObject) {
+		return doSwitch(theEObject.eClass(), theEObject);
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
+	protected Object doSwitch(EClass theEClass, EObject theEObject) {
+		if (theEClass.eContainer() == modelPackage) {
+			return doSwitch(theEClass.getClassifierID(), theEObject);
+		}
+		else {
+			List eSuperTypes = theEClass.getESuperTypes();
+			return
+				eSuperTypes.isEmpty() ?
+					defaultCase(theEObject) :
+					doSwitch((EClass)eSuperTypes.get(0), theEObject);
+		}
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
+	protected Object doSwitch(int classifierID, EObject theEObject) {
+		switch (classifierID) {
+			case ServerTypePackage.ARCHIVE_TYPE: {
+				ArchiveType archiveType = (ArchiveType)theEObject;
+				Object result = caseArchiveType(archiveType);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case ServerTypePackage.CLASSPATH: {
+				Classpath classpath = (Classpath)theEObject;
+				Object result = caseClasspath(classpath);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case ServerTypePackage.LAUNCH_CONFIGURATION: {
+				LaunchConfiguration launchConfiguration = (LaunchConfiguration)theEObject;
+				Object result = caseLaunchConfiguration(launchConfiguration);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case ServerTypePackage.MODULE: {
+				Module module = (Module)theEObject;
+				Object result = caseModule(module);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case ServerTypePackage.PORT: {
+				Port port = (Port)theEObject;
+				Object result = casePort(port);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case ServerTypePackage.PROJECT: {
+				Project project = (Project)theEObject;
+				Object result = caseProject(project);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case ServerTypePackage.PROPERTY: {
+				Property property = (Property)theEObject;
+				Object result = caseProperty(property);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case ServerTypePackage.PUBLISHER: {
+				Publisher publisher = (Publisher)theEObject;
+				Object result = casePublisher(publisher);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case ServerTypePackage.PUBLISH_TYPE: {
+				PublishType publishType = (PublishType)theEObject;
+				Object result = casePublishType(publishType);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case ServerTypePackage.SERVER_RUNTIME: {
+				ServerRuntime serverRuntime = (ServerRuntime)theEObject;
+				Object result = caseServerRuntime(serverRuntime);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case ServerTypePackage.UNPUBLISH_TYPE: {
+				UnpublishType unpublishType = (UnpublishType)theEObject;
+				Object result = caseUnpublishType(unpublishType);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			default: return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpretting the object as an instance of '<em>Archive Type</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpretting the object as an instance of '<em>Archive Type</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public Object caseArchiveType(ArchiveType object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpretting the object as an instance of '<em>Classpath</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpretting the object as an instance of '<em>Classpath</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public Object caseClasspath(Classpath object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpretting the object as an instance of '<em>Launch Configuration</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpretting the object as an instance of '<em>Launch Configuration</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public Object caseLaunchConfiguration(LaunchConfiguration object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpretting the object as an instance of '<em>Module</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpretting the object as an instance of '<em>Module</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public Object caseModule(Module object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpretting the object as an instance of '<em>Port</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpretting the object as an instance of '<em>Port</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public Object casePort(Port object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpretting the object as an instance of '<em>Project</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpretting the object as an instance of '<em>Project</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public Object caseProject(Project object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpretting the object as an instance of '<em>Property</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpretting the object as an instance of '<em>Property</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public Object caseProperty(Property object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpretting the object as an instance of '<em>Publisher</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpretting the object as an instance of '<em>Publisher</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public Object casePublisher(Publisher object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpretting the object as an instance of '<em>Publish Type</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpretting the object as an instance of '<em>Publish Type</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public Object casePublishType(PublishType object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpretting the object as an instance of '<em>Server Runtime</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpretting the object as an instance of '<em>Server Runtime</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public Object caseServerRuntime(ServerRuntime object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpretting the object as an instance of '<em>Unpublish Type</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpretting the object as an instance of '<em>Unpublish Type</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public Object caseUnpublishType(UnpublishType object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpretting the object as an instance of '<em>EObject</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch, but this is the last case anyway.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpretting the object as an instance of '<em>EObject</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+	 * @generated
+	 */
+	public Object defaultCase(EObject object) {
+		return null;
+	}
+
+} //ServerTypeSwitch
diff --git a/plugins/org.eclipse.jst.server.generic.core/xsd/ServerTypeDefinitionSchema.xsd b/plugins/org.eclipse.jst.server.generic.core/xsd/ServerTypeDefinitionSchema.xsd
new file mode 100644
index 0000000..db3de5a
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/xsd/ServerTypeDefinitionSchema.xsd
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+	targetNamespace="http://eclipse.org/jst/server/generic/ServerTypeDefinition"
+	xmlns:jst="http://eclipse.org/jst/server/generic/ServerTypeDefinition">
+
+
+
+	<complexType name="ServerRuntime">
+		<annotation>
+			<documentation>
+				Generic Server Type Definition. It must have a list of
+				properties.
+			</documentation>
+		</annotation>
+
+		<sequence minOccurs="1" maxOccurs="1">
+			<sequence minOccurs="0" maxOccurs="unbounded">
+				<element name="property" type="jst:Property"></element>
+			</sequence>
+
+			<sequence minOccurs="0" maxOccurs="unbounded">
+				<element name="port" type="jst:Port" />
+			</sequence>
+
+			<sequence minOccurs="1" maxOccurs="unbounded">
+				<element name="module" type="jst:Module" />
+			</sequence>
+			<element name="project" type="jst:Project"/>
+			<element name="start" type="jst:LaunchConfiguration" />
+			<element name="stop" type="jst:LaunchConfiguration" />
+
+			<sequence minOccurs="0" maxOccurs="unbounded">
+				<element name="publisher" type="jst:Publisher" />
+			</sequence>
+
+			<sequence minOccurs="1" maxOccurs="unbounded">
+				<element name="classpath" type="jst:Classpath" />
+			</sequence>
+		</sequence>
+
+		<attribute name="name" type="string" use="required" />
+		<attribute name="version" type="string"></attribute>
+	</complexType>
+
+	<complexType name="Property">
+		<attribute name="id" type="string" />
+		<attribute name="label" type="string" />
+		<attribute name="type" type="string" />
+		<attribute name="context" type="string" />
+		<attribute name="default" type="string" />
+	</complexType>
+
+	<complexType name="Module">
+		<sequence>
+			<element name="type" type="string" />
+			<element name="publishDir" type="string" />
+			<element name="publisherReference" type="string" />
+		</sequence>
+	</complexType>
+
+	<complexType name="LaunchConfiguration">
+		<sequence>
+			<element name="class" type="string" />
+			<element name="workingDirectory" type="string" />
+			<element name="programArguments" type="string" />
+			<element name="vmParameters" type="string" />
+			<element name="classpathReference" type="string" />
+		</sequence>
+	</complexType>
+
+	<complexType name="Port">
+		<sequence>
+			<element name="no" type="string" />
+			<element name="name" type="string" />
+			<element name="protocol" type="string" />
+		</sequence>
+	</complexType>
+
+	<complexType name="Classpath">
+		<sequence minOccurs="1" maxOccurs="unbounded">
+			<element name="archive">
+				<complexType>
+					<attribute name="path" type="string" />
+				</complexType>
+			</element>
+		</sequence>
+		<attribute name="id" type="string" />
+		<attribute name="isLibrary" type="boolean" use="optional" />
+	</complexType>
+
+	<complexType name="Publisher">
+		<sequence minOccurs="1" maxOccurs="unbounded">
+			<element name="publish">
+
+				<complexType>
+					<sequence>
+						<element name="task" type="string" />
+						<element name="classpathReference"
+							type="string" />
+					</sequence>
+				</complexType>
+			</element>
+			<element name="unpublish">
+				<complexType>
+				  <sequence>
+					<element name="task" type="string" />
+					<element name="classpathReference" type="string" />
+				  </sequence>
+				</complexType>
+			</element>
+		</sequence>
+		<attribute name="id" type="string" />
+	</complexType>
+
+	<complexType name="Project">
+		<sequence minOccurs="1" maxOccurs="1">
+		<element name="classpathReference" type="string"></element>
+		</sequence>
+	</complexType>
+
+</schema>
diff --git a/plugins/org.eclipse.jst.server.generic.core/xsd/org.eclipse.jst.server.generic.servertype.ecore b/plugins/org.eclipse.jst.server.generic.core/xsd/org.eclipse.jst.server.generic.servertype.ecore
new file mode 100644
index 0000000..582ec37
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/xsd/org.eclipse.jst.server.generic.servertype.ecore
@@ -0,0 +1,400 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0"
+    xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="definition"
+    nsURI="http://eclipse.org/jst/server/generic/ServerTypeDefinition" nsPrefix="definition">
+  <eClassifiers xsi:type="ecore:EClass" name="ArchiveType">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="archive_._type"/>
+      <details key="kind" value="empty"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="path" unique="false" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="path"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Classpath">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="Classpath"/>
+      <details key="kind" value="elementOnly"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="group" unique="false" upperBound="-1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFeatureMapEntry">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="group"/>
+        <details key="name" value="group:0"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="archive" lowerBound="1"
+        upperBound="-1" eType="#//ArchiveType" volatile="true" transient="true" derived="true"
+        containment="true" resolveProxies="false">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="archive"/>
+        <details key="group" value="#group:0"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="id" unique="false" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="id"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isLibrary" unique="false"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"
+        unsettable="true">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="isLibrary"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="LaunchConfiguration">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="LaunchConfiguration"/>
+      <details key="kind" value="elementOnly"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="class" unique="false" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="class"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="workingDirectory" unique="false"
+        lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="workingDirectory"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="programArguments" unique="false"
+        lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="programArguments"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="vmParameters" unique="false"
+        lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="vmParameters"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="classpathReference" unique="false"
+        lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="classpathReference"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Module">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="Module"/>
+      <details key="kind" value="elementOnly"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" unique="false" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="type"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="publishDir" unique="false"
+        lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="publishDir"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="publisherReference" unique="false"
+        lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="publisherReference"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Port">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="Port"/>
+      <details key="kind" value="elementOnly"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="no" unique="false" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="no"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" unique="false" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="name"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="protocol" unique="false"
+        lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="protocol"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Project">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="Project"/>
+      <details key="kind" value="elementOnly"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="classpathReference" unique="false"
+        lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="classpathReference"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Property">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="Property"/>
+      <details key="kind" value="empty"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="context" unique="false"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="context"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="default" unique="false"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="default"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="id" unique="false" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="id"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="label" unique="false" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="label"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" unique="false" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="type"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Publisher">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="Publisher"/>
+      <details key="kind" value="elementOnly"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="group" unique="false" upperBound="-1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFeatureMapEntry">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="group"/>
+        <details key="name" value="group:0"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="publish" lowerBound="1"
+        upperBound="-1" eType="#//PublishType" volatile="true" transient="true" derived="true"
+        containment="true" resolveProxies="false">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="publish"/>
+        <details key="group" value="#group:0"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="unpublish" lowerBound="1"
+        upperBound="-1" eType="#//UnpublishType" volatile="true" transient="true"
+        derived="true" containment="true" resolveProxies="false">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="unpublish"/>
+        <details key="group" value="#group:0"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="id" unique="false" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="id"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="PublishType">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="publish_._type"/>
+      <details key="kind" value="elementOnly"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="task" unique="false" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="task"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="classpathReference" unique="false"
+        lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="classpathReference"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="ServerRuntime">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;Generic Server Type Definition. It must have a list of&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;properties.&#xD;&#xA;&#x9;&#x9;&#x9;"/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="ServerRuntime"/>
+      <details key="kind" value="elementOnly"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="group" unique="false" upperBound="-1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFeatureMapEntry">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="group"/>
+        <details key="name" value="group:0"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="property" upperBound="-1"
+        eType="#//Property" volatile="true" transient="true" derived="true" containment="true"
+        resolveProxies="false">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="property"/>
+        <details key="group" value="#group:0"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="group1" unique="false"
+        upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFeatureMapEntry">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="group"/>
+        <details key="name" value="group:2"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="port" upperBound="-1" eType="#//Port"
+        volatile="true" transient="true" derived="true" containment="true" resolveProxies="false">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="port"/>
+        <details key="group" value="#group:2"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="group2" unique="false"
+        upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFeatureMapEntry">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="group"/>
+        <details key="name" value="group:4"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="module" lowerBound="1"
+        upperBound="-1" eType="#//Module" volatile="true" transient="true" derived="true"
+        containment="true" resolveProxies="false">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="module"/>
+        <details key="group" value="#group:4"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="project" lowerBound="1"
+        eType="#//Project" containment="true" resolveProxies="false">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="project"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="start" lowerBound="1" eType="#//LaunchConfiguration"
+        containment="true" resolveProxies="false">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="start"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="stop" lowerBound="1" eType="#//LaunchConfiguration"
+        containment="true" resolveProxies="false">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="stop"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="group3" unique="false"
+        upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFeatureMapEntry">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="group"/>
+        <details key="name" value="group:9"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="publisher" upperBound="-1"
+        eType="#//Publisher" volatile="true" transient="true" derived="true" containment="true"
+        resolveProxies="false">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="publisher"/>
+        <details key="group" value="#group:9"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="group4" unique="false"
+        upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFeatureMapEntry">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="group"/>
+        <details key="name" value="group:11"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="classpath" lowerBound="1"
+        upperBound="-1" eType="#//Classpath" volatile="true" transient="true" derived="true"
+        containment="true" resolveProxies="false">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="classpath"/>
+        <details key="group" value="#group:11"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" unique="false" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="name"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="version" unique="false"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="version"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="UnpublishType">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="unpublish_._type"/>
+      <details key="kind" value="elementOnly"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="task" unique="false" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="task"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="classpathReference" unique="false"
+        lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="classpathReference"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+</ecore:EPackage>
diff --git a/plugins/org.eclipse.jst.server.generic.core/xsd/servertype.genmodel b/plugins/org.eclipse.jst.server.generic.core/xsd/servertype.genmodel
new file mode 100644
index 0000000..c042602
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/xsd/servertype.genmodel
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0"
+    xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+    xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/org.eclipse.jst.server.generic.model/src"
+    editDirectory="/org.eclipse.jst.server.generic.model.edit/src" editorDirectory="/org.eclipse.jst.server.generic.model.editor/src"
+    modelPluginID="org.eclipse.jst.server.generic.model" runtimeJar="true" modelName="Servertype"
+    editPluginClass="org.eclipse.jst.server.generic.server.type.definition.provider.ServertypeEditPlugin"
+    editorPluginClass="org.eclipse.jst.server.generic.server.type.definition.presentation.ServertypeEditorPlugin"
+    runtimeCompatibility="false">
+  <foreignModel>ServerTypeDefinitionSchema.xsd</foreignModel>
+  <genPackages prefix="ServerType" basePackage="org.eclipse.jst.server.generic.servertype"
+      resource="XML" ecorePackage="org.eclipse.jst.server.generic.servertype.ecore#/">
+    <genClasses ecoreClass="org.eclipse.jst.server.generic.servertype.ecore#//ArchiveType">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.jst.server.generic.servertype.ecore#//ArchiveType/path"/>
+    </genClasses>
+    <genClasses ecoreClass="org.eclipse.jst.server.generic.servertype.ecore#//Classpath">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EAttribute org.eclipse.jst.server.generic.servertype.ecore#//Classpath/group"/>
+      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference org.eclipse.jst.server.generic.servertype.ecore#//Classpath/archive"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.jst.server.generic.servertype.ecore#//Classpath/id"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.jst.server.generic.servertype.ecore#//Classpath/isLibrary"/>
+    </genClasses>
+    <genClasses ecoreClass="org.eclipse.jst.server.generic.servertype.ecore#//LaunchConfiguration">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.jst.server.generic.servertype.ecore#//LaunchConfiguration/class"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.jst.server.generic.servertype.ecore#//LaunchConfiguration/workingDirectory"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.jst.server.generic.servertype.ecore#//LaunchConfiguration/programArguments"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.jst.server.generic.servertype.ecore#//LaunchConfiguration/vmParameters"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.jst.server.generic.servertype.ecore#//LaunchConfiguration/classpathReference"/>
+    </genClasses>
+    <genClasses ecoreClass="org.eclipse.jst.server.generic.servertype.ecore#//Module">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.jst.server.generic.servertype.ecore#//Module/type"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.jst.server.generic.servertype.ecore#//Module/publishDir"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.jst.server.generic.servertype.ecore#//Module/publisherReference"/>
+    </genClasses>
+    <genClasses ecoreClass="org.eclipse.jst.server.generic.servertype.ecore#//Port">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.jst.server.generic.servertype.ecore#//Port/no"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.jst.server.generic.servertype.ecore#//Port/name"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.jst.server.generic.servertype.ecore#//Port/protocol"/>
+    </genClasses>
+    <genClasses ecoreClass="org.eclipse.jst.server.generic.servertype.ecore#//Project">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.jst.server.generic.servertype.ecore#//Project/classpathReference"/>
+    </genClasses>
+    <genClasses ecoreClass="org.eclipse.jst.server.generic.servertype.ecore#//Property">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.jst.server.generic.servertype.ecore#//Property/context"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.jst.server.generic.servertype.ecore#//Property/default"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.jst.server.generic.servertype.ecore#//Property/id"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.jst.server.generic.servertype.ecore#//Property/label"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.jst.server.generic.servertype.ecore#//Property/type"/>
+    </genClasses>
+    <genClasses ecoreClass="org.eclipse.jst.server.generic.servertype.ecore#//Publisher">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EAttribute org.eclipse.jst.server.generic.servertype.ecore#//Publisher/group"/>
+      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference org.eclipse.jst.server.generic.servertype.ecore#//Publisher/publish"/>
+      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference org.eclipse.jst.server.generic.servertype.ecore#//Publisher/unpublish"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.jst.server.generic.servertype.ecore#//Publisher/id"/>
+    </genClasses>
+    <genClasses ecoreClass="org.eclipse.jst.server.generic.servertype.ecore#//PublishType">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.jst.server.generic.servertype.ecore#//PublishType/task"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.jst.server.generic.servertype.ecore#//PublishType/classpathReference"/>
+    </genClasses>
+    <genClasses ecoreClass="org.eclipse.jst.server.generic.servertype.ecore#//ServerRuntime">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EAttribute org.eclipse.jst.server.generic.servertype.ecore#//ServerRuntime/group"/>
+      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference org.eclipse.jst.server.generic.servertype.ecore#//ServerRuntime/property"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EAttribute org.eclipse.jst.server.generic.servertype.ecore#//ServerRuntime/group1"/>
+      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference org.eclipse.jst.server.generic.servertype.ecore#//ServerRuntime/port"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EAttribute org.eclipse.jst.server.generic.servertype.ecore#//ServerRuntime/group2"/>
+      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference org.eclipse.jst.server.generic.servertype.ecore#//ServerRuntime/module"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference org.eclipse.jst.server.generic.servertype.ecore#//ServerRuntime/project"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference org.eclipse.jst.server.generic.servertype.ecore#//ServerRuntime/start"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference org.eclipse.jst.server.generic.servertype.ecore#//ServerRuntime/stop"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EAttribute org.eclipse.jst.server.generic.servertype.ecore#//ServerRuntime/group3"/>
+      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference org.eclipse.jst.server.generic.servertype.ecore#//ServerRuntime/publisher"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EAttribute org.eclipse.jst.server.generic.servertype.ecore#//ServerRuntime/group4"/>
+      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference org.eclipse.jst.server.generic.servertype.ecore#//ServerRuntime/classpath"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.jst.server.generic.servertype.ecore#//ServerRuntime/name"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.jst.server.generic.servertype.ecore#//ServerRuntime/version"/>
+    </genClasses>
+    <genClasses ecoreClass="org.eclipse.jst.server.generic.servertype.ecore#//UnpublishType">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.jst.server.generic.servertype.ecore#//UnpublishType/task"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.jst.server.generic.servertype.ecore#//UnpublishType/classpathReference"/>
+    </genClasses>
+  </genPackages>
+</genmodel:GenModel>
diff --git a/plugins/org.eclipse.jst.server.generic.core/xsd/servertype.xsd2ecore b/plugins/org.eclipse.jst.server.generic.core/xsd/servertype.xsd2ecore
new file mode 100644
index 0000000..999e4e4
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/xsd/servertype.xsd2ecore
@@ -0,0 +1,132 @@
+<?xml version="1.0" encoding="ASCII"?>
+<xsd2ecore:XSD2EcoreMappingRoot xmi:version="2.0"
+    xmlns:xmi="http://www.omg.org/XMI" xmlns:xsd2ecore="http://www.eclipse.org/emf/2002/XSD2Ecore" inputs="ServerTypeDefinitionSchema.xsd#/"
+    outputs="org.eclipse.jst.server.generic.servertype.ecore#/" topToBottom="true">
+  <nested inputs="bundleentry://175/cache/www.w3.org/2001/XMLSchema.xsd#//string;XSDSimpleTypeDefinition=7"
+      outputs="http://www.eclipse.org/emf/2003/XMLType#//String"/>
+  <nested inputs="ServerTypeDefinitionSchema.xsd#//Classpath;XSDComplexTypeDefinition=5/XSDParticle/XSDModelGroup/XSDParticle/archive;XSDElementDeclaration/XSDComplexTypeDefinition"
+      outputs="org.eclipse.jst.server.generic.servertype.ecore#//ArchiveType">
+    <nested inputs="ServerTypeDefinitionSchema.xsd#//Classpath;XSDComplexTypeDefinition=5/XSDParticle/XSDModelGroup/XSDParticle/archive;XSDElementDeclaration/XSDComplexTypeDefinition/XSDAttributeUse"
+        outputs="org.eclipse.jst.server.generic.servertype.ecore#//ArchiveType/path"/>
+  </nested>
+  <nested inputs="bundleentry://175/cache/www.w3.org/2001/XMLSchema.xsd#//boolean;XSDSimpleTypeDefinition=8"
+      outputs="http://www.eclipse.org/emf/2003/XMLType#//Boolean"/>
+  <nested inputs="ServerTypeDefinitionSchema.xsd#//Classpath;XSDComplexTypeDefinition=5"
+      outputs="org.eclipse.jst.server.generic.servertype.ecore#//Classpath">
+    <nested inputs="ServerTypeDefinitionSchema.xsd#//Classpath;XSDComplexTypeDefinition=5/XSDParticle"
+        outputs="org.eclipse.jst.server.generic.servertype.ecore#//Classpath/group"/>
+    <nested inputs="ServerTypeDefinitionSchema.xsd#//Classpath;XSDComplexTypeDefinition=5/XSDParticle/XSDModelGroup/XSDParticle"
+        outputs="org.eclipse.jst.server.generic.servertype.ecore#//Classpath/archive"/>
+    <nested inputs="ServerTypeDefinitionSchema.xsd#//Classpath;XSDComplexTypeDefinition=5/XSDAttributeUse"
+        outputs="org.eclipse.jst.server.generic.servertype.ecore#//Classpath/id"/>
+    <nested inputs="ServerTypeDefinitionSchema.xsd#//Classpath;XSDComplexTypeDefinition=5/XSDAttributeUse=1"
+        outputs="org.eclipse.jst.server.generic.servertype.ecore#//Classpath/isLibrary"/>
+  </nested>
+  <nested inputs="ServerTypeDefinitionSchema.xsd#//LaunchConfiguration;XSDComplexTypeDefinition=3"
+      outputs="org.eclipse.jst.server.generic.servertype.ecore#//LaunchConfiguration">
+    <nested inputs="ServerTypeDefinitionSchema.xsd#//LaunchConfiguration;XSDComplexTypeDefinition=3/XSDParticle/XSDModelGroup/XSDParticle"
+        outputs="org.eclipse.jst.server.generic.servertype.ecore#//LaunchConfiguration/class"/>
+    <nested inputs="ServerTypeDefinitionSchema.xsd#//LaunchConfiguration;XSDComplexTypeDefinition=3/XSDParticle/XSDModelGroup/XSDParticle=1"
+        outputs="org.eclipse.jst.server.generic.servertype.ecore#//LaunchConfiguration/workingDirectory"/>
+    <nested inputs="ServerTypeDefinitionSchema.xsd#//LaunchConfiguration;XSDComplexTypeDefinition=3/XSDParticle/XSDModelGroup/XSDParticle=2"
+        outputs="org.eclipse.jst.server.generic.servertype.ecore#//LaunchConfiguration/programArguments"/>
+    <nested inputs="ServerTypeDefinitionSchema.xsd#//LaunchConfiguration;XSDComplexTypeDefinition=3/XSDParticle/XSDModelGroup/XSDParticle=3"
+        outputs="org.eclipse.jst.server.generic.servertype.ecore#//LaunchConfiguration/vmParameters"/>
+    <nested inputs="ServerTypeDefinitionSchema.xsd#//LaunchConfiguration;XSDComplexTypeDefinition=3/XSDParticle/XSDModelGroup/XSDParticle=4"
+        outputs="org.eclipse.jst.server.generic.servertype.ecore#//LaunchConfiguration/classpathReference"/>
+  </nested>
+  <nested inputs="ServerTypeDefinitionSchema.xsd#//Module;XSDComplexTypeDefinition=2"
+      outputs="org.eclipse.jst.server.generic.servertype.ecore#//Module">
+    <nested inputs="ServerTypeDefinitionSchema.xsd#//Module;XSDComplexTypeDefinition=2/XSDParticle/XSDModelGroup/XSDParticle"
+        outputs="org.eclipse.jst.server.generic.servertype.ecore#//Module/type"/>
+    <nested inputs="ServerTypeDefinitionSchema.xsd#//Module;XSDComplexTypeDefinition=2/XSDParticle/XSDModelGroup/XSDParticle=1"
+        outputs="org.eclipse.jst.server.generic.servertype.ecore#//Module/publishDir"/>
+    <nested inputs="ServerTypeDefinitionSchema.xsd#//Module;XSDComplexTypeDefinition=2/XSDParticle/XSDModelGroup/XSDParticle=2"
+        outputs="org.eclipse.jst.server.generic.servertype.ecore#//Module/publisherReference"/>
+  </nested>
+  <nested inputs="ServerTypeDefinitionSchema.xsd#//Port;XSDComplexTypeDefinition=4"
+      outputs="org.eclipse.jst.server.generic.servertype.ecore#//Port">
+    <nested inputs="ServerTypeDefinitionSchema.xsd#//Port;XSDComplexTypeDefinition=4/XSDParticle/XSDModelGroup/XSDParticle"
+        outputs="org.eclipse.jst.server.generic.servertype.ecore#//Port/no"/>
+    <nested inputs="ServerTypeDefinitionSchema.xsd#//Port;XSDComplexTypeDefinition=4/XSDParticle/XSDModelGroup/XSDParticle=1"
+        outputs="org.eclipse.jst.server.generic.servertype.ecore#//Port/name"/>
+    <nested inputs="ServerTypeDefinitionSchema.xsd#//Port;XSDComplexTypeDefinition=4/XSDParticle/XSDModelGroup/XSDParticle=2"
+        outputs="org.eclipse.jst.server.generic.servertype.ecore#//Port/protocol"/>
+  </nested>
+  <nested inputs="ServerTypeDefinitionSchema.xsd#//Project;XSDComplexTypeDefinition=7"
+      outputs="org.eclipse.jst.server.generic.servertype.ecore#//Project">
+    <nested inputs="ServerTypeDefinitionSchema.xsd#//Project;XSDComplexTypeDefinition=7/XSDParticle/XSDModelGroup/XSDParticle"
+        outputs="org.eclipse.jst.server.generic.servertype.ecore#//Project/classpathReference"/>
+  </nested>
+  <nested inputs="ServerTypeDefinitionSchema.xsd#//Property;XSDComplexTypeDefinition=1"
+      outputs="org.eclipse.jst.server.generic.servertype.ecore#//Property">
+    <nested inputs="ServerTypeDefinitionSchema.xsd#//Property;XSDComplexTypeDefinition=1/XSDAttributeUse=3"
+        outputs="org.eclipse.jst.server.generic.servertype.ecore#//Property/context"/>
+    <nested inputs="ServerTypeDefinitionSchema.xsd#//Property;XSDComplexTypeDefinition=1/XSDAttributeUse=4"
+        outputs="org.eclipse.jst.server.generic.servertype.ecore#//Property/default"/>
+    <nested inputs="ServerTypeDefinitionSchema.xsd#//Property;XSDComplexTypeDefinition=1/XSDAttributeUse"
+        outputs="org.eclipse.jst.server.generic.servertype.ecore#//Property/id"/>
+    <nested inputs="ServerTypeDefinitionSchema.xsd#//Property;XSDComplexTypeDefinition=1/XSDAttributeUse=1"
+        outputs="org.eclipse.jst.server.generic.servertype.ecore#//Property/label"/>
+    <nested inputs="ServerTypeDefinitionSchema.xsd#//Property;XSDComplexTypeDefinition=1/XSDAttributeUse=2"
+        outputs="org.eclipse.jst.server.generic.servertype.ecore#//Property/type"/>
+  </nested>
+  <nested inputs="ServerTypeDefinitionSchema.xsd#//Publisher;XSDComplexTypeDefinition=6/XSDParticle/XSDModelGroup/XSDParticle/publish;XSDElementDeclaration/XSDComplexTypeDefinition"
+      outputs="org.eclipse.jst.server.generic.servertype.ecore#//PublishType">
+    <nested inputs="ServerTypeDefinitionSchema.xsd#//Publisher;XSDComplexTypeDefinition=6/XSDParticle/XSDModelGroup/XSDParticle/publish;XSDElementDeclaration/XSDComplexTypeDefinition/XSDParticle/XSDModelGroup/XSDParticle"
+        outputs="org.eclipse.jst.server.generic.servertype.ecore#//PublishType/task"/>
+    <nested inputs="ServerTypeDefinitionSchema.xsd#//Publisher;XSDComplexTypeDefinition=6/XSDParticle/XSDModelGroup/XSDParticle/publish;XSDElementDeclaration/XSDComplexTypeDefinition/XSDParticle/XSDModelGroup/XSDParticle=1"
+        outputs="org.eclipse.jst.server.generic.servertype.ecore#//PublishType/classpathReference"/>
+  </nested>
+  <nested inputs="ServerTypeDefinitionSchema.xsd#//Publisher;XSDComplexTypeDefinition=6/XSDParticle/XSDModelGroup/XSDParticle=1/unpublish;XSDElementDeclaration/XSDComplexTypeDefinition"
+      outputs="org.eclipse.jst.server.generic.servertype.ecore#//UnpublishType">
+    <nested inputs="ServerTypeDefinitionSchema.xsd#//Publisher;XSDComplexTypeDefinition=6/XSDParticle/XSDModelGroup/XSDParticle=1/unpublish;XSDElementDeclaration/XSDComplexTypeDefinition/XSDParticle/XSDModelGroup/XSDParticle"
+        outputs="org.eclipse.jst.server.generic.servertype.ecore#//UnpublishType/task"/>
+    <nested inputs="ServerTypeDefinitionSchema.xsd#//Publisher;XSDComplexTypeDefinition=6/XSDParticle/XSDModelGroup/XSDParticle=1/unpublish;XSDElementDeclaration/XSDComplexTypeDefinition/XSDParticle/XSDModelGroup/XSDParticle=1"
+        outputs="org.eclipse.jst.server.generic.servertype.ecore#//UnpublishType/classpathReference"/>
+  </nested>
+  <nested inputs="ServerTypeDefinitionSchema.xsd#//Publisher;XSDComplexTypeDefinition=6"
+      outputs="org.eclipse.jst.server.generic.servertype.ecore#//Publisher">
+    <nested inputs="ServerTypeDefinitionSchema.xsd#//Publisher;XSDComplexTypeDefinition=6/XSDParticle"
+        outputs="org.eclipse.jst.server.generic.servertype.ecore#//Publisher/group"/>
+    <nested inputs="ServerTypeDefinitionSchema.xsd#//Publisher;XSDComplexTypeDefinition=6/XSDParticle/XSDModelGroup/XSDParticle"
+        outputs="org.eclipse.jst.server.generic.servertype.ecore#//Publisher/publish"/>
+    <nested inputs="ServerTypeDefinitionSchema.xsd#//Publisher;XSDComplexTypeDefinition=6/XSDParticle/XSDModelGroup/XSDParticle=1"
+        outputs="org.eclipse.jst.server.generic.servertype.ecore#//Publisher/unpublish"/>
+    <nested inputs="ServerTypeDefinitionSchema.xsd#//Publisher;XSDComplexTypeDefinition=6/XSDAttributeUse"
+        outputs="org.eclipse.jst.server.generic.servertype.ecore#//Publisher/id"/>
+  </nested>
+  <nested inputs="ServerTypeDefinitionSchema.xsd#//ServerRuntime;XSDComplexTypeDefinition"
+      outputs="org.eclipse.jst.server.generic.servertype.ecore#//ServerRuntime">
+    <nested inputs="ServerTypeDefinitionSchema.xsd#//ServerRuntime;XSDComplexTypeDefinition/XSDParticle/XSDModelGroup/XSDParticle"
+        outputs="org.eclipse.jst.server.generic.servertype.ecore#//ServerRuntime/group"/>
+    <nested inputs="ServerTypeDefinitionSchema.xsd#//ServerRuntime;XSDComplexTypeDefinition/XSDParticle/XSDModelGroup/XSDParticle/XSDModelGroup/XSDParticle"
+        outputs="org.eclipse.jst.server.generic.servertype.ecore#//ServerRuntime/property"/>
+    <nested inputs="ServerTypeDefinitionSchema.xsd#//ServerRuntime;XSDComplexTypeDefinition/XSDParticle/XSDModelGroup/XSDParticle=1"
+        outputs="org.eclipse.jst.server.generic.servertype.ecore#//ServerRuntime/group1"/>
+    <nested inputs="ServerTypeDefinitionSchema.xsd#//ServerRuntime;XSDComplexTypeDefinition/XSDParticle/XSDModelGroup/XSDParticle=1/XSDModelGroup/XSDParticle"
+        outputs="org.eclipse.jst.server.generic.servertype.ecore#//ServerRuntime/port"/>
+    <nested inputs="ServerTypeDefinitionSchema.xsd#//ServerRuntime;XSDComplexTypeDefinition/XSDParticle/XSDModelGroup/XSDParticle=2"
+        outputs="org.eclipse.jst.server.generic.servertype.ecore#//ServerRuntime/group2"/>
+    <nested inputs="ServerTypeDefinitionSchema.xsd#//ServerRuntime;XSDComplexTypeDefinition/XSDParticle/XSDModelGroup/XSDParticle=2/XSDModelGroup/XSDParticle"
+        outputs="org.eclipse.jst.server.generic.servertype.ecore#//ServerRuntime/module"/>
+    <nested inputs="ServerTypeDefinitionSchema.xsd#//ServerRuntime;XSDComplexTypeDefinition/XSDParticle/XSDModelGroup/XSDParticle=3"
+        outputs="org.eclipse.jst.server.generic.servertype.ecore#//ServerRuntime/project"/>
+    <nested inputs="ServerTypeDefinitionSchema.xsd#//ServerRuntime;XSDComplexTypeDefinition/XSDParticle/XSDModelGroup/XSDParticle=4"
+        outputs="org.eclipse.jst.server.generic.servertype.ecore#//ServerRuntime/start"/>
+    <nested inputs="ServerTypeDefinitionSchema.xsd#//ServerRuntime;XSDComplexTypeDefinition/XSDParticle/XSDModelGroup/XSDParticle=5"
+        outputs="org.eclipse.jst.server.generic.servertype.ecore#//ServerRuntime/stop"/>
+    <nested inputs="ServerTypeDefinitionSchema.xsd#//ServerRuntime;XSDComplexTypeDefinition/XSDParticle/XSDModelGroup/XSDParticle=6"
+        outputs="org.eclipse.jst.server.generic.servertype.ecore#//ServerRuntime/group3"/>
+    <nested inputs="ServerTypeDefinitionSchema.xsd#//ServerRuntime;XSDComplexTypeDefinition/XSDParticle/XSDModelGroup/XSDParticle=6/XSDModelGroup/XSDParticle"
+        outputs="org.eclipse.jst.server.generic.servertype.ecore#//ServerRuntime/publisher"/>
+    <nested inputs="ServerTypeDefinitionSchema.xsd#//ServerRuntime;XSDComplexTypeDefinition/XSDParticle/XSDModelGroup/XSDParticle=7"
+        outputs="org.eclipse.jst.server.generic.servertype.ecore#//ServerRuntime/group4"/>
+    <nested inputs="ServerTypeDefinitionSchema.xsd#//ServerRuntime;XSDComplexTypeDefinition/XSDParticle/XSDModelGroup/XSDParticle=7/XSDModelGroup/XSDParticle"
+        outputs="org.eclipse.jst.server.generic.servertype.ecore#//ServerRuntime/classpath"/>
+    <nested inputs="ServerTypeDefinitionSchema.xsd#//ServerRuntime;XSDComplexTypeDefinition/XSDAttributeUse"
+        outputs="org.eclipse.jst.server.generic.servertype.ecore#//ServerRuntime/name"/>
+    <nested inputs="ServerTypeDefinitionSchema.xsd#//ServerRuntime;XSDComplexTypeDefinition/XSDAttributeUse=1"
+        outputs="org.eclipse.jst.server.generic.servertype.ecore#//ServerRuntime/version"/>
+  </nested>
+</xsd2ecore:XSD2EcoreMappingRoot>
diff --git a/plugins/org.eclipse.jst.server.generic.ui/.classpath b/plugins/org.eclipse.jst.server.generic.ui/.classpath
new file mode 100644
index 0000000..065ac06
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.ui/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/org.eclipse.jst.server.generic.ui/.cvsignore b/plugins/org.eclipse.jst.server.generic.ui/.cvsignore
new file mode 100644
index 0000000..058a1b7
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.ui/.cvsignore
@@ -0,0 +1,5 @@
+bin
+build.xml
+genericui.jar
+org.eclipse.jst.server.generic.ui_1.0.0.jar
+temp.folder
diff --git a/plugins/org.eclipse.jst.server.generic.ui/.project b/plugins/org.eclipse.jst.server.generic.ui/.project
new file mode 100644
index 0000000..af14ba8
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.ui/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.jst.server.generic.ui</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/plugins/org.eclipse.jst.server.generic.ui/build.properties b/plugins/org.eclipse.jst.server.generic.ui/build.properties
new file mode 100644
index 0000000..6b4a2a0
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.ui/build.properties
@@ -0,0 +1,10 @@
+source.genericui.jar = src/
+output.genericui.jar = bin/
+bin.includes = plugin.xml,\
+               genericui.jar,\
+               icons/,\
+               plugin.properties
+src.includes = icons/,\
+               plugin.xml,\
+               plugin.properties,\
+               src/
diff --git a/plugins/org.eclipse.jst.server.generic.ui/icons/obj16/lomboz.gif b/plugins/org.eclipse.jst.server.generic.ui/icons/obj16/lomboz.gif
new file mode 100644
index 0000000..5b3a198
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.ui/icons/obj16/lomboz.gif
Binary files differ
diff --git a/plugins/org.eclipse.jst.server.generic.ui/icons/wizban/logo.gif b/plugins/org.eclipse.jst.server.generic.ui/icons/wizban/logo.gif
new file mode 100644
index 0000000..854d525
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.ui/icons/wizban/logo.gif
Binary files differ
diff --git a/plugins/org.eclipse.jst.server.generic.ui/plugin.properties b/plugins/org.eclipse.jst.server.generic.ui/plugin.properties
new file mode 100644
index 0000000..8a61dcb
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.ui/plugin.properties
@@ -0,0 +1,4 @@
+pluginName=Generic Server Plugin UI
+providerName=Eteration.com
+pluginDescription=UI Components for the generic server plugin.
+
diff --git a/plugins/org.eclipse.jst.server.generic.ui/plugin.xml b/plugins/org.eclipse.jst.server.generic.ui/plugin.xml
new file mode 100644
index 0000000..fe94808
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.ui/plugin.xml
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+<plugin
+   id="org.eclipse.jst.server.generic.ui"
+   name="%pluginName"
+   version="1.0.0"
+   provider-name="%providerName"
+   class="org.eclipse.jst.server.generic.ui.GenericUiPlugin"
+   description="%pluginDescription">
+
+   <runtime>
+      <library name="genericui.jar">
+         <export name="*"/>
+      </library>
+   </runtime>
+
+   <requires>
+      <import plugin="org.eclipse.ui"/>
+      <import plugin="org.eclipse.core.runtime"/>
+      <import plugin="org.eclipse.wst.server.ui"/>
+       <import plugin="org.eclipse.debug.ui"/>
+      <import plugin="org.eclipse.jdt.debug.ui"/>
+      <import plugin="org.eclipse.jst.server.generic.core"/>
+      <import plugin="org.eclipse.wst.server.core" />
+      <import plugin="org.eclipse.jst.server.core"/>
+      <import plugin="org.eclipse.emf"/>
+      <import plugin="org.eclipse.emf.ecore"/>
+      <import plugin="org.eclipse.emf.ecore.xmi"/>
+   </requires>
+
+ <extension
+       point="org.eclipse.wst.server.ui.wizardFragments">
+     <fragment
+        id="org.eclipse.jst.server.generic.runtime"
+        typeIds="org.eclipse.jst.server.generic.runtime"
+        class="org.eclipse.jst.server.generic.internal.ui.GenericServerRuntimeWizardFragment"/>       
+ </extension>
+
+<extension
+       point="org.eclipse.wst.server.ui.wizardFragments">
+     <fragment
+        id="org.eclipse.jst.server.generic.server"
+        typeIds="org.eclipse.jst.server.generic"
+        class="org.eclipse.jst.server.generic.internal.ui.GenericServerWizardFragment"/>       
+ </extension>
+  <extension point="org.eclipse.wst.server.ui.editorPages">
+      <page
+         id="org.eclipse.jst.server.generic.configuration.editor.webmodule"
+         order="20"
+         name="Lomboz server Edit"
+         typeIds="org.eclipse.jst.server.generic.*"
+         class="org.eclipse.jst.server.generic.internal.ui.GenericServerEditorPartFactory"/>
+   </extension>
+   
+    <extension point="org.eclipse.wst.server.ui.editorPageSections">
+      <section
+         id="org.eclipse.jst.server.generic.editor.general"
+         order="0"
+         insertionId="org.eclipse.wst.server.editor.overview.left"
+         typeIds="org.eclipse.jst.server.generic.*"
+         class="org.eclipse.jst.server.generic.internal.ui.GenericServerEditorSectionFactory"/>
+ <!--     <section
+         id="org.eclipse.jst.server.tomcat.configuration.editor.port"
+         order="10"
+         insertionId="org.eclipse.wst.server.editor.overview.right"
+         typeIds="org.eclipse.jst.server.tomcat.*"
+         class="org.eclipse.jst.server.tomcat.ui.internal.editor.ConfigurationPortEditorSectionFactory"/>
+      <section
+         id="org.eclipse.jst.server.tomcat.configuration.editor.mime"
+         order="20"
+         insertionId="org.eclipse.wst.server.editor.overview.right"
+         typeIds="org.eclipse.jst.server.tomcat.*"
+         class="org.eclipse.jst.server.tomcat.ui.internal.editor.ConfigurationMimeEditorSectionFactory"/>
+ -->        
+   </extension>
+   <extension point="org.eclipse.wst.server.ui.serverImages">
+      <image
+         id="org.eclipse.jst.server.generic.image"
+         icon="icons/obj16/lomboz.gif"
+         typeIds="org.eclipse.jst.server.generic.runtime"/>
+     <image
+         id="org.eclipse.jst.server.generic.image"
+         icon="icons/obj16/lomboz.gif"
+         typeIds="org.eclipse.jst.server.generic"/>
+	</extension>
+  <extension point="org.eclipse.debug.ui.launchConfigurationTypeImages">
+    <launchConfigurationTypeImage
+      id="org.eclipse.jst.server.generic.image.ui.launchConfigurationTypeImage"
+      configTypeID="org.eclipse.jst.server.generic.core.launchConfigurationType"
+      icon="icons/obj16/lomboz.gif">
+    </launchConfigurationTypeImage>
+  </extension>
+  
+  <extension point="org.eclipse.debug.ui.launchConfigurationTabGroups">
+    <launchConfigurationTabGroup
+      id="org.eclipse.jst.server.generic.internal.ui.launchConfigurationTabGroup"
+      type="org.eclipse.jst.server.generic.core.launchConfigurationType"
+      class="org.eclipse.jst.server.generic.internal.ui.GenericLaunchConfigurationTabGroup">
+    </launchConfigurationTabGroup>
+  </extension>
+   
+
+</plugin>
diff --git a/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/internal/ui/GenericLaunchConfigurationTabGroup.java b/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/internal/ui/GenericLaunchConfigurationTabGroup.java
new file mode 100644
index 0000000..b217b1f
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/internal/ui/GenericLaunchConfigurationTabGroup.java
@@ -0,0 +1,66 @@
+/*******************************************************************************
+ * Copyright (c) 2004 Eteration Bilisim A.S.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ * 
+ * Contributors:
+ *     Gorkem Ercan - initial API and implementation
+ *     Naci M. Dai
+ * 
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL ETERATION A.S. OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Eteration Bilisim A.S.  For more
+ * information on eteration, please see
+ * <http://www.eteration.com/>.
+ ***************************************************************************/
+package org.eclipse.jst.server.generic.internal.ui;
+
+import org.eclipse.debug.ui.AbstractLaunchConfigurationTabGroup;
+import org.eclipse.debug.ui.CommonTab;
+import org.eclipse.debug.ui.EnvironmentTab;
+import org.eclipse.debug.ui.ILaunchConfigurationDialog;
+import org.eclipse.debug.ui.ILaunchConfigurationTab;
+import org.eclipse.debug.ui.sourcelookup.SourceLookupTab;
+import org.eclipse.jdt.debug.ui.launchConfigurations.JavaArgumentsTab;
+import org.eclipse.jdt.debug.ui.launchConfigurations.JavaClasspathTab;
+import org.eclipse.jdt.debug.ui.launchConfigurations.JavaJRETab;
+import org.eclipse.wst.server.ui.ServerLaunchConfigurationTab;
+
+
+public class GenericLaunchConfigurationTabGroup extends AbstractLaunchConfigurationTabGroup{
+	/**
+	 * @see org.eclipse.debug.ui.ILaunchConfigurationTabGroup ILaunchConfigurationTabGroup#createTabs(ILaunchConfigurationDialog, String)
+	 */
+	public void createTabs(ILaunchConfigurationDialog dialog, String mode) {
+		ILaunchConfigurationTab[] tabs = new ILaunchConfigurationTab[7];
+		tabs[0] = new ServerLaunchConfigurationTab(new String[] { "org.eclipse.jst.server.generic" });
+		tabs[0].setLaunchConfigurationDialog(dialog);
+		tabs[1] = new JavaArgumentsTab();
+		tabs[1].setLaunchConfigurationDialog(dialog);
+		tabs[2] = new JavaClasspathTab();
+		tabs[2].setLaunchConfigurationDialog(dialog);
+		tabs[3] = new SourceLookupTab();
+		tabs[3].setLaunchConfigurationDialog(dialog);
+		tabs[4] = new EnvironmentTab();
+		tabs[4].setLaunchConfigurationDialog(dialog);
+		tabs[5] = new JavaJRETab();
+		tabs[5].setLaunchConfigurationDialog(dialog);	 
+		tabs[6] = new CommonTab();
+		tabs[6].setLaunchConfigurationDialog(dialog);
+		setTabs(tabs);
+	}}
diff --git a/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/internal/ui/GenericServerEditorPartFactory.java b/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/internal/ui/GenericServerEditorPartFactory.java
new file mode 100644
index 0000000..9d7d80c
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/internal/ui/GenericServerEditorPartFactory.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2004 Eteration Bilisim A.S.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ * 
+ * Contributors:
+ *     Gorkem Ercan - initial API and implementation
+ *     Naci M. Dai
+ * 
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL ETERATION A.S. OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Eteration Bilisim A.S.  For more
+ * information on eteration, please see
+ * <http://www.eteration.com/>.
+ ***************************************************************************/
+package org.eclipse.jst.server.generic.internal.ui;
+
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.wst.server.core.IServer;
+import org.eclipse.wst.server.core.IServerConfiguration;
+import org.eclipse.wst.server.ui.editor.IServerEditorPartFactoryDelegate;
+
+
+public class GenericServerEditorPartFactory implements
+		IServerEditorPartFactoryDelegate {
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.wst.server.ui.editor.IServerEditorPartFactoryDelegate#shouldCreatePage(org.eclipse.wst.server.core.IServer, org.eclipse.wst.server.core.IServerConfiguration)
+	 */
+	public boolean shouldCreatePage(IServer server,
+			IServerConfiguration configuration) {
+		// TODO Auto-generated method stub
+		return true;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.wst.server.ui.editor.IServerEditorPartFactoryDelegate#createPage()
+	 */
+	public IEditorPart createPage() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+}
diff --git a/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/internal/ui/GenericServerEditorSectionFactory.java b/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/internal/ui/GenericServerEditorSectionFactory.java
new file mode 100644
index 0000000..f1ba87f
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/internal/ui/GenericServerEditorSectionFactory.java
@@ -0,0 +1,58 @@
+package org.eclipse.jst.server.generic.internal.ui;
+/*******************************************************************************
+ * Copyright (c) 2004 Eteration Bilisim A.S.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ * 
+ * Contributors:
+ *     Gorkem Ercan - initial API and implementation
+ *     Naci M. Dai
+ * 
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL ETERATION A.S. OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Eteration Bilisim A.S.  For more
+ * information on eteration, please see
+ * <http://www.eteration.com/>.
+ ***************************************************************************/
+
+import org.eclipse.wst.server.core.IServer;
+import org.eclipse.wst.server.core.IServerConfiguration;
+import org.eclipse.wst.server.ui.editor.IServerEditorPageSectionFactoryDelegate;
+import org.eclipse.wst.server.ui.editor.IServerEditorSection;
+
+public class GenericServerEditorSectionFactory implements
+		IServerEditorPageSectionFactoryDelegate {
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.wst.server.ui.editor.IServerEditorPageSectionFactoryDelegate#shouldCreateSection(org.eclipse.wst.server.core.IServer, org.eclipse.wst.server.core.IServerConfiguration)
+	 */
+	public boolean shouldCreateSection(IServer server,
+			IServerConfiguration configuration) {
+		// TODO Auto-generated method stub
+		return true;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.wst.server.ui.editor.IServerEditorPageSectionFactoryDelegate#createSection()
+	 */
+	public IServerEditorSection createSection() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+}
diff --git a/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/internal/ui/GenericServerRuntimeWizardFragment.java b/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/internal/ui/GenericServerRuntimeWizardFragment.java
new file mode 100644
index 0000000..4264cc6
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/internal/ui/GenericServerRuntimeWizardFragment.java
@@ -0,0 +1,284 @@
+/*******************************************************************************
+ * Copyright (c) 2004 Eteration Bilisim A.S.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ * 
+ * Contributors:
+ *     Gorkem Ercan - initial API and implementation
+ *     Naci M. Dai
+ * 
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Eteration Bilisim A.S.  For more
+ * information on eteration, please see
+ * <http://www.eteration.com/>.
+ ***************************************************************************/
+package org.eclipse.jst.server.generic.internal.ui;
+
+
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.jface.dialogs.IMessageProvider;
+import org.eclipse.jst.server.generic.internal.core.GenericServerRuntime;
+import org.eclipse.jst.server.generic.servertype.definition.ServerRuntime;
+import org.eclipse.jst.server.generic.ui.GenericServerUIMessages;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.wst.server.core.IElement;
+import org.eclipse.wst.server.core.IResourceManager;
+import org.eclipse.wst.server.core.IRuntimeType;
+import org.eclipse.wst.server.core.IRuntimeWorkingCopy;
+import org.eclipse.wst.server.core.ITaskModel;
+import org.eclipse.wst.server.core.ServerCore;
+import org.eclipse.wst.server.ui.wizard.IWizardHandle;
+
+/**
+ * A serverDefinitionType aware wizard for defining runtimes.
+ * 
+ * @author Gorkem Ercan
+ */
+public class GenericServerRuntimeWizardFragment extends ServerDefinitionTypeAwareWizardFragment {
+	
+
+	private Group selectionBar;
+	private Combo fServerCombo;
+	private ServerTypeDefinitionGroup fServerPanel;
+	private IRuntimeWorkingCopy fRuntimeWC;
+    private Map fServerRuntimeProperties;
+    private String fSelectedServerType;
+    
+	
+	/**
+	 * Constructor
+	 */
+	public GenericServerRuntimeWizardFragment() {
+		super();
+	}
+	/* (non-Javadoc)
+	 * @see com.ibm.wtp.server.ui.wizard.IWizardFragment#isComplete()
+	 */
+	public boolean isComplete() {
+	  	IRuntimeWorkingCopy runtime = getRuntimeWorkingCopy();
+		if (runtime == null)
+			return false;
+		IStatus status = runtime.validate();
+		return (status != null && status.isOK());
+	}
+	
+	public void createContent(Composite parent, IWizardHandle handle) {
+		fRuntimeWC=null;
+		createSelectionBar(parent);
+		createServerDefinitionTypeComposite(parent);
+	}
+
+	
+	private void swapBody() 
+	{
+	    this.fRuntimeWC=null;
+        String selected = fServerCombo == null ? null : fServerCombo
+                .getItem(fServerCombo.getSelectionIndex());
+        Map properties = null;
+        ServerRuntime definition = getServerTypeDefinition(selected,properties);
+        fServerPanel.reset(definition,ServerTypeDefinitionGroup.CONTEXT_RUNTIME, properties);
+    }
+	/**
+     * @param selected
+     */
+    private void createServerDefinitionTypeComposite(Composite parent) {     
+        String selected = fServerCombo==null?null:fServerCombo.getItem(fServerCombo.getSelectionIndex());
+        if(getServerDefinitionId()!=null)
+		    selected=getServerDefinitionId();
+        Map properties= null;
+        if(getRuntimeWorkingCopy()!=null)
+            properties = getRuntimeWorkingCopy().getAttribute(GenericServerRuntime.SERVER_INSTANCE_PROPERTIES,(Map)null);
+        ServerRuntime definition = getServerTypeDefinition(selected,properties);
+        fServerPanel = new ServerTypeDefinitionGroup(this,definition,ServerTypeDefinitionGroup.CONTEXT_RUNTIME,properties,parent);
+    }
+    private void createSelectionBar(Composite content) {
+		selectionBar = new Group(content, SWT.SHADOW_ETCHED_IN);
+		selectionBar.setLayout(new GridLayout(2,false));
+		selectionBar.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+		Label label = new Label(selectionBar, SWT.NONE);
+		label.setText(GenericServerUIMessages.getString("runtimeWizard.label.serverType"));
+		label.setLayoutData(new GridData());
+		fServerCombo = new Combo(selectionBar, SWT.BORDER |SWT.READ_ONLY);
+		ServerRuntime[] servers = getAllServerDefinitionTypes();
+		for(int i=0; i<servers.length; i++){
+			fServerCombo.add(servers[i].getName());
+		}
+		fServerCombo.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL));
+		if(fServerCombo.getItemCount()>0)
+		{
+		    if(getServerDefinitionId()!=null)
+		    {
+		        selectServerDefinition();
+		    }
+		    fServerCombo.select(0);
+		}
+		fServerCombo.addSelectionListener(
+				new SelectionListener() {
+					public void widgetSelected(SelectionEvent e) {
+						swapBody();
+						serverDefinitionTypePropertiesChanged();
+					}
+					public void widgetDefaultSelected(SelectionEvent e) {}
+				}
+			);
+	}
+
+	
+	private String getServerDefinitionId()
+	{
+		String currentDefinition= null;
+		if(getRuntimeWorkingCopy()!=null)
+			currentDefinition =  getRuntimeWorkingCopy().getAttribute(GenericServerRuntime.SERVER_DEFINITION_ID,"");
+		if(currentDefinition!= null && currentDefinition.length()>0)
+		{	
+			return currentDefinition;
+		}
+		return null;
+	}
+	
+	private void selectServerDefinition()
+	{
+		String currentDefinition = getServerDefinitionId();
+		int selectIndex = 0;
+		if(currentDefinition != null)
+		{	
+			selectIndex =  fServerCombo.indexOf(currentDefinition);
+			if(selectIndex<0)
+				selectIndex =0;
+		}
+		fServerCombo.select(selectIndex);
+	}
+	
+	
+	/* (non-Javadoc)
+	 * @see org.eclipse.wst.server.ui.wizard.IWizardFragment#enter()
+	 */
+	public void enter() {
+		String serverDefinition = getServerDefinitionId();
+		if(serverDefinition!=null && serverDefinition.length()>0)
+		{
+			selectServerDefinition();
+	        Map properties = null;
+	        if (getRuntimeWorkingCopy() != null) {
+	            properties = getRuntimeWorkingCopy().getAttribute(GenericServerRuntime.SERVER_INSTANCE_PROPERTIES,(Map) null);
+	        }
+	        ServerRuntime definition = getServerTypeDefinition(serverDefinition,properties);
+	        fServerPanel.reset(definition,ServerTypeDefinitionGroup.CONTEXT_RUNTIME, properties);
+		}
+	}
+	
+	/* (non-Javadoc)
+	 * @see org.eclipse.wst.server.ui.wizard.IWizardFragment#exit()
+	 */
+	public void exit() {
+
+        fRuntimeWC=null;
+	}
+	protected String getSelectedServerType(){
+	   return  fSelectedServerType;
+	}
+	protected Map getServerRuntimeProperties(){
+	    return fServerRuntimeProperties; 
+	}
+
+	private String createName()
+	{
+	    String selected = getSelectedServerType();
+	    IRuntimeWorkingCopy wc = getRuntimeWorkingCopy();
+	    IRuntimeType runtimeType = wc.getRuntimeType();
+	    String name = GenericServerUIMessages.getFormattedString("runtimeName", new String[] {selected,runtimeType.getName()});
+	    
+		IResourceManager rm = ServerCore.getResourceManager();
+		List list = rm.getRuntimes(runtimeType);
+		Iterator iterator = list.iterator();
+		int suffix = 1;
+		String suffixName=name;
+		while(iterator.hasNext())
+	    {
+		   
+	        IElement el = (IElement)iterator.next();
+	        if(el.getName().equals(name)|| el.getName().equals(suffixName))
+	            suffix++;
+	        suffixName= name+" "+suffix;
+	    }
+	    
+		if(suffix>1)
+		    return suffixName;
+	    return name;
+	}
+	
+	private IRuntimeWorkingCopy getRuntimeWorkingCopy()
+	{
+		if(fRuntimeWC == null)
+			fRuntimeWC = (IRuntimeWorkingCopy)getTaskModel().getObject(ITaskModel.TASK_RUNTIME); 
+		return fRuntimeWC;
+	}
+    /* (non-Javadoc)
+     * @see org.eclipse.jst.server.generic.internal.ui.ServerDefinitionTypeAwareWizardFragment#description()
+     */
+    public String description() {
+        return  GenericServerUIMessages.getString("runtimeWizardDescription");
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.jst.server.generic.internal.ui.ServerDefinitionTypeAwareWizardFragment#title()
+     */
+    public String title() {
+        return GenericServerUIMessages.getString("runtimeWizardTitle");
+    }
+    
+    /* (non-Javadoc)
+     * @see org.eclipse.jst.server.generic.internal.ui.ServerDefinitionTypeAwareWizardFragment#serverDefinitionTypePropertiesChanged()
+     */
+    public void serverDefinitionTypePropertiesChanged() {
+		fSelectedServerType = fServerCombo.getItem(fServerCombo.getSelectionIndex());
+        fServerRuntimeProperties = fServerPanel.getProperties();
+   		String selected = getSelectedServerType();
+		Map properties = getServerRuntimeProperties();
+		IRuntimeWorkingCopy wc = getRuntimeWorkingCopy();       		
+		wc.setAttribute(GenericServerRuntime.SERVER_DEFINITION_ID, selected);
+		wc.setAttribute(GenericServerRuntime.SERVER_INSTANCE_PROPERTIES,properties);
+		wc.setName(createName());
+		validate();
+   }
+    
+    private void validate()
+    {
+		if (getRuntimeWorkingCopy() == null) {
+			this.getWizard().setMessage("", IMessageProvider.ERROR);
+			return;
+		}
+		IStatus status = getRuntimeWorkingCopy().validate();
+		if (status == null || status.isOK())
+			getWizard().setMessage(null, IMessageProvider.NONE);
+		else
+			getWizard().setMessage(status.getMessage(), IMessageProvider.ERROR);
+		getWizard().update();
+    }
+}
diff --git a/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/internal/ui/GenericServerWizardFragment.java b/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/internal/ui/GenericServerWizardFragment.java
new file mode 100644
index 0000000..c2fb95f
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/internal/ui/GenericServerWizardFragment.java
@@ -0,0 +1,144 @@
+/*******************************************************************************
+ * Copyright (c) 2004 Eteration Bilisim A.S.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ * 
+ * Contributors:
+ *     Gorkem Ercan - initial API and implementation
+ *     Naci M. Dai
+ * 
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL ETERATION A.S. OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Eteration Bilisim A.S.  For more
+ * information on eteration, please see
+ * <http://www.eteration.com/>.
+ ***************************************************************************/
+package org.eclipse.jst.server.generic.internal.ui;
+
+import java.util.Map;
+import org.eclipse.jst.server.generic.internal.core.GenericServerRuntime;
+import org.eclipse.jst.server.generic.servertype.definition.ServerRuntime;
+import org.eclipse.jst.server.generic.ui.GenericServerUIMessages;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.wst.server.core.IRuntime;
+import org.eclipse.wst.server.core.IServerWorkingCopy;
+import org.eclipse.wst.server.core.ITaskModel;
+import org.eclipse.wst.server.ui.wizard.IWizardHandle;
+/**
+ * 
+ *
+ * @author Gorkem Ercan
+ */
+public class GenericServerWizardFragment extends ServerDefinitionTypeAwareWizardFragment 
+{
+
+    private ServerTypeDefinitionGroup fComposite;
+    private Map fProperties; 
+	/* (non-Javadoc)
+	 * @see com.ibm.wtp.server.ui.wizard.IWizardFragment#isComplete()
+	 */
+	public boolean isComplete() {
+	    
+		ServerRuntime serverRuntime = getServerTypeDefinitionFor(getServer());
+		if(serverRuntime==null)
+		    return false;
+		return true;
+	}
+
+	public void createContent(Composite parent, IWizardHandle handle){
+		createBody(parent,handle);
+	}
+	/**
+	 * 
+	 */
+	private void createBody(Composite parent, IWizardHandle handle) 
+	{
+		IServerWorkingCopy server = getServer();
+		ServerRuntime definition = getServerTypeDefinitionFor(server);
+		fComposite = new ServerTypeDefinitionGroup(this, definition,ServerTypeDefinitionGroup.CONTEXT_SERVER, null,parent);
+
+	}
+
+	/**
+     * @param server
+     * @return
+     */
+    private ServerRuntime getServerTypeDefinitionFor(IServerWorkingCopy server) {
+        
+        IRuntime runtime = server.getRuntime();
+        if(runtime==null){    
+            runtime= (IRuntime)getTaskModel().getObject(ITaskModel.TASK_RUNTIME);
+        }        
+        String id = runtime.getAttribute(GenericServerRuntime.SERVER_DEFINITION_ID,(String)null);
+        if(id==null){   
+            return null;
+        }
+        Map runtimeProperties = server.getRuntime().getAttribute(GenericServerRuntime.SERVER_INSTANCE_PROPERTIES,(Map)null);
+		ServerRuntime definition = getServerTypeDefinition(id,runtimeProperties);
+        return definition;
+    }
+
+    /**
+     * @return
+     */
+    private IServerWorkingCopy getServer() {
+        IServerWorkingCopy server = (IServerWorkingCopy)getTaskModel().getObject(ITaskModel.TASK_SERVER);
+        return server;
+    }
+
+    public void enter() {
+        IServerWorkingCopy server = getServer();
+        ServerRuntime definition = getServerTypeDefinitionFor(server);
+        if(definition != null && fComposite!=null)
+            fComposite.reset(definition,ServerTypeDefinitionGroup.CONTEXT_SERVER,null);
+	}
+	public void exit(){
+	        fProperties = fComposite.getProperties();
+	        serverDefinitionTypePropertiesChanged();
+	}
+	
+	protected Map getServerProperties(){
+	    return fProperties;
+	}
+	
+    /* (non-Javadoc)
+     * @see org.eclipse.jst.server.generic.internal.ui.ServerDefinitionTypeAwareWizardFragment#description()
+     */
+    public String description() {
+        return  GenericServerUIMessages.getString("serverWizardDescription");
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.jst.server.generic.internal.ui.ServerDefinitionTypeAwareWizardFragment#title()
+     */
+    public String title() {
+        return  GenericServerUIMessages.getString("serverWizardTitle");
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.jst.server.generic.internal.ui.ServerDefinitionTypeAwareWizardFragment#serverDefinitionTypePropertiesChanged()
+     */
+    public void serverDefinitionTypePropertiesChanged() {
+        fProperties = fComposite.getProperties();
+        IServerWorkingCopy serverWorkingCopy = getServer();
+        ServerRuntime definition = getServerTypeDefinitionFor(serverWorkingCopy);
+        
+        serverWorkingCopy.setName(GenericServerUIMessages.getFormattedString("serverName",new String[] {definition.getName()}));
+        serverWorkingCopy.setAttribute(GenericServerRuntime.SERVER_INSTANCE_PROPERTIES,getServerProperties());
+    }
+}
diff --git a/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/internal/ui/ServerDefinitionTypeAwareWizardFragment.java b/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/internal/ui/ServerDefinitionTypeAwareWizardFragment.java
new file mode 100644
index 0000000..2b8413c
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/internal/ui/ServerDefinitionTypeAwareWizardFragment.java
@@ -0,0 +1,73 @@
+/*
+ * Created on Oct 19, 2004
+ *
+ * TODO To change the template for this generated file go to
+ * Window - Preferences - Java - Code Style - Code Templates
+ */
+package org.eclipse.jst.server.generic.internal.ui;
+
+import java.util.Map;
+import org.eclipse.jst.server.generic.core.CorePlugin;
+import org.eclipse.jst.server.generic.servertype.definition.ServerRuntime;
+import org.eclipse.jst.server.generic.ui.GenericUiPlugin;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.wst.server.ui.wizard.IWizardHandle;
+import org.eclipse.wst.server.ui.wizard.WizardFragment;
+
+/**
+ * 
+ *
+ * @author Gorkem Ercan
+ */
+public abstract class ServerDefinitionTypeAwareWizardFragment extends WizardFragment {
+
+    private IWizardHandle fWizard;
+	public boolean hasComposite() {
+		return true;
+	}
+
+	public Composite createComposite(Composite parent, IWizardHandle handle) {
+	    
+	    this.fWizard = handle;
+	    Composite container = new Composite(parent, SWT.NONE);
+		container.setLayoutData(new GridData(GridData.FILL_BOTH));
+		GridLayout grid = new GridLayout(1,false);
+		container.setLayout(grid);
+		handle.setImageDescriptor(GenericUiPlugin.getDefault().imageDescriptor(GenericUiPlugin.WIZBAN_IMAGE));
+		handle.setTitle(title());
+		handle.setDescription(description());
+		createContent(container,handle);
+		return container;
+	}
+	public IWizardHandle getWizard(){
+	    return fWizard;
+	}
+	/**
+	 * Returns the description to be displayed on the wizard head.
+	 * @return
+	 */
+	public abstract String description();
+	/**
+	 * Returns the title of the wizard.
+	 * @return
+	 */
+	public abstract String title();
+	
+	public abstract void createContent(Composite parent, IWizardHandle handle);
+
+	public abstract void serverDefinitionTypePropertiesChanged();
+	
+	protected ServerRuntime getServerTypeDefinition(String definitionID, Map properties)
+	{
+	    return CorePlugin.getDefault().getServerTypeDefinitionManager().getServerRuntimeDefinition(definitionID,properties);
+	}
+	
+	protected ServerRuntime[] getAllServerDefinitionTypes()
+	{
+	    return CorePlugin.getDefault().getServerTypeDefinitionManager().getServerTypeDefinitions();
+	}
+
+}
diff --git a/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/internal/ui/ServerTypeDefinitionGroup.java b/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/internal/ui/ServerTypeDefinitionGroup.java
new file mode 100644
index 0000000..f899b23
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/internal/ui/ServerTypeDefinitionGroup.java
@@ -0,0 +1,331 @@
+/*******************************************************************************
+ * Copyright (c) 2004 Eteration Bilisim A.S.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ * 
+ * Contributors:
+ *     Gorkem Ercan - initial API and implementation
+ *     Naci M. Dai
+ * 
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL ETERATION A.S. OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Eteration Bilisim A.S.  For more
+ * information on eteration, please see
+ * <http://www.eteration.com/>.
+ ***************************************************************************/
+package org.eclipse.jst.server.generic.internal.ui;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.jst.server.generic.servertype.definition.Property;
+import org.eclipse.jst.server.generic.servertype.definition.ServerRuntime;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.DirectoryDialog;
+import org.eclipse.swt.widgets.FileDialog;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+
+
+public class ServerTypeDefinitionGroup 
+{
+    public static final String CONTEXT_SERVER = Property.CONTEXT_SERVER;
+    public static final String CONTEXT_RUNTIME = Property.CONTEXT_RUNTIME;
+
+    private ServerRuntime fServerTypeDefinition;
+    private List fPropertyControls = new ArrayList();
+    private Map fPropertyMap =new HashMap();
+    private String fContext="undefined";
+    private Group fDefinitionGroup;
+    private ServerDefinitionTypeAwareWizardFragment fAwareWizardFragment;
+    private class PropertyModifyListener implements ModifyListener
+    {
+        /* (non-Javadoc)
+         * @see org.eclipse.swt.events.ModifyListener#modifyText(org.eclipse.swt.events.ModifyEvent)
+         */
+        public void modifyText(ModifyEvent e) {
+            fAwareWizardFragment.serverDefinitionTypePropertiesChanged();
+            
+        }
+        
+    }
+    
+    /**
+     * Construct a composite for the given ServerTypeDefinition
+     * 
+     * @param definition
+     * @param initialProperties initial values null means use default
+     * @param parent
+     * @param style
+     */
+    public ServerTypeDefinitionGroup(ServerDefinitionTypeAwareWizardFragment fragment, ServerRuntime definition, String context, Map initialProperties, Composite parent) 
+    {
+        fAwareWizardFragment = fragment;
+        initServerTypeDefinition(definition,context,initialProperties);
+        createControl(parent);
+    }
+    private void initProperties(Map initialProperties)
+    {
+        if(initialProperties!= null)
+            this.fPropertyMap=initialProperties;
+        else
+            fPropertyMap=new HashMap();
+    }
+    /**
+     * Changes the values with the given ones. Renders the UI 
+     * with the given new values.
+     *  
+     * @param definition
+     * @param context
+     * @param initialProperties
+     */
+    public void reset(ServerRuntime definition, String context, Map initialProperties)
+    {
+        initServerTypeDefinition(definition, context, initialProperties);
+        fDefinitionGroup.setText(definition.getName());
+        Control[] allControls = fDefinitionGroup.getChildren();
+        for(int i= 0; i<allControls.length;i++)
+        {
+            Control c = allControls[i];
+            c.dispose();
+        }
+        fPropertyControls.clear();
+        createPropertyControls(fDefinitionGroup);
+        
+        fDefinitionGroup.layout(true);
+        
+    }
+    
+    /**
+     * @param definition
+     * @param context
+     * @param initialProperties
+     */
+    private void initServerTypeDefinition(ServerRuntime definition, String context, Map initialProperties) {
+        fServerTypeDefinition = definition;
+        initProperties(initialProperties);
+        this.fContext = context;
+    }
+    /**
+     * @param parent
+     */
+    private void createControl(Composite parent) {
+
+        fDefinitionGroup = new Group(parent, SWT.SHADOW_ETCHED_IN);
+        fDefinitionGroup.setLayoutData(new GridData(GridData.FILL_BOTH));
+        fDefinitionGroup.setLayout(new GridLayout(3,false));
+        if(fServerTypeDefinition!=null)
+        {   
+            fDefinitionGroup.setText(fServerTypeDefinition.getName());
+
+            createPropertyControls(fDefinitionGroup);
+        }
+    }
+    /**
+     * @param defPanel
+     */
+    private void createPropertyControls(Composite definitionComposite) {
+		List properties = fServerTypeDefinition.getProperty();
+		for(int i = 0; i<properties.size(); i++)
+		{
+		    Property property = (Property)properties.get(i);		    
+		    if(this.fContext.equals(property.getContext()))
+		        createPropertyControl(definitionComposite,property);
+		}
+        
+    }
+     
+    private void createPropertyControl(Composite parent, Property property)
+    {
+    	if( "directory".equals(property.getType())) {
+    		Text path = createLabeledPath(property.getLabel(),getPropertyValue(property),parent);
+    		path.setData(property);
+    		fPropertyControls.add(path);
+    	} else if( "file".equals(property.getType())) {
+    	    Text file = createLabeledFile(property.getLabel(),getPropertyValue(property),parent);
+    		file.setData(property);
+    		fPropertyControls.add(file);
+    	} else if( "string".equals(property.getType())) {
+    	    Text str = createLabeledText(property.getLabel(),getPropertyValue(property),parent);
+    		str.setData(property);
+    		fPropertyControls.add(str);
+    	} else if( "boolean".equals(property.getType())) {
+    	    Button bool =createLabeledCheck(property.getLabel(),("true".equals( getPropertyValue(property))),	parent);
+    		bool.setData(property);
+    		fPropertyControls.add(bool);
+    	} else  {
+    	    Text defaultText= createLabeledText(property.getLabel(),getPropertyValue(property),parent);
+    		defaultText.setData(property);
+    		fPropertyControls.add(defaultText);
+     	}
+    }
+	private String getPropertyValue(Property property)
+	{
+		String value = property.getDefault();
+		if(fPropertyMap!=null && fPropertyMap.isEmpty()==false)
+			value=(String)fPropertyMap.get(property.getId()); 
+		return value;
+	}
+    protected Button createLabeledCheck(String title, boolean value,
+    		Composite defPanel) {
+    	GridData gridData;
+    	Label label = new Label(defPanel, SWT.WRAP);
+    	gridData = new GridData();
+    	label.setLayoutData(gridData);
+    	label.setText(title);
+
+    	Button fButton = new Button(defPanel, SWT.CHECK);
+    	
+    	gridData = new GridData(GridData.FILL_HORIZONTAL
+    			| GridData.GRAB_HORIZONTAL);
+    	gridData.horizontalSpan = 2;
+    	fButton.setLayoutData(gridData);
+    	fButton.setSelection(value);
+    	fButton.addSelectionListener(new SelectionListener() {
+            public void widgetSelected(SelectionEvent e) {
+               fAwareWizardFragment.serverDefinitionTypePropertiesChanged();
+            }
+
+            public void widgetDefaultSelected(SelectionEvent e) {
+                // TODO Auto-generated method stub
+
+            }
+        });
+    	
+    	return fButton;
+    }
+    protected Text createLabeledFile(String title, String value,
+    		Composite defPanel) {
+    	GridData gridData;
+    	Label label = new Label(defPanel, SWT.WRAP);
+    	gridData = new GridData();
+    	label.setLayoutData(gridData);
+    	label.setText(title);
+    
+    	final Text fText = new Text(defPanel, SWT.SHADOW_IN | SWT.BORDER);
+    	gridData = new GridData(GridData.FILL_HORIZONTAL
+    			| GridData.GRAB_HORIZONTAL);
+    	gridData.horizontalSpan = 1;
+    	fText.setLayoutData(gridData);
+    	fText.setText(value);
+    	fText.addModifyListener(new PropertyModifyListener());
+    	Button fButton = new Button(defPanel, SWT.PUSH);
+    	fButton.setText("...");
+    	fButton.setLayoutData(new GridData());
+    	fButton.addSelectionListener(new SelectionListener() {
+    		public void widgetSelected(SelectionEvent e) {
+    			FileDialog dlg = new FileDialog(fDefinitionGroup.getShell());
+    			dlg.setFileName(fText.getText());
+    			String res = dlg.open();
+    			if (res != null) {
+    				fText.setText(res);
+    			}
+    		}
+    
+    		public void widgetDefaultSelected(SelectionEvent e) {
+    			widgetSelected(e);
+    		}
+    
+    	});
+    
+    	return fText;
+    }
+    protected Text createLabeledPath(String title, String value,
+    		Composite parent) {
+    	GridData gridData;
+    	Label label = new Label(parent, SWT.WRAP);
+    	gridData = new GridData();
+    	label.setLayoutData(gridData);
+    	label.setText(title);
+    
+    	final Text fText = new Text(parent, SWT.SHADOW_IN | SWT.BORDER);
+    	gridData = new GridData(GridData.FILL_HORIZONTAL);
+    	gridData.horizontalSpan = 1;
+    	fText.setLayoutData(gridData);
+    	fText.setText(value);
+    	fText.addModifyListener(new PropertyModifyListener());
+    	Button fButton = new Button(parent, SWT.PUSH);
+    	fButton.setText("...");
+    	fButton.setLayoutData(new GridData());
+    	fButton.addSelectionListener(new SelectionListener() {
+    		public void widgetSelected(SelectionEvent e) {
+    			DirectoryDialog dlg = new DirectoryDialog(fDefinitionGroup.getShell());
+    			dlg.setFilterPath(fText.getText());
+    			String res = dlg.open();
+    			if (res != null) {
+    				fText.setText(res);
+    			}
+    		}
+    
+    		public void widgetDefaultSelected(SelectionEvent e) {
+    			widgetSelected(e);
+    		}
+    
+    	});
+    
+    	return fText;
+    }
+    protected Text createLabeledText(String title, String value,
+    		Composite defPanel) {
+    	GridData gridData;
+    	Label label = new Label(defPanel, SWT.WRAP);
+    	gridData = new GridData();
+    	label.setLayoutData(gridData);
+    	label.setText(title);
+    
+    	Text fText = new Text(defPanel, SWT.SHADOW_IN | SWT.BORDER);
+    	gridData = new GridData(GridData.FILL_HORIZONTAL
+    			| GridData.GRAB_HORIZONTAL);
+    	gridData.horizontalSpan = 2;
+    	fText.setLayoutData(gridData);
+    	fText.setText(value);
+    	fText.addModifyListener(new PropertyModifyListener());
+    	return fText;
+    }
+    public Map getProperties()
+    {
+    	for(int i=0; i<fPropertyControls.size();i++)
+    	{
+    		if(fPropertyControls.get(i)instanceof Button)
+    		{
+    			Button button = (Button)fPropertyControls.get(i);
+    			Property prop = (Property)button.getData();
+    			fPropertyMap.put(prop.getId(),Boolean.toString(button.getSelection()));
+    		}
+    		else
+    		{
+    			Text text = (Text)fPropertyControls.get(i);
+    			Property prop = (Property)text.getData();
+    			fPropertyMap.put(prop.getId(),text.getText());
+    		}
+    	}
+    	return fPropertyMap;
+    }
+}
diff --git a/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/GenericServerUIMessages.java b/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/GenericServerUIMessages.java
new file mode 100644
index 0000000..b1a5537
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/GenericServerUIMessages.java
@@ -0,0 +1,63 @@
+package org.eclipse.jst.server.generic.ui;
+
+import java.text.MessageFormat;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+/**
+ * Helper class to get messages
+ * 
+ * @author Gorkem Ercan
+ */
+public class GenericServerUIMessages {
+
+	private static final String RESOURCE_BUNDLE= "org.eclipse.jst.server.generic.ui.GenericServerUIMessages";//$NON-NLS-1$
+
+	private static ResourceBundle fResourceBundle= ResourceBundle.getBundle(RESOURCE_BUNDLE);
+
+	private GenericServerUIMessages() {
+	}
+
+	/**
+	 * Return string from the resource bundle.
+	 * 
+	 * @param key the string used to get the bundle value, must not be <code>null</code>
+	 * @return the string from the resource bundle
+	 */
+	public static String getString(String key) {
+		try {
+			return fResourceBundle.getString(key);
+		} catch (MissingResourceException e) {
+			return "!" + key + "!";
+		}
+	}
+	
+	/**
+	 * Gets a string from the resource bundle that is 
+	 * formatted it with the given argument.
+	 * 
+	 * @param key the string used to get the bundle value, must not be null
+	 * @param arg the argument used to format the string
+	 * @return the formatted string
+	 */
+	public static String getFormattedString(String key, Object[] arg) {
+		String format= null;
+		try {
+			format= fResourceBundle.getString(key);
+		} catch (MissingResourceException e) {
+			return "!" + key + "!";
+		}
+		if (arg == null)
+			arg= new Object[0];
+		return MessageFormat.format(format,arg );
+	}
+	
+	/**
+	 * Returns a resource bundle.
+	 * 
+	 * @return the resource bundle
+	 */
+	public static ResourceBundle getResourceBundle() {
+		return fResourceBundle;
+	}
+}
diff --git a/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/GenericServerUIMessages.properties b/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/GenericServerUIMessages.properties
new file mode 100644
index 0000000..e9a164b
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/GenericServerUIMessages.properties
@@ -0,0 +1,7 @@
+serverWizardTitle=New Generic Server
+serverWizardDescription=Create a new server of the selected server type
+runtimeWizardTitle=New Generic Server Runtime
+runtimeWizardDescription=Define a new Generic Runtime for your server type
+runtimeWizard.label.serverType=Server types:
+serverName = {0}(Generic)
+runtimeName= {0}({1})
\ No newline at end of file
diff --git a/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/GenericUiPlugin.java b/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/GenericUiPlugin.java
new file mode 100644
index 0000000..0de4415
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/GenericUiPlugin.java
@@ -0,0 +1,114 @@
+/*******************************************************************************
+ * Copyright (c) 2004 Eteration Bilisim A.S.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ * 
+ * Contributors:
+ *     Gorkem Ercan - initial API and implementation
+ *     Naci M. Dai
+ * 
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL ETERATION A.S. OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Eteration Bilisim A.S.  For more
+ * information on eteration, please see
+ * <http://www.eteration.com/>.
+ ***************************************************************************/
+package org.eclipse.jst.server.generic.ui;
+
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.resource.ImageRegistry;
+import org.eclipse.ui.plugin.*;
+import org.osgi.framework.BundleContext;
+import java.util.*;
+
+/**
+ * The main plugin class to be used in the desktop.
+ * 
+ * @author Gorkem Ercan
+ */
+public class GenericUiPlugin extends AbstractUIPlugin {
+	
+    public static final String WIZBAN_IMAGE = "genericlogo";
+    //The shared instance.
+	private static GenericUiPlugin plugin;
+	//Resource bundle.
+	private ResourceBundle resourceBundle;
+	
+	/**
+	 * The constructor.
+	 */
+	public GenericUiPlugin() {
+		super();
+		plugin = this;
+		try {
+			resourceBundle = ResourceBundle.getBundle("org.eclipse.jst.server.generic.ui.GenericUiPluginResources");
+		} catch (MissingResourceException x) {
+			resourceBundle = null;
+		}
+	}
+
+	/**
+	 * This method is called upon plug-in activation
+	 */
+	public void start(BundleContext context) throws Exception {
+		super.start(context);
+	}
+
+	/**
+	 * This method is called when the plug-in is stopped
+	 */
+	public void stop(BundleContext context) throws Exception {
+		super.stop(context);
+	}
+
+	/**
+	 * Returns the shared instance.
+	 */
+	public static GenericUiPlugin getDefault() {
+		return plugin;
+	}
+
+	/**
+	 * Returns the string from the plugin's resource bundle,
+	 * or 'key' if not found.
+	 */
+	public static String getResourceString(String key) {
+		ResourceBundle bundle = GenericUiPlugin.getDefault().getResourceBundle();
+		try {
+			return (bundle != null) ? bundle.getString(key) : key;
+		} catch (MissingResourceException e) {
+			return key;
+		}
+	}
+
+    protected ImageRegistry createImageRegistry() {
+        ImageRegistry registry = new ImageRegistry();
+        ImageDescriptor desc = ImageDescriptor.createFromURL(getDefault().getBundle().getEntry("/icons/wizban/logo.gif"));
+        registry.put(WIZBAN_IMAGE,desc);
+        return registry;
+    }
+  	public ImageDescriptor imageDescriptor(String key){
+		return getImageRegistry().getDescriptor(key);
+	}
+	/**
+	 * Returns the plugin's resource bundle,
+	 */
+	public ResourceBundle getResourceBundle() {
+		return resourceBundle;
+	}
+}