This commit was manufactured by cvs2svn to create tag 'R1_5_4'.
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..751c8f2
--- /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.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<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..122465d
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/.cvsignore
@@ -0,0 +1,9 @@
+bin
+build.xml
+genericserver.jar
+org.eclipse.jst.server.generic.core_1.0.0.jar
+temp.folder
+*.settings
+genericserversrc.zip
+@dot
+javaCompiler...args
diff --git a/plugins/org.eclipse.jst.server.generic.core/.options b/plugins/org.eclipse.jst.server.generic.core/.options
new file mode 100644
index 0000000..c6e77ac
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/.options
@@ -0,0 +1,4 @@
+# Debugging options for the org.eclipse.jst.server.tomcat.core plugin
+
+# Turn on general debugging
+org.eclipse.jst.server.generic.core/debug=true
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/META-INF/MANIFEST.MF b/plugins/org.eclipse.jst.server.generic.core/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..18c18c9
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/META-INF/MANIFEST.MF
@@ -0,0 +1,31 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.jst.server.generic.core; singleton:=true
+Bundle-Version: 1.0.101.qualifier
+Bundle-Activator: org.eclipse.jst.server.generic.core.internal.CorePlugin
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Export-Package: org.eclipse.jst.server.generic.core.internal;x-internal:=true,
+ org.eclipse.jst.server.generic.core.internal.publishers;x-internal:=true,
+ org.eclipse.jst.server.generic.internal.core.util;x-internal:=true,
+ org.eclipse.jst.server.generic.internal.servertype.definition;x-internal:=true,
+ org.eclipse.jst.server.generic.internal.servertype.definition.impl;x-internal:=true,
+ org.eclipse.jst.server.generic.internal.servertype.definition.util;x-internal:=true,
+ org.eclipse.jst.server.generic.internal.xml;x-internal:=true,
+ org.eclipse.jst.server.generic.servertype.definition
+Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.core.resources;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.debug.core;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.jdt.core;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.jdt.launching;visibility:="reexport";bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.wst.server.core;bundle-version="[1.0.102,1.2.0)",
+ org.eclipse.jst.server.core;bundle-version="[1.0.102,1.2.0)",
+ org.eclipse.ant.ui;resolution:="optional";bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.emf.common;visibility:="reexport";bundle-version="[2.2.0,2.3.0)",
+ org.eclipse.emf.ecore;bundle-version="[2.2.0,2.3.0)",
+ org.eclipse.emf.ecore.xmi;bundle-version="[2.2.0,2.3.0)",
+ org.eclipse.ui.externaltools;resolution:="optional";bundle-version="[3.1.100,3.3.0)",
+ org.apache.ant;bundle-version="[1.6.5,1.7.0)",
+ org.eclipse.debug.ui;resolution:="optional";bundle-version="[3.2.0,4.0.0)"
+Eclipse-LazyStart: true
diff --git a/plugins/org.eclipse.jst.server.generic.core/about.html b/plugins/org.eclipse.jst.server.generic.core/about.html
new file mode 100644
index 0000000..4ec5989
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/about.html
@@ -0,0 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<HTML>
+
+<head>
+<title>About</title>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
+</head>
+
+<BODY lang="EN-US">
+
+<H3>About This Content</H3>
+
+<P>May 2, 2006</P>
+
+<H3>License</H3>
+
+<P>The Eclipse Foundation makes available all content in this plug-in 
+("Content"). Unless otherwise indicated below, the Content is provided to you 
+under the terms and conditions of the Eclipse Public License Version 1.0 
+("EPL"). A copy of the EPL is available at
+<A href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/org/documents/epl-v10.php</A>. 
+For purposes of the EPL, "Program" will mean the Content.</P>
+
+<P>If you did not receive this Content directly from the Eclipse Foundation, the 
+Content is being redistributed by another party ("Redistributor") and different 
+terms and conditions may apply to your use of any object code in the Content. 
+Check the Redistributor’s license that was provided with the Content. If no such 
+license exists, contact the Redistributor. Unless otherwise indicated below, the 
+terms and conditions of the EPL still apply to any source code in the Content 
+and such source code may be obtained at
+<A href="http://www.eclipse.org/">http://www.eclipse.org/</A>.</P>
+
+</BODY>
+</HTML>
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..5f3de99
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/build.properties
@@ -0,0 +1,20 @@
+##################################################################################################
+# Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+# accompanying materials are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+# 
+# Contributors: Gorkem Ercan - initial API and implementation
+#               
+###################################################################################################
+source.. = src/
+output.. = bin/
+bin.includes = .,\
+               xsd/ServerTypeDefinitionSchema.xsd,\
+               META-INF/,\
+               plugin.xml,\
+               plugin.properties,\
+               about.html
+src.includes = xsd/,\
+               schema/,\
+               build.properties
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..d4fcff6
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/plugin.properties
@@ -0,0 +1,19 @@
+##################################################################################################
+# Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+# accompanying materials are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+# 
+# Contributors: Gorkem Ercan - initial API and implementation
+#               
+###################################################################################################
+pluginName= Generic Server Plugin
+providerName=Eclipse.org
+pluginDescription=Provides generic server tools with easy to develop meta data configuration files
+
+externalLaunchConfigurationTypeName=Generic Server(External Launch)
+launchConfigurationTypeName=Generic Server
+extensionPointServerdefinition=Server definition
+extensionPointGenericpublisher=Generic Publisher
+# ====================================================================
+
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..723f523
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/plugin.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+<plugin>
+
+ <extension-point id="serverdefinition" name="%extensionPointServerdefinition" schema="schema/serverdefinition.exsd"/>
+ <extension-point id="genericpublisher" name="%extensionPointGenericpublisher" schema="schema/genericpublisher.exsd"/>
+	
+ <extension point="org.eclipse.debug.core.launchConfigurationTypes">
+     <launchConfigurationType
+        id="org.eclipse.jst.server.generic.core.launchConfigurationType"
+        name="%launchConfigurationTypeName"
+        delegate="org.eclipse.jst.server.generic.core.internal.GenericServerLaunchConfigurationDelegate"
+        modes="run, debug, profile"
+        sourceLocatorId="org.eclipse.jdt.launching.sourceLocator.JavaSourceLookupDirector"
+        sourcePathComputerId="org.eclipse.jst.server.generic.core.sourcePathComputer"/>
+     <launchConfigurationType
+        id="org.eclipse.jst.server.generic.core.ExternalLaunchConfigurationType"
+        name="%externalLaunchConfigurationTypeName"
+        delegate="org.eclipse.jst.server.generic.core.internal.ExternalLaunchConfigurationDelegate"
+        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.core.internal.GenericServerSourcePathComputerDelegate"/>
+ </extension>
+ 
+ <extension point="org.eclipse.wst.server.core.launchableAdapters">
+      <launchableAdapter
+         class="org.eclipse.jst.server.generic.core.internal.GenericServerLaunchableAdapterDelegate"
+         id="org.eclipse.jst.server.generic.web"/>
+ </extension>
+ 
+ <extension point="org.eclipse.jst.server.generic.core.genericpublisher">
+      <genericpublisher
+            class="org.eclipse.jst.server.generic.core.internal.publishers.AntPublisher"
+            id="org.eclipse.jst.server.generic.antpublisher"/>
+ </extension>
+
+</plugin>
diff --git a/plugins/org.eclipse.jst.server.generic.core/schema/genericpublisher.exsd b/plugins/org.eclipse.jst.server.generic.core/schema/genericpublisher.exsd
new file mode 100644
index 0000000..810ac40
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/schema/genericpublisher.exsd
@@ -0,0 +1,116 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.jst.server.generic.core">
+<annotation>
+      <appInfo>
+         <meta.schema plugin="org.eclipse.jst.server.generic.core" id="genericpublisher" name="Generic Publisher"/>
+      </appInfo>
+      <documentation>
+         Defines a publisher that can be used for publishing modules to servers for generic servers. 
+      </documentation>
+   </annotation>
+
+   <element name="extension">
+      <complexType>
+         <sequence>
+            <element ref="genericpublisher"/>
+         </sequence>
+         <attribute name="point" type="string" use="required">
+            <annotation>
+               <documentation>
+                  a fully qualified identifier of the target extension point
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="id" type="string">
+            <annotation>
+               <documentation>
+                  an optional identifier of the extension instance
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="name" type="string">
+            <annotation>
+               <documentation>
+                  an optional name of the extension instance
+               </documentation>
+               <appInfo>
+                  <meta.attribute translatable="true"/>
+               </appInfo>
+            </annotation>
+         </attribute>
+      </complexType>
+   </element>
+
+   <element name="genericpublisher">
+      <complexType>
+         <attribute name="id" type="string">
+            <annotation>
+               <documentation>
+                  The unique id that refers to this publisher
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="class" type="string">
+            <annotation>
+               <documentation>
+                  class that extends GenericPublisher
+               </documentation>
+            </annotation>
+         </attribute>
+      </complexType>
+   </element>
+
+   <annotation>
+      <appInfo>
+         <meta.section type="since"/>
+      </appInfo>
+      <documentation>
+         1.0
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appInfo>
+         <meta.section type="examples"/>
+      </appInfo>
+      <documentation>
+         &lt;pre&gt;
+ &lt;extension point=&quot;org.eclipse.jst.server.generic.core.genericpublisher&quot;&gt;
+      &lt;genericpublisher
+            class=&quot;org.eclipse.jst.server.generic.core.internal.publishers.AntPublisher&quot;
+            id=&quot;org.eclipse.jst.server.generic.antpublisher&quot;/&gt;
+ &lt;/extension&gt;
+ &lt;/pre&gt;
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appInfo>
+         <meta.section type="apiInfo"/>
+      </appInfo>
+      <documentation>
+          Value of the attribute class must be a fully qualified name of a Java class that extends org.eclipse.jst.server.generic.core.internal.GenericPublisher abstract class.
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appInfo>
+         <meta.section type="implementation"/>
+      </appInfo>
+      <documentation>
+         
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appInfo>
+         <meta.section type="copyright"/>
+      </appInfo>
+      <documentation>
+         Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies this distribution, and is available at
+&lt;a href=&quot;http://www.eclipse.org/legal/epl-v10.html&quot;&gt;http://www.eclipse.org/legal/epl-v10.html&lt;/a&gt;
+      </documentation>
+   </annotation>
+
+</schema>
diff --git a/plugins/org.eclipse.jst.server.generic.core/schema/serverdefinition.exsd b/plugins/org.eclipse.jst.server.generic.core/schema/serverdefinition.exsd
new file mode 100644
index 0000000..99331f8
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/schema/serverdefinition.exsd
@@ -0,0 +1,122 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.jst.server.generic.core">
+<annotation>
+      <appInfo>
+         <meta.schema plugin="org.eclipse.jst.server.generic.core" id="serverdefinition" name="Server Definition"/>
+      </appInfo>
+      <documentation>
+         This extension point defines a new generic server definition file.
+      </documentation>
+   </annotation>
+
+   <element name="extension">
+      <complexType>
+         <sequence>
+            <element ref="serverdefinition" minOccurs="1" maxOccurs="unbounded"/>
+         </sequence>
+         <attribute name="point" type="string" use="required">
+            <annotation>
+               <documentation>
+                  a fully qualified identifier of the target extension point
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="id" type="string">
+            <annotation>
+               <documentation>
+                  an optional identifier of the extension instance
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="name" type="string">
+            <annotation>
+               <documentation>
+                  an optional name of the extension instance
+               </documentation>
+               <appInfo>
+                  <meta.attribute translatable="true"/>
+               </appInfo>
+            </annotation>
+         </attribute>
+      </complexType>
+   </element>
+
+   <element name="serverdefinition">
+      <complexType>
+         <sequence>
+         </sequence>
+         <attribute name="id" type="string" use="required">
+            <annotation>
+               <documentation>
+                  server id
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="definitionfile" type="string" use="required">
+            <annotation>
+               <documentation>
+                  location of the generic server definition file
+               </documentation>
+               <appInfo>
+                  <meta.attribute kind="resource"/>
+               </appInfo>
+            </annotation>
+         </attribute>
+      </complexType>
+   </element>
+
+   <annotation>
+      <appInfo>
+         <meta.section type="since"/>
+      </appInfo>
+      <documentation>
+         1.0
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appInfo>
+         <meta.section type="examples"/>
+      </appInfo>
+      <documentation>
+         
+&lt;pre&gt;
+&lt;extension point=&quot;org.eclipse.jst.server.generic.core.serverdefinition&quot;&gt;
+		&lt;serverdefinition id=&quot;org.eclipse.jst.server.generic.runtime.jonas4&quot; definitionfile=&quot;/servers/jonas.serverdef&quot;&gt;
+		&lt;/serverdefinition&gt;
+&lt;/extension&gt;
+&lt;/pre&gt;
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appInfo>
+         <meta.section type="apiInfo"/>
+      </appInfo>
+      <documentation>
+         
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appInfo>
+         <meta.section type="implementation"/>
+      </appInfo>
+      <documentation>
+         
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appInfo>
+         <meta.section type="copyright"/>
+      </appInfo>
+      <documentation>
+         Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies this distribution, and is available at
+&lt;a href=&quot;http://www.eclipse.org/legal/epl-v10.html&quot;&gt;http://www.eclipse.org/legal/epl-v10.html&lt;/a&gt;
+
+      </documentation>
+   </annotation>
+
+</schema>
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/CorePlugin.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/CorePlugin.java
new file mode 100644
index 0000000..f5cb0ef
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/CorePlugin.java
@@ -0,0 +1,90 @@
+/***************************************************************************************************
+ * Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Gorkem Ercan - initial API and implementation
+ *               
+ **************************************************************************************************/
+package org.eclipse.jst.server.generic.core.internal;
+
+
+import java.io.IOException;
+import java.net.URL;
+
+import org.eclipse.core.runtime.FileLocator;
+import org.eclipse.core.runtime.Plugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The main plugin class to be used in the desktop.
+ * 
+ * @author Gorkem Ercan
+ */
+public class CorePlugin extends Plugin {
+
+
+	/**
+	 * Plug-in ID
+	 */
+	public static final String PLUGIN_ID = "org.eclipse.jst.server.generic.core"; //$NON-NLS-1$
+
+	//The shared instance.
+	private static CorePlugin plugin;
+	private ServerTypeDefinitionManager fServerTypeDefinitionManager;
+	/**
+	 * The constructor.
+	 */
+	public CorePlugin() {
+		super();
+		plugin = this;
+	}
+
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.core.runtime.Plugin#start(org.osgi.framework.BundleContext)
+	 */
+	public void start(BundleContext context) throws Exception {
+		super.start(context);
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.core.runtime.Plugin#stop(org.osgi.framework.BundleContext)
+	 */
+	public void stop(BundleContext context) throws Exception {
+		super.stop(context);
+	}
+
+	/**
+	 * Returns the shared instance.
+	 * @return genericServerCoreInstance
+	 */
+	public static CorePlugin getDefault() {
+		return plugin;
+	}
+
+
+	/**
+	 * Returns the server type definition manager instance
+	 * 
+	 * @return instance
+	 */
+	public ServerTypeDefinitionManager getServerTypeDefinitionManager()
+	{
+		if(fServerTypeDefinitionManager==null)
+			fServerTypeDefinitionManager = new ServerTypeDefinitionManager(getInstallUrl());
+		return fServerTypeDefinitionManager;
+	}
+	
+	private URL getInstallUrl()
+	{
+		try {
+			return FileLocator.resolve(this.getBundle().getEntry("/")); //$NON-NLS-1$
+		} catch (IOException e) {
+			return null;
+		}	
+	}
+	
+	
+}
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/ExternalDebugLaunchConfigurationDelegate.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/ExternalDebugLaunchConfigurationDelegate.java
new file mode 100644
index 0000000..91ba97f
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/ExternalDebugLaunchConfigurationDelegate.java
@@ -0,0 +1,100 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.jst.server.generic.core.internal;
+
+import java.util.Map;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.debug.core.ILaunch;
+import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.debug.core.model.IDebugTarget;
+import org.eclipse.jdt.launching.AbstractJavaLaunchConfigurationDelegate;
+import org.eclipse.jdt.launching.IJavaLaunchConfigurationConstants;
+import org.eclipse.jdt.launching.IVMConnector;
+import org.eclipse.jdt.launching.JavaRuntime;
+import org.eclipse.osgi.util.NLS;
+
+/**
+ * <p>Extension of <code>AbstractJavaLaunchConfigurationDelegate</code> that supports 
+ * the connection to remote JVMs for external servers. Used for debugging.</p>
+ * 
+ * <p>Based on JavaRemoteApplicationLaunchConfigurationDelegate</p>
+ */
+public class ExternalDebugLaunchConfigurationDelegate 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 {
+
+        if (monitor == null) {
+            monitor = new NullProgressMonitor();
+        }
+
+        monitor.beginTask(NLS.bind(GenericServerCoreMessages.attachingToExternalGenericServer,new String[]{configuration.getName()}), 3);
+        
+        // check for cancellation
+        if (monitor.isCanceled()) {
+            return;
+        }                       
+                    
+        monitor.subTask(GenericServerCoreMessages.verifyingExternalServerDebuggingLaunchAttributes);
+                        
+        String connectorId = getVMConnectorId(configuration);
+        IVMConnector connector = null;
+        if (connectorId == null) {
+            connector = JavaRuntime.getDefaultVMConnector();
+        } else {
+            connector = JavaRuntime.getVMConnector(connectorId);
+        }
+        if (connector == null) {
+            abort(GenericServerCoreMessages.externalServerDebugConnectorNotSpecified,
+                    null, IJavaLaunchConfigurationConstants.ERR_CONNECTOR_NOT_AVAILABLE); 
+        }
+        
+        Map argMap = configuration.getAttribute(IJavaLaunchConfigurationConstants.ATTR_CONNECT_MAP, (Map)null);
+        
+        int connectTimeout = JavaRuntime.getPreferences().getInt(JavaRuntime.PREF_CONNECT_TIMEOUT);
+        argMap.put("timeout", ""+connectTimeout);  //$NON-NLS-1$//$NON-NLS-2$
+
+        // check for cancellation
+        if (monitor.isCanceled()) {
+            return;
+        }
+        
+        monitor.worked(1);
+        
+        monitor.subTask(GenericServerCoreMessages.creatingExternalServerDebuggingSourceLocator);
+        // set the default source locator if required
+        setDefaultSourceLocator(launch, configuration);
+        monitor.worked(1);      
+        
+        // connect to remote VM
+        connector.connect(argMap, monitor, launch);
+        
+        // check for cancellation
+        if (monitor.isCanceled()) {
+            IDebugTarget[] debugTargets = launch.getDebugTargets();
+            for (int i = 0; i < debugTargets.length; i++) {
+                IDebugTarget target = debugTargets[i];
+                if (target.canDisconnect()) {
+                    target.disconnect();
+                }
+            }
+            return;
+        }
+        
+        monitor.done();
+    }
+}
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/ExternalLaunchConfigurationDelegate.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/ExternalLaunchConfigurationDelegate.java
new file mode 100644
index 0000000..5832377
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/ExternalLaunchConfigurationDelegate.java
@@ -0,0 +1,197 @@
+/*******************************************************************************
+ * Copyright (c) 2005 BEA Systems, Inc. 
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    rfrost@bea.com
+ *    tyip@bea.com
+ *    
+ *    Based on GenericServerLaunchConfigurationDelegate by Gorkem Ercan
+ *******************************************************************************/
+
+package org.eclipse.jst.server.generic.core.internal;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.tools.ant.taskdefs.Execute;
+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.DebugPlugin;
+import org.eclipse.debug.core.ILaunch;
+import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
+import org.eclipse.debug.core.ILaunchManager;
+import org.eclipse.debug.core.model.IProcess;
+import org.eclipse.debug.core.model.RuntimeProcess;
+import org.eclipse.jdt.launching.AbstractJavaLaunchConfigurationDelegate;
+import org.eclipse.jdt.launching.IJavaLaunchConfigurationConstants;
+import org.eclipse.wst.server.core.IServer;
+import org.eclipse.wst.server.core.ServerUtil;
+import org.eclipse.wst.server.core.model.ServerBehaviourDelegate;
+
+/**
+ * <p>Extension of <code>AbstractJavaLaunchConfigurationDelegate</code> that supports 
+ * servers which are started/stopped via external executables (e.g. scripts).</p>
+ * 
+ * <p>Note: <code>AbstractJavaLaunchConfigurationDelegate</code> is extended simply to take advantage
+ * of a set of useful code that is not directly related to launching a JVM-based app.</p>
+ */
+public class ExternalLaunchConfigurationDelegate extends AbstractJavaLaunchConfigurationDelegate {
+
+	/**
+	 * Identifier for the executable server configuration type
+	 * (value <code>"org.eclipse.jst.server.generic.core.ExternalLaunchConfigurationType"</code>).
+	 */
+	public static final String ID_EXTERNAL_LAUNCH_TYPE = CorePlugin.PLUGIN_ID + ".ExternalLaunchConfigurationType"; //$NON-NLS-1$
+
+	/**
+	 * Name of the launch configuration attribute that holds the external executable commandline.
+	 */
+	public static final String COMMANDLINE = CorePlugin.PLUGIN_ID  + ".COMMANDLINE"; //$NON-NLS-1$
+
+	/**
+	 * Name of the launch configuration attribute that holds a descriptive name for the external executable.
+	 */
+	public static final String EXECUTABLE_NAME = CorePlugin.PLUGIN_ID + ".EXECUTABLE_NAME"; //$NON-NLS-1$
+
+	/**
+	 * Name of the launch configuration attribute that holds the debug port.
+	 */
+	public static final String DEBUG_PORT = CorePlugin.PLUGIN_ID + ".DEBUG_PORT"; //$NON-NLS-1$
+	
+	/**
+	 * Default value for the descriptive name for the external executable.
+	 */
+	public static final String DEFAULT_EXECUTABLE_NAME = "External Generic Server"; //$NON-NLS-1$
+	
+	/**
+	 * Debugging launch configuration delegate.
+	 */
+	private static ExternalDebugLaunchConfigurationDelegate debuggingDelegate =
+        new ExternalDebugLaunchConfigurationDelegate();
+	
+	/* (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 {
+		IServer server = ServerUtil.getServer(configuration);
+		if (server == null) {
+		    abort(GenericServerCoreMessages.missingServer, null, IJavaLaunchConfigurationConstants.ERR_INTERNAL_ERROR);
+		}	
+
+		ExternalServerBehaviour serverBehavior = (ExternalServerBehaviour) server.loadAdapter(ServerBehaviourDelegate.class, null);
+		
+		// initialize the server, check the ports and start the PingThread that will check 
+		// server state
+		serverBehavior.setupLaunch(launch, mode, monitor);
+		
+		// get the "external" command
+		String commandline = configuration.getAttribute(COMMANDLINE, (String) null);
+		if (commandline == null || commandline.length() == 0) {
+			abort(GenericServerCoreMessages.commandlineUnspecified, null, IJavaLaunchConfigurationConstants.ERR_INTERNAL_ERROR);			
+		}
+		
+		// parse the "external" command into multiple args
+		String[] cmdArgs = DebugPlugin.parseArguments(commandline);
+		// get the "programArguments", parsed into multiple args
+		String[] pgmArgs = DebugPlugin.parseArguments(getProgramArguments(configuration));
+		
+		// Create the full array of cmds
+		String[] cmds = new String[cmdArgs.length + pgmArgs.length];
+		System.arraycopy(cmdArgs, 0, cmds, 0, cmdArgs.length);
+		System.arraycopy(pgmArgs, 0, cmds, cmdArgs.length, pgmArgs.length);
+		
+		// get a descriptive name for the executable
+		String executableName = configuration.getAttribute(EXECUTABLE_NAME, DEFAULT_EXECUTABLE_NAME);
+		
+		// get the executable environment
+		ILaunchManager manager = DebugPlugin.getDefault().getLaunchManager();
+		String[] env = manager.getEnvironment(configuration);
+		
+		// get the working directory
+		File workingDir = verifyWorkingDirectory(configuration);
+		if (workingDir == null) {
+			abort(GenericServerCoreMessages.workingdirUnspecified, null, IJavaLaunchConfigurationConstants.ERR_INTERNAL_ERROR);			
+		}
+		
+		// Launch the executable for the configuration using the Ant Execute class
+		try {
+			Process process = Execute.launch(null, cmds, env, workingDir, true);
+			serverBehavior.startPingThread();
+			IProcess runtimeProcess = new RuntimeProcess(launch, process, executableName, null);
+			launch.addProcess(runtimeProcess);
+			serverBehavior.setProcess(runtimeProcess);
+		} catch (IOException ioe) {
+			abort(GenericServerCoreMessages.errorLaunchingExecutable, ioe,  IJavaLaunchConfigurationConstants.ERR_INTERNAL_ERROR);
+		}
+
+		if (mode.equals("debug")) { //$NON-NLS-1$
+			ILaunchConfigurationWorkingCopy wc = createDebuggingConfig(configuration);
+			// if we're launching the debugging we need to wait for the config to start
+			// before launching the debugging session
+			serverBehavior.setDebuggingConfig(wc, mode, launch, monitor);
+		}
+	}
+
+	private ILaunchConfigurationWorkingCopy createDebuggingConfig(ILaunchConfiguration configuration) 
+	throws CoreException {
+        ILaunchConfigurationWorkingCopy wc = configuration.getWorkingCopy();
+        setDebugArgument(wc, IJavaLaunchConfigurationConstants.ATTR_CONNECT_MAP, "hostname", "localhost");  //$NON-NLS-1$//$NON-NLS-2$
+        String port = configuration.getAttribute(DEBUG_PORT, (String) null);
+        if (port==null || port.length()==0) {
+        	abort(GenericServerCoreMessages.debugPortUnspecified, null, IJavaLaunchConfigurationConstants.ERR_INTERNAL_ERROR);
+        }
+        setDebugArgument(wc, IJavaLaunchConfigurationConstants.ATTR_CONNECT_MAP, "port", port); //$NON-NLS-1$
+        return wc;
+	}
+	
+	/**
+	 * Starts the debugging session
+	 */
+	protected static void startDebugging(ILaunchConfigurationWorkingCopy wc,
+			       						 String mode,
+			       						 ILaunch launch, 
+			       						 IProgressMonitor monitor) throws CoreException {
+		Trace.trace(Trace.FINEST, "Starting debugging"); //$NON-NLS-1$
+		debuggingDelegate.launch(wc, mode, launch, monitor);
+	}
+	  
+    private void setDebugArgument(ILaunchConfigurationWorkingCopy config, String attribKey, String key, String arg) {
+        try {
+            Map args = config.getAttribute(attribKey, (Map)null);
+            if (args!=null) {
+                args = new HashMap(args);
+            } else {
+                args = new HashMap();
+            }
+            args.put(key, String.valueOf(arg));
+            config.setAttribute(attribKey, args);
+        } catch (CoreException ce) {
+            // ignore
+        }        
+    }
+	
+	/**
+	 * 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/core/internal/ExternalServerBehaviour.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/ExternalServerBehaviour.java
new file mode 100644
index 0000000..bd630bd
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/ExternalServerBehaviour.java
@@ -0,0 +1,271 @@
+/*******************************************************************************
+ * Copyright (c) 2005 BEA Systems, Inc. 
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    rfrost@bea.com - initial API and implementation
+ *    
+ *    Based on GenericServerBehavior by Gorkem Ercan
+ *******************************************************************************/
+package org.eclipse.jst.server.generic.core.internal;
+
+import java.util.Iterator;
+import java.util.List;
+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.ILaunchConfigurationWorkingCopy;
+import org.eclipse.debug.core.ILaunchManager;
+import org.eclipse.debug.core.model.IProcess;
+import org.eclipse.jdt.launching.IJavaLaunchConfigurationConstants;
+import org.eclipse.jst.server.generic.internal.xml.Resolver;
+import org.eclipse.jst.server.generic.servertype.definition.External;
+import org.eclipse.jst.server.generic.servertype.definition.ServerRuntime;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.wst.server.core.IServer;
+import org.eclipse.wst.server.core.ServerPort;
+import org.eclipse.wst.server.core.internal.Server;
+import org.eclipse.wst.server.core.util.SocketUtil;
+
+/**
+ * Subclass of <code>GenericServerBehavior</code> that supports 
+ * servers which are started/stopped via external executables (e.g. scripts).
+ */
+public class ExternalServerBehaviour extends GenericServerBehaviour {
+	
+	// config for debugging session
+	private ILaunchConfigurationWorkingCopy fLaunchConfigurationWC;
+    private String fMode;
+    private ILaunch fLaunch; 
+    private IProgressMonitor fProgressMonitor;
+    
+    /**
+     * Override to reset the status if the state was unknown
+     * @param force 
+     */
+    public void stop(boolean force) {
+    	resetStatus(getServer().getServerState());
+    	super.stop(force);
+    }
+
+    /**
+     * Override to set status to unknown if the port was in use and to reset the status if the state was 
+     * unknown and an exception was not thrown. Will want to change logic once external generic server pings
+     * server process to determine state instead of maintaining handle to process. 
+     */
+    protected void setupLaunch(ILaunch launch, String launchMode, IProgressMonitor monitor) throws CoreException {
+    	int state = getServer().getServerState();
+    	try {
+    		super.setupLaunch(launch, launchMode, monitor);
+    	} catch (CoreException ce) {
+    		ServerPort portInUse = portInUse();
+    		if (portInUse != null) {
+    			Trace.trace(Trace.WARNING, "Port " + portInUse.getPort() + " is currently in use");  //$NON-NLS-1$//$NON-NLS-2$
+				Status status = new Status(IStatus.WARNING, CorePlugin.PLUGIN_ID, IStatus.OK, 
+							NLS.bind(GenericServerCoreMessages.errorPortInUse,Integer.toString(portInUse.getPort()),portInUse.getName()), null);
+				setServerStatus(status);
+				setServerState(IServer.STATE_UNKNOWN);
+    		}
+    		throw ce;
+    	}
+    	resetStatus(state);
+    }
+    
+    private ServerPort portInUse() {
+    	ServerPort[] ports = getServer().getServerPorts(null);
+    	ServerPort sp;
+    	for(int i=0;i<ports.length;i++){
+    		sp = ports[i];
+    		if (SocketUtil.isPortInUse(sp.getPort(), 5)) {
+    			return sp;
+    		}
+    	}
+    	return null;
+	}
+    
+	/**
+	 * Override to trigger the launch of the debugging session (if appropriate).
+	 */
+	protected synchronized void setServerStarted() {
+		if (fLaunchConfigurationWC != null) {
+			try {
+				ExternalLaunchConfigurationDelegate.startDebugging(fLaunchConfigurationWC, fMode, fLaunch, fProgressMonitor);
+			} catch (CoreException ce) {
+				// failed to start debugging, so set mode to run
+				setMode(ILaunchManager.RUN_MODE);
+				final Status status = new Status(IStatus.ERROR, CorePlugin.PLUGIN_ID, 1,
+							GenericServerCoreMessages.errorStartingExternalDebugging, ce); 
+				CorePlugin.getDefault().getLog().log(status);
+				Trace.trace(Trace.SEVERE, GenericServerCoreMessages.errorStartingExternalDebugging, ce);
+			} finally {
+				clearDebuggingConfig();
+			}
+		}
+		setServerState(IServer.STATE_STARTED);
+ 	}
+	
+	/*
+	 * If the server state is unknown, reset the status to OK
+	 */
+	private void resetStatus(int state) {
+		if (state == IServer.STATE_UNKNOWN) {
+			setServerStatus(null);
+		}
+	}
+	
+	/**
+	 * Since terminate() is called during restart, need to override to
+	 * call shutdown instead of just killing the original process.
+	 */
+	protected void terminate() {
+		int state = getServer().getServerState();
+		if (state == IServer.STATE_STOPPED) 
+    		return;
+    
+		// cache a ref to the current process
+		IProcess currentProcess = process;
+		// set the process var to null so that GenericServerBehavior.setProcess()
+		// will grab the stop executable (and declare the server stopped when it exits)
+		process = null;
+
+		// execute the standard shutdown
+		shutdown(state);
+		
+		// if the shutdown did not terminate the process, forcibly terminate it
+		try {
+    		if (currentProcess != null && !currentProcess.isTerminated()) {
+    			Trace.trace(Trace.FINER, "About to kill process: " + currentProcess); //$NON-NLS-1$
+    			currentProcess.terminate();
+    			currentProcess = null;
+    		}
+    	} catch (Exception e) {
+    		Trace.trace(Trace.SEVERE, "Error killing the process", e); //$NON-NLS-1$
+    	}
+	}
+	
+	/**
+	 * Override superclass method to correctly setup the launch configuration for starting an external
+	 * server.
+	 * @param workingCopy
+	 * @param monitor
+	 * @throws CoreException 
+	 */
+	public void setupLaunchConfiguration(ILaunchConfigurationWorkingCopy workingCopy,
+										 IProgressMonitor monitor) throws CoreException {
+		clearDebuggingConfig();
+		ServerRuntime serverDef = getServerDefinition();
+		Resolver resolver = serverDef.getResolver();
+		workingCopy.setAttribute(IJavaLaunchConfigurationConstants.ATTR_WORKING_DIRECTORY,
+					resolver.resolveProperties(serverDef.getStart().getWorkingDirectory()));
+		String external = resolver.resolveProperties(getExternalForOS(serverDef.getStart().getExternal()));
+		workingCopy.setAttribute(ExternalLaunchConfigurationDelegate.COMMANDLINE, external);
+		workingCopy.setAttribute(ExternalLaunchConfigurationDelegate.DEBUG_PORT, 
+					resolver.resolveProperties(serverDef.getStart().getDebugPort()));
+		// just use the commandline for now
+		workingCopy.setAttribute(ExternalLaunchConfigurationDelegate.EXECUTABLE_NAME, external);
+        Map environVars = getEnvironmentVariables(getServerDefinition().getStart());
+        if(!environVars.isEmpty()){
+        	workingCopy.setAttribute(ILaunchManager.ATTR_ENVIRONMENT_VARIABLES,environVars);
+        }
+        String existingProgArgs  = workingCopy.getAttribute(IJavaLaunchConfigurationConstants.ATTR_PROGRAM_ARGUMENTS, (String)null);
+        String serverProgArgs =  getProgramArguments();
+        if(existingProgArgs==null || existingProgArgs.indexOf(serverProgArgs)<0) {
+            workingCopy.setAttribute(IJavaLaunchConfigurationConstants.ATTR_PROGRAM_ARGUMENTS,serverProgArgs);
+        }
+	}
+
+	/*
+	 * Returns the first external whose "os" attribute matches (case insensitive) the beginning 
+	 * of the name of the current OS (as determined by the System "os.name" property). If
+	 * no such match is found, returns the first external that does not have an OS attribute.
+	 */
+	private String getExternalForOS(List externals) {
+		String currentOS = System.getProperty("os.name").toLowerCase(); //$NON-NLS-1$
+		External external;
+		String matchingExternal = null;
+		String externalOS;
+		Iterator i = externals.iterator();
+		while (i.hasNext()) {
+			external= (External) i.next();
+			externalOS = external.getOs();
+			if (externalOS == null) {
+				if (matchingExternal == null) {
+					matchingExternal = external.getValue();
+				}
+			} else if (currentOS.startsWith(externalOS.toLowerCase())) {
+				matchingExternal = external.getValue();
+				break;
+			}
+		}
+		return matchingExternal;
+	}
+
+	/**
+     * Returns the String ID of the launch configuration type.
+     * @return launchTypeID
+     */
+	protected String getConfigTypeID() {
+		return ExternalLaunchConfigurationDelegate.ID_EXTERNAL_LAUNCH_TYPE;
+	}
+
+	/**
+	 * Returns the String name of the stop launch configuration.
+	 * @return launcherName
+	 */
+	protected String getStopLaunchName() {
+		return GenericServerCoreMessages.externalStopLauncher;
+	}
+	
+	/**
+	 * Sets up the launch configuration for stopping the server.
+	 * 
+	 */
+	protected void setupStopLaunchConfiguration(GenericServerRuntime runtime, ILaunchConfigurationWorkingCopy wc) {
+		clearDebuggingConfig();
+		ServerRuntime serverDef = getServerDefinition();
+		Resolver resolver = serverDef.getResolver(); 
+		wc.setAttribute(IJavaLaunchConfigurationConstants.ATTR_WORKING_DIRECTORY,
+					resolver.resolveProperties(serverDef.getStop().getWorkingDirectory()));
+		String external = resolver.resolveProperties(getExternalForOS(serverDef.getStop().getExternal()));
+		wc.setAttribute(ExternalLaunchConfigurationDelegate.COMMANDLINE, external);
+		// just use commandline for now
+        Map environVars = getEnvironmentVariables(getServerDefinition().getStop());
+        if(!environVars.isEmpty()){
+        	wc.setAttribute(ILaunchManager.ATTR_ENVIRONMENT_VARIABLES,environVars);
+        }
+		wc.setAttribute(
+				IJavaLaunchConfigurationConstants.ATTR_PROGRAM_ARGUMENTS,
+				resolver.resolveProperties(serverDef.getStop().getProgramArgumentsAsString()));
+		wc.setAttribute(ExternalLaunchConfigurationDelegate.EXECUTABLE_NAME, external); 	
+		wc.setAttribute(Server.ATTR_SERVER_ID, getServer().getId());
+	}
+	
+	/**
+	 * Sets the configuration to use for launching a debugging session
+	 */
+	protected synchronized void setDebuggingConfig(ILaunchConfigurationWorkingCopy wc,
+					 			      String mode,
+					 			      ILaunch launch, 
+					 			      IProgressMonitor monitor) {
+		this.fLaunchConfigurationWC = wc;
+		this.fMode = mode;
+		this.fLaunch = launch;
+		this.fProgressMonitor = monitor;
+	}
+	
+	private synchronized void clearDebuggingConfig() {
+		this.fLaunchConfigurationWC = null;
+		this.fMode = null;
+		this.fLaunch = null;
+		this.fProgressMonitor = null;
+	}
+	
+	
+}
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/GenericPublisher.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/GenericPublisher.java
new file mode 100644
index 0000000..a5c4ea7
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/GenericPublisher.java
@@ -0,0 +1,81 @@
+/***************************************************************************************************
+ * Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Gorkem Ercan - initial API and implementation
+ *               
+ **************************************************************************************************/
+package org.eclipse.jst.server.generic.core.internal;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.wst.server.core.IModule;
+import org.eclipse.wst.server.core.IModuleArtifact;
+import org.eclipse.wst.server.core.IServer;
+
+/**
+ * The abstract publisher. This is intended to be subclassed by
+ * clients implementing the genericpublisher extension point.
+ *
+ * @author Gorkem Ercan
+ */
+public abstract class GenericPublisher 
+{
+    
+    private IModule[] fModule;
+    private GenericServerRuntime fServerRuntime;
+    private GenericServer fServer;
+    
+    protected void initialize(IModule[] module, IServer server)
+    {
+        fModule = module;
+        fServer = (GenericServer)server.loadAdapter(GenericServer.class,null);
+        fServerRuntime = (GenericServerRuntime)server.getRuntime().loadAdapter(GenericServerRuntime.class,null);
+    }
+   /**
+    * Called by the generic server implementation when a module is 
+    * removed form the server instance. 
+    * Subclasses may extend this method to perform their own module removal
+    * 
+    * @param monitor
+    * @return status
+    */ 
+   public abstract IStatus[] unpublish(IProgressMonitor monitor);
+    
+    /**
+     * Called by the generic server implementation when a publish module 
+     * event occurs. 
+     * Subclasses may extend this method to perform their own publishing
+     * 
+     * @param resource
+     * @param monitor
+     * @return status
+     */
+    public abstract IStatus[] publish(IModuleArtifact[] resource,
+            IProgressMonitor monitor);
+   
+    /**
+     * Returns the module associated with this publisher instance
+     * @return module
+     */
+    public IModule[] getModule() {
+        return fModule;
+    }
+
+    /**
+     * Generic server instance
+     * @return server
+     */
+    public GenericServer getServer(){
+    	return fServer;
+    }
+    /**
+     * a handle to server definition.
+     * @return serverdef
+     */
+    public GenericServerRuntime getServerRuntime() {
+        return fServerRuntime;
+    }
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/GenericServer.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/GenericServer.java
new file mode 100644
index 0000000..1560268
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/GenericServer.java
@@ -0,0 +1,312 @@
+/***************************************************************************************************
+ * Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Gorkem Ercan - initial API and implementation
+ *               
+ **************************************************************************************************/
+package org.eclipse.jst.server.generic.core.internal;
+
+import java.io.File;
+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.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jst.server.core.FacetUtil;
+import org.eclipse.jst.server.core.IEnterpriseApplication;
+import org.eclipse.jst.server.core.IWebModule;
+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.Property;
+import org.eclipse.jst.server.generic.servertype.definition.ServerRuntime;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.wst.server.core.IModule;
+import org.eclipse.wst.server.core.IModuleType;
+import org.eclipse.wst.server.core.ServerPort;
+import org.eclipse.wst.server.core.ServerUtil;
+import org.eclipse.wst.server.core.model.IURLProvider;
+import org.eclipse.wst.server.core.model.ServerDelegate;
+
+/**
+ * Generic XML based server implementation.
+ * 
+ * @author Gorkem Ercan
+ */
+public class GenericServer extends ServerDelegate implements IURLProvider {
+
+    private static final String ATTR_GENERIC_SERVER_MODULES = "Generic_Server_Modules_List"; //$NON-NLS-1$
+
+	public IStatus canModifyModules(IModule[] add, IModule[] remove) {
+		List moduleTypes = getServerDefinition().getModule();
+        int found =0;
+		for (int i = 0; i < add.length; i++) {
+			for(int j=0;j<moduleTypes.size();j++){
+				 Module module = (Module)moduleTypes.get(j);
+				 if(add[i].getModuleType()!= null && add[i].getModuleType().getId().equals(module.getType())){
+					 found++;
+					 break;
+				  }
+			}
+        }
+		
+		for (int i = 0; i < add.length; i++) {
+			IModule module = add[i];
+			if (module.getProject() != null) {
+				IStatus status = FacetUtil.verifyFacets(module.getProject(), getServer());
+				if (status != null && !status.isOK())
+					return status;
+			}
+		}
+		
+		if(found==add.length)
+			return new Status(IStatus.OK, CorePlugin.PLUGIN_ID, 0, "CanModifyModules", null); //$NON-NLS-1$
+		
+		return new Status(IStatus.ERROR, CorePlugin.PLUGIN_ID, 0, GenericServerCoreMessages.moduleNotCompatible, null);
+	}
+	
+    /* (non-Javadoc)
+     * @see org.eclipse.wst.server.core.model.ServerDelegate#modifyModules(org.eclipse.wst.server.core.IModule[], org.eclipse.wst.server.core.IModule[], org.eclipse.core.runtime.IProgressMonitor)
+     */
+    public void modifyModules(IModule[] add, IModule[] remove, IProgressMonitor monitor) throws CoreException {
+      
+        List modules = this.getAttribute(ATTR_GENERIC_SERVER_MODULES,(List)null);
+        
+        if(add!=null&& add.length>0)
+        {
+            if(modules==null) {
+               modules=new ArrayList(add.length);
+            }
+            for (int i = 0; i < add.length; i++) {
+               
+               if(modules.contains(add[i].getId())==false)
+                    modules.add(add[i].getId());
+            }
+        }
+        if(remove!=null && remove.length>0 && modules!=null)
+        {
+            for (int i = 0; i < remove.length; i++) {
+                modules.remove(remove[i].getId());
+             }
+        }
+        if(modules!=null)    
+            setAttribute(ATTR_GENERIC_SERVER_MODULES,modules);
+        
+    }
+
+ 	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.wst.server.core.model.IServerDelegate#getChildModules(org.eclipse.wst.server.core.model.IModule[])
+	 */
+	public IModule[] getChildModules(IModule[] module) {
+		if (module[0] != null && module[0].getModuleType() != null) {
+			if (module.length == 1) {
+				IModuleType moduleType = module[0].getModuleType();
+				if (moduleType != null && "jst.ear".equals(moduleType.getId())) { //$NON-NLS-1$
+					IEnterpriseApplication enterpriseApplication = (IEnterpriseApplication) module[0]
+							.loadAdapter(IEnterpriseApplication.class, null);
+					if (enterpriseApplication != null) {
+						IModule[] earModules = enterpriseApplication.getModules(); 
+						if ( earModules != null) {
+							return earModules;
+						}
+					}
+				}
+				else if (moduleType != null && "jst.web".equals(moduleType.getId())) { //$NON-NLS-1$
+					IWebModule webModule = (IWebModule) module[0].loadAdapter(IWebModule.class, null);
+					if (webModule != null) {
+						IModule[] modules = webModule.getModules();
+						return modules;
+					}
+				}
+			}
+		}
+		return new IModule[0];
+	}
+
+	/**
+	 * Returns the server instance properties including runtime properties. 
+	 * 
+	 * @return server instance properties.
+	 */
+	private Map getInstanceProperties() {
+		Map runtimeProperties =getRuntimeDelegate().getServerInstanceProperties();
+		Map serverProperties = getServerInstanceProperties();
+		Map instanceProperties = new HashMap(runtimeProperties.size()+serverProperties.size());
+		instanceProperties.putAll(runtimeProperties);
+		instanceProperties.putAll(serverProperties);
+		return instanceProperties;
+	}
+	
+ 	
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.wst.server.core.model.IMonitorableServer#getServerPorts()
+	 */
+	public org.eclipse.wst.server.core.ServerPort[] 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()));		 //$NON-NLS-1$
+		}
+	
+		return (org.eclipse.wst.server.core.ServerPort[])ports.toArray(new org.eclipse.wst.server.core.ServerPort[ports.size()]);
+	}
+
+
+	/* (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.loadAdapter(IWebModule.class,null)==null )
+				return null;
+            
+            IWebModule webModule =(IWebModule)module.loadAdapter(IWebModule.class,null);
+            String host = getServer().getHost();
+			String url = "http://"+host; //$NON-NLS-1$
+			int port = 0;
+			
+			port = getHttpPort();
+			port =ServerUtil.getMonitoredPort(getServer(), port, "web"); //$NON-NLS-1$
+			if (port != 80)
+				url += ":" + port; //$NON-NLS-1$
+
+			url += "/"+webModule.getContextRoot(); //$NON-NLS-1$
+
+			if (!url.endsWith("/")) //$NON-NLS-1$
+				url += "/"; //$NON-NLS-1$
+
+			return new URL(url);
+		} catch (Exception e) {
+			Trace.trace("Could not get root URL", e); //$NON-NLS-1$
+			return null;
+		}
+
+	}
+
+	/**
+	 * Return http port
+	 * @return port
+	 */
+	protected 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() ) ) //$NON-NLS-1$
+				port = Integer.parseInt(aPort.getNo());	
+		}
+		if( port == -1)
+			port = 8080;
+		return port;
+	}
+
+	/**
+	 * Returns the ServerRuntime that represents the .serverdef
+	 * file for this server. 
+	 * @return server runtime
+	 */
+    public ServerRuntime getServerDefinition(){
+		String rtTypeId = getServer().getRuntime().getRuntimeType().getId();
+		return CorePlugin.getDefault().getServerTypeDefinitionManager().getServerRuntimeDefinition(rtTypeId,getInstanceProperties());
+	}
+
+    private GenericServerRuntime getRuntimeDelegate(){
+    	return (GenericServerRuntime)getServer().getRuntime().loadAdapter(GenericServerRuntime.class,null);
+     }
+
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see org.eclipse.wst.server.core.model.ServerDelegate#getRootModules(org.eclipse.wst.server.core.IModule)
+     */
+    public IModule[] getRootModules(IModule module) throws CoreException {
+     	IStatus status = canModifyModules(new IModule[] { module }, null);
+        if (status != null && !status.isOK())
+            throw  new CoreException(status);;
+        IModule[] childs = doGetParentModules(module);
+        if(childs.length>0)
+        	return childs;
+        return new IModule[] { module };
+    }
+
+
+	private IModule[] doGetParentModules(IModule module) {
+		IModule[] ears = ServerUtil.getModules("jst.ear"); //$NON-NLS-1$
+		ArrayList list = new ArrayList();
+		for (int i = 0; i < ears.length; i++) {
+			IEnterpriseApplication ear = (IEnterpriseApplication)ears[i].loadAdapter(IEnterpriseApplication.class,null);
+			IModule[] childs = ear.getModules();
+			for (int j = 0; j < childs.length; j++) {
+				if(childs[j].equals(module))
+					list.add(ears[i]);
+			}
+		}
+		return (IModule[])list.toArray(new IModule[list.size()]);
+	}
+	/**
+	 * Returns the server properties.
+	 * @return Map of properties.
+	 */
+    public Map getServerInstanceProperties() {
+ 		return getAttribute(GenericServerRuntime.SERVER_INSTANCE_PROPERTIES, new HashMap());
+ 	}
+ 	/**
+ 	 * Change the server instance properties.
+ 	 * 
+ 	 * @param map
+ 	 */
+ 	public void setServerInstanceProperties(Map map) {
+ 		setAttribute(GenericServerRuntime.SERVER_INSTANCE_PROPERTIES, map);
+ 	}
+ 	/**
+ 	 * Checks if the properties set for this server is valid. 
+ 	 * @return status
+ 	 */
+ 	public IStatus validate() {
+ 		List props = this.getServerDefinition().getProperty();
+ 		for(int i=0;i<props.size();i++)
+ 		{
+ 			Property property =(Property)props.get(i);
+ 			if(property.getType().equals(Property.TYPE_DIRECTORY) || property.getType().equals(Property.TYPE_FILE))
+ 			{
+ 				String path= (String)getInstanceProperties().get(property.getId());
+ 				if(path!=null && !pathExist(path))
+ 					return  new Status(IStatus.ERROR, CorePlugin.PLUGIN_ID, 0, NLS.bind(GenericServerCoreMessages.invalidPath,path), null);
+ 			}
+ 		}
+ 		return new Status(IStatus.OK, CorePlugin.PLUGIN_ID, 0, "", null); //$NON-NLS-1$
+ 	}
+	private boolean pathExist(String path){
+		File f = new File(path);
+		return f.exists();
+	}
+ 
+	public void setDefaults(IProgressMonitor monitor) {
+ 		List props = this.getServerDefinition().getProperty();
+ 		Map instancePropsMap = new HashMap();
+ 		for (Iterator iter = props.iterator(); iter.hasNext();) {
+			Property element = (Property) iter.next();
+			if(Property.CONTEXT_SERVER.equalsIgnoreCase(element.getContext()))
+				instancePropsMap.put(element.getId(), element.getDefault());
+		}
+ 		setServerInstanceProperties(instancePropsMap);
+ 	}
+ 	
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/GenericServerBehaviour.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/GenericServerBehaviour.java
new file mode 100644
index 0000000..046e674
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/GenericServerBehaviour.java
@@ -0,0 +1,531 @@
+/***************************************************************************************************
+ * Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Gorkem Ercan - initial API and implementation
+ *               
+ **************************************************************************************************/
+package org.eclipse.jst.server.generic.core.internal;
+
+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.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.servertype.definition.ArchiveType;
+import org.eclipse.jst.server.generic.servertype.definition.ArgumentPair;
+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.ServerRuntime;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.wst.server.core.IModule;
+import org.eclipse.wst.server.core.IServer;
+import org.eclipse.wst.server.core.ServerPort;
+import org.eclipse.wst.server.core.internal.DeletedModule;
+import org.eclipse.wst.server.core.model.ServerBehaviourDelegate;
+import org.eclipse.wst.server.core.model.ServerDelegate;
+import org.eclipse.wst.server.core.util.SocketUtil;
+
+/**
+ * Server behaviour delegate implementation for generic server.
+ *
+ * @author Gorkem Ercan
+ */
+public class GenericServerBehaviour extends ServerBehaviourDelegate {
+	
+	private static final String ATTR_STOP = "stop-server"; //$NON-NLS-1$
+    
+	// the thread used to ping the server to check for startup
+	protected transient PingThread ping = null;
+    protected transient IDebugEventSetListener processListener;
+    protected transient IProcess process;
+    
+    /* (non-Javadoc)
+     * @see org.eclipse.wst.server.core.model.ServerBehaviourDelegate#publishServer(org.eclipse.core.runtime.IProgressMonitor)
+     */
+    public void publishServer(int kind, IProgressMonitor monitor) throws CoreException {
+        // do nothing
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.wst.server.core.model.ServerBehaviourDelegate#publishModule(org.eclipse.wst.server.core.IModule[], org.eclipse.wst.server.core.IModule, org.eclipse.core.runtime.IProgressMonitor)
+     */
+    public void publishModule(int kind, int deltaKind, IModule[] module,
+            IProgressMonitor monitor) throws CoreException {
+ 
+    	
+        if(REMOVED == deltaKind){
+            removeFromServer(module,monitor);
+        }
+        else{
+        	checkClosed(module);
+            String publisherId = ServerTypeDefinitionUtil.getPublisherID(module[0], getServerDefinition());
+            GenericPublisher publisher = PublishManager.getPublisher(publisherId);
+            if(publisher==null){
+                IStatus status = new Status(IStatus.ERROR,CorePlugin.PLUGIN_ID,0, NLS.bind(GenericServerCoreMessages.unableToCreatePublisher,publisherId),null);
+                throw new CoreException(status);
+            }
+            publisher.initialize(module,getServer());
+            IStatus[] status= publisher.publish(null,monitor);
+            if(status==null){
+                setModulePublishState(module, IServer.PUBLISH_STATE_NONE);
+            }else {
+                for (int i=0; i < status.length; i++) {
+                    if (IStatus.ERROR == status[i].getSeverity()){
+                    	setModulePublishState(module, IServer.PUBLISH_STATE_UNKNOWN);
+                        throw new CoreException(status[i]);
+                    }
+                }
+            }
+        }
+    }
+
+    private void checkClosed(IModule[] module) throws CoreException
+    {
+    	for(int i=0;i<module.length;i++)
+    	{
+    		if(module[i] instanceof DeletedModule)
+    		{	
+                IStatus status = new Status(IStatus.ERROR,CorePlugin.PLUGIN_ID,0, NLS.bind(GenericServerCoreMessages.canNotPublishDeletedModule,module[i].getName()),null);
+                throw new CoreException(status);
+    		}
+    	}
+    }
+    private void removeFromServer(IModule[] module, IProgressMonitor monitor) throws CoreException
+    {
+    	String publisherId = ServerTypeDefinitionUtil.getPublisherID(module[0], getServerDefinition());
+        GenericPublisher publisher = PublishManager.getPublisher(publisherId);  
+        if(publisher==null){
+            IStatus status = new Status(IStatus.ERROR,CorePlugin.PLUGIN_ID,0,NLS.bind(GenericServerCoreMessages.unableToCreatePublisher,publisherId),null);
+            throw new CoreException(status);
+        }
+        publisher.initialize(module,getServer());
+        publisher.unpublish(monitor);
+    }
+    
+    
+    /* (non-Javadoc)
+     * @see org.eclipse.wst.server.core.model.ServerBehaviourDelegate#stop(boolean)
+     */
+    public void stop(boolean force) {
+		if (force) {
+			terminate();
+			return;
+		}
+
+		int state = getServer().getServerState();
+		if (state == IServer.STATE_STOPPED)
+			return;
+		else if (state == IServer.STATE_STARTING || state == IServer.STATE_STOPPING) {
+			terminate();
+			return;
+		}
+		
+		shutdown(state);
+    }
+    
+    /**
+     * Shuts down the server via the launch configuration.
+     */
+    protected void shutdown(int state) {
+		GenericServerRuntime runtime = getRuntimeDelegate();
+		try {
+			Trace.trace(Trace.FINEST, "Stopping Server"); //$NON-NLS-1$
+			if (state != IServer.STATE_STOPPED)
+				setServerState(IServer.STATE_STOPPING);
+			String configTypeID = getConfigTypeID(); 
+			ILaunchManager mgr = DebugPlugin.getDefault().getLaunchManager();
+			ILaunchConfigurationType type = mgr.getLaunchConfigurationType(configTypeID);
+			String launchName = getStopLaunchName();
+			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);		
+			// Set the stop attribute so that we know we are stopping
+			wc.setAttribute(ATTR_STOP, "true"); //$NON-NLS-1$
+			
+			// Setup the launch config for stopping the server
+			setupStopLaunchConfiguration(runtime, wc);
+			
+			// Launch the stop launch config
+			wc.launch(ILaunchManager.RUN_MODE, new NullProgressMonitor());
+
+		} catch (Exception e) {
+			Trace.trace(Trace.SEVERE, "Error stopping Server", e); //$NON-NLS-1$
+		}
+    }
+
+    /**
+     * Returns the String ID of the launch configuration type.
+     * @return id
+     */
+	protected String getConfigTypeID() {
+		return IJavaLaunchConfigurationConstants.ID_JAVA_APPLICATION;
+	}
+
+	/**
+	 * Returns the String name of the stop launch configuration.
+	 * @return launchname
+	 */
+	protected String getStopLaunchName() {
+		return "GenericServerStopper"; //$NON-NLS-1$
+	}
+	
+	private boolean isRemote(){
+		return (getServer().getServerType().supportsRemoteHosts()&& !SocketUtil.isLocalhost(getServer().getHost()) );
+	}	
+	/**
+	 * Sets up the launch configuration for stopping the server.
+	 */
+	protected void setupStopLaunchConfiguration(GenericServerRuntime runtime, ILaunchConfigurationWorkingCopy wc) {
+		if(isRemote())// Do not launch for remote servers.
+			return;
+		
+		wc.setAttribute(
+				IJavaLaunchConfigurationConstants.ATTR_MAIN_TYPE_NAME,
+				getServerDefinition().getResolver().resolveProperties(this.getServerDefinition().getStop().getMainClass()));
+
+		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());
+
+        Map environVars = getEnvironmentVariables(getServerDefinition().getStop());
+        if(!environVars.isEmpty()){
+        	wc.setAttribute(ILaunchManager.ATTR_ENVIRONMENT_VARIABLES,environVars);
+        }
+        
+		wc.setAttribute(
+				IJavaLaunchConfigurationConstants.ATTR_WORKING_DIRECTORY,
+				getServerDefinition().getResolver().resolveProperties(getServerDefinition().getStop().getWorkingDirectory()));
+		wc.setAttribute(
+				IJavaLaunchConfigurationConstants.ATTR_PROGRAM_ARGUMENTS,
+				getServerDefinition().getResolver().resolveProperties(getServerDefinition().getStop().getProgramArgumentsAsString()));
+		wc.setAttribute(
+				IJavaLaunchConfigurationConstants.ATTR_VM_ARGUMENTS,
+				getServerDefinition().getResolver().resolveProperties(getServerDefinition().getStop().getVmParametersAsString()));				
+	}
+
+    /**
+     * Start class name
+     * @return name
+     */
+    public String getStartClassName() {
+    	return getServerDefinition().getResolver().resolveProperties(getServerDefinition().getStart().getMainClass());
+    }
+
+    /** 
+     * Server definition
+     * @return serverdef
+     */
+    public ServerRuntime getServerDefinition() {
+        GenericServer server = (GenericServer)getServer().loadAdapter(ServerDelegate.class, null);
+        return server.getServerDefinition();
+    }
+    
+    protected GenericServerRuntime getRuntimeDelegate() {
+       return (GenericServerRuntime)getServer().getRuntime().loadAdapter(GenericServerRuntime.class,null);
+    }
+
+    private List getStartClasspath() {
+    	String cpRef = getServerDefinition().getStart().getClasspathReference();
+    	return serverClasspath(cpRef);
+    }
+
+    /**
+     * @param cpRef
+     * @return classpath
+     */
+    protected List serverClasspath(String cpRef) {
+    	Classpath classpath = getServerDefinition().getClasspath(cpRef);
+    	
+        List cpEntryList = 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());
+    	
+    			cpEntryList.add(JavaRuntime.newArchiveRuntimeClasspathEntry(
+    					new Path(cpath)));
+         }
+    	return cpEntryList;
+    }
+
+    /**
+     * @param wc
+     * @param vmInstall
+     */
+    protected void setupLaunchClasspath(ILaunchConfigurationWorkingCopy wc, IVMInstall vmInstall, List cp) {
+		//merge existing classpath with server classpath
+		try {
+			IRuntimeClasspathEntry[] existingCps = JavaRuntime.computeUnresolvedRuntimeClasspath(wc);
+			for (int i = 0; i < existingCps.length; i++) {
+				if(cp.contains(existingCps[i])==false){ 
+					cp.add(existingCps[i]);
+				}
+			}
+		} catch (CoreException e) {
+			// ignore
+		}
+		
+    	wc.setAttribute(IJavaLaunchConfigurationConstants.ATTR_CLASSPATH, convertCPEntryToMemento(cp));
+    	wc.setAttribute(IJavaLaunchConfigurationConstants.ATTR_DEFAULT_CLASSPATH,false);
+    }
+
+	private List convertCPEntryToMemento(List cpEntryList)
+	{
+		List list = new ArrayList(cpEntryList.size());
+		Iterator iterator = cpEntryList.iterator();
+		while(iterator.hasNext())
+		{
+			IRuntimeClasspathEntry entry = (IRuntimeClasspathEntry)iterator.next();
+			try {
+				list.add(entry.getMemento());
+			} catch (CoreException e) {
+				// ignore
+			}
+		}
+		return list;
+	}
+
+    private String getWorkingDirectory() {
+    	return getServerDefinition().getResolver().resolveProperties(getServerDefinition().getStart().getWorkingDirectory());
+    }
+
+    protected String getProgramArguments() {
+    	return getServerDefinition().getResolver().resolveProperties(getServerDefinition().getStart().getProgramArgumentsAsString());
+    }
+
+    protected Map getEnvironmentVariables(LaunchConfiguration config){
+        List variables = config.getEnvironmentVariable();
+        Map varsMap = new HashMap(variables.size());
+        Iterator iterator= variables.iterator();
+        while(iterator.hasNext()){
+        	ArgumentPair pair = (ArgumentPair)iterator.next();
+        	varsMap.put(pair.getName(),getServerDefinition().getResolver().resolveProperties(pair.getValue()));
+        }
+        return varsMap;
+    }
+    
+    private String getVmArguments() {
+    	return getServerDefinition().getResolver().resolveProperties(getServerDefinition().getStart().getVmParametersAsString());
+    }
+
+    public void setupLaunchConfiguration(ILaunchConfigurationWorkingCopy workingCopy, IProgressMonitor monitor) throws CoreException {
+		if(isRemote())// No launch for remote servers.
+			return;
+    	
+    	workingCopy.setAttribute(
+                IJavaLaunchConfigurationConstants.ATTR_MAIN_TYPE_NAME,
+                getStartClassName());
+
+        GenericServerRuntime runtime = getRuntimeDelegate();
+
+        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());
+        
+
+        Map environVars = getEnvironmentVariables(getServerDefinition().getStart());
+        if(!environVars.isEmpty()){
+        	workingCopy.setAttribute(ILaunchManager.ATTR_ENVIRONMENT_VARIABLES,environVars);
+        }
+        
+        String existingProgArgs  = workingCopy.getAttribute(IJavaLaunchConfigurationConstants.ATTR_PROGRAM_ARGUMENTS, (String)null);
+        String serverProgArgs =  getProgramArguments();
+        if(existingProgArgs==null || existingProgArgs.indexOf(serverProgArgs)<0) {
+            workingCopy.setAttribute(IJavaLaunchConfigurationConstants.ATTR_PROGRAM_ARGUMENTS,serverProgArgs);
+        }
+        String existingVMArgs = workingCopy.getAttribute(IJavaLaunchConfigurationConstants.ATTR_VM_ARGUMENTS,(String)null);
+        String serverVMArgs= getVmArguments();
+        if(existingVMArgs==null || existingVMArgs.indexOf(serverVMArgs)<0) {
+            workingCopy.setAttribute(IJavaLaunchConfigurationConstants.ATTR_VM_ARGUMENTS,serverVMArgs);
+        }
+	}
+    
+    /**
+     * Setup for starting the server. Checks all ports available 
+     * and sets server state and mode.
+     * 
+     * @param launch ILaunch
+     * @param launchMode String
+     * @param monitor IProgressMonitor
+     */
+    protected void setupLaunch(ILaunch launch, String launchMode, IProgressMonitor monitor) throws CoreException {
+    	if ("true".equals(launch.getLaunchConfiguration().getAttribute(ATTR_STOP, "false")))  //$NON-NLS-1$ //$NON-NLS-2$
+    		return;
+
+    	String host = getServer().getHost();
+    	ServerPort[] ports = getServer().getServerPorts(null);
+    	ServerPort sp = null;
+    	if(SocketUtil.isLocalhost(host)){
+	    	for(int i=0;i<ports.length;i++){
+	    		sp= ports[i];
+	    		if (SocketUtil.isPortInUse(ports[i].getPort(), 5))
+	    			throw new CoreException(new Status(IStatus.ERROR, CorePlugin.PLUGIN_ID, 0, NLS.bind(GenericServerCoreMessages.errorPortInUse,Integer.toString(sp.getPort()),sp.getName()),null));
+	    	}
+    	}
+    	setServerState(IServer.STATE_STARTING);
+    	setMode(launchMode);
+    }
+    /**
+     * Call to start Ping thread that will check for startup of the server.
+     *
+     */
+    protected void startPingThread()
+    {
+    	try {
+    		String url = "http://"+getServer().getHost();; //$NON-NLS-1$
+    	  	ServerPort[] ports = getServer().getServerPorts(null);
+        	ServerPort sp = null;
+    	    for(int i=0;i<ports.length;i++){
+    	    	if(ports[i].getProtocol().equalsIgnoreCase("http")){//$NON-NLS-1$
+    	    		sp=ports[i];
+    	    	}
+    	    }
+	    	if(sp==null){
+	    		Trace.trace(Trace.SEVERE, "Can't ping for server startup."); //$NON-NLS-1$
+	    		return;
+	    	}
+        	int port = sp.getPort();
+    		if (port != 80)
+    			url += ":" + port; //$NON-NLS-1$
+    		ping = new PingThread(getServer(), url, this);
+    	} catch (Exception e) {
+    		Trace.trace(Trace.SEVERE, "Can't ping for server startup."); //$NON-NLS-1$
+    	}  	
+    }
+   
+    protected void setProcess(final IProcess newProcess) {
+    	if (process != null)
+    		return;
+    	if(processListener!=null)
+    		DebugPlugin.getDefault().removeDebugEventListener(processListener);
+    	if (newProcess==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!= null &&  process.equals(events[i].getSource()) && events[i].getKind() == DebugEvent.TERMINATE) {
+    						DebugPlugin.getDefault().removeDebugEventListener(this);
+    						stopImpl();
+    					}
+    				}
+    			}
+    		}
+    	};
+    	DebugPlugin.getDefault().addDebugEventListener(processListener);
+    }
+
+    protected void stopImpl() {
+    	if (ping != null) {
+    		ping.stop();
+    		ping = null;
+    	}
+    	if (process != null) {
+    		process = null;
+    		DebugPlugin.getDefault().removeDebugEventListener(processListener);
+    		processListener = null;
+    	}
+    	setServerState(IServer.STATE_STOPPED);
+    }
+
+    /**
+     * Terminates the server.
+     * This method may be called before a process created while setting up the 
+     * launch config. 
+     */
+    protected void terminate() {
+    	if (getServer().getServerState() == IServer.STATE_STOPPED)
+    		return;
+    
+    	try {
+    		setServerState(IServer.STATE_STOPPING);
+    		Trace.trace(Trace.FINEST, "Killing the Server process"); //$NON-NLS-1$
+    		if (process != null && !process.isTerminated()) {
+    			process.terminate();
+    			
+    		}
+    		stopImpl();
+    	} catch (Exception e) {
+    		Trace.trace(Trace.SEVERE, "Error killing the process", e); //$NON-NLS-1$
+    	}
+    }
+
+    private List getStopClasspath() {
+    	String cpRef = getServerDefinition().getStop().getClasspathReference();
+    	return serverClasspath(cpRef);
+    }
+
+    public void publishFinish(IProgressMonitor monitor) throws CoreException {
+        IModule[] modules = this.getServer().getModules();
+        boolean allpublished= true;
+        for (int i = 0; i < modules.length; i++) {
+        	if(this.getServer().getModulePublishState(new IModule[]{modules[i]})!=IServer.PUBLISH_STATE_NONE)
+                allpublished=false;
+        }
+        if(allpublished)
+            setServerPublishState(IServer.PUBLISH_STATE_NONE);
+    }
+    
+ 	protected void setServerStarted() {
+ 		setServerState(IServer.STATE_STARTED);
+ 	}
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/GenericServerCoreMessages.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/GenericServerCoreMessages.java
new file mode 100644
index 0000000..0eb57c6
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/GenericServerCoreMessages.java
@@ -0,0 +1,58 @@
+/***************************************************************************************************
+ * Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Gorkem Ercan - initial API and implementation
+ *               
+ **************************************************************************************************/
+package org.eclipse.jst.server.generic.core.internal;
+
+import org.eclipse.osgi.util.NLS;
+
+/**
+ * Helper class to get messages
+ * 
+ * @author Gorkem Ercan
+ */
+public class GenericServerCoreMessages extends NLS{
+
+	private static final String RESOURCE_BUNDLE= "org.eclipse.jst.server.generic.core.internal.GenericServerCoreMessages";//$NON-NLS-1$
+	public static String cancelNoPublish;
+	public static String moduleNotCompatible;
+	public static String errorPortInUse;
+	public static String errorJRE;
+	public static String errorNoServerType;
+	public static String errorNoClasspath;
+	public static String errorMissingClasspathEntry;
+	public static String errorRemoveModuleAntpublisher;
+	public static String errorPublishAntpublisher;
+	public static String commandlineUnspecified;
+	public static String noProfiler;
+	public static String workingdirUnspecified;
+	public static String errorLaunchingExecutable;
+	public static String missingServer;
+	public static String externalStopLauncher;
+	public static String debugPortUnspecified;
+	public static String errorStartingExternalDebugging;
+	public static String invalidPath;
+	public static String runModeNotSupported;
+	public static String unableToCreatePublisher;
+	public static String canNotPublishDeletedModule;
+	public static String antLauncherMissing;
+    public static String attachingToExternalGenericServer;
+    public static String verifyingExternalServerDebuggingLaunchAttributes;
+    public static String externalServerDebugConnectorNotSpecified;
+    public static String creatingExternalServerDebuggingSourceLocator;
+    
+	
+	static{
+		  NLS.initializeMessages(RESOURCE_BUNDLE, GenericServerCoreMessages.class);
+	}
+
+
+
+
+
+}
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/GenericServerCoreMessages.properties b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/GenericServerCoreMessages.properties
new file mode 100644
index 0000000..befb747
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/GenericServerCoreMessages.properties
@@ -0,0 +1,35 @@
+###############################################################################
+# Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+# accompanying materials are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+# 
+# Contributors: Gorkem Ercan - initial API and implementation
+#               
+###############################################################################
+errorJRE=Invalid JRE
+errorNoServerType=No server type definition
+errorMissingClasspathEntry=Missing classpath entry {0}
+errorPortInUse=Server port In Use {0}-{1}
+cancelNoPublish=Nothing to publish
+moduleNotCompatible=Module type is not compatible
+errorNoClasspath=No classpath is defined
+errorRemoveModuleAntpublisher= Remove module failed using Ant publisher
+errorPublishAntpublisher= Publish failed using Ant publisher
+commandlineUnspecified=Executable commandline is unspecified
+workingdirUnspecified=Working directory is unspecified or invalid
+errorLaunchingExecutable=Error launching executable
+missingServer=Server does not exist
+externalStopLauncher=ExternalLaunchStopper
+debugPortUnspecified=Debugging port is unspecified
+errorStartingExternalDebugging=Error launching remote debugging for external server, changing to non-debugging mode.\nPlease check the debug port setting and ensure that the specified 'start' executable launches the server with debugging enabled
+invalidPath = {0} is not valid
+runModeNotSupported= Selected VM does not support this mode
+unableToCreatePublisher=Unable to create publisher {0}
+canNotPublishDeletedModule=Can not publish because module {0} is closed or deleted
+antLauncherMissing=Ant launcher is missing or disabled
+noProfiler=Could not launch in profiling mode because no profilers are configured.
+attachingToExternalGenericServer=Attaching to external generic server {0}.
+verifyingExternalServerDebuggingLaunchAttributes=Verifying debugging launch attributes.
+externalServerDebugConnectorNotSpecified=Debugging connector not specified.
+creatingExternalServerDebuggingSourceLocator=Creating debugging source locator.
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/GenericServerLaunchConfigurationDelegate.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/GenericServerLaunchConfigurationDelegate.java
new file mode 100644
index 0000000..f71a296
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/GenericServerLaunchConfigurationDelegate.java
@@ -0,0 +1,136 @@
+/***************************************************************************************************
+ * Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Gorkem Ercan - initial API and implementation
+ *               
+ **************************************************************************************************/
+package org.eclipse.jst.server.generic.core.internal;
+
+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.debug.core.ILaunchManager;
+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.core.internal.JavaServerPlugin;
+import org.eclipse.jst.server.core.internal.ServerProfiler;
+import org.eclipse.wst.server.core.IServer;
+import org.eclipse.wst.server.core.ServerUtil;
+import org.eclipse.wst.server.core.model.ServerBehaviourDelegate;
+import org.eclipse.wst.server.core.util.SocketUtil;
+/**
+ * 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 {
+
+		IServer server = ServerUtil.getServer(configuration);
+		if (server == null) {
+			abort(GenericServerCoreMessages.missingServer, null,
+					IJavaLaunchConfigurationConstants.ERR_INTERNAL_ERROR);
+		}
+		GenericServerBehaviour genericServer = (GenericServerBehaviour) server.loadAdapter(ServerBehaviourDelegate.class, null);
+
+		try {
+			genericServer.setupLaunch(launch, mode, monitor);
+			if(genericServer.getServer().getServerType().supportsRemoteHosts() && !SocketUtil.isLocalhost(genericServer.getServer().getHost())){
+			// no launch for remote servers
+				return;
+			}
+
+			String mainTypeName = genericServer.getStartClassName();
+			IVMInstall vm = verifyVMInstall(configuration);
+			IVMRunner runner = vm.getVMRunner(mode);
+			
+			if(runner == null && ILaunchManager.PROFILE_MODE.equals(mode)){
+				runner = vm.getVMRunner(ILaunchManager.RUN_MODE);
+			}
+			if(runner == null){
+				throw new CoreException(new Status(IStatus.ERROR,CorePlugin.PLUGIN_ID,0,GenericServerCoreMessages.runModeNotSupported,null));
+			}
+			File workingDir = verifyWorkingDirectory(configuration);
+			String workingDirName = null;
+			if (workingDir != null)
+				workingDirName = workingDir.getAbsolutePath();
+
+			// Program & VM args
+			String pgmArgs = getProgramArguments(configuration);
+			String vmArgs = getVMArguments(configuration);
+			String[] envp= getEnvironment(configuration);
+
+			if (ILaunchManager.PROFILE_MODE.equals(mode)) {
+				ServerProfiler[] sp = JavaServerPlugin.getServerProfilers();
+				if (sp == null || sp.length==0 || runner == null) {
+					genericServer.stopImpl();
+					throw new CoreException(new Status(IStatus.ERROR, CorePlugin.PLUGIN_ID, 0, GenericServerCoreMessages.noProfiler, null));
+				}
+				String vmArgs2 = sp[0].getVMArgs(); //$NON-NLS-1$
+				vmArgs = vmArgs + " " + vmArgs2; //$NON-NLS-1$
+			}
+			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.setEnvironment(envp);
+			runConfig.setVMSpecificAttributesMap(vmAttributesMap);
+
+			// Bootpath
+			String[] bootpath = getBootpath(configuration);
+			if (bootpath != null && bootpath.length > 0)
+				runConfig.setBootClassPath(bootpath);
+
+			setDefaultSourceLocator(launch, configuration);
+			// Launch the configuration
+			genericServer.startPingThread();
+			runner.run(runConfig, launch, monitor);
+			genericServer.setProcess(launch.getProcesses()[0]);
+		} catch (CoreException e) {
+			Trace.trace(Trace.SEVERE,"error launching generic server",e); //$NON-NLS-1$
+			genericServer.terminate();
+			throw e;
+		}
+	}
+
+	/**
+	 * 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/core/internal/GenericServerLaunchableAdapterDelegate.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/GenericServerLaunchableAdapterDelegate.java
new file mode 100644
index 0000000..426eecb
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/GenericServerLaunchableAdapterDelegate.java
@@ -0,0 +1,112 @@
+/***************************************************************************************************
+ * Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Gorkem Ercan - initial API and implementation
+ *               
+ **************************************************************************************************/
+package org.eclipse.jst.server.generic.core.internal;
+
+import java.net.URL;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Properties;
+import org.eclipse.wst.server.core.IModuleArtifact;
+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.WebResource;
+import org.eclipse.jst.server.core.EJBBean;
+import org.eclipse.jst.server.core.JndiLaunchable;
+import org.eclipse.jst.server.core.JndiObject;
+import org.eclipse.jst.server.core.Servlet;
+import org.eclipse.jst.server.generic.servertype.definition.ArgumentPair;
+import org.eclipse.jst.server.generic.servertype.definition.ServerRuntime;
+/**
+ * Launchable adapter delegate for generic servers.
+ * @author Gorkem Ercan 
+ */
+public class GenericServerLaunchableAdapterDelegate extends LaunchableAdapterDelegate {
+	private static final String JAVA_NAMING_PROVIDER_URL_PROPKEY = "java.naming.provider.url"; //$NON-NLS-1$
+	private static final String JAVA_NAMING_FACTORY_INITIAL_PROPKEY = "java.naming.factory.initial"; //$NON-NLS-1$
+
+	/*
+	 * @see ILaunchableAdapterDelegate#getLaunchable(IServer, IModuleObject)
+	 */
+	public Object getLaunchable(IServer server, IModuleArtifact moduleObject) {
+		ServerDelegate delegate = (ServerDelegate)server.loadAdapter(ServerDelegate.class,null);
+		if (!(delegate instanceof GenericServer))
+			return null;
+		if ((moduleObject instanceof Servlet) ||(moduleObject instanceof WebResource))
+            return prepareHttpLaunchable(moduleObject, delegate);
+		
+        if((moduleObject instanceof EJBBean) || (moduleObject instanceof JndiObject))
+            return prepareJndiLaunchable(moduleObject,delegate);
+		return null;
+	}
+
+    private Object prepareJndiLaunchable(IModuleArtifact moduleObject, ServerDelegate delegate) {
+        JndiLaunchable launchable = null;
+        GenericServer genericServer = (GenericServer)delegate;
+        ServerRuntime definition = genericServer.getServerDefinition();
+        Properties props = new Properties();
+        props.put(JAVA_NAMING_FACTORY_INITIAL_PROPKEY,definition.getJndiConnection().getInitialContextFactory());
+        props.put(JAVA_NAMING_PROVIDER_URL_PROPKEY,definition.getJndiConnection().getProviderUrl());
+        List jps = definition.getJndiConnection().getJndiProperty();
+        Iterator propsIt =jps.iterator();
+        while(propsIt.hasNext()){
+            ArgumentPair prop = (ArgumentPair)propsIt.next();
+            props.put(prop.getName(),prop.getValue());
+        }
+        
+        if(moduleObject instanceof EJBBean)
+        {
+            EJBBean bean = (EJBBean)moduleObject;
+            launchable = new JndiLaunchable(props,bean.getJndiName());
+        }
+        if(moduleObject instanceof JndiObject)
+        {
+            JndiObject jndi = (JndiObject)moduleObject;
+            launchable = new JndiLaunchable(props,jndi.getJndiName());
+        }
+        return launchable;
+    }
+
+    /**
+     * @param moduleObject
+     * @param delegate
+     * @return object
+     */
+    private Object prepareHttpLaunchable(IModuleArtifact moduleObject, ServerDelegate delegate) {
+        try {
+			URL url = ((IURLProvider) delegate).getModuleRootURL(moduleObject.getModule());
+			
+			Trace.trace("root: " + url); //$NON-NLS-1$
+
+			if (moduleObject instanceof Servlet) {
+				Servlet servlet = (Servlet) moduleObject;
+				if (servlet.getAlias() != null) {
+					String path = servlet.getAlias();
+					if (path.startsWith("/")) //$NON-NLS-1$
+						path = path.substring(1);
+					url = new URL(url, path);
+				} else
+					url = new URL(url, "servlet/" + servlet.getServletClassName()); //$NON-NLS-1$
+			} else if (moduleObject instanceof WebResource) {
+				WebResource resource = (WebResource) moduleObject;
+				String path = resource.getPath().toString();
+				Trace.trace("path: " + path); //$NON-NLS-1$
+				if (path != null && path.startsWith("/") && path.length() > 0) //$NON-NLS-1$
+					path = path.substring(1);
+				if (path != null && path.length() > 0)
+					url = new URL(url, path);
+			} 
+			return new HttpLaunchable(url);
+		} catch (Exception e) {
+			Trace.trace("Error getting URL for " + moduleObject, e); //$NON-NLS-1$
+			return null;
+		}
+    }
+}
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/GenericServerRuntime.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/GenericServerRuntime.java
new file mode 100644
index 0000000..17e2d7e
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/GenericServerRuntime.java
@@ -0,0 +1,218 @@
+/***************************************************************************************************
+ * Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Gorkem Ercan - initial API and implementation
+ *               
+ **************************************************************************************************/
+package org.eclipse.jst.server.generic.core.internal;
+
+import java.io.File;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jdt.launching.IVMInstall;
+import org.eclipse.jdt.launching.IVMInstallType;
+import org.eclipse.jdt.launching.JavaRuntime;
+import org.eclipse.jst.server.core.IJavaRuntime;
+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.Property;
+import org.eclipse.jst.server.generic.servertype.definition.ServerRuntime;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.wst.server.core.model.RuntimeDelegate;
+/**
+ * Generic server runtime support.
+ *
+ * @author Gorkem Ercan
+ */
+public class GenericServerRuntime extends RuntimeDelegate implements IJavaRuntime
+{
+	/**
+	 * Server definition attribute id in the server attributes
+	 */
+	public static final String SERVER_DEFINITION_ID = "server_definition_id"; //$NON-NLS-1$
+	/**
+	 * Server instance properties attribute id on server attributes
+	 */
+	public static final String SERVER_INSTANCE_PROPERTIES = "generic_server_instance_properties"; //$NON-NLS-1$	
+	private static final String PROP_VM_INSTALL_TYPE_ID = "vm-install-type-id"; //$NON-NLS-1$
+	private static final String PROP_VM_INSTALL_ID = "vm-install-id"; //$NON-NLS-1$
+
+
+	/**
+	 * Returns the vm type id
+	 * @return id
+	 */
+	public String getVMInstallTypeId() {
+		return getAttribute(PROP_VM_INSTALL_TYPE_ID, (String)null);
+	}
+	
+	/**
+	 * Is use default VM selected
+	 * @return boolean
+	 */
+	public boolean isUsingDefaultJRE() {
+		return getVMInstallTypeId() == null;
+	}
+
+
+	/**
+	 * Returns VM id
+	 * @return id
+	 */
+	public String getVMInstallId() {
+		return getAttribute(PROP_VM_INSTALL_ID, (String)null);
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.jst.server.core.IGenericRuntime#getVMInstall()
+	 */
+	public IVMInstall getVMInstall() {
+		if (getVMInstallTypeId() == null)
+			return JavaRuntime.getDefaultVMInstall();
+		try {
+			IVMInstallType vmInstallType = JavaRuntime.getVMInstallType(getVMInstallTypeId());
+			IVMInstall[] vmInstalls = vmInstallType.getVMInstalls();
+			int size = vmInstalls.length;
+			String id = getVMInstallId();
+			for (int i = 0; i < size; i++) {
+				if (id.equals(vmInstalls[i].getId()))
+					return vmInstalls[i];
+			}
+		} catch (Exception e) {
+			// ignore
+		}
+		return null;
+	
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.jst.server.core.IGenericRuntime#validate()
+	 */
+	public IStatus validate() {
+		if (getVMInstall() == null) {
+			return new Status(IStatus.ERROR, CorePlugin.PLUGIN_ID, 0, GenericServerCoreMessages.errorJRE, null);
+		}
+		ServerRuntime serverTypeDefinition = getServerTypeDefinition();
+        if(serverTypeDefinition == null) {
+		    return new Status(IStatus.ERROR, CorePlugin.PLUGIN_ID, 0, GenericServerCoreMessages.errorNoServerType, null);
+        }
+		if(serverTypeDefinition.getClasspath()== null || serverTypeDefinition.getClasspath().size()<1) {
+            return new Status(IStatus.ERROR, CorePlugin.PLUGIN_ID, 0 ,GenericServerCoreMessages.errorNoClasspath,null);
+		}
+        return validateClasspaths(serverTypeDefinition);
+	}
+
+	/**
+	 * Checks all defined classpaths.
+	 */
+	protected IStatus validateClasspaths(ServerRuntime serverTypeDefinition) {
+		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.errorNoClasspath,null);
+			Iterator archIter = cpth.getArchive().iterator();
+			while (archIter.hasNext()) {
+				ArchiveType arch = (ArchiveType) archIter.next();
+				String arcPath = serverTypeDefinition.getResolver().resolveProperties(arch.getPath());
+		           File f = new File(arcPath);
+		            if(f.exists()==false)
+		                return new Status(IStatus.ERROR, CorePlugin.PLUGIN_ID, 0 ,NLS.bind(GenericServerCoreMessages.errorMissingClasspathEntry,f.getPath()),null);	
+			}
+		}
+        return new Status(IStatus.OK, CorePlugin.PLUGIN_ID, 0, "", null); //$NON-NLS-1$
+	}
+	
+	/**
+	 * Returns the ServerTypeDefinition for this runtime. 
+	 * Populated with the user properties if exists. 
+	 * 
+	 * @return populated ServerTypeDefinition
+	 */
+	public ServerRuntime getServerTypeDefinition()
+	{
+	   String id=  getRuntime().getRuntimeType().getId();
+	   Map properties = getAttribute(SERVER_INSTANCE_PROPERTIES,(Map)null);
+	   if(id==null)
+	       return null;
+	   return CorePlugin.getDefault().getServerTypeDefinitionManager().getServerRuntimeDefinition(id,properties);
+	}
+	
+	/**
+	 * SetVM to be used
+	 * @param vmInstall
+	 */
+	public void setVMInstall(IVMInstall vmInstall) {
+		if (vmInstall == null) {
+			setVMInstall(null, null);
+		} else
+			setVMInstall(vmInstall.getVMInstallType().getId(), vmInstall.getId());
+	}
+	
+	private void setVMInstall(String typeId, String id) {
+		if (typeId == null)
+			setAttribute(PROP_VM_INSTALL_TYPE_ID, (String)null);
+		else
+			setAttribute(PROP_VM_INSTALL_TYPE_ID, typeId);
+		
+		if (id == null)
+			setAttribute(PROP_VM_INSTALL_ID, (String)null);
+		else
+			setAttribute(PROP_VM_INSTALL_ID, id);
+	}
+	
+	
+	/**
+	 * Return instance proerties
+	 * @return property map
+	 */
+	public Map getServerInstanceProperties() {
+		return getAttribute(SERVER_INSTANCE_PROPERTIES, new HashMap());
+	}
+	
+	/**
+	 * Returns serverdef id
+	 * @return serverdef id
+	 */
+	public String getServerDefinitionId() {
+		return getAttribute(SERVER_DEFINITION_ID, (String) null);
+	}
+	
+	/**
+	 * set instance properties
+	 * @param map
+	 */
+	public void setServerInstanceProperties(Map map) {
+		setAttribute(SERVER_INSTANCE_PROPERTIES, map);
+	}
+	
+	/**
+	 * Set serverdef id
+	 * @param s
+	 */
+	public void setServerDefinitionId(String s) {
+		setAttribute(SERVER_DEFINITION_ID, s);
+	}
+	
+	public void setDefaults(IProgressMonitor monitor) {
+		List props = this.getServerTypeDefinition().getProperty();
+ 		Map instancePropsMap = new HashMap();
+ 		for (Iterator iter = props.iterator(); iter.hasNext();) {
+			Property element = (Property) iter.next();
+			if(Property.CONTEXT_RUNTIME.equalsIgnoreCase(element.getContext()))
+				instancePropsMap.put(element.getId(), element.getDefault());
+		}
+ 		setServerInstanceProperties(instancePropsMap);
+
+		
+	}
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/GenericServerRuntimeTargetHandler.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/GenericServerRuntimeTargetHandler.java
new file mode 100644
index 0000000..2f468f5
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/GenericServerRuntimeTargetHandler.java
@@ -0,0 +1,69 @@
+/***************************************************************************************************
+ * Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Gorkem Ercan - initial API and implementation
+ *               
+ **************************************************************************************************/
+package org.eclipse.jst.server.generic.core.internal;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+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.RuntimeClasspathProviderDelegate;
+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 RuntimeClasspathProviderDelegate {
+
+	/* (non-Javadoc)
+	 * @see ClasspathRuntimeTargetHandler#getClasspathContainerLabel(IRuntime, java.lang.String)
+	 */
+	public String getClasspathContainerLabel(IRuntime runtime, String id) {
+		ServerRuntime definition= ServerTypeDefinitionUtil.getServerTypeDefinition(runtime);
+		return definition.getName();
+	}
+
+	/* (non-Javadoc)
+	 * @see ClasspathRuntimeTargetHandler#resolveClasspathContainer(IRuntime, java.lang.String)
+	 */
+	public IClasspathEntry[] resolveClasspathContainer(IRuntime runtime,String id){		
+		return resolveClasspathContainer(runtime);
+	}
+	/* (non-Javadoc)
+	 * @see ClasspathRuntimeTargetHandler#resolveClasspathContainer(IRuntime)
+	 */
+	public IClasspathEntry[] resolveClasspathContainer(IRuntime runtime){		
+		return ServerTypeDefinitionUtil.getServerClassPathEntry(runtime);
+	}
+    
+
+	/**
+	 * Read the classpath entries for the serverdef.
+	 * 
+	 * @param runtime
+	 * @param monitor
+	 * @return classpathEntries
+	 */
+	public IClasspathEntry[] getDelegateClasspathEntries(IRuntime runtime, IProgressMonitor monitor) {
+		GenericServerRuntime genericRuntime = (GenericServerRuntime)runtime.loadAdapter(GenericServerRuntime.class, monitor);
+		if (genericRuntime == null)
+			return new IClasspathEntry[0];
+		IVMInstall vmInstall = genericRuntime.getVMInstall();
+		if (vmInstall != null) {
+			String name = vmInstall.getName();
+			String typeId = vmInstall.getVMInstallType().getId();
+			return new IClasspathEntry[] { JavaCore.newContainerEntry(new Path(JavaRuntime.JRE_CONTAINER).append(typeId).append(name)) };
+		}
+		return null;
+	}
+}
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/GenericServerSourcePathComputerDelegate.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/GenericServerSourcePathComputerDelegate.java
new file mode 100644
index 0000000..15dd6f1
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/GenericServerSourcePathComputerDelegate.java
@@ -0,0 +1,103 @@
+/***************************************************************************************************
+ * Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Gorkem Ercan - initial API and implementation
+ *               
+ **************************************************************************************************/
+package org.eclipse.jst.server.generic.core.internal;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+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.debug.core.sourcelookup.containers.FolderSourceContainer;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jdt.launching.IRuntimeClasspathEntry;
+import org.eclipse.jdt.launching.JavaRuntime;
+import org.eclipse.wst.server.core.IModule;
+import org.eclipse.wst.server.core.IServer;
+import org.eclipse.wst.server.core.ServerUtil;
+/**
+ * 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);
+		List sourcefolderList = new ArrayList();
+		
+		IServer server =  ServerUtil.getServer(configuration);
+		IModule[] modules = server.getModules();
+		
+		List javaProjectList = new ArrayList();
+		
+		processModules(sourcefolderList, modules, javaProjectList, server,monitor);
+
+
+		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);
+		ISourceContainer[] javaSourceContainers = JavaRuntime.getSourceContainers(resolved);
+		
+		if (!sourcefolderList.isEmpty()) {
+			ISourceContainer[] combinedSourceContainers = new ISourceContainer[javaSourceContainers.length + sourcefolderList.size()];
+			sourcefolderList.toArray(combinedSourceContainers);
+			System.arraycopy(javaSourceContainers, 0, combinedSourceContainers, sourcefolderList.size(), javaSourceContainers.length);
+			javaSourceContainers = combinedSourceContainers;
+		}
+		
+		return javaSourceContainers;
+		
+	}
+
+	private void processModules(List sourcefolderList, IModule[] modules, List javaProjectList, IServer server, IProgressMonitor monitor) {
+		for (int i = 0; i < modules.length; i++) {
+			IProject project = modules[i].getProject();
+			IModule[] pModule = new IModule[1];
+			pModule[0]=modules[i];
+			IModule[] cModule = server.getChildModules(pModule, monitor);
+			if(cModule != null && cModule.length>0)
+			{
+				processModules(sourcefolderList, cModule, javaProjectList, server, monitor);
+			}
+			if (project != null) {
+				IFolder moduleFolder = project.getFolder(modules[i].getName());
+				if (moduleFolder.exists()) {
+					sourcefolderList.add(new FolderSourceContainer(moduleFolder, true));
+				} else {
+					try {
+						if (project.hasNature(JavaCore.NATURE_ID)) {
+							IJavaProject javaProject = (IJavaProject) project.getNature(JavaCore.NATURE_ID);
+							if(!javaProjectList.contains(javaProject)){
+								javaProjectList.add(javaProject);
+							}
+						}
+					} catch (Exception e) {
+						// ignore
+					}
+				}
+			}
+		}
+	}
+}
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/PingThread.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/PingThread.java
new file mode 100644
index 0000000..159f0b0
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/PingThread.java
@@ -0,0 +1,140 @@
+/***************************************************************************************************
+ * Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Gorkem Ercan - initial API and implementation
+ *               
+ **************************************************************************************************/
+package org.eclipse.jst.server.generic.core.internal;
+
+import java.io.FileNotFoundException;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.net.URLConnection;
+import org.eclipse.wst.server.core.IServer;
+import org.eclipse.wst.server.core.internal.ServerType;
+import org.eclipse.wst.server.core.util.SocketUtil;
+
+/**
+ * Thread used to ping server to test when it is started.
+ * 
+ */
+public class PingThread {
+	// 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 int maxPings = 56; // total: 16 seconds + connection time
+
+	private boolean stop = false;
+	private String fUrl;
+	private IServer fServer;
+	private GenericServerBehaviour fGenericServer;
+
+	/**
+	 * Create a new PingThread.
+	 * 
+	 * @param server
+	 * @param url
+	 * @param genericServer
+	 */
+	public PingThread(IServer server, String url, GenericServerBehaviour genericServer) {
+		super();
+		this.fServer = server;
+		this.fUrl = url;
+		this.maxPings = guessMaxPings(genericServer);
+		this.fGenericServer = genericServer;
+		Thread t = new Thread() {
+			public void run() {
+				ping();
+			}
+		};
+		t.setDaemon(true);
+		t.start();
+	}
+    
+	private int guessMaxPings(GenericServerBehaviour server)
+    {
+    	int maxpings=60;
+    	int startTimeout = ((ServerType)server.getServer().getServerType()).getStartTimeout();
+    	if(startTimeout>0)
+    		maxpings=startTimeout/PING_INTERVAL;
+    	return maxpings;
+    }
+	private boolean isRemote(){
+		return (fServer.getServerType().supportsRemoteHosts()&& !SocketUtil.isLocalhost(fServer.getHost()) );
+	}
+	/**
+	 * Ping the server until it is started. Then set the server
+	 * state to STATE_STARTED.
+	 */
+	protected void ping() {
+		int count = 0;
+		try {
+			Thread.sleep(PING_DELAY);
+		} catch (Exception e) {
+			// ignore
+		}
+		while (!stop) {
+			try {
+				if (count == maxPings && !isRemote()) {
+					try {
+						fServer.stop(false);
+					} catch (Exception e) {
+						Trace.trace(Trace.FINEST, "Ping: could not stop server"); //$NON-NLS-1$
+					}
+					stop = true;
+					break;
+				}
+				if(!isRemote())
+					count++;
+				
+				Trace.trace(Trace.FINEST, "Ping: pinging"); //$NON-NLS-1$
+				URL pingUrl = new URL(fUrl);
+				URLConnection conn = pingUrl.openConnection();
+				((HttpURLConnection)conn).getResponseCode();
+	
+				// ping worked - server is up
+				if (!stop) {
+					Trace.trace(Trace.FINEST, "Ping: success"); //$NON-NLS-1$
+					Thread.sleep(200);
+					fGenericServer.setServerStarted();
+				}
+				if(!isRemote())
+					stop = true;
+			} catch (FileNotFoundException fe) {
+				try {
+					Thread.sleep(200);
+				} catch (Exception e) {
+					// ignore
+				}
+				fGenericServer.setServerStarted();
+				if(!isRemote())
+					stop = true;
+			} catch (Exception e) {
+				Trace.trace(Trace.FINEST, "Ping: failed"); //$NON-NLS-1$
+				// pinging failed
+				if (!stop) {
+					try {
+						Thread.sleep(PING_INTERVAL);
+					} catch (InterruptedException e2) {
+						// ignore
+					}
+				}
+			}
+		}
+	}
+
+	/**
+	 * Tell the pinging to stop.
+	 */
+	public void stop() {
+		Trace.trace(Trace.FINEST, "Ping: stopping"); //$NON-NLS-1$
+		stop = true;
+	}
+}
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/PublishManager.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/PublishManager.java
new file mode 100644
index 0000000..00272fe
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/PublishManager.java
@@ -0,0 +1,49 @@
+/***************************************************************************************************
+ * Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Gorkem Ercan - initial API and implementation
+ *               
+ **************************************************************************************************/
+package org.eclipse.jst.server.generic.core.internal;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtension;
+import org.eclipse.jst.server.generic.internal.core.util.ExtensionPointUtil;
+
+/**
+ * Utility for managing generic publishers.
+ *
+ * @author Gorkem Ercan
+ */
+public class PublishManager 
+{
+   /**
+     * Returns the generic publisher for given ID
+     * @param id
+     * @return publisher
+     */
+    public static GenericPublisher getPublisher(String id) 
+    {
+        IExtension[] extensions = ExtensionPointUtil.getGenericPublisherExtension();
+        try {
+            for (int i = 0; i < extensions.length; i++) {
+                IConfigurationElement[] configs = ExtensionPointUtil.getConfigurationElements(extensions[i]);
+                for (int j = 0; j < configs.length; j++) {
+                    if(configs[j].getAttribute("id").equals(id)) { //$NON-NLS-1$
+                        return (GenericPublisher)configs[j].createExecutableExtension("class"); //$NON-NLS-1$
+                      }
+                }
+            }
+        }catch(CoreException e){
+            //ignored
+        }
+        return null;
+    }
+
+     
+
+}
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/ServerTypeDefinitionManager.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/ServerTypeDefinitionManager.java
new file mode 100644
index 0000000..7e378df
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/ServerTypeDefinitionManager.java
@@ -0,0 +1,75 @@
+/***************************************************************************************************
+ * Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Gorkem Ercan - initial API and implementation
+ *               
+ **************************************************************************************************/
+package org.eclipse.jst.server.generic.core.internal;
+
+import java.net.URL;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.core.runtime.IExtensionDelta;
+import org.eclipse.core.runtime.IRegistryChangeEvent;
+import org.eclipse.core.runtime.IRegistryChangeListener;
+import org.eclipse.jst.server.generic.internal.core.util.ExtensionPointUtil;
+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;
+	
+	private class RegistryChangeListener implements IRegistryChangeListener{
+		public void registryChanged(IRegistryChangeEvent event) {
+			IExtensionDelta[] deltas = event.getExtensionDeltas(CorePlugin.PLUGIN_ID, ExtensionPointUtil.SERVERDEFINITION_EXTENSION_ID);
+			if(deltas!=null && deltas.length>0){
+				handleServerDefinitionsChanged();
+			}
+		}		
+	}
+	
+	protected ServerTypeDefinitionManager(URL serverDefinitionURL){
+		super();
+		fXmlUtils = new XMLUtils();
+		ExtensionPointUtil.addRegistryListener(new RegistryChangeListener());
+	}
+
+	/**
+	 * Returns the ServerRuntime that represents the .serverdef file
+	 * for a given runtime type.
+	 * @param id runtime type id
+	 * @param properties user provided properties
+	 * @return server runtime that is initialized with user properties 
+	 */
+	public ServerRuntime getServerRuntimeDefinition(String id, Map properties){
+		ServerRuntime definition =  fXmlUtils.getServerTypeDefinition(id);
+		if(definition !=null)
+            definition.setPropertyValues(properties);
+		return definition;
+	}
+	
+	/**
+	 * Returns all the ServerRuntimes registered a .serverdef.
+	 * @return serverRuntimes
+	 */
+	public ServerRuntime[] getServerTypeDefinitions(){
+		 List definitionList = fXmlUtils.getServerTypeDefinitions();
+		 return (ServerRuntime[])definitionList.toArray(new ServerRuntime[definitionList.size()]);
+	}
+	
+	private void handleServerDefinitionsChanged(){	
+		XMLUtils utils = new XMLUtils();
+		fXmlUtils = utils;
+	}
+	
+}
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/ServerTypeDefinitionUtil.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/ServerTypeDefinitionUtil.java
new file mode 100644
index 0000000..d45d6a3
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/ServerTypeDefinitionUtil.java
@@ -0,0 +1,89 @@
+/***************************************************************************************************
+ * Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Gorkem Ercan - initial API and implementation
+ *               
+ **************************************************************************************************/
+
+package org.eclipse.jst.server.generic.core.internal;
+
+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.servertype.definition.ArchiveType;
+import org.eclipse.jst.server.generic.servertype.definition.Classpath;
+import org.eclipse.jst.server.generic.servertype.definition.Module;
+import org.eclipse.jst.server.generic.servertype.definition.ServerRuntime;
+import org.eclipse.wst.server.core.IModule;
+import org.eclipse.wst.server.core.IRuntime;
+
+/**
+ * Utilities for ServerRuntime definition files.
+ *
+ * @author Gorkem Ercan
+ */
+public class ServerTypeDefinitionUtil 
+{
+	/**
+	 * Returns the server definition for runtime.
+	 * @param runtime
+	 * @return serverRuntime
+	 */
+	public static ServerRuntime getServerTypeDefinition(IRuntime runtime)
+	{
+		if(runtime==null)
+			return null;
+	    GenericServerRuntime delegate = (GenericServerRuntime)runtime.loadAdapter(GenericServerRuntime.class,null);
+	    if(delegate==null)
+	    	return null;
+		String serverType = delegate.getRuntime().getRuntimeType().getId();
+		Map properties = delegate.getServerInstanceProperties();
+		ServerRuntime definition = 
+			CorePlugin.getDefault().getServerTypeDefinitionManager().getServerRuntimeDefinition(serverType,properties);
+		return definition;
+	}
+	/**
+	 * Extracts the server classpath entry array.
+	 *
+	 * @param runtime
+	 * @return classpathEntry
+	 */
+	public static IClasspathEntry[] getServerClassPathEntry(IRuntime runtime)
+	{
+		ServerRuntime definition = getServerTypeDefinition(runtime);
+		if(definition==null)
+			return null;
+		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()]);
+	}
+	/**
+	 * Given the serverDefinition and module returns the publisher id 
+	 * that handles the publishing of module type for this serverDefinition.
+	 * @param module
+	 * @param serverDefinition
+	 * @return publisher id
+	 */
+	public static String getPublisherID(IModule module, ServerRuntime serverDefinition)
+	{
+		if(module==null || module.getModuleType()== null)
+			return null;
+		Module m = serverDefinition.getModule(module.getModuleType().getId());
+		return m.getPublisherReference();
+	}
+	
+}
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/Trace.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/Trace.java
new file mode 100644
index 0000000..385cbac
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/Trace.java
@@ -0,0 +1,88 @@
+/***************************************************************************************************
+ * Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Gorkem Ercan - initial API and implementation
+ *               
+ **************************************************************************************************/
+package org.eclipse.jst.server.generic.core.internal;
+
+
+/**
+ * Helper class to route trace output.
+ */
+public class Trace {
+	/**
+	 * Trace level CONFIG
+	 */
+	public static byte CONFIG = 0;
+	/**
+	 * Trace level WARNING
+	 */
+	public static byte WARNING = 1;
+	/**
+	 * Trace level SEVERE
+	 */
+	public static byte SEVERE = 2;
+	/**
+	 * Trace level FINEST
+	 */
+	public static byte FINEST = 3;
+	/**
+	 * Trace level FINER
+	 */
+	public static byte FINER = 4;
+	
+	/**
+	 * Trace constructor comment.
+	 */
+	private Trace() {
+		super();
+	}
+	
+	/**
+	 * Trace the given text.
+	 * 
+	 * @param level trace level constant
+	 * @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 level trace level constant
+	 * @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 t throwable
+	 */
+	public static void trace(String s, Throwable t) {
+		trace(FINEST, s, t);
+	}
+}
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/publishers/AbstractModuleAssembler.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/publishers/AbstractModuleAssembler.java
new file mode 100644
index 0000000..23855ae
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/publishers/AbstractModuleAssembler.java
@@ -0,0 +1,163 @@
+/***************************************************************************************************
+ * Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Gorkem Ercan - initial API and implementation
+ *               
+ **************************************************************************************************/
+package org.eclipse.jst.server.generic.core.internal.publishers;
+			
+import java.io.File;
+import java.io.IOException;
+
+import org.eclipse.core.resources.IFile;
+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.Status;
+import org.eclipse.jst.server.core.PublishUtil;
+import org.eclipse.jst.server.generic.core.internal.CorePlugin;
+import org.eclipse.jst.server.generic.core.internal.GenericServer;
+import org.eclipse.jst.server.generic.servertype.definition.ServerRuntime;
+import org.eclipse.wst.server.core.IModule;
+import org.eclipse.wst.server.core.internal.ServerPlugin;
+import org.eclipse.wst.server.core.model.IModuleFolder;
+import org.eclipse.wst.server.core.model.IModuleResource;
+import org.eclipse.wst.server.core.util.ProjectModule;
+
+/**
+ * Base class for module assemblers
+ * 
+ * @author Gorkem Ercan
+ */
+public abstract class AbstractModuleAssembler {
+
+	protected ServerRuntime fServerdefinition;
+	protected IModule fModule; 
+	protected GenericServer fServer;
+	protected IPath fAssembleRoot;
+	
+	protected AbstractModuleAssembler(IModule module, GenericServer server, IPath assembleRoot)
+	{
+		fModule=module;
+		fServerdefinition=server.getServerDefinition();
+		fServer=server;
+		fAssembleRoot = assembleRoot;
+	}
+	
+	/**
+	 * Assemble the module.
+	 * 
+	 * @param monitor
+	 * @throws CoreException
+	 */
+	public abstract IPath assemble(IProgressMonitor monitor) throws CoreException;
+
+	
+	/**
+	 * Factory for creating concrete module assemblers for 
+	 * corressponding module types.
+	 *
+	 */
+	public static class Factory {		
+		
+		public static IPath getDefaultAssembleRoot(IModule module, GenericServer server) {
+			ProjectModule pm =(ProjectModule)module.loadAdapter(ProjectModule.class, new NullProgressMonitor());
+			return ServerPlugin.getInstance().getTempDirectory(server.getServer().getId()).append(pm.getId());
+		}
+		
+		/**
+		 * Returns a concrete module assembler
+		 * 
+		 * @param module
+		 * @param server
+		 * @return assembler
+		 */
+		public static AbstractModuleAssembler getModuleAssembler(IModule module, GenericServer server)
+		{
+			return getModuleAssembler(module, server, getDefaultAssembleRoot(module, server));
+		}
+		
+		/**
+		 * Returns a concrete module assembler that assembles under the specified root path
+		 * 
+		 * @param module
+		 * @param server
+		 * @param assembleRoot
+		 * @return assembler
+		 */
+		public static AbstractModuleAssembler getModuleAssembler(IModule module, GenericServer server, IPath assembleRoot)
+		{
+			if(isModuleType(module, "jst.web")) //$NON-NLS-1$
+				return new WarModuleAssembler(module,server,assembleRoot);
+			if(isModuleType(module, "jst.ear")) //$NON-NLS-1$
+				return new EarModuleAssembler(module,server,assembleRoot);
+			return new DefaultModuleAssembler(module,server,assembleRoot);
+		}
+		
+		private static boolean isModuleType(IModule module, String moduleTypeId){	
+			if(module.getModuleType()!=null && moduleTypeId.equals(module.getModuleType().getId()))
+				return true;
+			return false;
+		}
+	}
+	
+	protected void packModule(IModule module, String deploymentUnitName, IPath destination)throws CoreException {
+		
+	
+		String dest = destination.append(deploymentUnitName).toString();
+		ModulePackager packager = null;
+		try {
+			packager = new ModulePackager(dest, false);
+			ProjectModule pm = (ProjectModule) module.loadAdapter(ProjectModule.class, null);
+			IModuleResource[] resources = pm.members();
+			for (int i = 0; i < resources.length; i++) {
+				doPackModule(resources[i], packager);
+			}
+		} catch (IOException e) {
+			IStatus status = new Status(IStatus.ERROR, CorePlugin.PLUGIN_ID, 0,
+					"unable to assemble module", e); //$NON-NLS-1$
+			throw new CoreException(status);
+		}
+		finally{
+			try{
+				packager.finished();
+			}
+			catch(IOException e){
+				//unhandled
+			}
+		}
+	}
+
+	private void doPackModule(IModuleResource resource, ModulePackager packager) throws CoreException, IOException{
+			if (resource instanceof IModuleFolder) {
+				IModuleFolder mFolder = (IModuleFolder)resource;
+				IModuleResource[] resources = mFolder.members();
+
+				packager.writeFolder(resource.getModuleRelativePath().append(resource.getName()).toPortableString());
+
+				for (int i = 0; resources!= null && i < resources.length; i++) {
+					doPackModule(resources[i], packager);
+				}
+			} else {
+				String destination = resource.getModuleRelativePath().append(resource.getName()).toPortableString();
+				IFile file = (IFile) resource.getAdapter(IFile.class);
+				if (file != null)
+					packager.write(file, destination);
+				else {
+					File file2 = (File) resource.getAdapter(File.class);
+					packager.write(file2, destination);
+				}
+			}
+	}
+
+	protected IPath copyModule(IModule module, IProgressMonitor monitor) throws CoreException {
+		ProjectModule pm =(ProjectModule)module.loadAdapter(ProjectModule.class, monitor);
+		PublishUtil.smartCopy(pm.members(), fAssembleRoot, monitor);
+		return fAssembleRoot;
+	}
+}
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/publishers/AntPublisher.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/publishers/AntPublisher.java
new file mode 100644
index 0000000..36b2af6
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/publishers/AntPublisher.java
@@ -0,0 +1,349 @@
+/***************************************************************************************************
+ * Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Gorkem Ercan - initial API and implementation
+ *               
+ **************************************************************************************************/
+package org.eclipse.jst.server.generic.core.internal.publishers;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.URL;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.jar.JarEntry;
+import java.util.jar.JarFile;
+
+import org.eclipse.ant.internal.ui.IAntUIConstants;
+import org.eclipse.ant.internal.ui.launchConfigurations.IAntLaunchConfigurationConstants;
+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.Platform;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.debug.core.DebugPlugin;
+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.ui.IDebugUIConstants;
+import org.eclipse.jdt.launching.IJavaLaunchConfigurationConstants;
+import org.eclipse.jst.server.core.IWebModule;
+import org.eclipse.jst.server.generic.core.internal.CorePlugin;
+import org.eclipse.jst.server.generic.core.internal.GenericPublisher;
+import org.eclipse.jst.server.generic.core.internal.GenericServerCoreMessages;
+import org.eclipse.jst.server.generic.internal.core.util.FileUtil;
+import org.eclipse.jst.server.generic.servertype.definition.Module;
+import org.eclipse.jst.server.generic.servertype.definition.PublisherData;
+import org.eclipse.ui.externaltools.internal.model.IExternalToolConstants;
+import org.eclipse.wst.server.core.IModule;
+import org.eclipse.wst.server.core.IModuleArtifact;
+import org.eclipse.wst.server.core.internal.ServerPlugin;
+import org.osgi.framework.Bundle;
+
+/**
+ * Ant based publisher. All the properties defined in the server definition file
+ * are passed into the ANT build file as properties. In addition to the
+ * properties defined in the server definition <I>module.dir</I>,
+ * <I>module.name,</I> and <I>server.publish.dir</I> are computed and passed
+ * to the definition file.
+ * <ul>
+ * <li>module.dir: includes the root of the module project file</li>
+ * <li>module.name: the name of the module</li>
+ * <li>server.publish.dir: the directory to put the deployment units</li>
+ * <li>project.working.dir: the working dir of the project that deployed module
+ * is in</li>
+ * </ul>
+ * 
+ * @author Gorkem Ercan
+ */
+
+public class AntPublisher extends GenericPublisher {
+	private static final String JAR_PROTOCOL_PREFIX = "jar"; //$NON-NLS-1$
+
+	/**
+	 * publisher id for ANT publisher.
+	 */
+	public static final String PUBLISHER_ID = "org.eclipse.jst.server.generic.antpublisher"; //$NON-NLS-1$
+
+	protected static final String PROP_SERVER_PUBLISH_DIR = "server.publish.dir";//$NON-NLS-1$
+
+	protected static final String PROP_PROJECT_WORKING_DIR = "project.working.dir";//$NON-NLS-1$
+
+	protected static final String PROP_MODULE_DIR = "module.dir";//$NON-NLS-1$
+
+	protected static final String PROP_MODULE_NAME = "module.name";//$NON-NLS-1$
+
+	protected static final String PROP_CONTEXT_ROOT = "contextRoot";//$NON-NLS-1$
+
+	protected static final String PROP_PROJECT_NAME = "project.name";//$NON-NLS-1$
+
+	protected static final String MODULE_PUBLISH_TARGET_PREFIX = "target.publish."; //$NON-NLS-1$
+
+	protected static final String MODULE_UNPUBLISH_TARGET_PREFIX = "target.unpublish.";//$NON-NLS-1$
+
+	protected static final String DATA_NAME_BUILD_FILE = "build.file";//$NON-NLS-1$
+
+	protected static final String PROP_MODULE_ARCHIVE_NAME = "module.archive.name"; //$NON-NLS-1$
+
+	/*
+	 * (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(IModuleArtifact[] resource, IProgressMonitor monitor) {
+		if (getModule().length > 1)// only respond to root module calls.
+			return null;
+		try {
+			if (monitor.isCanceled())
+				return null;
+			assembleModule(monitor);
+			File file = computeBuildFile();
+			if (monitor.isCanceled())
+				return null;
+			runAnt(file.toString(), getPublishTargetsForModule(), getPublishProperties(), monitor);
+		} catch (CoreException e) {
+			IStatus s = new Status(IStatus.ERROR, CorePlugin.PLUGIN_ID, 0, GenericServerCoreMessages.errorPublishAntpublisher, e);
+			CorePlugin.getDefault().getLog().log(s);
+			return new IStatus[] { s };
+		}
+		return null;
+	}
+
+	protected void assembleModule(IProgressMonitor monitor) throws CoreException {
+		AbstractModuleAssembler assembler = AbstractModuleAssembler.Factory.getModuleAssembler(getModule()[0], getServer());
+		assembler.assemble(monitor);
+	}
+
+	/**
+	 * 
+	 * @return file
+	 * @throws CoreException
+	 */
+	private File computeBuildFile() throws CoreException {
+		Bundle bundle = Platform.getBundle(getServerRuntime().getServerTypeDefinition().getConfigurationElementNamespace());
+		URL bundleUrl = bundle.getEntry(getBuildFile());
+		URL fileURL = FileUtil.resolveURL(bundleUrl);
+		if (fileURL.getProtocol().equals(JAR_PROTOCOL_PREFIX)) {
+			OutputStream os = null;
+			InputStream is = null;
+			try {
+				String filename = fileURL.getPath();
+				String jarname = fileURL.getFile().substring(0, filename.indexOf('!'));
+
+				File jarFile = new File(new URL(jarname).getFile());
+				JarFile jar = new JarFile(jarFile);
+				File tmpFile = FileUtil.createTempFile(getBuildFile(), CorePlugin.getDefault().getStateLocation().toOSString());
+				os = new FileOutputStream(tmpFile);
+				String entryname = getBuildFile();
+				if (entryname.startsWith("/"))//$NON-NLS-1$
+					entryname = entryname.substring(1);
+				JarEntry entry = jar.getJarEntry(entryname);
+				is = jar.getInputStream(entry);
+				FileUtil.copy(is, os);
+				return tmpFile;
+			} catch (IOException e) {
+				IStatus s = new Status(IStatus.ERROR, CorePlugin.PLUGIN_ID, 0, "error creating temporary build file", e);//$NON-NLS-1$
+				CorePlugin.getDefault().getLog().log(s);
+				throw new CoreException(s);
+			} finally {
+				try {
+					if (is != null)
+						is.close();
+					if (os != null)
+						os.close();
+				} catch (IOException e) {
+					// ignore
+				}
+			}
+		} else {
+			return FileUtil.resolveFile(fileURL);
+		}
+	}
+
+	private String getPublishTargetsForModule() {
+		return doGetTargets(MODULE_PUBLISH_TARGET_PREFIX + getModuleTypeId());
+	}
+
+	private String getUnpublishTargetsForModule() {
+		return doGetTargets(MODULE_UNPUBLISH_TARGET_PREFIX + getModuleTypeId());
+	}
+
+	private String doGetTargets(String dataname) {
+		StringBuffer buffer = new StringBuffer();
+		Iterator iterator = getServerRuntime().getServerTypeDefinition().getPublisher(PUBLISHER_ID).getPublisherdata().iterator();
+		while (iterator.hasNext()) {
+			PublisherData data = (PublisherData) iterator.next();
+			if (dataname.equals(data.getDataname())) {
+				if (buffer.length() > 0)
+					buffer.append(",");//$NON-NLS-1$
+				buffer.append(data.getDatavalue());
+			}
+		}
+		return buffer.toString();
+	}
+
+	private String getModuleTypeId() {
+		return getModule()[0].getModuleType().getId();
+	}
+
+	private String getBuildFile() {
+		Iterator iterator = getServerRuntime().getServerTypeDefinition().getPublisher(PUBLISHER_ID).getPublisherdata().iterator();
+		while (iterator.hasNext()) {
+			PublisherData data = (PublisherData) iterator.next();
+			if (DATA_NAME_BUILD_FILE.equals(data.getDataname()))
+				return getServerRuntime().getServerTypeDefinition().getResolver().resolveProperties(data.getDatavalue());
+		}
+		return null;
+	}
+
+	private Map getPublishProperties() {
+		Map props = new HashMap();
+		// pass all properties to build file.
+		Map serverProperties = getServer().getServerInstanceProperties();
+		Map properties = getServerRuntime().getServerInstanceProperties();
+		properties.putAll(serverProperties);
+		Iterator propertyIterator = properties.keySet().iterator();
+		while (propertyIterator.hasNext()) {
+			String property = (String) propertyIterator.next();
+			String value = (String) properties.get(property);
+			if (value != null && value.trim().length() > 0)
+				props.put(property, properties.get(property));
+		}
+		Module module = getServerRuntime().getServerTypeDefinition().getModule(getModuleTypeId());
+		String modDir = module.getPublishDir();
+		modDir = getServerRuntime().getServerTypeDefinition().getResolver().resolveProperties(modDir);
+		IModule webModule = getModule()[0];
+
+		String moduleName = guessModuleName(webModule);
+		String contextRoot = guessContextRoot(webModule);
+		props.put(PROP_PROJECT_WORKING_DIR, getProjectWorkingLocation().toString());
+		props.put(PROP_MODULE_NAME, moduleName);
+		props.put(PROP_CONTEXT_ROOT, contextRoot);
+		if (isModuleType(webModule, "jst.ear")) {//$NON-NLS-1$
+			props.put(PROP_MODULE_ARCHIVE_NAME, moduleName + ".ear"); //$NON-NLS-1$
+		} else if (isModuleType(webModule, "jst.web")) { //$NON-NLS-1$
+			props.put(PROP_MODULE_ARCHIVE_NAME, moduleName + ".war"); //$NON-NLS-1$
+		} else if (isModuleType(webModule, "jst.ejb")) { //$NON-NLS-1$
+			props.put(PROP_MODULE_ARCHIVE_NAME, moduleName + ".jar"); //$NON-NLS-1$
+		}
+		if (webModule.getProject() != null) {
+			props.put(PROP_MODULE_DIR, getModuleWorkingDir().toString());
+			props.put(PROP_PROJECT_NAME, webModule.getProject().getName());
+		}
+		props.put(PROP_SERVER_PUBLISH_DIR, modDir);
+		return props;
+	}
+
+	private IPath getModuleWorkingDir() {
+		return getProjectWorkingLocation().append(getModule()[0].getProject().getName());
+	}
+
+	private IPath getProjectWorkingLocation() {
+		return ServerPlugin.getInstance().getTempDirectory(getServer().getServer().getId());
+	}
+
+	private String guessModuleName(IModule module) {
+		String moduleName = module.getName();
+		if ("jst.web".equals(getModuleTypeId())) { //$NON-NLS-1$
+			IWebModule webModule = (IWebModule) getModule()[0].loadAdapter(IWebModule.class, null);
+			if (webModule == null) {
+				return module.getName();
+			}
+			String contextRoot = webModule.getURI(module);
+			moduleName = contextRoot.substring(0, contextRoot.lastIndexOf('.'));
+		}
+		return moduleName;
+	}
+
+	private String guessContextRoot(IModule module) {
+		String moduleName = guessModuleName(module);
+		String contextRoot = moduleName;
+		if ("jst.web".equals(getModuleTypeId())) { //$NON-NLS-1$
+			IWebModule webModule = (IWebModule) getModule()[0].loadAdapter(IWebModule.class, null);
+			if (webModule != null) {
+				contextRoot = webModule.getContextRoot();
+				if (contextRoot == null || contextRoot.length() == 0) {
+					contextRoot = moduleName;
+				}
+			}
+		}
+		return contextRoot;
+	}
+
+	private void runAnt(String buildFile, String targets, Map properties, IProgressMonitor monitor) throws CoreException {
+		ILaunchManager launchManager = DebugPlugin.getDefault().getLaunchManager();
+		ILaunchConfigurationType type = launchManager
+				.getLaunchConfigurationType(IAntLaunchConfigurationConstants.ID_ANT_LAUNCH_CONFIGURATION_TYPE);
+		if (type == null) {
+			IStatus s = new Status(IStatus.ERROR, CorePlugin.PLUGIN_ID, 0, GenericServerCoreMessages.antLauncherMissing, null);
+			throw new CoreException(s);
+		}
+		ILaunchConfigurationWorkingCopy wc = type.newInstance(null, properties.get(PROP_MODULE_NAME) + " module publisher"); //$NON-NLS-1$
+		wc.setContainer(null);
+		wc.setAttribute(IExternalToolConstants.ATTR_LOCATION, buildFile);
+		wc.setAttribute(IJavaLaunchConfigurationConstants.ATTR_CLASSPATH_PROVIDER, "org.eclipse.ant.ui.AntClasspathProvider"); //$NON-NLS-1$
+		wc.setAttribute(IAntLaunchConfigurationConstants.ATTR_ANT_TARGETS, targets);
+		wc.setAttribute(IAntLaunchConfigurationConstants.ATTR_ANT_PROPERTIES, properties);
+		wc.setAttribute(IDebugUIConstants.ATTR_LAUNCH_IN_BACKGROUND, false);
+		wc.setAttribute(IDebugUIConstants.ATTR_CAPTURE_IN_CONSOLE, true);
+		wc.setAttribute(IDebugUIConstants.ATTR_PRIVATE, true);
+
+		wc.setAttribute(IJavaLaunchConfigurationConstants.ATTR_SOURCE_PATH_PROVIDER, "org.eclipse.ant.ui.AntClasspathProvider"); //$NON-NLS-1$
+		wc.setAttribute(IJavaLaunchConfigurationConstants.ATTR_VM_INSTALL_NAME, getServerRuntime().getVMInstall().getName());
+		wc.setAttribute(IJavaLaunchConfigurationConstants.ATTR_VM_INSTALL_TYPE, getServerRuntime().getVMInstall().getVMInstallType()
+				.getId());
+		wc.setAttribute(IJavaLaunchConfigurationConstants.ATTR_MAIN_TYPE_NAME,
+				"org.eclipse.ant.internal.ui.antsupport.InternalAntRunner"); //$NON-NLS-1$
+		wc.setAttribute(DebugPlugin.ATTR_PROCESS_FACTORY_ID, IAntUIConstants.REMOTE_ANT_PROCESS_FACTORY_ID);
+
+		setupAntLaunchConfiguration(wc);
+
+		ILaunchConfiguration launchConfig = wc.doSave();
+		launchConfig.launch("run", monitor); //$NON-NLS-1$
+	}
+
+	/**
+	 * Hook method for subclasses.
+	 * 
+	 * @param wc
+	 */
+	protected void setupAntLaunchConfiguration(ILaunchConfigurationWorkingCopy wc) {
+		// nothing to do
+	}
+
+	private static boolean isModuleType(IModule module, String moduleTypeId) {
+		if (module.getModuleType() != null && moduleTypeId.equals(module.getModuleType().getId()))
+			return true;
+		return false;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.jst.server.generic.internal.core.GenericPublisher#unpublish(org.eclipse.wst.server.core.IModule,
+	 *      org.eclipse.core.runtime.IProgressMonitor)
+	 */
+	public IStatus[] unpublish(IProgressMonitor monitor) {
+
+		if (getModule().length > 1)// only respond to root module calls.
+			return null;
+		try {
+			File file = computeBuildFile();
+			runAnt(file.toString(), getUnpublishTargetsForModule(), getPublishProperties(), monitor);
+		} catch (CoreException e) {
+			IStatus s = new Status(IStatus.ERROR, CorePlugin.PLUGIN_ID, 0, GenericServerCoreMessages.errorRemoveModuleAntpublisher, e);
+			return new IStatus[] { s };
+		}
+		return null;
+	}
+}
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/publishers/DefaultModuleAssembler.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/publishers/DefaultModuleAssembler.java
new file mode 100644
index 0000000..720dbf3
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/publishers/DefaultModuleAssembler.java
@@ -0,0 +1,26 @@
+package org.eclipse.jst.server.generic.core.internal.publishers;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jst.server.generic.core.internal.GenericServer;
+import org.eclipse.wst.server.core.IModule;
+
+/**
+ * Default module assembler that basically copies the contents.
+ * @author Gorkem Ercan
+ */
+public class DefaultModuleAssembler extends AbstractModuleAssembler {
+	
+	protected DefaultModuleAssembler(IModule module, GenericServer server, IPath assembleRoot)
+	{
+		super(module, server, assembleRoot);
+	}
+	
+	public IPath assemble(IProgressMonitor monitor) throws CoreException {
+		return copyModule(fModule,monitor);		
+	}
+
+
+
+}
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/publishers/EarModuleAssembler.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/publishers/EarModuleAssembler.java
new file mode 100644
index 0000000..e75cd7c
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/publishers/EarModuleAssembler.java
@@ -0,0 +1,88 @@
+/***************************************************************************************************
+ * Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Gorkem Ercan - initial API and implementation
+ *               
+ **************************************************************************************************/
+package org.eclipse.jst.server.generic.core.internal.publishers;
+
+import java.io.IOException;
+
+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.Status;
+import org.eclipse.jst.server.core.IEnterpriseApplication;
+import org.eclipse.jst.server.generic.core.internal.CorePlugin;
+import org.eclipse.jst.server.generic.core.internal.GenericServer;
+import org.eclipse.wst.server.core.IModule;
+
+/**
+ * Utility for EAR module assembly.
+ */
+public class EarModuleAssembler extends AbstractModuleAssembler {
+
+	protected EarModuleAssembler(IModule module, GenericServer server, IPath assembleRoot)
+	{
+		super(module, server, assembleRoot);
+	}
+
+	public IPath assemble(IProgressMonitor monitor) throws CoreException{
+		IPath parent =copyModule(fModule,monitor);
+		IEnterpriseApplication earModule = (IEnterpriseApplication)fModule.loadAdapter(IEnterpriseApplication.class, monitor);
+		IModule[] childModules = earModule.getModules();
+		for (int i = 0; i < childModules.length; i++) {
+			IModule module = childModules[i];
+			String uri = earModule.getURI(module);
+			if(uri==null){
+				IStatus status = new Status(IStatus.ERROR, CorePlugin.PLUGIN_ID, 0,	"unable to assemble module null uri",null ); //$NON-NLS-1$
+				throw new CoreException(status);
+			}
+				
+			packModule(module,uri, parent);
+		}
+		return parent;
+	}
+	
+	protected void packModule(IModule module, String deploymentUnitName, IPath destination) throws CoreException {
+		if(module.getModuleType().getId().equals("jst.web")) //$NON-NLS-1$
+		{
+			AbstractModuleAssembler assembler= AbstractModuleAssembler.Factory.getModuleAssembler(module, fServer);
+			IPath webAppPath = assembler.assemble(new NullProgressMonitor());
+			String realDestination = destination.append(deploymentUnitName).toString();
+			ModulePackager packager=null;
+			try {
+				packager =new ModulePackager(realDestination,false);
+				packager.pack(webAppPath.toFile(),webAppPath.toOSString());
+			
+			} catch (IOException e) {
+				IStatus status = new Status(IStatus.ERROR, CorePlugin.PLUGIN_ID, 0,
+						"unable to assemble module", e); //$NON-NLS-1$
+				throw new CoreException(status);
+			}
+			finally{
+				if(packager!=null)
+				{
+					
+					try {
+						packager.finished();
+					} catch (IOException e) {
+						// Unhandled
+					}
+				}
+				
+			}
+			
+			
+		}
+		else
+		{
+			super.packModule(module, deploymentUnitName, destination);
+		}
+	}
+}
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/publishers/ModulePackager.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/publishers/ModulePackager.java
new file mode 100644
index 0000000..78d05e7
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/publishers/ModulePackager.java
@@ -0,0 +1,218 @@
+/***************************************************************************************************
+* Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+* accompanying materials are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* http://www.eclipse.org/legal/epl-v10.html
+* 
+* Contributors: Gorkem Ercan - initial API and implementation
+*               
+**************************************************************************************************/
+package org.eclipse.jst.server.generic.core.internal.publishers;
+
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.jar.JarOutputStream;
+import java.util.zip.CRC32;
+import java.util.zip.ZipEntry;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.Path;
+
+/**
+ * Packages resources to a .zip file
+ */
+public class ModulePackager {
+	private static final String JAR_FILE_SEPERATOR = "/";
+	private JarOutputStream outputStream;
+//	private StringBuffer manifestContents;
+
+	private boolean useCompression = true;
+
+	/**
+	 * Create an instance of this class.
+	 * 
+	 * @param filename java.lang.String
+	 * @param compress boolean
+	 * @exception java.io.IOException
+	 */
+	public ModulePackager(String filename, boolean compress) throws IOException {
+		Path directoryPath = new Path(filename);
+		directoryPath = (Path) directoryPath.removeLastSegments(1);
+		File newZipFile = new File(directoryPath.toString());
+		newZipFile.mkdirs();
+		outputStream = new JarOutputStream(new FileOutputStream(filename)); 
+		useCompression = compress;
+	}
+
+	/**
+	 * Do all required cleanup now that we're finished with the currently-open .zip
+	 * 
+	 * @exception java.io.IOException
+	 */
+	public void finished() throws IOException {
+		outputStream.close();
+	}
+
+	/**
+	 * Create a new ZipEntry with the passed pathname and contents, and write it to the current
+	 * archive
+	 * 
+	 * @param pathname
+	 *            java.lang.String
+	 * @param contents
+	 *            byte[]
+	 * @exception java.io.IOException
+	 */
+	protected void write(String pathname, byte[] contents) throws IOException {
+		ZipEntry newEntry = new ZipEntry(pathname);
+
+		// if the contents are being compressed then we get the below for free.
+		if (!useCompression) {
+			newEntry.setMethod(ZipEntry.STORED);
+			newEntry.setSize(contents.length);
+			CRC32 checksumCalculator = new CRC32();
+			checksumCalculator.update(contents);
+			newEntry.setCrc(checksumCalculator.getValue());
+		}
+
+		outputStream.putNextEntry(newEntry);
+		outputStream.write(contents);
+		outputStream.closeEntry();
+	}
+
+	/**
+	 * @param destinationPath
+	 * @throws IOException
+	 */
+	public void writeFolder(String destinationPath) throws IOException {
+		if (!destinationPath.endsWith(JAR_FILE_SEPERATOR )) 
+			destinationPath = destinationPath + JAR_FILE_SEPERATOR;
+		ZipEntry newEntry = new ZipEntry(destinationPath);
+		outputStream.putNextEntry(newEntry);
+		outputStream.closeEntry();
+	}
+
+	/**
+	 * Write the passed resource to the current archive
+	 * 
+	 * @param resource
+	 *            org.eclipse.core.resources.IFile
+	 * @param destinationPath
+	 *            java.lang.String
+	 * @exception java.io.IOException
+	 * @exception org.eclipse.core.runtime.CoreException
+	 */
+	public void write(IFile resource, String destinationPath) throws IOException, CoreException {
+		InputStream contentStream = null;
+		try {
+			contentStream = resource.getContents(false);
+			write(contentStream, destinationPath);
+		} finally {
+			if (contentStream != null)
+				contentStream.close();
+		}
+	}
+
+	/**
+	 * Write the passed resource to the current archive
+	 * 
+	 * @param resource
+	 *            java.io.IFile
+	 * @param destinationPath
+	 *            java.lang.String
+	 * @exception java.io.IOException
+	 * @exception org.eclipse.core.runtime.CoreException
+	 */
+	public void write(File resource, String destinationPath) throws IOException, CoreException {
+		InputStream contentStream = null;
+		try {
+			contentStream = new FileInputStream(resource);
+			write(contentStream, destinationPath);
+		} finally {
+			if (contentStream != null)
+				contentStream.close();
+		}
+	}
+
+	/**
+	 * @param contentStream
+	 * @param destinationPath
+	 * @throws IOException
+	 * @throws CoreException
+	 */
+	public void write(InputStream contentStream, String destinationPath) throws IOException, CoreException {
+		ByteArrayOutputStream output = null;
+
+		try {
+			output = new ByteArrayOutputStream();
+			int chunkSize = contentStream.available();
+			byte[] readBuffer = new byte[chunkSize];
+			int n = contentStream.read(readBuffer);
+
+			while (n > 0) {
+				output.write(readBuffer);
+				n = contentStream.read(readBuffer);
+			}
+		} finally {
+			if (output != null)
+				output.close();
+		}
+
+		write(destinationPath, output.toByteArray());
+	}
+	
+	/**
+	 * pack directory relative to root
+	 * @param directory
+	 * @param root
+	 * @throws CoreException
+	 * @throws IOException
+	 */
+	public void pack(File directory, String root) throws CoreException, IOException
+	{
+        File[] files = directory.listFiles();
+        for( int i = 0; i < files.length; i++ )
+        {
+        	String relativeFolder = makeRelative( files[i].getAbsolutePath(), root );
+            if( files[i].isDirectory() )
+            {
+            	if( relativeFolder != null )
+                {// should always be true
+                    writeFolder( relativeFolder );
+                }
+                pack( files[i], root );
+            } else
+            {
+            	if( relativeFolder != null )
+                {// should always be true
+                    write( files[i], relativeFolder );
+                }
+            }
+        }
+
+    }
+	/**
+	 * Make directoryname relative to root
+	 * @param fileName
+	 * @param root
+	 * @return
+	 */
+	private String makeRelative(String fileName, String root)
+	{
+		String folder=null;
+		if(fileName.startsWith(root))
+		{
+			folder=fileName.substring(root.length());
+		}
+        folder = folder.replaceAll("\\\\", "/");  //$NON-NLS-1$ //$NON-NLS-2$
+        if (folder.length() > 0 && folder.charAt(0) == '/')
+              folder = folder.substring(1);
+		return folder;		
+	}
+	
+}
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/publishers/WarModuleAssembler.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/publishers/WarModuleAssembler.java
new file mode 100644
index 0000000..4b33578
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/publishers/WarModuleAssembler.java
@@ -0,0 +1,40 @@
+/***************************************************************************************************
+ * Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Gorkem Ercan - initial API and implementation
+ *               
+ **************************************************************************************************/
+package org.eclipse.jst.server.generic.core.internal.publishers;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jst.server.core.IWebModule;
+import org.eclipse.jst.server.generic.core.internal.GenericServer;
+import org.eclipse.wst.server.core.IModule;
+
+/**
+ * Assembly utility for war modules.
+ * 
+ */
+public class WarModuleAssembler extends AbstractModuleAssembler {
+	
+	protected WarModuleAssembler(IModule module, GenericServer server, IPath assembleRoot)
+	{
+		super(module, server, assembleRoot);
+	}
+
+	public IPath assemble(IProgressMonitor monitor) throws CoreException{
+		IPath parent =copyModule(fModule,monitor);
+		IWebModule webModule = (IWebModule)fModule.loadAdapter(IWebModule.class, monitor);
+		IModule[] childModules = webModule.getModules();
+		for (int i = 0; i < childModules.length; i++) {
+			IModule module = childModules[i];
+			packModule(module, webModule.getURI(module), parent);
+		}
+		return parent;
+	}
+}
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/core/util/ExtensionPointUtil.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/core/util/ExtensionPointUtil.java
new file mode 100644
index 0000000..cedf0ed
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/core/util/ExtensionPointUtil.java
@@ -0,0 +1,80 @@
+/***************************************************************************************************
+ * Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Gorkem Ercan - initial API and implementation
+ *               
+ **************************************************************************************************/
+package org.eclipse.jst.server.generic.internal.core.util;
+
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtension;
+import org.eclipse.core.runtime.IExtensionPoint;
+import org.eclipse.core.runtime.IExtensionRegistry;
+import org.eclipse.core.runtime.IRegistryChangeListener;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.jst.server.generic.core.internal.CorePlugin;
+
+/**
+ * Utilities for handling the extension points.
+ *
+ * @author Gorkem Ercan
+ */
+public class ExtensionPointUtil {
+    /**
+     * serverdefinition extension id
+     */
+    public static final String SERVERDEFINITION_EXTENSION_ID = "serverdefinition"; //$NON-NLS-1$
+    private static final String GENERICPUBLISHER_EXTENSION_ID = "genericpublisher"; //$NON-NLS-1$
+
+    /**
+     * Returns serverdefinition extensions
+     * @return serverdefinitionExtensions
+     */
+    public static IExtension[] getGenericServerDefinitionExtensions(){
+        return getExtensions(CorePlugin.PLUGIN_ID+"."+SERVERDEFINITION_EXTENSION_ID); //$NON-NLS-1$
+    }
+    
+    /**
+     * Returns publisher extensions
+     * @return genericpublisher extensions
+     */
+    public static IExtension[] getGenericPublisherExtension(){
+        return getExtensions(CorePlugin.PLUGIN_ID+"."+GENERICPUBLISHER_EXTENSION_ID); //$NON-NLS-1$
+    }
+
+    private static IExtension[] getExtensions(String extensionId){
+        IExtensionPoint extensionPoint=getExtensionPoint(extensionId);
+        IExtension[] extensions = extensionPoint.getExtensions();
+        return extensions;
+    }
+ 
+    private static IExtensionPoint getExtensionPoint(String id)
+    {
+        IExtensionRegistry registry = Platform.getExtensionRegistry();
+        IExtensionPoint extensionPoint= registry.getExtensionPoint(id);
+        return extensionPoint;
+    }
+    
+    
+    /**
+     * Returns the configuration elements
+     *
+     * @param extension
+     * @return configurationElements
+     */
+    public static IConfigurationElement[] getConfigurationElements(IExtension extension){
+        return extension!=null?extension.getConfigurationElements():null;
+    }
+    
+    /**
+     * Add listener to extension registry.
+     * @param listener
+     */
+    public static void addRegistryListener(IRegistryChangeListener listener){
+		IExtensionRegistry registry = Platform.getExtensionRegistry();
+		registry.addRegistryChangeListener(listener, CorePlugin.PLUGIN_ID);
+    }
+}
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/core/util/FileUtil.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/core/util/FileUtil.java
new file mode 100644
index 0000000..dfbaab7
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/core/util/FileUtil.java
@@ -0,0 +1,123 @@
+/***************************************************************************************************
+ * Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Gorkem Ercan - initial API and implementation
+ *               
+ **************************************************************************************************/
+package org.eclipse.jst.server.generic.internal.core.util;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.net.URL;
+import org.eclipse.core.runtime.Platform;
+
+/**
+ * Utilities for file operations.
+ * 
+ * @author Gorkem Ercan
+ */
+public class FileUtil {
+
+	
+	
+	/**
+	 * Returns a resolved equivalent of url, use with the 
+	 * platform relative urls
+	 * 
+	 * @param url
+	 * @return URL
+	 */
+	public static URL resolveURL(URL url){
+		try{
+			return Platform.resolve(url);
+		}catch(IOException e){
+			//ignore
+		}
+		return null;
+	}
+	
+	
+	
+	/**
+	 * Create a temporary file
+	 * @param name
+	 * @param dir
+	 * @return file
+	 */
+	public static File createTempFile(String name, String dir){
+		if(name==null || dir == null)
+			return null;
+		
+		File temp=null;
+		String filePath;
+		filePath = name.replace('/', File.separatorChar);
+		if (filePath.startsWith(File.separator))
+			filePath = filePath.substring(1);
+		temp = new File(dir, filePath);
+		verifyPath(temp,true);
+		temp.deleteOnExit();
+		return temp;
+	
+	}
+	
+	/**
+	 * Copies a file
+	 * @param input
+	 * @param output
+	 * @throws IOException
+	 */
+	public static void copy(InputStream input, OutputStream output) throws IOException{
+		byte[] buf = new byte[4096];
+		int len = input.read(buf);
+		while(len!=-1){
+			output.write(buf,0,len);
+			len= input.read(buf);
+		}
+	}
+	
+	private static void verifyPath(File path, boolean isFile) {
+		// if we are expecting a file back off 1 path element
+		if (isFile) {
+			if (path.getAbsolutePath().endsWith(File.separator)) {
+				// make sure this is a file
+				path = path.getParentFile();
+				isFile = false;
+			}
+		}
+		// already exists ... just return
+		if (path.exists())
+			return;
+		// does not exist ... ensure parent exists
+		File parent = path.getParentFile();
+		verifyPath(parent, false);
+		// ensure directories are made. Mark files or directories for deletion
+		if (!isFile)
+			path.mkdir();
+		path.deleteOnExit();
+	}
+
+    /**
+     * Resolves a URL to a file.
+     * 
+     * @param url
+     * @return file
+     */
+    public static File resolveFile(URL url){
+        try {
+            URL resolvedUrl = resolveURL(url);
+              URI uri = new URI(resolvedUrl.getProtocol(), resolvedUrl.getHost(),resolvedUrl.getPath(), resolvedUrl.getQuery());
+            return new File(uri);
+        } 
+        catch (URISyntaxException e) {
+        	//ignore
+        }
+        return null;
+    }
+}
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/servertype/definition/ServerTypePackage.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/servertype/definition/ServerTypePackage.java
new file mode 100644
index 0000000..c230966
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/servertype/definition/ServerTypePackage.java
@@ -0,0 +1,1593 @@
+/***************************************************************************************************
+ * Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Gorkem Ercan - initial API and implementation
+ *               
+ **************************************************************************************************/
+package org.eclipse.jst.server.generic.internal.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;
+import org.eclipse.jst.server.generic.servertype.definition.ServerTypeFactory;
+
+/**
+ * <!-- 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
+ * @model kind="package"
+ * @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.internal.servertype.definition.impl.ServerTypePackageImpl.init();
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.jst.server.generic.internal.servertype.definition.impl.ArchiveTypeImpl <em>Archive Type</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.jst.server.generic.internal.servertype.definition.impl.ArchiveTypeImpl
+	 * @see org.eclipse.jst.server.generic.internal.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.internal.servertype.definition.impl.ArgumentPairImpl <em>Argument Pair</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.jst.server.generic.internal.servertype.definition.impl.ArgumentPairImpl
+	 * @see org.eclipse.jst.server.generic.internal.servertype.definition.impl.ServerTypePackageImpl#getArgumentPair()
+	 * @generated
+	 */
+	int ARGUMENT_PAIR = 1;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ARGUMENT_PAIR__NAME = 0;
+
+	/**
+	 * The feature id for the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ARGUMENT_PAIR__VALUE = 1;
+
+	/**
+	 * The number of structural features of the the '<em>Argument Pair</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ARGUMENT_PAIR_FEATURE_COUNT = 2;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.jst.server.generic.internal.servertype.definition.impl.ClasspathImpl <em>Classpath</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.jst.server.generic.internal.servertype.definition.impl.ClasspathImpl
+	 * @see org.eclipse.jst.server.generic.internal.servertype.definition.impl.ServerTypePackageImpl#getClasspath()
+	 * @generated
+	 */
+	int CLASSPATH = 2;
+
+	/**
+	 * 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 number of structural features of the the '<em>Classpath</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CLASSPATH_FEATURE_COUNT = 3;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.jst.server.generic.internal.servertype.definition.impl.ExternalImpl <em>External</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.jst.server.generic.internal.servertype.definition.impl.ExternalImpl
+	 * @see org.eclipse.jst.server.generic.internal.servertype.definition.impl.ServerTypePackageImpl#getExternal()
+	 * @generated
+	 */
+	int EXTERNAL = 3;
+
+	/**
+	 * The feature id for the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXTERNAL__VALUE = 0;
+
+	/**
+	 * The feature id for the '<em><b>Os</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXTERNAL__OS = 1;
+
+	/**
+	 * The number of structural features of the the '<em>External</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXTERNAL_FEATURE_COUNT = 2;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.jst.server.generic.internal.servertype.definition.impl.JndiConnectionImpl <em>Jndi Connection</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.jst.server.generic.internal.servertype.definition.impl.JndiConnectionImpl
+	 * @see org.eclipse.jst.server.generic.internal.servertype.definition.impl.ServerTypePackageImpl#getJndiConnection()
+	 * @generated
+	 */
+	int JNDI_CONNECTION = 4;
+
+	/**
+	 * The feature id for the '<em><b>Provider Url</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int JNDI_CONNECTION__PROVIDER_URL = 0;
+
+	/**
+	 * The feature id for the '<em><b>Group</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int JNDI_CONNECTION__GROUP = 1;
+
+	/**
+	 * The feature id for the '<em><b>Jndi Property</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int JNDI_CONNECTION__JNDI_PROPERTY = 2;
+
+	/**
+	 * The feature id for the '<em><b>Initial Context Factory</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int JNDI_CONNECTION__INITIAL_CONTEXT_FACTORY = 3;
+
+	/**
+	 * The number of structural features of the the '<em>Jndi Connection</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int JNDI_CONNECTION_FEATURE_COUNT = 4;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.jst.server.generic.internal.servertype.definition.impl.LaunchConfigurationImpl <em>Launch Configuration</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.jst.server.generic.internal.servertype.definition.impl.LaunchConfigurationImpl
+	 * @see org.eclipse.jst.server.generic.internal.servertype.definition.impl.ServerTypePackageImpl#getLaunchConfiguration()
+	 * @generated
+	 */
+	int LAUNCH_CONFIGURATION = 5;
+
+	/**
+	 * The feature id for the '<em><b>Group</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LAUNCH_CONFIGURATION__GROUP = 0;
+
+	/**
+	 * The feature id for the '<em><b>Environment Variable</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LAUNCH_CONFIGURATION__ENVIRONMENT_VARIABLE = 1;
+
+	/**
+	 * The feature id for the '<em><b>Group1</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LAUNCH_CONFIGURATION__GROUP1 = 2;
+
+	/**
+	 * The feature id for the '<em><b>Program Arguments</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LAUNCH_CONFIGURATION__PROGRAM_ARGUMENTS = 3;
+
+	/**
+	 * 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 = 4;
+
+	/**
+	 * The feature id for the '<em><b>Main Class</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LAUNCH_CONFIGURATION__MAIN_CLASS = 5;
+
+	/**
+	 * The feature id for the '<em><b>Group2</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LAUNCH_CONFIGURATION__GROUP2 = 6;
+
+	/**
+	 * The feature id for the '<em><b>Vm Parameters</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LAUNCH_CONFIGURATION__VM_PARAMETERS = 7;
+
+	/**
+	 * 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 = 8;
+
+	/**
+	 * The feature id for the '<em><b>Debug Port</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LAUNCH_CONFIGURATION__DEBUG_PORT = 9;
+
+	/**
+	 * The feature id for the '<em><b>Group3</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LAUNCH_CONFIGURATION__GROUP3 = 10;
+
+	/**
+	 * The feature id for the '<em><b>External</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LAUNCH_CONFIGURATION__EXTERNAL = 11;
+
+	/**
+	 * 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 = 12;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.jst.server.generic.internal.servertype.definition.impl.ModuleImpl <em>Module</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.jst.server.generic.internal.servertype.definition.impl.ModuleImpl
+	 * @see org.eclipse.jst.server.generic.internal.servertype.definition.impl.ServerTypePackageImpl#getModule()
+	 * @generated
+	 */
+	int MODULE = 6;
+
+	/**
+	 * 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.internal.servertype.definition.impl.PortImpl <em>Port</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.jst.server.generic.internal.servertype.definition.impl.PortImpl
+	 * @see org.eclipse.jst.server.generic.internal.servertype.definition.impl.ServerTypePackageImpl#getPort()
+	 * @generated
+	 */
+	int PORT = 7;
+
+	/**
+	 * 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.internal.servertype.definition.impl.ProjectImpl <em>Project</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.jst.server.generic.internal.servertype.definition.impl.ProjectImpl
+	 * @see org.eclipse.jst.server.generic.internal.servertype.definition.impl.ServerTypePackageImpl#getProject()
+	 * @generated
+	 */
+	int PROJECT = 8;
+
+	/**
+	 * 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.internal.servertype.definition.impl.PropertyImpl <em>Property</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.jst.server.generic.internal.servertype.definition.impl.PropertyImpl
+	 * @see org.eclipse.jst.server.generic.internal.servertype.definition.impl.ServerTypePackageImpl#getProperty()
+	 * @generated
+	 */
+	int PROPERTY = 9;
+
+	/**
+	 * 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.internal.servertype.definition.impl.PublisherImpl <em>Publisher</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.jst.server.generic.internal.servertype.definition.impl.PublisherImpl
+	 * @see org.eclipse.jst.server.generic.internal.servertype.definition.impl.ServerTypePackageImpl#getPublisher()
+	 * @generated
+	 */
+	int PUBLISHER = 10;
+
+	/**
+	 * 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>Publisherdata</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PUBLISHER__PUBLISHERDATA = 1;
+
+	/**
+	 * The feature id for the '<em><b>Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PUBLISHER__ID = 2;
+
+	/**
+	 * The number of structural features of the the '<em>Publisher</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PUBLISHER_FEATURE_COUNT = 3;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.jst.server.generic.internal.servertype.definition.impl.PublisherDataImpl <em>Publisher Data</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.jst.server.generic.internal.servertype.definition.impl.PublisherDataImpl
+	 * @see org.eclipse.jst.server.generic.internal.servertype.definition.impl.ServerTypePackageImpl#getPublisherData()
+	 * @generated
+	 */
+	int PUBLISHER_DATA = 11;
+
+	/**
+	 * The feature id for the '<em><b>Dataname</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PUBLISHER_DATA__DATANAME = 0;
+
+	/**
+	 * The feature id for the '<em><b>Datavalue</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PUBLISHER_DATA__DATAVALUE = 1;
+
+	/**
+	 * The number of structural features of the the '<em>Publisher Data</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PUBLISHER_DATA_FEATURE_COUNT = 2;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.jst.server.generic.internal.servertype.definition.impl.ServerRuntimeImpl <em>Server Runtime</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.jst.server.generic.internal.servertype.definition.impl.ServerRuntimeImpl
+	 * @see org.eclipse.jst.server.generic.internal.servertype.definition.impl.ServerTypePackageImpl#getServerRuntime()
+	 * @generated
+	 */
+	int SERVER_RUNTIME = 12;
+
+	/**
+	 * 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>Jndi Connection</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SERVER_RUNTIME__JNDI_CONNECTION = 13;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SERVER_RUNTIME__NAME = 14;
+
+	/**
+	 * The feature id for the '<em><b>Version</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SERVER_RUNTIME__VERSION = 15;
+
+	/**
+	 * 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 = 16;
+
+
+	/**
+	 * 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.ArgumentPair <em>Argument Pair</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Argument Pair</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.ArgumentPair
+	 * @generated
+	 */
+	EClass getArgumentPair();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.jst.server.generic.servertype.definition.ArgumentPair#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.ArgumentPair#getName()
+	 * @see #getArgumentPair()
+	 * @generated
+	 */
+	EAttribute getArgumentPair_Name();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.jst.server.generic.servertype.definition.ArgumentPair#getValue <em>Value</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Value</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.ArgumentPair#getValue()
+	 * @see #getArgumentPair()
+	 * @generated
+	 */
+	EAttribute getArgumentPair_Value();
+
+	/**
+	 * 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 class '{@link org.eclipse.jst.server.generic.servertype.definition.External <em>External</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>External</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.External
+	 * @generated
+	 */
+	EClass getExternal();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.jst.server.generic.servertype.definition.External#getValue <em>Value</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Value</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.External#getValue()
+	 * @see #getExternal()
+	 * @generated
+	 */
+	EAttribute getExternal_Value();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.jst.server.generic.servertype.definition.External#getOs <em>Os</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Os</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.External#getOs()
+	 * @see #getExternal()
+	 * @generated
+	 */
+	EAttribute getExternal_Os();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.jst.server.generic.servertype.definition.JndiConnection <em>Jndi Connection</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Jndi Connection</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.JndiConnection
+	 * @generated
+	 */
+	EClass getJndiConnection();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.jst.server.generic.servertype.definition.JndiConnection#getProviderUrl <em>Provider Url</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Provider Url</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.JndiConnection#getProviderUrl()
+	 * @see #getJndiConnection()
+	 * @generated
+	 */
+	EAttribute getJndiConnection_ProviderUrl();
+
+	/**
+	 * Returns the meta object for the attribute list '{@link org.eclipse.jst.server.generic.servertype.definition.JndiConnection#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.JndiConnection#getGroup()
+	 * @see #getJndiConnection()
+	 * @generated
+	 */
+	EAttribute getJndiConnection_Group();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.jst.server.generic.servertype.definition.JndiConnection#getJndiProperty <em>Jndi Property</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Jndi Property</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.JndiConnection#getJndiProperty()
+	 * @see #getJndiConnection()
+	 * @generated
+	 */
+	EReference getJndiConnection_JndiProperty();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.jst.server.generic.servertype.definition.JndiConnection#getInitialContextFactory <em>Initial Context Factory</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Initial Context Factory</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.JndiConnection#getInitialContextFactory()
+	 * @see #getJndiConnection()
+	 * @generated
+	 */
+	EAttribute getJndiConnection_InitialContextFactory();
+
+	/**
+	 * 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 list '{@link org.eclipse.jst.server.generic.servertype.definition.LaunchConfiguration#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.LaunchConfiguration#getGroup()
+	 * @see #getLaunchConfiguration()
+	 * @generated
+	 */
+	EAttribute getLaunchConfiguration_Group();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.jst.server.generic.servertype.definition.LaunchConfiguration#getEnvironmentVariable <em>Environment Variable</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Environment Variable</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.LaunchConfiguration#getEnvironmentVariable()
+	 * @see #getLaunchConfiguration()
+	 * @generated
+	 */
+	EReference getLaunchConfiguration_EnvironmentVariable();
+
+	/**
+	 * Returns the meta object for the attribute list '{@link org.eclipse.jst.server.generic.servertype.definition.LaunchConfiguration#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.LaunchConfiguration#getGroup1()
+	 * @see #getLaunchConfiguration()
+	 * @generated
+	 */
+	EAttribute getLaunchConfiguration_Group1();
+
+	/**
+	 * Returns the meta object for the attribute list '{@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 list '<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#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#getMainClass <em>Main Class</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Main Class</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.LaunchConfiguration#getMainClass()
+	 * @see #getLaunchConfiguration()
+	 * @generated
+	 */
+	EAttribute getLaunchConfiguration_MainClass();
+
+	/**
+	 * Returns the meta object for the attribute list '{@link org.eclipse.jst.server.generic.servertype.definition.LaunchConfiguration#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.LaunchConfiguration#getGroup2()
+	 * @see #getLaunchConfiguration()
+	 * @generated
+	 */
+	EAttribute getLaunchConfiguration_Group2();
+
+	/**
+	 * Returns the meta object for the attribute list '{@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 list '<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 the attribute '{@link org.eclipse.jst.server.generic.servertype.definition.LaunchConfiguration#getDebugPort <em>Debug Port</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Debug Port</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.LaunchConfiguration#getDebugPort()
+	 * @see #getLaunchConfiguration()
+	 * @generated
+	 */
+	EAttribute getLaunchConfiguration_DebugPort();
+
+	/**
+	 * Returns the meta object for the attribute list '{@link org.eclipse.jst.server.generic.servertype.definition.LaunchConfiguration#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.LaunchConfiguration#getGroup3()
+	 * @see #getLaunchConfiguration()
+	 * @generated
+	 */
+	EAttribute getLaunchConfiguration_Group3();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.jst.server.generic.servertype.definition.LaunchConfiguration#getExternal <em>External</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>External</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.LaunchConfiguration#getExternal()
+	 * @see #getLaunchConfiguration()
+	 * @generated
+	 */
+	EReference getLaunchConfiguration_External();
+
+	/**
+	 * 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#getPublisherdata <em>Publisherdata</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Publisherdata</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.Publisher#getPublisherdata()
+	 * @see #getPublisher()
+	 * @generated
+	 */
+	EReference getPublisher_Publisherdata();
+
+	/**
+	 * 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.PublisherData <em>Publisher Data</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Publisher Data</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.PublisherData
+	 * @generated
+	 */
+	EClass getPublisherData();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.jst.server.generic.servertype.definition.PublisherData#getDataname <em>Dataname</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Dataname</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.PublisherData#getDataname()
+	 * @see #getPublisherData()
+	 * @generated
+	 */
+	EAttribute getPublisherData_Dataname();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.jst.server.generic.servertype.definition.PublisherData#getDatavalue <em>Datavalue</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Datavalue</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.PublisherData#getDatavalue()
+	 * @see #getPublisherData()
+	 * @generated
+	 */
+	EAttribute getPublisherData_Datavalue();
+
+	/**
+	 * 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 containment reference '{@link org.eclipse.jst.server.generic.servertype.definition.ServerRuntime#getJndiConnection <em>Jndi Connection</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Jndi Connection</em>'.
+	 * @see org.eclipse.jst.server.generic.servertype.definition.ServerRuntime#getJndiConnection()
+	 * @see #getServerRuntime()
+	 * @generated
+	 */
+	EReference getServerRuntime_JndiConnection();
+
+	/**
+	 * 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 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/internal/servertype/definition/impl/ArchiveTypeImpl.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/servertype/definition/impl/ArchiveTypeImpl.java
new file mode 100644
index 0000000..f5559fa
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/servertype/definition/impl/ArchiveTypeImpl.java
@@ -0,0 +1,168 @@
+/***************************************************************************************************
+ * Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Gorkem Ercan - initial API and implementation
+ *               
+ **************************************************************************************************/
+package org.eclipse.jst.server.generic.internal.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.internal.servertype.definition.ServerTypePackage;
+import org.eclipse.jst.server.generic.servertype.definition.ArchiveType;
+
+
+
+
+/**
+ * <!-- 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.internal.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/internal/servertype/definition/impl/ArgumentPairImpl.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/servertype/definition/impl/ArgumentPairImpl.java
new file mode 100644
index 0000000..7fadb22
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/servertype/definition/impl/ArgumentPairImpl.java
@@ -0,0 +1,220 @@
+/***************************************************************************************************
+ * Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Gorkem Ercan - initial API and implementation
+ *               
+ **************************************************************************************************/
+package org.eclipse.jst.server.generic.internal.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.internal.servertype.definition.ServerTypePackage;
+import org.eclipse.jst.server.generic.servertype.definition.ArgumentPair;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Argument Pair</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.jst.server.generic.internal.servertype.definition.impl.ArgumentPairImpl#getName <em>Name</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.internal.servertype.definition.impl.ArgumentPairImpl#getValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ArgumentPairImpl extends EObjectImpl implements ArgumentPair {
+	/**
+	 * 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 #getValue() <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String VALUE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getValue() <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected String value = VALUE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ArgumentPairImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EClass eStaticClass() {
+		return ServerTypePackage.eINSTANCE.getArgumentPair();
+	}
+
+	/**
+	 * <!-- 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.ARGUMENT_PAIR__NAME, oldName, name));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setValue(String newValue) {
+		String oldValue = value;
+		value = newValue;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ServerTypePackage.ARGUMENT_PAIR__VALUE, oldValue, value));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Object eGet(EStructuralFeature eFeature, boolean resolve) {
+		switch (eDerivedStructuralFeatureID(eFeature)) {
+			case ServerTypePackage.ARGUMENT_PAIR__NAME:
+				return getName();
+			case ServerTypePackage.ARGUMENT_PAIR__VALUE:
+				return getValue();
+		}
+		return eDynamicGet(eFeature, resolve);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void eSet(EStructuralFeature eFeature, Object newValue) {
+		switch (eDerivedStructuralFeatureID(eFeature)) {
+			case ServerTypePackage.ARGUMENT_PAIR__NAME:
+				setName((String)newValue);
+				return;
+			case ServerTypePackage.ARGUMENT_PAIR__VALUE:
+				setValue((String)newValue);
+				return;
+		}
+		eDynamicSet(eFeature, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void eUnset(EStructuralFeature eFeature) {
+		switch (eDerivedStructuralFeatureID(eFeature)) {
+			case ServerTypePackage.ARGUMENT_PAIR__NAME:
+				setName(NAME_EDEFAULT);
+				return;
+			case ServerTypePackage.ARGUMENT_PAIR__VALUE:
+				setValue(VALUE_EDEFAULT);
+				return;
+		}
+		eDynamicUnset(eFeature);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean eIsSet(EStructuralFeature eFeature) {
+		switch (eDerivedStructuralFeatureID(eFeature)) {
+			case ServerTypePackage.ARGUMENT_PAIR__NAME:
+				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+			case ServerTypePackage.ARGUMENT_PAIR__VALUE:
+				return VALUE_EDEFAULT == null ? value != null : !VALUE_EDEFAULT.equals(value);
+		}
+		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(" (name: ");
+		result.append(name);
+		result.append(", value: ");
+		result.append(value);
+		result.append(')');
+		return result.toString();
+	}
+
+} //ArgumentPairImpl
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/servertype/definition/impl/ClasspathImpl.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/servertype/definition/impl/ClasspathImpl.java
new file mode 100644
index 0000000..34bf381
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/servertype/definition/impl/ClasspathImpl.java
@@ -0,0 +1,250 @@
+/***************************************************************************************************
+ * Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Gorkem Ercan - initial API and implementation
+ *               
+ **************************************************************************************************/
+package org.eclipse.jst.server.generic.internal.servertype.definition.impl;
+
+import java.util.Collection;
+
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+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.servertype.definition.ServerTypePackage;
+import org.eclipse.jst.server.generic.servertype.definition.Classpath;
+
+
+
+
+/**
+ * <!-- 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.internal.servertype.definition.impl.ClasspathImpl#getGroup <em>Group</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.internal.servertype.definition.impl.ClasspathImpl#getArchive <em>Archive</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.internal.servertype.definition.impl.ClasspathImpl#getId <em>Id</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;
+
+	/**
+	 * <!-- 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 List 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 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();
+		}
+		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;
+		}
+		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;
+		}
+		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);
+		}
+		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();
+	}
+
+} //ClasspathImpl
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/servertype/definition/impl/ExternalImpl.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/servertype/definition/impl/ExternalImpl.java
new file mode 100644
index 0000000..7a55255
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/servertype/definition/impl/ExternalImpl.java
@@ -0,0 +1,221 @@
+/***************************************************************************************************
+ * Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Gorkem Ercan - initial API and implementation
+ *               
+ **************************************************************************************************/
+package org.eclipse.jst.server.generic.internal.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.internal.servertype.definition.ServerTypePackage;
+import org.eclipse.jst.server.generic.servertype.definition.External;
+
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>External</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.jst.server.generic.internal.servertype.definition.impl.ExternalImpl#getValue <em>Value</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.internal.servertype.definition.impl.ExternalImpl#getOs <em>Os</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ExternalImpl extends EObjectImpl implements External {
+	/**
+	 * The default value of the '{@link #getValue() <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String VALUE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getValue() <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected String value = VALUE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getOs() <em>Os</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOs()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String OS_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getOs() <em>Os</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOs()
+	 * @generated
+	 * @ordered
+	 */
+	protected String os = OS_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ExternalImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EClass eStaticClass() {
+		return ServerTypePackage.eINSTANCE.getExternal();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setValue(String newValue) {
+		String oldValue = value;
+		value = newValue;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ServerTypePackage.EXTERNAL__VALUE, oldValue, value));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getOs() {
+		return os;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setOs(String newOs) {
+		String oldOs = os;
+		os = newOs;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ServerTypePackage.EXTERNAL__OS, oldOs, os));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Object eGet(EStructuralFeature eFeature, boolean resolve) {
+		switch (eDerivedStructuralFeatureID(eFeature)) {
+			case ServerTypePackage.EXTERNAL__VALUE:
+				return getValue();
+			case ServerTypePackage.EXTERNAL__OS:
+				return getOs();
+		}
+		return eDynamicGet(eFeature, resolve);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void eSet(EStructuralFeature eFeature, Object newValue) {
+		switch (eDerivedStructuralFeatureID(eFeature)) {
+			case ServerTypePackage.EXTERNAL__VALUE:
+				setValue((String)newValue);
+				return;
+			case ServerTypePackage.EXTERNAL__OS:
+				setOs((String)newValue);
+				return;
+		}
+		eDynamicSet(eFeature, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void eUnset(EStructuralFeature eFeature) {
+		switch (eDerivedStructuralFeatureID(eFeature)) {
+			case ServerTypePackage.EXTERNAL__VALUE:
+				setValue(VALUE_EDEFAULT);
+				return;
+			case ServerTypePackage.EXTERNAL__OS:
+				setOs(OS_EDEFAULT);
+				return;
+		}
+		eDynamicUnset(eFeature);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean eIsSet(EStructuralFeature eFeature) {
+		switch (eDerivedStructuralFeatureID(eFeature)) {
+			case ServerTypePackage.EXTERNAL__VALUE:
+				return VALUE_EDEFAULT == null ? value != null : !VALUE_EDEFAULT.equals(value);
+			case ServerTypePackage.EXTERNAL__OS:
+				return OS_EDEFAULT == null ? os != null : !OS_EDEFAULT.equals(os);
+		}
+		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(" (value: ");
+		result.append(value);
+		result.append(", os: ");
+		result.append(os);
+		result.append(')');
+		return result.toString();
+	}
+
+} //ExternalImpl
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/servertype/definition/impl/JndiConnectionImpl.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/servertype/definition/impl/JndiConnectionImpl.java
new file mode 100644
index 0000000..362b84e
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/servertype/definition/impl/JndiConnectionImpl.java
@@ -0,0 +1,307 @@
+/***************************************************************************************************
+ * Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Gorkem Ercan - initial API and implementation
+ *               
+ **************************************************************************************************/
+package org.eclipse.jst.server.generic.internal.servertype.definition.impl;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+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.servertype.definition.ServerTypePackage;
+import org.eclipse.jst.server.generic.servertype.definition.JndiConnection;
+
+
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Jndi Connection</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.jst.server.generic.internal.servertype.definition.impl.JndiConnectionImpl#getProviderUrl <em>Provider Url</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.internal.servertype.definition.impl.JndiConnectionImpl#getGroup <em>Group</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.internal.servertype.definition.impl.JndiConnectionImpl#getJndiProperty <em>Jndi Property</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.internal.servertype.definition.impl.JndiConnectionImpl#getInitialContextFactory <em>Initial Context Factory</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class JndiConnectionImpl extends EObjectImpl implements JndiConnection {
+	/**
+	 * The default value of the '{@link #getProviderUrl() <em>Provider Url</em>}' attribute.
+	 * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+	 * @see #getProviderUrl()
+	 * @generated
+	 * @ordered
+	 */
+    protected static final String PROVIDER_URL_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getProviderUrl() <em>Provider Url</em>}' attribute.
+	 * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+	 * @see #getProviderUrl()
+	 * @generated
+	 * @ordered
+	 */
+    protected String providerUrl = PROVIDER_URL_EDEFAULT;
+
+	/**
+	 * 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 #getInitialContextFactory() <em>Initial Context Factory</em>}' attribute.
+	 * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+	 * @see #getInitialContextFactory()
+	 * @generated
+	 * @ordered
+	 */
+    protected static final String INITIAL_CONTEXT_FACTORY_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getInitialContextFactory() <em>Initial Context Factory</em>}' attribute.
+	 * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+	 * @see #getInitialContextFactory()
+	 * @generated
+	 * @ordered
+	 */
+    protected String initialContextFactory = INITIAL_CONTEXT_FACTORY_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+	 * @generated
+	 */
+    protected JndiConnectionImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+	 * @generated
+	 */
+    protected EClass eStaticClass() {
+		return ServerTypePackage.eINSTANCE.getJndiConnection();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+	 * @generated
+	 */
+    public String getProviderUrl() {
+		return providerUrl;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+	 * @generated
+	 */
+    public void setProviderUrl(String newProviderUrl) {
+		String oldProviderUrl = providerUrl;
+		providerUrl = newProviderUrl;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ServerTypePackage.JNDI_CONNECTION__PROVIDER_URL, oldProviderUrl, providerUrl));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+	 * @generated
+	 */
+    public FeatureMap getGroup() {
+		if (group == null) {
+			group = new BasicFeatureMap(this, ServerTypePackage.JNDI_CONNECTION__GROUP);
+		}
+		return group;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+	 * @generated
+	 */
+    public List getJndiProperty() {
+		return ((FeatureMap)getGroup()).list(ServerTypePackage.eINSTANCE.getJndiConnection_JndiProperty());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+	 * @generated
+	 */
+    public String getInitialContextFactory() {
+		return initialContextFactory;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+	 * @generated
+	 */
+    public void setInitialContextFactory(String newInitialContextFactory) {
+		String oldInitialContextFactory = initialContextFactory;
+		initialContextFactory = newInitialContextFactory;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ServerTypePackage.JNDI_CONNECTION__INITIAL_CONTEXT_FACTORY, oldInitialContextFactory, initialContextFactory));
+	}
+
+	/**
+	 * <!-- 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.JNDI_CONNECTION__GROUP:
+					return ((InternalEList)getGroup()).basicRemove(otherEnd, msgs);
+				case ServerTypePackage.JNDI_CONNECTION__JNDI_PROPERTY:
+					return ((InternalEList)getJndiProperty()).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.JNDI_CONNECTION__PROVIDER_URL:
+				return getProviderUrl();
+			case ServerTypePackage.JNDI_CONNECTION__GROUP:
+				return getGroup();
+			case ServerTypePackage.JNDI_CONNECTION__JNDI_PROPERTY:
+				return getJndiProperty();
+			case ServerTypePackage.JNDI_CONNECTION__INITIAL_CONTEXT_FACTORY:
+				return getInitialContextFactory();
+		}
+		return eDynamicGet(eFeature, resolve);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+	 * @generated
+	 */
+    public void eSet(EStructuralFeature eFeature, Object newValue) {
+		switch (eDerivedStructuralFeatureID(eFeature)) {
+			case ServerTypePackage.JNDI_CONNECTION__PROVIDER_URL:
+				setProviderUrl((String)newValue);
+				return;
+			case ServerTypePackage.JNDI_CONNECTION__GROUP:
+				getGroup().clear();
+				getGroup().addAll((Collection)newValue);
+				return;
+			case ServerTypePackage.JNDI_CONNECTION__JNDI_PROPERTY:
+				getJndiProperty().clear();
+				getJndiProperty().addAll((Collection)newValue);
+				return;
+			case ServerTypePackage.JNDI_CONNECTION__INITIAL_CONTEXT_FACTORY:
+				setInitialContextFactory((String)newValue);
+				return;
+		}
+		eDynamicSet(eFeature, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+	 * @generated
+	 */
+    public void eUnset(EStructuralFeature eFeature) {
+		switch (eDerivedStructuralFeatureID(eFeature)) {
+			case ServerTypePackage.JNDI_CONNECTION__PROVIDER_URL:
+				setProviderUrl(PROVIDER_URL_EDEFAULT);
+				return;
+			case ServerTypePackage.JNDI_CONNECTION__GROUP:
+				getGroup().clear();
+				return;
+			case ServerTypePackage.JNDI_CONNECTION__JNDI_PROPERTY:
+				getJndiProperty().clear();
+				return;
+			case ServerTypePackage.JNDI_CONNECTION__INITIAL_CONTEXT_FACTORY:
+				setInitialContextFactory(INITIAL_CONTEXT_FACTORY_EDEFAULT);
+				return;
+		}
+		eDynamicUnset(eFeature);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+	 * @generated
+	 */
+    public boolean eIsSet(EStructuralFeature eFeature) {
+		switch (eDerivedStructuralFeatureID(eFeature)) {
+			case ServerTypePackage.JNDI_CONNECTION__PROVIDER_URL:
+				return PROVIDER_URL_EDEFAULT == null ? providerUrl != null : !PROVIDER_URL_EDEFAULT.equals(providerUrl);
+			case ServerTypePackage.JNDI_CONNECTION__GROUP:
+				return group != null && !group.isEmpty();
+			case ServerTypePackage.JNDI_CONNECTION__JNDI_PROPERTY:
+				return !getJndiProperty().isEmpty();
+			case ServerTypePackage.JNDI_CONNECTION__INITIAL_CONTEXT_FACTORY:
+				return INITIAL_CONTEXT_FACTORY_EDEFAULT == null ? initialContextFactory != null : !INITIAL_CONTEXT_FACTORY_EDEFAULT.equals(initialContextFactory);
+		}
+		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(" (providerUrl: ");
+		result.append(providerUrl);
+		result.append(", group: ");
+		result.append(group);
+		result.append(", initialContextFactory: ");
+		result.append(initialContextFactory);
+		result.append(')');
+		return result.toString();
+	}
+
+} //JndiConnectionImpl
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/servertype/definition/impl/LaunchConfigurationImpl.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/servertype/definition/impl/LaunchConfigurationImpl.java
new file mode 100644
index 0000000..dd4089f
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/servertype/definition/impl/LaunchConfigurationImpl.java
@@ -0,0 +1,637 @@
+/***************************************************************************************************
+ * Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Gorkem Ercan - initial API and implementation
+ *               
+ **************************************************************************************************/
+package org.eclipse.jst.server.generic.internal.servertype.definition.impl;
+
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+
+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.servertype.definition.ServerTypePackage;
+import org.eclipse.jst.server.generic.servertype.definition.LaunchConfiguration;
+
+
+
+
+/**
+ * <!-- 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.internal.servertype.definition.impl.LaunchConfigurationImpl#getGroup <em>Group</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.internal.servertype.definition.impl.LaunchConfigurationImpl#getEnvironmentVariable <em>Environment Variable</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.internal.servertype.definition.impl.LaunchConfigurationImpl#getGroup1 <em>Group1</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.internal.servertype.definition.impl.LaunchConfigurationImpl#getProgramArguments <em>Program Arguments</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.internal.servertype.definition.impl.LaunchConfigurationImpl#getWorkingDirectory <em>Working Directory</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.internal.servertype.definition.impl.LaunchConfigurationImpl#getMainClass <em>Main Class</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.internal.servertype.definition.impl.LaunchConfigurationImpl#getGroup2 <em>Group2</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.internal.servertype.definition.impl.LaunchConfigurationImpl#getVmParameters <em>Vm Parameters</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.internal.servertype.definition.impl.LaunchConfigurationImpl#getClasspathReference <em>Classpath Reference</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.internal.servertype.definition.impl.LaunchConfigurationImpl#getDebugPort <em>Debug Port</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.internal.servertype.definition.impl.LaunchConfigurationImpl#getGroup3 <em>Group3</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.internal.servertype.definition.impl.LaunchConfigurationImpl#getExternal <em>External</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LaunchConfigurationImpl extends EObjectImpl implements LaunchConfiguration {
+	/**
+	 * 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 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 #getMainClass() <em>Main Class</em>}' attribute.
+	 * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+	 * @see #getMainClass()
+	 * @generated
+	 * @ordered
+	 */
+    protected static final String MAIN_CLASS_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getMainClass() <em>Main Class</em>}' attribute.
+	 * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+	 * @see #getMainClass()
+	 * @generated
+	 * @ordered
+	 */
+    protected String mainClass = MAIN_CLASS_EDEFAULT;
+
+	/**
+	 * 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 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;
+
+	/**
+	 * The default value of the '{@link #getDebugPort() <em>Debug Port</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDebugPort()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String DEBUG_PORT_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getDebugPort() <em>Debug Port</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDebugPort()
+	 * @generated
+	 * @ordered
+	 */
+	protected String debugPort = DEBUG_PORT_EDEFAULT;
+
+	/**
+	 * 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;
+
+	/**
+	 * <!-- 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 getMainClass() {
+		return mainClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+	 * @generated
+	 */
+    public void setMainClass(String newMainClass) {
+		String oldMainClass = mainClass;
+		mainClass = newMainClass;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ServerTypePackage.LAUNCH_CONFIGURATION__MAIN_CLASS, oldMainClass, mainClass));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FeatureMap getGroup2() {
+		if (group2 == null) {
+			group2 = new BasicFeatureMap(this, ServerTypePackage.LAUNCH_CONFIGURATION__GROUP2);
+		}
+		return group2;
+	}
+
+	/**
+	 * <!-- 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 List getProgramArguments() {
+		return ((FeatureMap)getGroup1()).list(ServerTypePackage.eINSTANCE.getLaunchConfiguration_ProgramArguments());
+	}
+
+	/**
+	 * @generated NOT
+	 * @return
+	 */
+	private String cleanWhiteSpace(String string)
+	{
+		if(string==null)
+			return null;
+        char[] chars = string.toCharArray();
+		for (int i = 0; i < chars.length; i++) {
+			if(Character.isWhitespace(chars[i]))
+				chars[i]=' ';
+		}
+		return (new String(chars)).trim();
+		
+	}
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public List getVmParameters() {
+		return ((FeatureMap)getGroup2()).list(ServerTypePackage.eINSTANCE.getLaunchConfiguration_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 List getExternal() {
+		return ((FeatureMap)getGroup3()).list(ServerTypePackage.eINSTANCE.getLaunchConfiguration_External());
+	}
+
+	/**
+	 * <!-- 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.LAUNCH_CONFIGURATION__GROUP:
+					return ((InternalEList)getGroup()).basicRemove(otherEnd, msgs);
+				case ServerTypePackage.LAUNCH_CONFIGURATION__ENVIRONMENT_VARIABLE:
+					return ((InternalEList)getEnvironmentVariable()).basicRemove(otherEnd, msgs);
+				case ServerTypePackage.LAUNCH_CONFIGURATION__GROUP1:
+					return ((InternalEList)getGroup1()).basicRemove(otherEnd, msgs);
+				case ServerTypePackage.LAUNCH_CONFIGURATION__GROUP2:
+					return ((InternalEList)getGroup2()).basicRemove(otherEnd, msgs);
+				case ServerTypePackage.LAUNCH_CONFIGURATION__GROUP3:
+					return ((InternalEList)getGroup3()).basicRemove(otherEnd, msgs);
+				case ServerTypePackage.LAUNCH_CONFIGURATION__EXTERNAL:
+					return ((InternalEList)getExternal()).basicRemove(otherEnd, msgs);
+				default:
+					return eDynamicInverseRemove(otherEnd, featureID, baseClass, msgs);
+			}
+		}
+		return eBasicSetContainer(null, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getDebugPort() {
+		return debugPort;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDebugPort(String newDebugPort) {
+		String oldDebugPort = debugPort;
+		debugPort = newDebugPort;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ServerTypePackage.LAUNCH_CONFIGURATION__DEBUG_PORT, oldDebugPort, debugPort));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FeatureMap getGroup3() {
+		if (group3 == null) {
+			group3 = new BasicFeatureMap(this, ServerTypePackage.LAUNCH_CONFIGURATION__GROUP3);
+		}
+		return group3;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FeatureMap getGroup() {
+		if (group == null) {
+			group = new BasicFeatureMap(this, ServerTypePackage.LAUNCH_CONFIGURATION__GROUP);
+		}
+		return group;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public List getEnvironmentVariable() {
+		return ((FeatureMap)getGroup()).list(ServerTypePackage.eINSTANCE.getLaunchConfiguration_EnvironmentVariable());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FeatureMap getGroup1() {
+		if (group1 == null) {
+			group1 = new BasicFeatureMap(this, ServerTypePackage.LAUNCH_CONFIGURATION__GROUP1);
+		}
+		return group1;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Object eGet(EStructuralFeature eFeature, boolean resolve) {
+		switch (eDerivedStructuralFeatureID(eFeature)) {
+			case ServerTypePackage.LAUNCH_CONFIGURATION__GROUP:
+				return getGroup();
+			case ServerTypePackage.LAUNCH_CONFIGURATION__ENVIRONMENT_VARIABLE:
+				return getEnvironmentVariable();
+			case ServerTypePackage.LAUNCH_CONFIGURATION__GROUP1:
+				return getGroup1();
+			case ServerTypePackage.LAUNCH_CONFIGURATION__PROGRAM_ARGUMENTS:
+				return getProgramArguments();
+			case ServerTypePackage.LAUNCH_CONFIGURATION__WORKING_DIRECTORY:
+				return getWorkingDirectory();
+			case ServerTypePackage.LAUNCH_CONFIGURATION__MAIN_CLASS:
+				return getMainClass();
+			case ServerTypePackage.LAUNCH_CONFIGURATION__GROUP2:
+				return getGroup2();
+			case ServerTypePackage.LAUNCH_CONFIGURATION__VM_PARAMETERS:
+				return getVmParameters();
+			case ServerTypePackage.LAUNCH_CONFIGURATION__CLASSPATH_REFERENCE:
+				return getClasspathReference();
+			case ServerTypePackage.LAUNCH_CONFIGURATION__DEBUG_PORT:
+				return getDebugPort();
+			case ServerTypePackage.LAUNCH_CONFIGURATION__GROUP3:
+				return getGroup3();
+			case ServerTypePackage.LAUNCH_CONFIGURATION__EXTERNAL:
+				return getExternal();
+		}
+		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__GROUP:
+				getGroup().clear();
+				getGroup().addAll((Collection)newValue);
+				return;
+			case ServerTypePackage.LAUNCH_CONFIGURATION__ENVIRONMENT_VARIABLE:
+				getEnvironmentVariable().clear();
+				getEnvironmentVariable().addAll((Collection)newValue);
+				return;
+			case ServerTypePackage.LAUNCH_CONFIGURATION__GROUP1:
+				getGroup1().clear();
+				getGroup1().addAll((Collection)newValue);
+				return;
+			case ServerTypePackage.LAUNCH_CONFIGURATION__PROGRAM_ARGUMENTS:
+				getProgramArguments().clear();
+				getProgramArguments().addAll((Collection)newValue);
+				return;
+			case ServerTypePackage.LAUNCH_CONFIGURATION__WORKING_DIRECTORY:
+				setWorkingDirectory((String)newValue);
+				return;
+			case ServerTypePackage.LAUNCH_CONFIGURATION__MAIN_CLASS:
+				setMainClass((String)newValue);
+				return;
+			case ServerTypePackage.LAUNCH_CONFIGURATION__GROUP2:
+				getGroup2().clear();
+				getGroup2().addAll((Collection)newValue);
+				return;
+			case ServerTypePackage.LAUNCH_CONFIGURATION__VM_PARAMETERS:
+				getVmParameters().clear();
+				getVmParameters().addAll((Collection)newValue);
+				return;
+			case ServerTypePackage.LAUNCH_CONFIGURATION__CLASSPATH_REFERENCE:
+				setClasspathReference((String)newValue);
+				return;
+			case ServerTypePackage.LAUNCH_CONFIGURATION__DEBUG_PORT:
+				setDebugPort((String)newValue);
+				return;
+			case ServerTypePackage.LAUNCH_CONFIGURATION__GROUP3:
+				getGroup3().clear();
+				getGroup3().addAll((Collection)newValue);
+				return;
+			case ServerTypePackage.LAUNCH_CONFIGURATION__EXTERNAL:
+				getExternal().clear();
+				getExternal().addAll((Collection)newValue);
+				return;
+		}
+		eDynamicSet(eFeature, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void eUnset(EStructuralFeature eFeature) {
+		switch (eDerivedStructuralFeatureID(eFeature)) {
+			case ServerTypePackage.LAUNCH_CONFIGURATION__GROUP:
+				getGroup().clear();
+				return;
+			case ServerTypePackage.LAUNCH_CONFIGURATION__ENVIRONMENT_VARIABLE:
+				getEnvironmentVariable().clear();
+				return;
+			case ServerTypePackage.LAUNCH_CONFIGURATION__GROUP1:
+				getGroup1().clear();
+				return;
+			case ServerTypePackage.LAUNCH_CONFIGURATION__PROGRAM_ARGUMENTS:
+				getProgramArguments().clear();
+				return;
+			case ServerTypePackage.LAUNCH_CONFIGURATION__WORKING_DIRECTORY:
+				setWorkingDirectory(WORKING_DIRECTORY_EDEFAULT);
+				return;
+			case ServerTypePackage.LAUNCH_CONFIGURATION__MAIN_CLASS:
+				setMainClass(MAIN_CLASS_EDEFAULT);
+				return;
+			case ServerTypePackage.LAUNCH_CONFIGURATION__GROUP2:
+				getGroup2().clear();
+				return;
+			case ServerTypePackage.LAUNCH_CONFIGURATION__VM_PARAMETERS:
+				getVmParameters().clear();
+				return;
+			case ServerTypePackage.LAUNCH_CONFIGURATION__CLASSPATH_REFERENCE:
+				setClasspathReference(CLASSPATH_REFERENCE_EDEFAULT);
+				return;
+			case ServerTypePackage.LAUNCH_CONFIGURATION__DEBUG_PORT:
+				setDebugPort(DEBUG_PORT_EDEFAULT);
+				return;
+			case ServerTypePackage.LAUNCH_CONFIGURATION__GROUP3:
+				getGroup3().clear();
+				return;
+			case ServerTypePackage.LAUNCH_CONFIGURATION__EXTERNAL:
+				getExternal().clear();
+				return;
+		}
+		eDynamicUnset(eFeature);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean eIsSet(EStructuralFeature eFeature) {
+		switch (eDerivedStructuralFeatureID(eFeature)) {
+			case ServerTypePackage.LAUNCH_CONFIGURATION__GROUP:
+				return group != null && !group.isEmpty();
+			case ServerTypePackage.LAUNCH_CONFIGURATION__ENVIRONMENT_VARIABLE:
+				return !getEnvironmentVariable().isEmpty();
+			case ServerTypePackage.LAUNCH_CONFIGURATION__GROUP1:
+				return group1 != null && !group1.isEmpty();
+			case ServerTypePackage.LAUNCH_CONFIGURATION__PROGRAM_ARGUMENTS:
+				return !getProgramArguments().isEmpty();
+			case ServerTypePackage.LAUNCH_CONFIGURATION__WORKING_DIRECTORY:
+				return WORKING_DIRECTORY_EDEFAULT == null ? workingDirectory != null : !WORKING_DIRECTORY_EDEFAULT.equals(workingDirectory);
+			case ServerTypePackage.LAUNCH_CONFIGURATION__MAIN_CLASS:
+				return MAIN_CLASS_EDEFAULT == null ? mainClass != null : !MAIN_CLASS_EDEFAULT.equals(mainClass);
+			case ServerTypePackage.LAUNCH_CONFIGURATION__GROUP2:
+				return group2 != null && !group2.isEmpty();
+			case ServerTypePackage.LAUNCH_CONFIGURATION__VM_PARAMETERS:
+				return !getVmParameters().isEmpty();
+			case ServerTypePackage.LAUNCH_CONFIGURATION__CLASSPATH_REFERENCE:
+				return CLASSPATH_REFERENCE_EDEFAULT == null ? classpathReference != null : !CLASSPATH_REFERENCE_EDEFAULT.equals(classpathReference);
+			case ServerTypePackage.LAUNCH_CONFIGURATION__DEBUG_PORT:
+				return DEBUG_PORT_EDEFAULT == null ? debugPort != null : !DEBUG_PORT_EDEFAULT.equals(debugPort);
+			case ServerTypePackage.LAUNCH_CONFIGURATION__GROUP3:
+				return group3 != null && !group3.isEmpty();
+			case ServerTypePackage.LAUNCH_CONFIGURATION__EXTERNAL:
+				return !getExternal().isEmpty();
+		}
+		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(", workingDirectory: ");
+		result.append(workingDirectory);
+		result.append(", mainClass: ");
+		result.append(mainClass);
+		result.append(", group2: ");
+		result.append(group2);
+		result.append(", classpathReference: ");
+		result.append(classpathReference);
+		result.append(", debugPort: ");
+		result.append(debugPort);
+		result.append(", group3: ");
+		result.append(group3);
+		result.append(')');
+		return result.toString();
+	}
+
+	/**
+	 * @generated NOT
+	 */
+	public String getProgramArgumentsAsString() {
+		return concatList(getProgramArguments());
+	}
+	
+	/**
+	 * @generated NOT
+	 */
+	public String getVmParametersAsString() {
+		return concatList(getVmParameters());
+	}
+	
+	private String concatList(List list){
+		StringBuffer concatString = new StringBuffer();
+		Iterator iterator = list.iterator();
+		while(iterator.hasNext()){
+			concatString.append(iterator.next());
+			concatString.append(" ");
+		}
+		return concatString.toString();
+	}
+	
+} //LaunchConfigurationImpl
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/servertype/definition/impl/ModuleImpl.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/servertype/definition/impl/ModuleImpl.java
new file mode 100644
index 0000000..db96887
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/servertype/definition/impl/ModuleImpl.java
@@ -0,0 +1,276 @@
+/***************************************************************************************************
+ * Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Gorkem Ercan - initial API and implementation
+ *               
+ **************************************************************************************************/
+package org.eclipse.jst.server.generic.internal.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.internal.servertype.definition.ServerTypePackage;
+import org.eclipse.jst.server.generic.servertype.definition.Module;
+
+
+
+
+/**
+ * <!-- 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.internal.servertype.definition.impl.ModuleImpl#getType <em>Type</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.internal.servertype.definition.impl.ModuleImpl#getPublishDir <em>Publish Dir</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.internal.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/internal/servertype/definition/impl/PortImpl.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/servertype/definition/impl/PortImpl.java
new file mode 100644
index 0000000..ea923f7
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/servertype/definition/impl/PortImpl.java
@@ -0,0 +1,276 @@
+/***************************************************************************************************
+ * Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Gorkem Ercan - initial API and implementation
+ *               
+ **************************************************************************************************/
+package org.eclipse.jst.server.generic.internal.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.internal.servertype.definition.ServerTypePackage;
+import org.eclipse.jst.server.generic.servertype.definition.Port;
+
+
+
+
+/**
+ * <!-- 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.internal.servertype.definition.impl.PortImpl#getNo <em>No</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.internal.servertype.definition.impl.PortImpl#getName <em>Name</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.internal.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/internal/servertype/definition/impl/ProjectImpl.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/servertype/definition/impl/ProjectImpl.java
new file mode 100644
index 0000000..09966d2
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/servertype/definition/impl/ProjectImpl.java
@@ -0,0 +1,168 @@
+/***************************************************************************************************
+ * Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Gorkem Ercan - initial API and implementation
+ *               
+ **************************************************************************************************/
+package org.eclipse.jst.server.generic.internal.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.internal.servertype.definition.ServerTypePackage;
+import org.eclipse.jst.server.generic.servertype.definition.Project;
+
+
+
+
+/**
+ * <!-- 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.internal.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/internal/servertype/definition/impl/PropertyImpl.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/servertype/definition/impl/PropertyImpl.java
new file mode 100644
index 0000000..bc5d823
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/servertype/definition/impl/PropertyImpl.java
@@ -0,0 +1,394 @@
+/***************************************************************************************************
+ * Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Gorkem Ercan - initial API and implementation
+ *               
+ **************************************************************************************************/
+package org.eclipse.jst.server.generic.internal.servertype.definition.impl;
+
+import org.eclipse.core.runtime.Platform;
+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.internal.servertype.definition.ServerTypePackage;
+import org.eclipse.jst.server.generic.servertype.definition.Property;
+
+
+
+import org.eclipse.jst.server.generic.servertype.definition.ServerRuntime;
+import org.osgi.framework.Bundle;
+
+/**
+ * <!-- 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.internal.servertype.definition.impl.PropertyImpl#getContext <em>Context</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.internal.servertype.definition.impl.PropertyImpl#getDefault <em>Default</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.internal.servertype.definition.impl.PropertyImpl#getId <em>Id</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.internal.servertype.definition.impl.PropertyImpl#getLabel <em>Label</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.internal.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 -->
+     * labels support "%" nls support from the plugin.xml
+	 * <!-- end-user-doc -->
+     * @generated NOT
+     */
+	public String getLabel() {
+		if(label.startsWith("%",0))
+		{
+			ServerRuntime rt = (ServerRuntime)eResource().getContents().get(0);
+			Bundle bundle =Platform.getBundle(rt.getConfigurationElementNamespace());
+			return Platform.getResourceString(bundle,label);
+		}
+		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/internal/servertype/definition/impl/PublisherDataImpl.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/servertype/definition/impl/PublisherDataImpl.java
new file mode 100644
index 0000000..8156d00
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/servertype/definition/impl/PublisherDataImpl.java
@@ -0,0 +1,222 @@
+/***************************************************************************************************
+ * Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Gorkem Ercan - initial API and implementation
+ *               
+ **************************************************************************************************/
+package org.eclipse.jst.server.generic.internal.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.internal.servertype.definition.ServerTypePackage;
+import org.eclipse.jst.server.generic.servertype.definition.PublisherData;
+
+
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Publisher Data</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.jst.server.generic.internal.servertype.definition.impl.PublisherDataImpl#getDataname <em>Dataname</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.internal.servertype.definition.impl.PublisherDataImpl#getDatavalue <em>Datavalue</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class PublisherDataImpl extends EObjectImpl implements PublisherData {
+	/**
+	 * The default value of the '{@link #getDataname() <em>Dataname</em>}' attribute.
+	 * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+	 * @see #getDataname()
+	 * @generated
+	 * @ordered
+	 */
+    protected static final String DATANAME_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getDataname() <em>Dataname</em>}' attribute.
+	 * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+	 * @see #getDataname()
+	 * @generated
+	 * @ordered
+	 */
+    protected String dataname = DATANAME_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getDatavalue() <em>Datavalue</em>}' attribute.
+	 * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+	 * @see #getDatavalue()
+	 * @generated
+	 * @ordered
+	 */
+    protected static final String DATAVALUE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getDatavalue() <em>Datavalue</em>}' attribute.
+	 * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+	 * @see #getDatavalue()
+	 * @generated
+	 * @ordered
+	 */
+    protected String datavalue = DATAVALUE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+	 * @generated
+	 */
+    protected PublisherDataImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+	 * @generated
+	 */
+    protected EClass eStaticClass() {
+		return ServerTypePackage.eINSTANCE.getPublisherData();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+	 * @generated
+	 */
+    public String getDataname() {
+		return dataname;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+	 * @generated
+	 */
+    public void setDataname(String newDataname) {
+		String oldDataname = dataname;
+		dataname = newDataname;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ServerTypePackage.PUBLISHER_DATA__DATANAME, oldDataname, dataname));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+	 * @generated
+	 */
+    public String getDatavalue() {
+		return datavalue;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+	 * @generated
+	 */
+    public void setDatavalue(String newDatavalue) {
+		String oldDatavalue = datavalue;
+		datavalue = newDatavalue;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ServerTypePackage.PUBLISHER_DATA__DATAVALUE, oldDatavalue, datavalue));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+	 * @generated
+	 */
+    public Object eGet(EStructuralFeature eFeature, boolean resolve) {
+		switch (eDerivedStructuralFeatureID(eFeature)) {
+			case ServerTypePackage.PUBLISHER_DATA__DATANAME:
+				return getDataname();
+			case ServerTypePackage.PUBLISHER_DATA__DATAVALUE:
+				return getDatavalue();
+		}
+		return eDynamicGet(eFeature, resolve);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+	 * @generated
+	 */
+    public void eSet(EStructuralFeature eFeature, Object newValue) {
+		switch (eDerivedStructuralFeatureID(eFeature)) {
+			case ServerTypePackage.PUBLISHER_DATA__DATANAME:
+				setDataname((String)newValue);
+				return;
+			case ServerTypePackage.PUBLISHER_DATA__DATAVALUE:
+				setDatavalue((String)newValue);
+				return;
+		}
+		eDynamicSet(eFeature, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+	 * @generated
+	 */
+    public void eUnset(EStructuralFeature eFeature) {
+		switch (eDerivedStructuralFeatureID(eFeature)) {
+			case ServerTypePackage.PUBLISHER_DATA__DATANAME:
+				setDataname(DATANAME_EDEFAULT);
+				return;
+			case ServerTypePackage.PUBLISHER_DATA__DATAVALUE:
+				setDatavalue(DATAVALUE_EDEFAULT);
+				return;
+		}
+		eDynamicUnset(eFeature);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+	 * @generated
+	 */
+    public boolean eIsSet(EStructuralFeature eFeature) {
+		switch (eDerivedStructuralFeatureID(eFeature)) {
+			case ServerTypePackage.PUBLISHER_DATA__DATANAME:
+				return DATANAME_EDEFAULT == null ? dataname != null : !DATANAME_EDEFAULT.equals(dataname);
+			case ServerTypePackage.PUBLISHER_DATA__DATAVALUE:
+				return DATAVALUE_EDEFAULT == null ? datavalue != null : !DATAVALUE_EDEFAULT.equals(datavalue);
+		}
+		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(" (dataname: ");
+		result.append(dataname);
+		result.append(", datavalue: ");
+		result.append(datavalue);
+		result.append(')');
+		return result.toString();
+	}
+
+} //PublisherDataImpl
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/servertype/definition/impl/PublisherImpl.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/servertype/definition/impl/PublisherImpl.java
new file mode 100644
index 0000000..164869c
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/servertype/definition/impl/PublisherImpl.java
@@ -0,0 +1,248 @@
+/***************************************************************************************************
+ * Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Gorkem Ercan - initial API and implementation
+ *               
+ **************************************************************************************************/
+package org.eclipse.jst.server.generic.internal.servertype.definition.impl;
+
+import java.util.Collection;
+import java.util.List;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+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.servertype.definition.ServerTypePackage;
+import org.eclipse.jst.server.generic.servertype.definition.Publisher;
+
+
+
+
+/**
+ * <!-- 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.internal.servertype.definition.impl.PublisherImpl#getGroup <em>Group</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.internal.servertype.definition.impl.PublisherImpl#getPublisherdata <em>Publisherdata</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.internal.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 List getPublisherdata() {
+		return ((FeatureMap)getGroup()).list(ServerTypePackage.eINSTANCE.getPublisher_Publisherdata());
+	}
+
+	/**
+	 * <!-- 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__PUBLISHERDATA:
+					return ((InternalEList)getPublisherdata()).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__PUBLISHERDATA:
+				return getPublisherdata();
+			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__PUBLISHERDATA:
+				getPublisherdata().clear();
+				getPublisherdata().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__PUBLISHERDATA:
+				getPublisherdata().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__PUBLISHERDATA:
+				return !getPublisherdata().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/internal/servertype/definition/impl/ServerRuntimeImpl.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/servertype/definition/impl/ServerRuntimeImpl.java
new file mode 100644
index 0000000..6962067
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/servertype/definition/impl/ServerRuntimeImpl.java
@@ -0,0 +1,946 @@
+/***************************************************************************************************
+ * Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Gorkem Ercan - initial API and implementation
+ *               
+ **************************************************************************************************/
+package org.eclipse.jst.server.generic.internal.servertype.definition.impl;
+
+import java.util.Collection;
+import java.util.List;
+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.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.JndiConnection;
+import org.eclipse.jst.server.generic.internal.servertype.definition.ServerTypePackage;
+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;
+
+
+
+
+/**
+ * <!-- 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.internal.servertype.definition.impl.ServerRuntimeImpl#getGroup <em>Group</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.internal.servertype.definition.impl.ServerRuntimeImpl#getProperty <em>Property</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.internal.servertype.definition.impl.ServerRuntimeImpl#getGroup1 <em>Group1</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.internal.servertype.definition.impl.ServerRuntimeImpl#getPort <em>Port</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.internal.servertype.definition.impl.ServerRuntimeImpl#getGroup2 <em>Group2</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.internal.servertype.definition.impl.ServerRuntimeImpl#getModule <em>Module</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.internal.servertype.definition.impl.ServerRuntimeImpl#getProject <em>Project</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.internal.servertype.definition.impl.ServerRuntimeImpl#getStart <em>Start</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.internal.servertype.definition.impl.ServerRuntimeImpl#getStop <em>Stop</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.internal.servertype.definition.impl.ServerRuntimeImpl#getGroup3 <em>Group3</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.internal.servertype.definition.impl.ServerRuntimeImpl#getPublisher <em>Publisher</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.internal.servertype.definition.impl.ServerRuntimeImpl#getGroup4 <em>Group4</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.internal.servertype.definition.impl.ServerRuntimeImpl#getClasspath <em>Classpath</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.internal.servertype.definition.impl.ServerRuntimeImpl#getJndiConnection <em>Jndi Connection</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.internal.servertype.definition.impl.ServerRuntimeImpl#getName <em>Name</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.internal.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 cached value of the '{@link #getJndiConnection() <em>Jndi Connection</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+	 * @see #getJndiConnection()
+	 * @generated
+	 * @ordered
+	 */
+    protected JndiConnection jndiConnection = 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);
+	private String declaringConfigurationElementNamespace;
+    private String id =null;
+	/**
+	 * <!-- 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 List 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 List 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 List 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 List 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 List getClasspath() {
+		return ((FeatureMap)getGroup4()).list(ServerTypePackage.eINSTANCE.getServerRuntime_Classpath());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+	 * @generated
+	 */
+    public JndiConnection getJndiConnection() {
+		return jndiConnection;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+	 * @generated
+	 */
+    public NotificationChain basicSetJndiConnection(JndiConnection newJndiConnection, NotificationChain msgs) {
+		JndiConnection oldJndiConnection = jndiConnection;
+		jndiConnection = newJndiConnection;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ServerTypePackage.SERVER_RUNTIME__JNDI_CONNECTION, oldJndiConnection, newJndiConnection);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+	 * @generated
+	 */
+    public void setJndiConnection(JndiConnection newJndiConnection) {
+		if (newJndiConnection != jndiConnection) {
+			NotificationChain msgs = null;
+			if (jndiConnection != null)
+				msgs = ((InternalEObject)jndiConnection).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ServerTypePackage.SERVER_RUNTIME__JNDI_CONNECTION, null, msgs);
+			if (newJndiConnection != null)
+				msgs = ((InternalEObject)newJndiConnection).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ServerTypePackage.SERVER_RUNTIME__JNDI_CONNECTION, null, msgs);
+			msgs = basicSetJndiConnection(newJndiConnection, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ServerTypePackage.SERVER_RUNTIME__JNDI_CONNECTION, newJndiConnection, newJndiConnection));
+	}
+
+	/**
+	 * <!-- 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);
+				case ServerTypePackage.SERVER_RUNTIME__JNDI_CONNECTION:
+					return basicSetJndiConnection(null, 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__JNDI_CONNECTION:
+				return getJndiConnection();
+			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__JNDI_CONNECTION:
+				setJndiConnection((JndiConnection)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__JNDI_CONNECTION:
+				setJndiConnection((JndiConnection)null);
+				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__JNDI_CONNECTION:
+				return jndiConnection != null;
+			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;
+	}
+
+    /* (non-Javadoc)
+     * @see org.eclipse.jst.server.generic.servertype.definition.ServerRuntime#getDeclaringBundle()
+     */
+    public String getConfigurationElementNamespace() {
+           return declaringConfigurationElementNamespace;
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.jst.server.generic.servertype.definition.ServerRuntime#setConfigurationElementNamespace(java.lang.String)
+     */
+    public void setConfigurationElementNamespace(String namespace) {
+        this.declaringConfigurationElementNamespace=namespace;
+    }
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+        
+    }
+	
+	
+} //ServerRuntimeImpl
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/servertype/definition/impl/ServerTypeFactoryImpl.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/servertype/definition/impl/ServerTypeFactoryImpl.java
new file mode 100644
index 0000000..2843263
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/servertype/definition/impl/ServerTypeFactoryImpl.java
@@ -0,0 +1,211 @@
+/***************************************************************************************************
+ * Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Gorkem Ercan - initial API and implementation
+ *               
+ **************************************************************************************************/
+package org.eclipse.jst.server.generic.internal.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.internal.servertype.definition.ServerTypePackage;
+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 an 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.ARGUMENT_PAIR: return createArgumentPair();
+			case ServerTypePackage.CLASSPATH: return createClasspath();
+			case ServerTypePackage.EXTERNAL: return createExternal();
+			case ServerTypePackage.JNDI_CONNECTION: return createJndiConnection();
+			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.PUBLISHER_DATA: return createPublisherData();
+			case ServerTypePackage.SERVER_RUNTIME: return createServerRuntime();
+			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 ArgumentPair createArgumentPair() {
+		ArgumentPairImpl argumentPair = new ArgumentPairImpl();
+		return argumentPair;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Classpath createClasspath() {
+		ClasspathImpl classpath = new ClasspathImpl();
+		return classpath;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public External createExternal() {
+		ExternalImpl external = new ExternalImpl();
+		return external;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+	 * @generated
+	 */
+    public JndiConnection createJndiConnection() {
+		JndiConnectionImpl jndiConnection = new JndiConnectionImpl();
+		return jndiConnection;
+	}
+
+	/**
+	 * <!-- 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 PublisherData createPublisherData() {
+		PublisherDataImpl publisherData = new PublisherDataImpl();
+		return publisherData;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ServerRuntime createServerRuntime() {
+		ServerRuntimeImpl serverRuntime = new ServerRuntimeImpl();
+		return serverRuntime;
+	}
+
+	/**
+	 * <!-- 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/internal/servertype/definition/impl/ServerTypePackageImpl.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/servertype/definition/impl/ServerTypePackageImpl.java
new file mode 100644
index 0000000..2d7b771
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/servertype/definition/impl/ServerTypePackageImpl.java
@@ -0,0 +1,1585 @@
+/***************************************************************************************************
+ * Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Gorkem Ercan - initial API and implementation
+ *               
+ **************************************************************************************************/
+package org.eclipse.jst.server.generic.internal.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.internal.servertype.definition.ServerTypePackage;
+import org.eclipse.jst.server.generic.servertype.definition.ArchiveType;
+import org.eclipse.jst.server.generic.servertype.definition.ArgumentPair;
+import org.eclipse.jst.server.generic.servertype.definition.Classpath;
+import org.eclipse.jst.server.generic.servertype.definition.External;
+import org.eclipse.jst.server.generic.servertype.definition.JndiConnection;
+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.Publisher;
+import org.eclipse.jst.server.generic.servertype.definition.PublisherData;
+import org.eclipse.jst.server.generic.servertype.definition.ServerRuntime;
+import org.eclipse.jst.server.generic.servertype.definition.ServerTypeFactory;
+
+
+
+
+/**
+ * <!-- 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 argumentPairEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass classpathEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass externalEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+	 * @generated
+	 */
+    private EClass jndiConnectionEClass = 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 publisherDataEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass serverRuntimeEClass = 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.internal.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 getArgumentPair() {
+		return argumentPairEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getArgumentPair_Name() {
+		return (EAttribute)argumentPairEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getArgumentPair_Value() {
+		return (EAttribute)argumentPairEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- 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 EClass getExternal() {
+		return externalEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getExternal_Value() {
+		return (EAttribute)externalEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getExternal_Os() {
+		return (EAttribute)externalEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+	 * @generated
+	 */
+    public EClass getJndiConnection() {
+		return jndiConnectionEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+	 * @generated
+	 */
+    public EAttribute getJndiConnection_ProviderUrl() {
+		return (EAttribute)jndiConnectionEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+	 * @generated
+	 */
+    public EAttribute getJndiConnection_Group() {
+		return (EAttribute)jndiConnectionEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+	 * @generated
+	 */
+    public EReference getJndiConnection_JndiProperty() {
+		return (EReference)jndiConnectionEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+	 * @generated
+	 */
+    public EAttribute getJndiConnection_InitialContextFactory() {
+		return (EAttribute)jndiConnectionEClass.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_MainClass() {
+		return (EAttribute)launchConfigurationEClass.getEStructuralFeatures().get(5);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLaunchConfiguration_Group2() {
+		return (EAttribute)launchConfigurationEClass.getEStructuralFeatures().get(6);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLaunchConfiguration_WorkingDirectory() {
+		return (EAttribute)launchConfigurationEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLaunchConfiguration_ProgramArguments() {
+		return (EAttribute)launchConfigurationEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLaunchConfiguration_VmParameters() {
+		return (EAttribute)launchConfigurationEClass.getEStructuralFeatures().get(7);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLaunchConfiguration_ClasspathReference() {
+		return (EAttribute)launchConfigurationEClass.getEStructuralFeatures().get(8);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLaunchConfiguration_External() {
+		return (EReference)launchConfigurationEClass.getEStructuralFeatures().get(11);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLaunchConfiguration_DebugPort() {
+		return (EAttribute)launchConfigurationEClass.getEStructuralFeatures().get(9);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLaunchConfiguration_Group3() {
+		return (EAttribute)launchConfigurationEClass.getEStructuralFeatures().get(10);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLaunchConfiguration_Group() {
+		return (EAttribute)launchConfigurationEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLaunchConfiguration_EnvironmentVariable() {
+		return (EReference)launchConfigurationEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLaunchConfiguration_Group1() {
+		return (EAttribute)launchConfigurationEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- 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_Publisherdata() {
+		return (EReference)publisherEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getPublisher_Id() {
+		return (EAttribute)publisherEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+	 * @generated
+	 */
+    public EClass getPublisherData() {
+		return publisherDataEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+	 * @generated
+	 */
+    public EAttribute getPublisherData_Dataname() {
+		return (EAttribute)publisherDataEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+	 * @generated
+	 */
+    public EAttribute getPublisherData_Datavalue() {
+		return (EAttribute)publisherDataEClass.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 EReference getServerRuntime_JndiConnection() {
+		return (EReference)serverRuntimeEClass.getEStructuralFeatures().get(13);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getServerRuntime_Name() {
+		return (EAttribute)serverRuntimeEClass.getEStructuralFeatures().get(14);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getServerRuntime_Version() {
+		return (EAttribute)serverRuntimeEClass.getEStructuralFeatures().get(15);
+	}
+
+	/**
+	 * <!-- 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);
+
+		argumentPairEClass = createEClass(ARGUMENT_PAIR);
+		createEAttribute(argumentPairEClass, ARGUMENT_PAIR__NAME);
+		createEAttribute(argumentPairEClass, ARGUMENT_PAIR__VALUE);
+
+		classpathEClass = createEClass(CLASSPATH);
+		createEAttribute(classpathEClass, CLASSPATH__GROUP);
+		createEReference(classpathEClass, CLASSPATH__ARCHIVE);
+		createEAttribute(classpathEClass, CLASSPATH__ID);
+
+		externalEClass = createEClass(EXTERNAL);
+		createEAttribute(externalEClass, EXTERNAL__VALUE);
+		createEAttribute(externalEClass, EXTERNAL__OS);
+
+		jndiConnectionEClass = createEClass(JNDI_CONNECTION);
+		createEAttribute(jndiConnectionEClass, JNDI_CONNECTION__PROVIDER_URL);
+		createEAttribute(jndiConnectionEClass, JNDI_CONNECTION__GROUP);
+		createEReference(jndiConnectionEClass, JNDI_CONNECTION__JNDI_PROPERTY);
+		createEAttribute(jndiConnectionEClass, JNDI_CONNECTION__INITIAL_CONTEXT_FACTORY);
+
+		launchConfigurationEClass = createEClass(LAUNCH_CONFIGURATION);
+		createEAttribute(launchConfigurationEClass, LAUNCH_CONFIGURATION__GROUP);
+		createEReference(launchConfigurationEClass, LAUNCH_CONFIGURATION__ENVIRONMENT_VARIABLE);
+		createEAttribute(launchConfigurationEClass, LAUNCH_CONFIGURATION__GROUP1);
+		createEAttribute(launchConfigurationEClass, LAUNCH_CONFIGURATION__PROGRAM_ARGUMENTS);
+		createEAttribute(launchConfigurationEClass, LAUNCH_CONFIGURATION__WORKING_DIRECTORY);
+		createEAttribute(launchConfigurationEClass, LAUNCH_CONFIGURATION__MAIN_CLASS);
+		createEAttribute(launchConfigurationEClass, LAUNCH_CONFIGURATION__GROUP2);
+		createEAttribute(launchConfigurationEClass, LAUNCH_CONFIGURATION__VM_PARAMETERS);
+		createEAttribute(launchConfigurationEClass, LAUNCH_CONFIGURATION__CLASSPATH_REFERENCE);
+		createEAttribute(launchConfigurationEClass, LAUNCH_CONFIGURATION__DEBUG_PORT);
+		createEAttribute(launchConfigurationEClass, LAUNCH_CONFIGURATION__GROUP3);
+		createEReference(launchConfigurationEClass, LAUNCH_CONFIGURATION__EXTERNAL);
+
+		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__PUBLISHERDATA);
+		createEAttribute(publisherEClass, PUBLISHER__ID);
+
+		publisherDataEClass = createEClass(PUBLISHER_DATA);
+		createEAttribute(publisherDataEClass, PUBLISHER_DATA__DATANAME);
+		createEAttribute(publisherDataEClass, PUBLISHER_DATA__DATAVALUE);
+
+		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);
+		createEReference(serverRuntimeEClass, SERVER_RUNTIME__JNDI_CONNECTION);
+		createEAttribute(serverRuntimeEClass, SERVER_RUNTIME__NAME);
+		createEAttribute(serverRuntimeEClass, SERVER_RUNTIME__VERSION);
+	}
+
+	/**
+	 * <!-- 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(argumentPairEClass, ArgumentPair.class, "ArgumentPair", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getArgumentPair_Name(), theXMLTypePackage.getString(), "name", null, 1, 1, ArgumentPair.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getArgumentPair_Value(), theXMLTypePackage.getString(), "value", null, 1, 1, ArgumentPair.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);
+
+		initEClass(externalEClass, External.class, "External", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getExternal_Value(), theXMLTypePackage.getString(), "value", null, 0, 1, External.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getExternal_Os(), theXMLTypePackage.getString(), "os", null, 0, 1, External.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(jndiConnectionEClass, JndiConnection.class, "JndiConnection", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getJndiConnection_ProviderUrl(), theXMLTypePackage.getString(), "providerUrl", null, 1, 1, JndiConnection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getJndiConnection_Group(), ecorePackage.getEFeatureMapEntry(), "group", null, 0, -1, JndiConnection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getJndiConnection_JndiProperty(), this.getArgumentPair(), null, "jndiProperty", null, 0, -1, JndiConnection.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+		initEAttribute(getJndiConnection_InitialContextFactory(), theXMLTypePackage.getString(), "initialContextFactory", null, 1, 1, JndiConnection.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_Group(), ecorePackage.getEFeatureMapEntry(), "group", null, 0, -1, LaunchConfiguration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getLaunchConfiguration_EnvironmentVariable(), this.getArgumentPair(), null, "environmentVariable", null, 0, -1, LaunchConfiguration.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+		initEAttribute(getLaunchConfiguration_Group1(), ecorePackage.getEFeatureMapEntry(), "group1", null, 0, -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, 0, -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_MainClass(), theXMLTypePackage.getString(), "mainClass", null, 0, 1, LaunchConfiguration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getLaunchConfiguration_Group2(), ecorePackage.getEFeatureMapEntry(), "group2", null, 0, -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, 0, -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, 0, 1, LaunchConfiguration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getLaunchConfiguration_DebugPort(), theXMLTypePackage.getString(), "debugPort", null, 0, 1, LaunchConfiguration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getLaunchConfiguration_Group3(), ecorePackage.getEFeatureMapEntry(), "group3", null, 0, -1, LaunchConfiguration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getLaunchConfiguration_External(), this.getExternal(), null, "external", null, 0, -1, LaunchConfiguration.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, 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_Publisherdata(), this.getPublisherData(), null, "publisherdata", 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(publisherDataEClass, PublisherData.class, "PublisherData", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getPublisherData_Dataname(), theXMLTypePackage.getString(), "dataname", null, 1, 1, PublisherData.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getPublisherData_Datavalue(), theXMLTypePackage.getString(), "datavalue", null, 1, 1, PublisherData.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);
+		initEReference(getServerRuntime_JndiConnection(), this.getJndiConnection(), null, "jndiConnection", 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);
+
+		// 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
+		  (argumentPairEClass, 
+		   source, 
+		   new String[] {
+			 "name", "ArgumentPair",
+			 "kind", "elementOnly"
+		   });		
+		addAnnotation
+		  (getArgumentPair_Name(), 
+		   source, 
+		   new String[] {
+			 "kind", "element",
+			 "name", "name"
+		   });		
+		addAnnotation
+		  (getArgumentPair_Value(), 
+		   source, 
+		   new String[] {
+			 "kind", "element",
+			 "name", "value"
+		   });		
+		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
+		  (externalEClass, 
+		   source, 
+		   new String[] {
+			 "name", "External",
+			 "kind", "simple"
+		   });		
+		addAnnotation
+		  (getExternal_Value(), 
+		   source, 
+		   new String[] {
+			 "name", ":0",
+			 "kind", "simple"
+		   });		
+		addAnnotation
+		  (getExternal_Os(), 
+		   source, 
+		   new String[] {
+			 "kind", "attribute",
+			 "name", "os"
+		   });		
+		addAnnotation
+		  (jndiConnectionEClass, 
+		   source, 
+		   new String[] {
+			 "name", "jndiConnection",
+			 "kind", "elementOnly"
+		   });		
+		addAnnotation
+		  (getJndiConnection_ProviderUrl(), 
+		   source, 
+		   new String[] {
+			 "kind", "element",
+			 "name", "providerUrl"
+		   });		
+		addAnnotation
+		  (getJndiConnection_Group(), 
+		   source, 
+		   new String[] {
+			 "kind", "group",
+			 "name", "group:1"
+		   });		
+		addAnnotation
+		  (getJndiConnection_JndiProperty(), 
+		   source, 
+		   new String[] {
+			 "kind", "element",
+			 "name", "jndiProperty",
+			 "group", "#group:1"
+		   });		
+		addAnnotation
+		  (getJndiConnection_InitialContextFactory(), 
+		   source, 
+		   new String[] {
+			 "kind", "element",
+			 "name", "initialContextFactory"
+		   });		
+		addAnnotation
+		  (launchConfigurationEClass, 
+		   source, 
+		   new String[] {
+			 "name", "LaunchConfiguration",
+			 "kind", "elementOnly"
+		   });		
+		addAnnotation
+		  (getLaunchConfiguration_Group(), 
+		   source, 
+		   new String[] {
+			 "kind", "group",
+			 "name", "group:0"
+		   });		
+		addAnnotation
+		  (getLaunchConfiguration_EnvironmentVariable(), 
+		   source, 
+		   new String[] {
+			 "kind", "element",
+			 "name", "environmentVariable",
+			 "group", "#group:0"
+		   });		
+		addAnnotation
+		  (getLaunchConfiguration_Group1(), 
+		   source, 
+		   new String[] {
+			 "kind", "group",
+			 "name", "group:2"
+		   });		
+		addAnnotation
+		  (getLaunchConfiguration_ProgramArguments(), 
+		   source, 
+		   new String[] {
+			 "kind", "element",
+			 "name", "programArguments",
+			 "group", "#group:2"
+		   });		
+		addAnnotation
+		  (getLaunchConfiguration_WorkingDirectory(), 
+		   source, 
+		   new String[] {
+			 "kind", "element",
+			 "name", "workingDirectory"
+		   });		
+		addAnnotation
+		  (getLaunchConfiguration_MainClass(), 
+		   source, 
+		   new String[] {
+			 "kind", "element",
+			 "name", "mainClass"
+		   });		
+		addAnnotation
+		  (getLaunchConfiguration_Group2(), 
+		   source, 
+		   new String[] {
+			 "kind", "group",
+			 "name", "group:6"
+		   });		
+		addAnnotation
+		  (getLaunchConfiguration_VmParameters(), 
+		   source, 
+		   new String[] {
+			 "kind", "element",
+			 "name", "vmParameters",
+			 "group", "#group:6"
+		   });		
+		addAnnotation
+		  (getLaunchConfiguration_ClasspathReference(), 
+		   source, 
+		   new String[] {
+			 "kind", "element",
+			 "name", "classpathReference"
+		   });		
+		addAnnotation
+		  (getLaunchConfiguration_DebugPort(), 
+		   source, 
+		   new String[] {
+			 "kind", "element",
+			 "name", "debugPort"
+		   });		
+		addAnnotation
+		  (getLaunchConfiguration_Group3(), 
+		   source, 
+		   new String[] {
+			 "kind", "group",
+			 "name", "group:10"
+		   });		
+		addAnnotation
+		  (getLaunchConfiguration_External(), 
+		   source, 
+		   new String[] {
+			 "kind", "element",
+			 "name", "external",
+			 "group", "#group:10"
+		   });		
+		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_Publisherdata(), 
+		   source, 
+		   new String[] {
+			 "kind", "element",
+			 "name", "publisherdata",
+			 "group", "#group:0"
+		   });		
+		addAnnotation
+		  (getPublisher_Id(), 
+		   source, 
+		   new String[] {
+			 "kind", "attribute",
+			 "name", "id"
+		   });		
+		addAnnotation
+		  (publisherDataEClass, 
+		   source, 
+		   new String[] {
+			 "name", "PublisherData",
+			 "kind", "elementOnly"
+		   });		
+		addAnnotation
+		  (getPublisherData_Dataname(), 
+		   source, 
+		   new String[] {
+			 "kind", "element",
+			 "name", "dataname"
+		   });		
+		addAnnotation
+		  (getPublisherData_Datavalue(), 
+		   source, 
+		   new String[] {
+			 "kind", "element",
+			 "name", "datavalue"
+		   });			
+		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_JndiConnection(), 
+		   source, 
+		   new String[] {
+			 "kind", "element",
+			 "name", "jndiConnection"
+		   });		
+		addAnnotation
+		  (getServerRuntime_Name(), 
+		   source, 
+		   new String[] {
+			 "kind", "attribute",
+			 "name", "name"
+		   });		
+		addAnnotation
+		  (getServerRuntime_Version(), 
+		   source, 
+		   new String[] {
+			 "kind", "attribute",
+			 "name", "version"
+		   });
+	}
+
+} //ServerTypePackageImpl
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/servertype/definition/util/ServerTypeAdapterFactory.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/servertype/definition/util/ServerTypeAdapterFactory.java
new file mode 100644
index 0000000..ae5f826
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/servertype/definition/util/ServerTypeAdapterFactory.java
@@ -0,0 +1,328 @@
+/***************************************************************************************************
+ * Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Gorkem Ercan - initial API and implementation
+ *               
+ **************************************************************************************************/
+package org.eclipse.jst.server.generic.internal.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.internal.servertype.definition.ServerTypePackage;
+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.internal.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 caseArgumentPair(ArgumentPair object) {
+				return createArgumentPairAdapter();
+			}
+			public Object caseClasspath(Classpath object) {
+				return createClasspathAdapter();
+			}
+			public Object caseExternal(External object) {
+				return createExternalAdapter();
+			}
+			public Object caseJndiConnection(JndiConnection object) {
+				return createJndiConnectionAdapter();
+			}
+			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 casePublisherData(PublisherData object) {
+				return createPublisherDataAdapter();
+			}
+			public Object caseServerRuntime(ServerRuntime object) {
+				return createServerRuntimeAdapter();
+			}
+			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.ArgumentPair <em>Argument Pair</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.ArgumentPair
+	 * @generated
+	 */
+	public Adapter createArgumentPairAdapter() {
+		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.External <em>External</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.External
+	 * @generated
+	 */
+	public Adapter createExternalAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.jst.server.generic.servertype.definition.JndiConnection <em>Jndi Connection</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.JndiConnection
+	 * @generated
+	 */
+    public Adapter createJndiConnectionAdapter() {
+		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.PublisherData <em>Publisher Data</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.PublisherData
+	 * @generated
+	 */
+    public Adapter createPublisherDataAdapter() {
+		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 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/internal/servertype/definition/util/ServerTypeResourceFactoryImpl.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/servertype/definition/util/ServerTypeResourceFactoryImpl.java
new file mode 100644
index 0000000..4488177
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/servertype/definition/util/ServerTypeResourceFactoryImpl.java
@@ -0,0 +1,53 @@
+/***************************************************************************************************
+ * Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Gorkem Ercan - initial API and implementation
+ *               
+ **************************************************************************************************/
+package org.eclipse.jst.server.generic.internal.servertype.definition.util;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.impl.ResourceFactoryImpl;
+import org.eclipse.emf.ecore.xmi.XMLResource;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Resource Factory</b> associated with the package.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jst.server.generic.internal.servertype.definition.util.ServerTypeResourceImpl
+ * @generated
+ */
+public class ServerTypeResourceFactoryImpl extends ResourceFactoryImpl {
+	/**
+	 * Creates an instance of the resource factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ServerTypeResourceFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * 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, Boolean.TRUE);
+		result.getDefaultLoadOptions().put(XMLResource.OPTION_EXTENDED_META_DATA, Boolean.TRUE);
+
+		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/internal/servertype/definition/util/ServerTypeResourceImpl.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/servertype/definition/util/ServerTypeResourceImpl.java
new file mode 100644
index 0000000..33c691d
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/servertype/definition/util/ServerTypeResourceImpl.java
@@ -0,0 +1,35 @@
+/***************************************************************************************************
+ * Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Gorkem Ercan - initial API and implementation
+ *               
+ **************************************************************************************************/
+package org.eclipse.jst.server.generic.internal.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.internal.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/internal/servertype/definition/util/ServerTypeSwitch.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/servertype/definition/util/ServerTypeSwitch.java
new file mode 100644
index 0000000..2b8bd8d
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/servertype/definition/util/ServerTypeSwitch.java
@@ -0,0 +1,386 @@
+/***************************************************************************************************
+ * Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Gorkem Ercan - initial API and implementation
+ *               
+ **************************************************************************************************/
+package org.eclipse.jst.server.generic.internal.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.internal.servertype.definition.ServerTypePackage;
+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.internal.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.ARGUMENT_PAIR: {
+				ArgumentPair argumentPair = (ArgumentPair)theEObject;
+				Object result = caseArgumentPair(argumentPair);
+				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.EXTERNAL: {
+				External external = (External)theEObject;
+				Object result = caseExternal(external);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case ServerTypePackage.JNDI_CONNECTION: {
+				JndiConnection jndiConnection = (JndiConnection)theEObject;
+				Object result = caseJndiConnection(jndiConnection);
+				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.PUBLISHER_DATA: {
+				PublisherData publisherData = (PublisherData)theEObject;
+				Object result = casePublisherData(publisherData);
+				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;
+			}
+			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>Argument Pair</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>Argument Pair</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public Object caseArgumentPair(ArgumentPair 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>External</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>External</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public Object caseExternal(External object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpretting the object as an instance of '<em>Jndi Connection</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>Jndi Connection</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+    public Object caseJndiConnection(JndiConnection 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>Publisher Data</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 Data</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+    public Object casePublisherData(PublisherData 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>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/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..1beb060
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/xml/Resolver.java
@@ -0,0 +1,166 @@
+/***************************************************************************************************
+ * Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Gorkem Ercan - initial API and implementation
+ *               
+ **************************************************************************************************/
+
+package org.eclipse.jst.server.generic.internal.xml;
+
+import java.io.File;
+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;
+
+/**
+ * Utility to resolve serverdef properties with the user provided data.
+ * 
+ * @author Gorkem Ercan
+ */
+public class Resolver {
+	
+	private static final String PROP_START2 = "%{"; //$NON-NLS-1$
+	private static final String PROP_END = "}"; //$NON-NLS-1$
+	private static final String PROP_START = "${"; //$NON-NLS-1$
+	private Map fPropertyValues = new HashMap();
+	private ServerRuntime server;
+
+	/**
+	 * @param runtime 
+	 */
+	public Resolver(ServerRuntime runtime) {
+		this.server = runtime;
+	}
+	
+	/**
+	 * Resolves a classpath element.
+	 * 
+	 * @param cpList
+	 * @return list
+	 */
+	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;
+	}	
+	/**
+	 * Returns a resolved string.
+	 * @param proppedString
+	 * @return resolved string
+	 */
+	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());
+			if(Property.TYPE_DIRECTORY.equals(element.getType()) || Property.TYPE_FILE.equals(element.getType()))
+				value = value.replace('\\','/');
+			 cache.put(element.getId(), value);
+		}
+		//String vmPath = install.getInstallLocation().getCanonicalPath();
+		//vmPath = vmPath.replace('\\', '/');
+		cache.put("jrePath", "JRE"); //$NON-NLS-1$ //$NON-NLS-2$
+		cache.put("pathChar", File.pathSeparator); //$NON-NLS-1$
+
+		String str = resolvePropertiesFromCache(proppedString, cache);
+		str = fixPassthroughProperties(str);
+		return str;
+	}
+
+	private List getProperties() {
+		return this.server.getProperty();
+	}
+
+	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(PROP_START,end);
+			if( start < 0)
+				return start;
+			end = str.indexOf(PROP_END, 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(PROP_START2) >= 0;
+	}
+
+	private String resolveProperty(String proppedString, int start, HashMap cache) {
+		String str = proppedString;
+		start = str.indexOf(PROP_START);
+		int end = str.indexOf(PROP_END, 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(PROP_START2);
+		return str.substring(0, start)
+			+ PROP_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..247d777
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/internal/xml/XMLUtils.java
@@ -0,0 +1,151 @@
+/***************************************************************************************************
+ * Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Gorkem Ercan - initial API and implementation
+ *               
+ **************************************************************************************************/
+
+package org.eclipse.jst.server.generic.internal.xml;
+
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Iterator;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtension;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.emf.common.util.URI;
+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.jst.server.generic.core.internal.CorePlugin;
+import org.eclipse.jst.server.generic.core.internal.Trace;
+import org.eclipse.jst.server.generic.internal.core.util.ExtensionPointUtil;
+import org.eclipse.jst.server.generic.internal.servertype.definition.ServerTypePackage;
+import org.eclipse.jst.server.generic.internal.servertype.definition.util.ServerTypeResourceFactoryImpl;
+import org.eclipse.jst.server.generic.servertype.definition.ServerRuntime;
+import org.osgi.framework.Bundle;
+
+/**
+ * Utility for handling the xml data from .serverdef files
+ * 
+ * @author Gorkem Ercan
+ */
+public class XMLUtils {
+
+	
+    private ArrayList definitions;
+
+
+	/**
+	 * Constructor
+	 */
+	public XMLUtils() {
+		refresh();
+	}
+
+	private void refresh() {
+		definitions= new ArrayList();
+         IExtension[] extensions = ExtensionPointUtil.getGenericServerDefinitionExtensions();
+        for (int i = 0; extensions!=null && i < extensions.length; i++) {
+            java.net.URI definitionFile=null;
+            IExtension extension = extensions[i];
+            IConfigurationElement[] elements = ExtensionPointUtil.getConfigurationElements(extension);
+            for (int j = 0; j < elements.length; j++) {
+                IConfigurationElement element = elements[j];
+                definitionFile = getDefinitionFile(element);
+                ServerRuntime runtime =readFile(definitionFile);
+                    if(runtime!=null){
+                        runtime.setId(element.getAttribute("id")); //$NON-NLS-1$
+                        runtime.setConfigurationElementNamespace(element.getNamespace());
+                        definitions.add(runtime);
+                    }
+                }
+            }
+
+       }
+
+
+
+    private java.net.URI getDefinitionFile(IConfigurationElement element) {
+        
+        Bundle bundle = Platform.getBundle(element.getNamespace());
+        String definitionFile = element.getAttribute("definitionfile"); //$NON-NLS-1$
+        Trace.trace(Trace.FINEST,"Loading serverdef file "+definitionFile+" from bundle "+bundle.getSymbolicName()); //$NON-NLS-1$ //$NON-NLS-2$
+        
+        URL url = bundle.getEntry(definitionFile);
+		try {
+			java.net.URI uri = new java.net.URI(url.getProtocol(), url.getHost(),url.getPath(), url.getQuery());
+		    return uri;
+		} catch (URISyntaxException e) {
+			//ignore
+		}
+        return null;
+    }
+
+    private ServerRuntime readFile(java.net.URI file) {
+        // 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 ServerTypeResourceFactoryImpl());
+
+         ServerTypePackage gstPack = ServerTypePackage.eINSTANCE;
+
+        // Get the URI of the model file.
+        URI fileURI = URI.createURI(file.toString());
+
+        // 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)); //$NON-NLS-1$
+        }
+
+        if (resource != null) {
+            ServerRuntime def = (ServerRuntime) resource.getContents().get(0);
+            if (def != null) {
+                def.setFilename(file.toString());
+                return def;
+            }
+        }
+        return null;
+
+    }
+
+
+	/**
+	 * @return ArrayList
+	 */
+	public ArrayList getServerTypeDefinitions() {
+		return definitions;
+	}
+
+    /**
+     * Get the memory presentation for the .serverdef file
+     * @param id
+     * @return serverRuntime
+     */
+    public ServerRuntime getServerTypeDefinition(String id) {
+    	Iterator defs = getServerTypeDefinitions().iterator();
+        while (defs.hasNext()) {
+            ServerRuntime elem = (ServerRuntime) defs.next();
+            if (id.equals(elem.getId()))
+                return elem;
+        }
+        return null;
+    }
+}
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..4c5e6b0
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/ArchiveType.java
@@ -0,0 +1,71 @@
+/***************************************************************************************************
+ * Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Gorkem Ercan - initial API and implementation
+ *               
+ **************************************************************************************************/
+
+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.internal.servertype.definition.ServerTypePackage#getArchiveType()
+ * @model extendedMetaData="name='archive_._type' kind='empty'"
+ * @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.internal.servertype.definition.ServerTypePackage#getArchiveType_Path()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String"
+	 *        extendedMetaData="kind='attribute' name='path'"
+	 * @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);
+
+	/**
+	 * 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/ArgumentPair.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/ArgumentPair.java
new file mode 100644
index 0000000..986987a
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/ArgumentPair.java
@@ -0,0 +1,86 @@
+/***************************************************************************************************
+ * Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Gorkem Ercan - initial API and implementation
+ *               
+ **************************************************************************************************/
+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>Argument Pair</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.ArgumentPair#getName <em>Name</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.ArgumentPair#getValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jst.server.generic.internal.servertype.definition.ServerTypePackage#getArgumentPair()
+ * @model extendedMetaData="name='ArgumentPair' kind='elementOnly'"
+ * @generated
+ */
+public interface ArgumentPair extends EObject{
+	/**
+	 * 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.internal.servertype.definition.ServerTypePackage#getArgumentPair_Name()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String" required="true"
+	 *        extendedMetaData="kind='element' name='name'"
+	 * @generated
+	 */
+	String getName();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.jst.server.generic.servertype.definition.ArgumentPair#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>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Value</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Value</em>' attribute.
+	 * @see #setValue(String)
+	 * @see org.eclipse.jst.server.generic.internal.servertype.definition.ServerTypePackage#getArgumentPair_Value()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String" required="true"
+	 *        extendedMetaData="kind='element' name='value'"
+	 * @generated
+	 */
+	String getValue();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.jst.server.generic.servertype.definition.ArgumentPair#getValue <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Value</em>' attribute.
+	 * @see #getValue()
+	 * @generated
+	 */
+	void setValue(String value);
+
+} // ArgumentPair
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..575d6b0
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/Classpath.java
@@ -0,0 +1,133 @@
+/***************************************************************************************************
+ * Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Gorkem Ercan - initial API and implementation
+ *               
+ **************************************************************************************************/
+package org.eclipse.jst.server.generic.servertype.definition;
+
+import java.util.List;
+
+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>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jst.server.generic.internal.servertype.definition.ServerTypePackage#getClasspath()
+ * @model extendedMetaData="name='Classpath' kind='elementOnly'"
+ * @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.internal.servertype.definition.ServerTypePackage#getClasspath_Group()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.EFeatureMapEntry" many="true"
+	 *        extendedMetaData="kind='group' name='group:0'"
+	 * @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.internal.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"
+	 *        extendedMetaData="kind='element' name='archive' group='#group:0'"
+	 * @generated
+	 */
+	List 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.internal.servertype.definition.ServerTypePackage#getClasspath_Id()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String"
+	 *        extendedMetaData="kind='attribute' name='id'"
+	 * @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);
+
+    /**
+     * 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/External.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/External.java
new file mode 100644
index 0000000..e39228d
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/External.java
@@ -0,0 +1,86 @@
+/***************************************************************************************************
+ * Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Gorkem Ercan - initial API and implementation
+ *               
+ **************************************************************************************************/
+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>External</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.External#getValue <em>Value</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.External#getOs <em>Os</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jst.server.generic.internal.servertype.definition.ServerTypePackage#getExternal()
+ * @model extendedMetaData="name='External' kind='simple'"
+ * @generated
+ */
+public interface External extends EObject{
+	/**
+	 * Returns the value of the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Value</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Value</em>' attribute.
+	 * @see #setValue(String)
+	 * @see org.eclipse.jst.server.generic.internal.servertype.definition.ServerTypePackage#getExternal_Value()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String"
+	 *        extendedMetaData="name=':0' kind='simple'"
+	 * @generated
+	 */
+	String getValue();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.jst.server.generic.servertype.definition.External#getValue <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Value</em>' attribute.
+	 * @see #getValue()
+	 * @generated
+	 */
+	void setValue(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Os</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Os</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Os</em>' attribute.
+	 * @see #setOs(String)
+	 * @see org.eclipse.jst.server.generic.internal.servertype.definition.ServerTypePackage#getExternal_Os()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String"
+	 *        extendedMetaData="kind='attribute' name='os'"
+	 * @generated
+	 */
+	String getOs();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.jst.server.generic.servertype.definition.External#getOs <em>Os</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Os</em>' attribute.
+	 * @see #getOs()
+	 * @generated
+	 */
+	void setOs(String value);
+
+} // External
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/JndiConnection.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/JndiConnection.java
new file mode 100644
index 0000000..2f19c5e
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/JndiConnection.java
@@ -0,0 +1,136 @@
+/***************************************************************************************************
+ * Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Gorkem Ercan - initial API and implementation
+ *               
+ **************************************************************************************************/
+package org.eclipse.jst.server.generic.servertype.definition;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.emf.ecore.util.FeatureMap;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Jndi Connection</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.JndiConnection#getProviderUrl <em>Provider Url</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.JndiConnection#getGroup <em>Group</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.JndiConnection#getJndiProperty <em>Jndi Property</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.JndiConnection#getInitialContextFactory <em>Initial Context Factory</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jst.server.generic.internal.servertype.definition.ServerTypePackage#getJndiConnection()
+ * @model extendedMetaData="name='jndiConnection' kind='elementOnly'"
+ * @generated
+ */
+public interface JndiConnection extends EObject{
+	/**
+	 * Returns the value of the '<em><b>Provider Url</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of the '<em>Provider Url</em>' attribute isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+	 * @return the value of the '<em>Provider Url</em>' attribute.
+	 * @see #setProviderUrl(String)
+	 * @see org.eclipse.jst.server.generic.internal.servertype.definition.ServerTypePackage#getJndiConnection_ProviderUrl()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String" required="true"
+	 *        extendedMetaData="kind='element' name='providerUrl'"
+	 * @generated
+	 */
+    String getProviderUrl();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.jst.server.generic.servertype.definition.JndiConnection#getProviderUrl <em>Provider Url</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Provider Url</em>' attribute.
+	 * @see #getProviderUrl()
+	 * @generated
+	 */
+	void setProviderUrl(String value);
+
+	/**
+	 * 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.internal.servertype.definition.ServerTypePackage#getJndiConnection_Group()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.EFeatureMapEntry" many="true"
+	 *        extendedMetaData="kind='group' name='group:1'"
+	 * @generated
+	 */
+	FeatureMap getGroup();
+
+	/**
+	 * Returns the value of the '<em><b>Jndi Property</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.jst.server.generic.servertype.definition.ArgumentPair}.
+	 * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of the '<em>Jndi 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>Jndi Property</em>' containment reference list.
+	 * @see org.eclipse.jst.server.generic.internal.servertype.definition.ServerTypePackage#getJndiConnection_JndiProperty()
+	 * @model type="org.eclipse.jst.server.generic.servertype.definition.ArgumentPair" containment="true" resolveProxies="false" transient="true" volatile="true" derived="true"
+	 *        extendedMetaData="kind='element' name='jndiProperty' group='#group:1'"
+	 * @generated
+	 */
+    List getJndiProperty();
+
+	/**
+	 * Returns the value of the '<em><b>Initial Context Factory</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of the '<em>Initial Context Factory</em>' attribute isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+	 * @return the value of the '<em>Initial Context Factory</em>' attribute.
+	 * @see #setInitialContextFactory(String)
+	 * @see org.eclipse.jst.server.generic.internal.servertype.definition.ServerTypePackage#getJndiConnection_InitialContextFactory()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String" required="true"
+	 *        extendedMetaData="kind='element' name='initialContextFactory'"
+	 * @generated
+	 */
+    String getInitialContextFactory();
+
+    /**
+     * Sets the value of the '{@link org.eclipse.jst.server.generic.servertype.definition.JndiConnection#getInitialContextFactory <em>Initial Context Factory</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Initial Context Factory</em>' attribute.
+     * @see #getInitialContextFactory()
+     * @generated
+     */
+//    void setInitialContextFactory(String value);
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.jst.server.generic.servertype.definition.JndiConnection#getInitialContextFactory <em>Initial Context Factory</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Initial Context Factory</em>' attribute.
+	 * @see #getInitialContextFactory()
+	 * @generated
+	 */
+	void setInitialContextFactory(String value);
+
+} // JndiConnection
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..7b4d426
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/LaunchConfiguration.java
@@ -0,0 +1,298 @@
+/***************************************************************************************************
+ * Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Gorkem Ercan - initial API and implementation
+ *               
+ **************************************************************************************************/
+package org.eclipse.jst.server.generic.servertype.definition;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.emf.ecore.util.FeatureMap;
+
+/**
+ * <!-- 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#getGroup <em>Group</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.LaunchConfiguration#getEnvironmentVariable <em>Environment Variable</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.LaunchConfiguration#getGroup1 <em>Group1</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#getWorkingDirectory <em>Working Directory</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.LaunchConfiguration#getMainClass <em>Main Class</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.LaunchConfiguration#getGroup2 <em>Group2</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>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.LaunchConfiguration#getDebugPort <em>Debug Port</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.LaunchConfiguration#getGroup3 <em>Group3</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.LaunchConfiguration#getExternal <em>External</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jst.server.generic.internal.servertype.definition.ServerTypePackage#getLaunchConfiguration()
+ * @model extendedMetaData="name='LaunchConfiguration' kind='elementOnly'"
+ * @generated
+ */
+public interface LaunchConfiguration extends EObject{
+	/**
+	 * Returns the value of the '<em><b>Main Class</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of the '<em>Main 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>Main Class</em>' attribute.
+	 * @see #setMainClass(String)
+	 * @see org.eclipse.jst.server.generic.internal.servertype.definition.ServerTypePackage#getLaunchConfiguration_MainClass()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String"
+	 *        extendedMetaData="kind='element' name='mainClass'"
+	 * @generated
+	 */
+    String getMainClass();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.jst.server.generic.servertype.definition.LaunchConfiguration#getMainClass <em>Main Class</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Main Class</em>' attribute.
+	 * @see #getMainClass()
+	 * @generated
+	 */
+	void setMainClass(String value);
+
+	/**
+	 * 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.internal.servertype.definition.ServerTypePackage#getLaunchConfiguration_Group2()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.EFeatureMapEntry" many="true"
+	 *        extendedMetaData="kind='group' name='group:6'"
+	 * @generated
+	 */
+	FeatureMap getGroup2();
+
+	/**
+	 * Returns the value of the '<em><b>Working Directory</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+	 * @return the value of the '<em>Working Directory</em>' attribute.
+	 * @see #setWorkingDirectory(String)
+	 * @see org.eclipse.jst.server.generic.internal.servertype.definition.ServerTypePackage#getLaunchConfiguration_WorkingDirectory()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String" required="true"
+	 *        extendedMetaData="kind='element' name='workingDirectory'"
+	 * @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 list.
+	 * The list contents are of type {@link java.lang.String}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Program Arguments</em>' attribute list.
+	 * @see org.eclipse.jst.server.generic.internal.servertype.definition.ServerTypePackage#getLaunchConfiguration_ProgramArguments()
+	 * @model type="java.lang.String" unique="false" dataType="org.eclipse.emf.ecore.xml.type.String" transient="true" volatile="true" derived="true"
+	 *        extendedMetaData="kind='element' name='programArguments' group='#group:2'"
+	 * @generated
+	 */
+	List getProgramArguments();
+
+	/**
+	 * Returns a concatenated String of all Program Arguments
+	 * @generated NOT
+	 * @return
+	 */
+	String getProgramArgumentsAsString();
+	
+	/**
+	 * Returns a concatenated String of all Vm parameters.
+	 * @generated NOT
+	 * @return
+	 */
+	String getVmParametersAsString();
+
+	/**
+	 * Returns the value of the '<em><b>Vm Parameters</b></em>' attribute list.
+	 * The list contents are of type {@link java.lang.String}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Vm Parameters</em>' attribute list.
+	 * @see org.eclipse.jst.server.generic.internal.servertype.definition.ServerTypePackage#getLaunchConfiguration_VmParameters()
+	 * @model type="java.lang.String" unique="false" dataType="org.eclipse.emf.ecore.xml.type.String" transient="true" volatile="true" derived="true"
+	 *        extendedMetaData="kind='element' name='vmParameters' group='#group:6'"
+	 * @generated
+	 */
+	List getVmParameters();
+
+	/**
+	 * Returns the value of the '<em><b>Classpath Reference</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Classpath Reference</em>' attribute.
+	 * @see #setClasspathReference(String)
+	 * @see org.eclipse.jst.server.generic.internal.servertype.definition.ServerTypePackage#getLaunchConfiguration_ClasspathReference()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String"
+	 *        extendedMetaData="kind='element' name='classpathReference'"
+	 * @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);
+
+	/**
+	 * 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);
+
+	/**
+	 * Returns the value of the '<em><b>External</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.jst.server.generic.servertype.definition.External}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>External</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>External</em>' containment reference list.
+	 * @see org.eclipse.jst.server.generic.internal.servertype.definition.ServerTypePackage#getLaunchConfiguration_External()
+	 * @model type="org.eclipse.jst.server.generic.servertype.definition.External" containment="true" resolveProxies="false" transient="true" volatile="true" derived="true"
+	 *        extendedMetaData="kind='element' name='external' group='#group:10'"
+	 * @generated
+	 */
+	List getExternal();
+
+	/**
+	 * Returns the value of the '<em><b>Debug Port</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Debug Port</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Debug Port</em>' attribute.
+	 * @see #setDebugPort(String)
+	 * @see org.eclipse.jst.server.generic.internal.servertype.definition.ServerTypePackage#getLaunchConfiguration_DebugPort()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String"
+	 *        extendedMetaData="kind='element' name='debugPort'"
+	 * @generated
+	 */
+	String getDebugPort();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.jst.server.generic.servertype.definition.LaunchConfiguration#getDebugPort <em>Debug Port</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Debug Port</em>' attribute.
+	 * @see #getDebugPort()
+	 * @generated
+	 */
+	void setDebugPort(String 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.internal.servertype.definition.ServerTypePackage#getLaunchConfiguration_Group3()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.EFeatureMapEntry" many="true"
+	 *        extendedMetaData="kind='group' name='group:10'"
+	 * @generated
+	 */
+	FeatureMap getGroup3();
+
+	/**
+	 * 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.internal.servertype.definition.ServerTypePackage#getLaunchConfiguration_Group()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.EFeatureMapEntry" many="true"
+	 *        extendedMetaData="kind='group' name='group:0'"
+	 * @generated
+	 */
+	FeatureMap getGroup();
+
+	/**
+	 * Returns the value of the '<em><b>Environment Variable</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.jst.server.generic.servertype.definition.ArgumentPair}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Environment Variable</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>Environment Variable</em>' containment reference list.
+	 * @see org.eclipse.jst.server.generic.internal.servertype.definition.ServerTypePackage#getLaunchConfiguration_EnvironmentVariable()
+	 * @model type="org.eclipse.jst.server.generic.servertype.definition.ArgumentPair" containment="true" resolveProxies="false" transient="true" volatile="true" derived="true"
+	 *        extendedMetaData="kind='element' name='environmentVariable' group='#group:0'"
+	 * @generated
+	 */
+	List getEnvironmentVariable();
+
+	/**
+	 * 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.internal.servertype.definition.ServerTypePackage#getLaunchConfiguration_Group1()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.EFeatureMapEntry" many="true"
+	 *        extendedMetaData="kind='group' name='group:2'"
+	 * @generated
+	 */
+	FeatureMap getGroup1();
+
+} // 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..ad8da17
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/Module.java
@@ -0,0 +1,116 @@
+/***************************************************************************************************
+ * Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Gorkem Ercan - initial API and implementation
+ *               
+ **************************************************************************************************/
+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.internal.servertype.definition.ServerTypePackage#getModule()
+ * @model extendedMetaData="name='Module' kind='elementOnly'"
+ * @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.internal.servertype.definition.ServerTypePackage#getModule_Type()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String" required="true"
+	 *        extendedMetaData="kind='element' name='type'"
+	 * @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 -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Publish Dir</em>' attribute.
+	 * @see #setPublishDir(String)
+	 * @see org.eclipse.jst.server.generic.internal.servertype.definition.ServerTypePackage#getModule_PublishDir()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String" required="true"
+	 *        extendedMetaData="kind='element' name='publishDir'"
+	 * @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 -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Publisher Reference</em>' attribute.
+	 * @see #setPublisherReference(String)
+	 * @see org.eclipse.jst.server.generic.internal.servertype.definition.ServerTypePackage#getModule_PublisherReference()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String" required="true"
+	 *        extendedMetaData="kind='element' name='publisherReference'"
+	 * @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);
+
+	/**
+	 * 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..82a89cb
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/Port.java
@@ -0,0 +1,116 @@
+/***************************************************************************************************
+ * Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Gorkem Ercan - initial API and implementation
+ *               
+ **************************************************************************************************/
+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.internal.servertype.definition.ServerTypePackage#getPort()
+ * @model extendedMetaData="name='Port' kind='elementOnly'"
+ * @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.internal.servertype.definition.ServerTypePackage#getPort_No()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String" required="true"
+	 *        extendedMetaData="kind='element' name='no'"
+	 * @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 -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Name</em>' attribute.
+	 * @see #setName(String)
+	 * @see org.eclipse.jst.server.generic.internal.servertype.definition.ServerTypePackage#getPort_Name()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String" required="true"
+	 *        extendedMetaData="kind='element' name='name'"
+	 * @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 -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Protocol</em>' attribute.
+	 * @see #setProtocol(String)
+	 * @see org.eclipse.jst.server.generic.internal.servertype.definition.ServerTypePackage#getPort_Protocol()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String" required="true"
+	 *        extendedMetaData="kind='element' name='protocol'"
+	 * @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);
+
+	/**
+	 * 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..9625f5a
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/Project.java
@@ -0,0 +1,68 @@
+/***************************************************************************************************
+ * Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Gorkem Ercan - initial API and implementation
+ *               
+ **************************************************************************************************/
+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.internal.servertype.definition.ServerTypePackage#getProject()
+ * @model extendedMetaData="name='Project' kind='elementOnly'"
+ * @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.internal.servertype.definition.ServerTypePackage#getProject_ClasspathReference()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String" required="true"
+	 *        extendedMetaData="kind='element' name='classpathReference'"
+	 * @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);
+
+	/**
+	 * 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..60a0a41
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/Property.java
@@ -0,0 +1,172 @@
+/***************************************************************************************************
+ * Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Gorkem Ercan - initial API and implementation
+ *               
+ **************************************************************************************************/
+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.internal.servertype.definition.ServerTypePackage#getProperty()
+ * @model extendedMetaData="name='Property' kind='empty'"
+ * @generated
+ */
+public interface Property extends EObject{
+	public static final String CONTEXT_RUNTIME = "runtime";
+	public static final String CONTEXT_SERVER = "server";
+	public static final String TYPE_FILE="file";
+	public static final String TYPE_DIRECTORY="directory";
+	public static final String TYPE_BOOLEAN="boolean";
+	public static final String TYPE_TEXT="string";
+	public static final String TYPE_SELECT="select";
+
+	/**
+	 * 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.internal.servertype.definition.ServerTypePackage#getProperty_Context()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String"
+	 *        extendedMetaData="kind='attribute' name='context'"
+	 * @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 -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Default</em>' attribute.
+	 * @see #setDefault(String)
+	 * @see org.eclipse.jst.server.generic.internal.servertype.definition.ServerTypePackage#getProperty_Default()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String"
+	 *        extendedMetaData="kind='attribute' name='default'"
+	 * @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 -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Id</em>' attribute.
+	 * @see #setId(String)
+	 * @see org.eclipse.jst.server.generic.internal.servertype.definition.ServerTypePackage#getProperty_Id()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String"
+	 *        extendedMetaData="kind='attribute' name='id'"
+	 * @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 -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Label</em>' attribute.
+	 * @see #setLabel(String)
+	 * @see org.eclipse.jst.server.generic.internal.servertype.definition.ServerTypePackage#getProperty_Label()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String"
+	 *        extendedMetaData="kind='attribute' name='label'"
+	 * @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 -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Type</em>' attribute.
+	 * @see #setType(String)
+	 * @see org.eclipse.jst.server.generic.internal.servertype.definition.ServerTypePackage#getProperty_Type()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String"
+	 *        extendedMetaData="kind='attribute' name='type'"
+	 * @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);
+
+	/**
+	 * 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/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..9e3336d
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/Publisher.java
@@ -0,0 +1,108 @@
+/***************************************************************************************************
+ * Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Gorkem Ercan - initial API and implementation
+ *               
+ **************************************************************************************************/
+package org.eclipse.jst.server.generic.servertype.definition;
+
+import java.util.List;
+
+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#getPublisherdata <em>Publisherdata</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.internal.servertype.definition.ServerTypePackage#getPublisher()
+ * @model extendedMetaData="name='Publisher' kind='elementOnly'"
+ * @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.internal.servertype.definition.ServerTypePackage#getPublisher_Group()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.EFeatureMapEntry" many="true"
+	 *        extendedMetaData="kind='group' name='group:0'"
+	 * @generated
+	 */
+	FeatureMap getGroup();
+
+	/**
+	 * Returns the value of the '<em><b>Publisherdata</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.jst.server.generic.servertype.definition.PublisherData}.
+	 * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of the '<em>Publisherdata</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>Publisherdata</em>' containment reference list.
+	 * @see org.eclipse.jst.server.generic.internal.servertype.definition.ServerTypePackage#getPublisher_Publisherdata()
+	 * @model type="org.eclipse.jst.server.generic.servertype.definition.PublisherData" containment="true" resolveProxies="false" required="true" transient="true" volatile="true" derived="true"
+	 *        extendedMetaData="kind='element' name='publisherdata' group='#group:0'"
+	 * @generated
+	 */
+    List getPublisherdata();
+
+	/**
+	 * 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.internal.servertype.definition.ServerTypePackage#getPublisher_Id()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String"
+	 *        extendedMetaData="kind='attribute' name='id'"
+	 * @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);
+
+	/**
+	 * 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/PublisherData.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/PublisherData.java
new file mode 100644
index 0000000..a3baf7b
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/PublisherData.java
@@ -0,0 +1,92 @@
+/***************************************************************************************************
+ * Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Gorkem Ercan - initial API and implementation
+ *               
+ **************************************************************************************************/
+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>Publisher Data</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.PublisherData#getDataname <em>Dataname</em>}</li>
+ *   <li>{@link org.eclipse.jst.server.generic.servertype.definition.PublisherData#getDatavalue <em>Datavalue</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jst.server.generic.internal.servertype.definition.ServerTypePackage#getPublisherData()
+ * @model extendedMetaData="name='PublisherData' kind='elementOnly'"
+ * @generated
+ */
+public interface PublisherData extends EObject{
+	/**
+	 * Returns the value of the '<em><b>Dataname</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of the '<em>Dataname</em>' attribute isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+	 * @return the value of the '<em>Dataname</em>' attribute.
+	 * @see #setDataname(String)
+	 * @see org.eclipse.jst.server.generic.internal.servertype.definition.ServerTypePackage#getPublisherData_Dataname()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String" required="true"
+	 *        extendedMetaData="kind='element' name='dataname'"
+	 * @generated
+	 */
+    String getDataname();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.jst.server.generic.servertype.definition.PublisherData#getDataname <em>Dataname</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Dataname</em>' attribute.
+	 * @see #getDataname()
+	 * @generated
+	 */
+	void setDataname(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Datavalue</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+	 * @return the value of the '<em>Datavalue</em>' attribute.
+	 * @see #setDatavalue(String)
+	 * @see org.eclipse.jst.server.generic.internal.servertype.definition.ServerTypePackage#getPublisherData_Datavalue()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String" required="true"
+	 *        extendedMetaData="kind='element' name='datavalue'"
+	 * @generated
+	 */
+    String getDatavalue();
+
+    /**
+     * Sets the value of the '{@link org.eclipse.jst.server.generic.servertype.definition.PublisherData#getDatavalue <em>Datavalue</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Datavalue</em>' attribute.
+     * @see #getDatavalue()
+     * @generated
+     */
+//    void setDatavalue(String value);
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.jst.server.generic.servertype.definition.PublisherData#getDatavalue <em>Datavalue</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Datavalue</em>' attribute.
+	 * @see #getDatavalue()
+	 * @generated
+	 */
+	void setDatavalue(String value);
+
+} // PublisherData
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..52740e5
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/ServerRuntime.java
@@ -0,0 +1,440 @@
+/***************************************************************************************************
+ * Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Gorkem Ercan - initial API and implementation
+ *               
+ **************************************************************************************************/
+package org.eclipse.jst.server.generic.servertype.definition;
+
+import java.util.List;
+import java.util.Map;
+
+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#getJndiConnection <em>Jndi Connection</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.internal.servertype.definition.ServerTypePackage#getServerRuntime()
+ * @model extendedMetaData="name='ServerRuntime' kind='elementOnly'"
+ * @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.internal.servertype.definition.ServerTypePackage#getServerRuntime_Group()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.EFeatureMapEntry" many="true"
+	 *        extendedMetaData="kind='group' name='group:0'"
+	 * @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.internal.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"
+	 *        extendedMetaData="kind='element' name='property' group='#group:0'"
+	 * @generated
+	 */
+    List 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.internal.servertype.definition.ServerTypePackage#getServerRuntime_Group1()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.EFeatureMapEntry" many="true"
+	 *        extendedMetaData="kind='group' name='group:2'"
+	 * @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.internal.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"
+	 *        extendedMetaData="kind='element' name='port' group='#group:2'"
+	 * @generated
+	 */
+    List 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.internal.servertype.definition.ServerTypePackage#getServerRuntime_Group2()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.EFeatureMapEntry" many="true"
+	 *        extendedMetaData="kind='group' name='group:4'"
+	 * @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.internal.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"
+	 *        extendedMetaData="kind='element' name='module' group='#group:4'"
+	 * @generated
+	 */
+    List 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.internal.servertype.definition.ServerTypePackage#getServerRuntime_Project()
+	 * @model containment="true" resolveProxies="false" required="true"
+	 *        extendedMetaData="kind='element' name='project'"
+	 * @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 -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Start</em>' containment reference.
+	 * @see #setStart(LaunchConfiguration)
+	 * @see org.eclipse.jst.server.generic.internal.servertype.definition.ServerTypePackage#getServerRuntime_Start()
+	 * @model containment="true" resolveProxies="false" required="true"
+	 *        extendedMetaData="kind='element' name='start'"
+	 * @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 -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Stop</em>' containment reference.
+	 * @see #setStop(LaunchConfiguration)
+	 * @see org.eclipse.jst.server.generic.internal.servertype.definition.ServerTypePackage#getServerRuntime_Stop()
+	 * @model containment="true" resolveProxies="false" required="true"
+	 *        extendedMetaData="kind='element' name='stop'"
+	 * @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.internal.servertype.definition.ServerTypePackage#getServerRuntime_Group3()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.EFeatureMapEntry" many="true"
+	 *        extendedMetaData="kind='group' name='group:9'"
+	 * @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.internal.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"
+	 *        extendedMetaData="kind='element' name='publisher' group='#group:9'"
+	 * @generated
+	 */
+    List 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.internal.servertype.definition.ServerTypePackage#getServerRuntime_Group4()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.EFeatureMapEntry" many="true"
+	 *        extendedMetaData="kind='group' name='group:11'"
+	 * @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.internal.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"
+	 *        extendedMetaData="kind='element' name='classpath' group='#group:11'"
+	 * @generated
+	 */
+    List getClasspath();
+
+	/**
+	 * Returns the value of the '<em><b>Jndi Connection</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of the '<em>Jndi Connection</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>Jndi Connection</em>' containment reference.
+	 * @see #setJndiConnection(JndiConnection)
+	 * @see org.eclipse.jst.server.generic.internal.servertype.definition.ServerTypePackage#getServerRuntime_JndiConnection()
+	 * @model containment="true" resolveProxies="false" required="true"
+	 *        extendedMetaData="kind='element' name='jndiConnection'"
+	 * @generated
+	 */
+    JndiConnection getJndiConnection();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.jst.server.generic.servertype.definition.ServerRuntime#getJndiConnection <em>Jndi Connection</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Jndi Connection</em>' containment reference.
+	 * @see #getJndiConnection()
+	 * @generated
+	 */
+	void setJndiConnection(JndiConnection value);
+
+	/**
+	 * Returns the value of the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+	 * @return the value of the '<em>Name</em>' attribute.
+	 * @see #setName(String)
+	 * @see org.eclipse.jst.server.generic.internal.servertype.definition.ServerTypePackage#getServerRuntime_Name()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String" required="true"
+	 *        extendedMetaData="kind='attribute' name='name'"
+	 * @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 -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Version</em>' attribute.
+	 * @see #setVersion(String)
+	 * @see org.eclipse.jst.server.generic.internal.servertype.definition.ServerTypePackage#getServerRuntime_Version()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String"
+	 *        extendedMetaData="kind='attribute' name='version'"
+	 * @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 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 getId();
+    
+    /**
+     * @generated NOT
+     * @param id
+     */
+    void setId(String id);
+    
+    
+    
+    
+	/**
+	 * @generated NOT
+	 */
+	String getFilename();
+
+    
+	/**
+	 * @generated NOT
+ */
+	void setFilename(String fn);
+
+	/**
+	 * @generated NOT
+	 */
+	void setPropertyValues(Map properties);
+
+	/**
+	 * @generated NOT
+	 */
+	Resolver getResolver();
+	
+    /**
+     * @generated NOT
+     */
+    String getConfigurationElementNamespace();
+    /**
+     * @generated NOT
+     * @param namespace
+     */
+    void setConfigurationElementNamespace(String namespace);
+	/**
+	 * @param id the id of the '<em>Publisher</em>' attribute.
+	 * @return
+	 * @generated NOT
+	 */
+	Publisher getPublisher(String id);
+} // 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..5aeb3c8
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/servertype/definition/ServerTypeFactory.java
@@ -0,0 +1,158 @@
+/***************************************************************************************************
+ * Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Gorkem Ercan - initial API and implementation
+ *               
+ **************************************************************************************************/
+package org.eclipse.jst.server.generic.servertype.definition;
+
+import org.eclipse.emf.ecore.EFactory;
+import org.eclipse.jst.server.generic.internal.servertype.definition.ServerTypePackage;
+
+/**
+ * <!-- 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.internal.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.internal.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>Argument Pair</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Argument Pair</em>'.
+	 * @generated
+	 */
+	ArgumentPair createArgumentPair();
+
+	/**
+	 * 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>External</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>External</em>'.
+	 * @generated
+	 */
+	External createExternal();
+
+	/**
+	 * Returns a new object of class '<em>Jndi Connection</em>'.
+	 * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Jndi Connection</em>'.
+	 * @generated
+	 */
+    JndiConnection createJndiConnection();
+
+	/**
+	 * 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>Publisher Data</em>'.
+	 * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Publisher Data</em>'.
+	 * @generated
+	 */
+    PublisherData createPublisherData();
+
+	/**
+	 * 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 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/xsd/ServerTypeDefinitionSchema.xsd b/plugins/org.eclipse.jst.server.generic.core/xsd/ServerTypeDefinitionSchema.xsd
new file mode 100644
index 0000000..87fa96e
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/xsd/ServerTypeDefinitionSchema.xsd
@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema targetNamespace="http://eclipse.org/jst/server/generic/ServerTypeDefinition" xmlns="http://www.w3.org/2001/XMLSchema" 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 maxOccurs="1" minOccurs="1">
+			<sequence maxOccurs="unbounded" minOccurs="0">
+				<element name="property" type="jst:Property"/>
+			</sequence>
+
+			<sequence maxOccurs="unbounded" minOccurs="0">
+				<element name="port" type="jst:Port"/>
+			</sequence>
+
+			<sequence maxOccurs="unbounded" minOccurs="1">
+				<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 maxOccurs="unbounded" minOccurs="0">
+				<element name="publisher" type="jst:Publisher"/>
+			</sequence>
+
+			<sequence maxOccurs="unbounded" minOccurs="1">
+				<element name="classpath" type="jst:Classpath"/>
+			</sequence>
+			<element name="jndiConnection" type="jst:jndiConnection"/>
+		</sequence>
+
+		<attribute name="name" type="string" use="required"/>
+		<attribute name="version" type="string"/>
+	</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>
+			<sequence minOccurs="0" maxOccurs="unbounded">
+				<element name="environmentVariable"
+					type="jst:ArgumentPair">
+				</element>
+			</sequence>
+			<sequence minOccurs="0" maxOccurs="unbounded">
+				<element name="programArguments" type="string" />
+			</sequence>
+			<element name="workingDirectory" type="string" />
+			<choice>
+				<sequence>
+					<element name="mainClass" type="string" />
+					<sequence minOccurs="0" maxOccurs="unbounded">
+						<element name="vmParameters" type="string" />
+					</sequence>
+					<element name="classpathReference" type="string" />
+				</sequence>
+				<sequence>
+					<element name="debugPort" type="string" />
+					<sequence maxOccurs="unbounded" minOccurs="1">
+						<element name="external" type="jst:External"></element>
+					</sequence>
+				</sequence>
+			</choice>
+		</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 maxOccurs="unbounded" minOccurs="1">
+			<element name="archive">
+				<complexType>
+					<attribute name="path" type="string"/>
+				</complexType>
+			</element>
+		</sequence>
+		<attribute name="id" type="string"/>
+	</complexType>
+
+	<complexType name="Publisher">
+		<sequence maxOccurs="unbounded" minOccurs="1">
+            <element name="publisherdata" type="jst:PublisherData">
+      </element>
+        </sequence>
+		<attribute name="id" type="string"/>
+	</complexType>
+
+	<complexType name="Project">
+		<sequence maxOccurs="1" minOccurs="1">
+		<element name="classpathReference" type="string"/>
+		</sequence>
+	</complexType>
+
+    <complexType name="PublisherData">
+    <sequence maxOccurs="1" minOccurs="1">
+      <element name="dataname" type="string"/>
+      <element name="datavalue" type="string"/>
+    </sequence>
+  </complexType>
+    <complexType name="jndiConnection">
+    	<sequence>
+    		<element name="providerUrl" type="string"/>
+    		<sequence maxOccurs="unbounded" minOccurs="0">
+    			<element name="jndiProperty" type="jst:ArgumentPair"/>
+    		</sequence>
+    		<element name="initialContextFactory" type="string"/>
+    	</sequence>
+    </complexType>
+
+    <complexType name="ArgumentPair">
+    	<all maxOccurs="1" minOccurs="1">
+    		<element name="name" type="string"/>
+    		<element name="value" type="string"/>
+    	</all>
+    </complexType>
+
+    <complexType name="External">
+    	<simpleContent>
+    		<extension base="string">
+    			<attribute name="os" type="string"></attribute>
+    		</extension>
+    	</simpleContent>
+    </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..21b385f
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/xsd/org.eclipse.jst.server.generic.servertype.ecore
@@ -0,0 +1,501 @@
+<?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="ArgumentPair">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="ArgumentPair"/>
+      <details key="kind" value="elementOnly"/>
+    </eAnnotations>
+    <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="value" 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="value"/>
+      </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>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="External">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="External"/>
+      <details key="kind" value="simple"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" unique="false" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="name" value=":0"/>
+        <details key="kind" value="simple"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="os" 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="os"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="JndiConnection">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="jndiConnection"/>
+      <details key="kind" value="elementOnly"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="providerUrl" 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="providerUrl"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <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:1"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="jndiProperty" upperBound="-1"
+        eType="#//ArgumentPair" 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="jndiProperty"/>
+        <details key="group" value="#group:1"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="initialContextFactory"
+        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="initialContextFactory"/>
+      </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="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="environmentVariable" upperBound="-1"
+        eType="#//ArgumentPair" 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="environmentVariable"/>
+        <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:EAttribute" name="programArguments" unique="false"
+        upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String"
+        volatile="true" transient="true" derived="true">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="programArguments"/>
+        <details key="group" value="#group:2"/>
+      </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="mainClass" 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="element"/>
+        <details key="name" value="mainClass"/>
+      </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:6"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="vmParameters" unique="false"
+        upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String"
+        volatile="true" transient="true" derived="true">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="vmParameters"/>
+        <details key="group" value="#group:6"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="classpathReference" 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="element"/>
+        <details key="name" value="classpathReference"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="debugPort" 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="element"/>
+        <details key="name" value="debugPort"/>
+      </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:10"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="external" upperBound="-1"
+        eType="#//External" 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="external"/>
+        <details key="group" value="#group:10"/>
+      </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="publisherdata" lowerBound="1"
+        upperBound="-1" eType="#//PublisherData" 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="publisherdata"/>
+        <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="PublisherData">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="PublisherData"/>
+      <details key="kind" value="elementOnly"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="dataname" 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="dataname"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="datavalue" 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="datavalue"/>
+      </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:EReference" name="jndiConnection" lowerBound="1"
+        eType="#//JndiConnection" containment="true" resolveProxies="false">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="jndiConnection"/>
+      </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>
+</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..74670bb
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.core/xsd/servertype.genmodel
@@ -0,0 +1,97 @@
+<?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.core/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"
+    suppressEMFTypes="true" importerID="org.eclipse.xsd.ecore.importer">
+  <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#//ArgumentPair">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.jst.server.generic.servertype.ecore#//ArgumentPair/name"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.jst.server.generic.servertype.ecore#//ArgumentPair/value"/>
+    </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"/>
+    </genClasses>
+    <genClasses ecoreClass="org.eclipse.jst.server.generic.servertype.ecore#//External">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.jst.server.generic.servertype.ecore#//External/value"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.jst.server.generic.servertype.ecore#//External/os"/>
+    </genClasses>
+    <genClasses ecoreClass="org.eclipse.jst.server.generic.servertype.ecore#//JndiConnection">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.jst.server.generic.servertype.ecore#//JndiConnection/providerUrl"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EAttribute org.eclipse.jst.server.generic.servertype.ecore#//JndiConnection/group"/>
+      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference org.eclipse.jst.server.generic.servertype.ecore#//JndiConnection/jndiProperty"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.jst.server.generic.servertype.ecore#//JndiConnection/initialContextFactory"/>
+    </genClasses>
+    <genClasses ecoreClass="org.eclipse.jst.server.generic.servertype.ecore#//LaunchConfiguration">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EAttribute org.eclipse.jst.server.generic.servertype.ecore#//LaunchConfiguration/group"/>
+      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference org.eclipse.jst.server.generic.servertype.ecore#//LaunchConfiguration/environmentVariable"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EAttribute org.eclipse.jst.server.generic.servertype.ecore#//LaunchConfiguration/group1"/>
+      <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/workingDirectory"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.jst.server.generic.servertype.ecore#//LaunchConfiguration/mainClass"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EAttribute org.eclipse.jst.server.generic.servertype.ecore#//LaunchConfiguration/group2"/>
+      <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"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.jst.server.generic.servertype.ecore#//LaunchConfiguration/debugPort"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EAttribute org.eclipse.jst.server.generic.servertype.ecore#//LaunchConfiguration/group3"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EReference org.eclipse.jst.server.generic.servertype.ecore#//LaunchConfiguration/external"/>
+    </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/publisherdata"/>
+      <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#//PublisherData">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.jst.server.generic.servertype.ecore#//PublisherData/dataname"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.jst.server.generic.servertype.ecore#//PublisherData/datavalue"/>
+    </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 property="None" children="true" createChild="true" ecoreFeature="ecore:EReference org.eclipse.jst.server.generic.servertype.ecore#//ServerRuntime/jndiConnection"/>
+      <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>
+  </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.jboss/.classpath b/plugins/org.eclipse.jst.server.generic.jboss/.classpath
new file mode 100644
index 0000000..f457095
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.jboss/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="servers/"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.4"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/org.eclipse.jst.server.generic.jboss/.cvsignore b/plugins/org.eclipse.jst.server.generic.jboss/.cvsignore
new file mode 100644
index 0000000..010b5b0
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.jboss/.cvsignore
@@ -0,0 +1,5 @@
+bin
+build.xml
+javaCompiler.genericjboss.jar.args
+temp.folder
+genericjboss.jar
diff --git a/plugins/org.eclipse.jst.server.generic.jboss/.project b/plugins/org.eclipse.jst.server.generic.jboss/.project
new file mode 100644
index 0000000..a997a0e
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.jboss/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.jst.server.generic.jboss</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.jboss/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.jst.server.generic.jboss/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..925eec7
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.jboss/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+#Sun Jan 21 15:01:45 EET 2007
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2
+org.eclipse.jdt.core.compiler.compliance=1.4
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
+org.eclipse.jdt.core.compiler.source=1.3
diff --git a/plugins/org.eclipse.jst.server.generic.jboss/META-INF/MANIFEST.MF b/plugins/org.eclipse.jst.server.generic.jboss/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..3acb7ba
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.jboss/META-INF/MANIFEST.MF
@@ -0,0 +1,17 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.jst.server.generic.jboss;singleton:=true
+Bundle-Version: 1.5.2.qualifier
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Require-Bundle: org.eclipse.jst.server.core;bundle-version="[1.0.102,1.1.0)",
+ org.eclipse.jst.server.generic.core;bundle-version="[1.0.100,1.1.0)",
+ org.eclipse.jst.server.generic.ui;bundle-version="[1.0.100,1.1.0)",
+ org.eclipse.jst.server.ui;bundle-version="[1.0.102,1.1.0)",
+ org.eclipse.jst.common.project.facet.core;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.wst.common.project.facet.core;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.wst.common.project.facet.ui;bundle-version="[1.1.0,1.2.0)"
+Eclipse-LazyStart: true
+Bundle-ClassPath: genericjboss.jar
+Bundle-RequiredExecutionEnvironment: J2SE-1.4
diff --git a/plugins/org.eclipse.jst.server.generic.jboss/about.html b/plugins/org.eclipse.jst.server.generic.jboss/about.html
new file mode 100644
index 0000000..4ec5989
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.jboss/about.html
@@ -0,0 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<HTML>
+
+<head>
+<title>About</title>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
+</head>
+
+<BODY lang="EN-US">
+
+<H3>About This Content</H3>
+
+<P>May 2, 2006</P>
+
+<H3>License</H3>
+
+<P>The Eclipse Foundation makes available all content in this plug-in 
+("Content"). Unless otherwise indicated below, the Content is provided to you 
+under the terms and conditions of the Eclipse Public License Version 1.0 
+("EPL"). A copy of the EPL is available at
+<A href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/org/documents/epl-v10.php</A>. 
+For purposes of the EPL, "Program" will mean the Content.</P>
+
+<P>If you did not receive this Content directly from the Eclipse Foundation, the 
+Content is being redistributed by another party ("Redistributor") and different 
+terms and conditions may apply to your use of any object code in the Content. 
+Check the Redistributor’s license that was provided with the Content. If no such 
+license exists, contact the Redistributor. Unless otherwise indicated below, the 
+terms and conditions of the EPL still apply to any source code in the Content 
+and such source code may be obtained at
+<A href="http://www.eclipse.org/">http://www.eclipse.org/</A>.</P>
+
+</BODY>
+</HTML>
diff --git a/plugins/org.eclipse.jst.server.generic.jboss/build.properties b/plugins/org.eclipse.jst.server.generic.jboss/build.properties
new file mode 100644
index 0000000..628cf58
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.jboss/build.properties
@@ -0,0 +1,11 @@
+bin.includes = META-INF/,\
+               plugin.xml,\
+               about.html,\
+               plugin.properties,\
+               servers/,\
+               icons/,\
+               buildfiles/,\
+               genericjboss.jar              
+src.includes = build.properties
+source.genericjboss.jar = servers/
+jars.compile.order = genericjboss.jar
diff --git a/plugins/org.eclipse.jst.server.generic.jboss/buildfiles/jboss323.xml b/plugins/org.eclipse.jst.server.generic.jboss/buildfiles/jboss323.xml
new file mode 100644
index 0000000..e4ff370
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.jboss/buildfiles/jboss323.xml
@@ -0,0 +1,50 @@
+<project name="deployextension"  default="deploy.j2ee.web"  basedir=".">
+	<property name="pause.deploy" value="10"/>
+	<property name="pause.undeploy" value="5"/>
+
+	<target name="deploy.j2ee.web">
+		<jar destfile="${project.working.dir}/${module.name}.war"> 
+			<zipfileset dir="${module.dir}">
+	        	<include name="**/*.*"/>
+				<exclude name="**/*.war"/>
+			</zipfileset>
+		</jar>
+  		<move file="${project.working.dir}/${module.name}.war" todir="${server.publish.dir}"/>
+		<sleep seconds="${pause.deploy}"/>
+	</target>
+	
+	<target name="deploy.j2ee.ejb">
+		<jar destfile="${project.working.dir}/${module.name}.jar"> 
+			<zipfileset dir="${module.dir}">
+	        	<include name="**/*.*"/>
+	       		<exclude name="**/*.java"/>
+			</zipfileset>
+		</jar>
+  		<move file="${project.working.dir}/${module.name}.jar" todir="${server.publish.dir}"/>
+		<sleep seconds="${pause.deploy}"/>
+	</target>
+	<target name="deploy.j2ee.ear">
+		<jar destfile="${project.working.dir}/${module.name}.ear"> 
+			<zipfileset dir="${module.dir}">
+	        	<include name="**/*.*"/>
+	       		<exclude name="**/*.java"/>
+			</zipfileset>
+		</jar>
+  		<move file="${project.working.dir}/${module.name}.ear" todir="${server.publish.dir}"/>
+		<sleep seconds="${pause.deploy}"/>
+	</target>
+	
+	<target name="undeploy.j2ee.web">
+		<delete file="${server.publish.dir}/${module.name}.war"> </delete>
+		<sleep seconds="${pause.undeploy}"/>
+	</target>
+	<target name="undeploy.j2ee.ejb">
+		<delete file="${server.publish.dir}/${module.name}.jar"> </delete>
+		<sleep seconds="${pause.undeploy}"/>
+	</target>
+	<target name="undeploy.j2ee.ear">
+		<delete file="${server.publish.dir}/${module.name}.ear"> </delete>
+		<sleep seconds="${pause.undeploy}"/>
+	</target>	
+	
+</project>
\ No newline at end of file
diff --git a/plugins/org.eclipse.jst.server.generic.jboss/icons/obj16/jboss.gif b/plugins/org.eclipse.jst.server.generic.jboss/icons/obj16/jboss.gif
new file mode 100644
index 0000000..b51ae39
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.jboss/icons/obj16/jboss.gif
Binary files differ
diff --git a/plugins/org.eclipse.jst.server.generic.jboss/plugin.properties b/plugins/org.eclipse.jst.server.generic.jboss/plugin.properties
new file mode 100644
index 0000000..9568974
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.jboss/plugin.properties
@@ -0,0 +1,42 @@
+##################################################################################################
+# Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+# accompanying materials are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+# 
+# Contributors: Gorkem Ercan - initial API and implementation
+#               
+###################################################################################################
+pluginName= JBoss Generic server definitions 
+providerName=Eclipse.org
+pluginDescription=Provides JBoss server definitons 
+
+
+# ============ jboss323 ====================
+jbossCategory=JBoss
+jboss323runtimeTypeName=JBoss v3.2.3
+jboss323runtimeTypeDescription=Publishes and runs J2EE 1.3 modules on a local server. \
+Provides basic server functionality.
+
+jboss323serverTypeName=JBoss v3.2.3
+jboss323serverTypeDescription=Publishes and runs J2EE 1.3 modules on a local server. \
+Provides basic server functionality.
+
+jboss4runtimeTypeName=JBoss v4.0
+jboss4runtimeTypeDescription=Publishes and runs J2EE 1.4 modules on a local server. \
+Provides basic server functionality.
+
+jboss4serverTypeName=JBoss v4.0
+jboss4serverTypeDescription=Publishes and runs J2EE 1.4 modules on a local server. \
+Provides basic server functionality.
+
+# ============== serverdef translations ================
+ApplicationServerDirectory=Application &Server Directory:
+serverAddress=A&ddress:
+serverPort=&Port:
+jndiPort=&JNDI Port:
+jboss323serverConfig=Server Co&nfiguration:
+serverclassPath=&Classpath Variable:
+serverName=Ser&ver Name:
+username=Use&r Name:
+password=Pass&word:
diff --git a/plugins/org.eclipse.jst.server.generic.jboss/plugin.xml b/plugins/org.eclipse.jst.server.generic.jboss/plugin.xml
new file mode 100644
index 0000000..e7b18a1
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.jboss/plugin.xml
@@ -0,0 +1,236 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+<plugin>
+
+   <extension point="org.eclipse.wst.server.core.runtimeTypes">
+	    <runtimeType
+	       id="org.eclipse.jst.server.generic.runtime.jboss323"
+	       name="%jboss323runtimeTypeName"
+	       description="%jboss323runtimeTypeDescription"
+	       vendor="%jbossCategory"
+	       version="3.2.3"
+	       class="org.eclipse.jst.server.generic.core.internal.GenericServerRuntime">
+	       <moduleType
+	         types="jst.web"
+	         versions="2.2, 2.3"/>
+	      <moduleType
+	         types="jst.ejb"
+	         versions="1.1, 2.0"/>
+	      <moduleType
+	         types="jst.ear"
+	         versions="1.2, 1.3"/>
+	      <moduleType
+	         types="jst.connector"
+	         versions="1.0"/>
+	       <moduleType
+	         types="jst.utility"
+	         versions="1.0"/>
+	    </runtimeType>
+	    
+	    <runtimeType
+	       id="org.eclipse.jst.server.generic.runtime.jboss4"
+	       name="%jboss4runtimeTypeName"
+	       description="%jboss4runtimeTypeDescription"
+	       vendor="%jbossCategory"
+	       version="4.0"
+	       class="org.eclipse.jst.server.generic.core.internal.GenericServerRuntime">
+	       <moduleType
+	         types="jst.web"
+	         versions="2.2, 2.3, 2.4"/>
+	      <moduleType
+	         types="jst.ejb"
+	         versions="1.1, 2.0, 2.1"/>
+	      <moduleType
+	         types="jst.ear"
+	         versions="1.2, 1.3, 1.4"/>
+	      <moduleType
+	         types="jst.connector"
+	         versions="1.0, 1.5"/>
+	       <moduleType
+	         types="jst.utility"
+	         versions="1.0"/>
+	    </runtimeType>
+	</extension>
+
+	<extension point="org.eclipse.wst.server.core.serverTypes">
+	     <serverType
+	           runtime="true"
+	           class="org.eclipse.jst.server.generic.core.internal.GenericServer"
+	           id="org.eclipse.jst.server.generic.jboss323"
+	           initialState="stopped"
+	           supportsRemoteHosts="false"
+	           runtimeTypeId="org.eclipse.jst.server.generic.runtime.jboss323"
+	           description="%jboss323serverTypeDescription"
+	           launchConfigId="org.eclipse.jst.server.generic.core.launchConfigurationType"
+	           behaviourClass="org.eclipse.jst.server.generic.core.internal.GenericServerBehaviour"
+	           name="%jboss323serverTypeName"
+	           startTimeout="50000"
+		       stopTimeout="15000"
+	           hasConfiguration="false"
+	           launchModes="run,debug,profile">
+	          
+	     </serverType>
+	     <serverType
+	           runtime="true"
+	           class="org.eclipse.jst.server.generic.core.internal.GenericServer"
+	           id="org.eclipse.jst.server.generic.jboss4"
+	           initialState="stopped"
+	           supportsRemoteHosts="false"
+	           runtimeTypeId="org.eclipse.jst.server.generic.runtime.jboss4"
+	           description="%jboss4serverTypeDescription"
+	           launchConfigId="org.eclipse.jst.server.generic.core.launchConfigurationType"
+	           behaviourClass="org.eclipse.jst.server.generic.core.internal.GenericServerBehaviour"
+	           name="%jboss4serverTypeName"
+	           startTimeout="50000"
+		       stopTimeout="15000"
+	           hasConfiguration="false"
+	           launchModes="run,debug,profile">        
+	     </serverType>
+	</extension>
+    <extension point="org.eclipse.wst.server.ui.wizardFragments">
+	     <fragment
+	        id="org.eclipse.jst.server.generic.runtime"
+	        typeIds="org.eclipse.jst.server.generic.runtime.jboss323"
+	        class="org.eclipse.jst.server.generic.ui.internal.GenericServerRuntimeWizardFragment"/>           
+	     <fragment
+	        id="org.eclipse.jst.server.generic.server"
+	        typeIds="org.eclipse.jst.server.generic.jboss323"
+	        class="org.eclipse.jst.server.generic.ui.internal.GenericServerWizardFragment"/>   
+	     <fragment
+	        id="org.eclipse.jst.server.generic.runtime"
+	        typeIds="org.eclipse.jst.server.generic.runtime.jboss4"
+	        class="org.eclipse.jst.server.generic.ui.internal.GenericServerRuntimeWizardFragment"/>           
+	     <fragment
+	        id="org.eclipse.jst.server.generic.server"
+	        typeIds="org.eclipse.jst.server.generic.jboss4"
+	        class="org.eclipse.jst.server.generic.ui.internal.GenericServerWizardFragment"/>   
+	</extension>´
+	
+	<extension point="org.eclipse.wst.server.ui.serverImages">
+		 <image
+	         id="org.eclipse.jst.server.generic.image"
+	         icon="icons/obj16/jboss.gif"
+	         typeIds="org.eclipse.jst.server.generic.runtime.jboss323"/>
+	     <image
+	         id="org.eclipse.jst.server.generic.image"
+	         icon="icons/obj16/jboss.gif"
+	         typeIds="org.eclipse.jst.server.generic.jboss323"/>
+	     <image
+	         id="org.eclipse.jst.server.generic.image"
+	         icon="icons/obj16/jboss.gif"
+	         typeIds="org.eclipse.jst.server.generic.runtime.jboss4"/>
+	     <image
+	         id="org.eclipse.jst.server.generic.image"
+	         icon="icons/obj16/jboss.gif"
+	         typeIds="org.eclipse.jst.server.generic.jboss4"/>
+	</extension>
+	
+   <extension point="org.eclipse.jst.server.core.runtimeClasspathProviders">
+     <runtimeClasspathProvider
+        id="org.eclipse.jst.server.generic.runtimeTarget"
+        runtimeTypeIds="org.eclipse.jst.server.generic.runtime.jboss*"
+        class="org.eclipse.jst.server.generic.core.internal.GenericServerRuntimeTargetHandler"/>
+	</extension>
+	
+   <extension point="org.eclipse.jst.server.generic.core.serverdefinition">
+		<serverdefinition id="org.eclipse.jst.server.generic.runtime.jboss323" definitionfile="/servers/jboss323.serverdef">
+		</serverdefinition>
+		<serverdefinition id="org.eclipse.jst.server.generic.runtime.jboss4" definitionfile="/servers/jboss.serverdef">
+		</serverdefinition>   
+   </extension>
+
+  <extension point="org.eclipse.wst.common.project.facet.core.runtimes">
+     <runtime-component-type
+       id="org.eclipse.jst.server.generic.runtime.jboss"/>
+
+    <runtime-component-version
+       type="org.eclipse.jst.server.generic.runtime.jboss"
+       version="3.2.3"/>
+    <runtime-component-version
+       type="org.eclipse.jst.server.generic.runtime.jboss"
+       version="4.0"/>
+
+    <adapter>
+      <runtime-component
+         id="org.eclipse.jst.server.generic.runtime.jboss"/>
+      <factory
+         class="org.eclipse.jst.server.core.internal.RuntimeClasspathProvider$Factory"/>
+      <type
+         class="org.eclipse.jst.common.project.facet.core.IClasspathProvider"/>
+    </adapter>
+
+    <supported>
+      <runtime-component
+         id="org.eclipse.jst.server.generic.runtime.jboss"
+         version="3.2.3"/>
+      <facet
+         id="jst.web"
+         version="2.2,2.3"/>
+      <facet
+         id="jst.ejb"
+         version="1.1,2.0"/>
+      <facet
+         id="jst.ear"
+         version="1.2,1.3"/>
+      <facet
+         id="jst.connector"
+         version="1.0"/>
+      <facet
+         id="jst.appclient"
+         version="1.2,1.3"/>
+      <facet
+         id="jst.utility"
+         version="1.0"/>
+    </supported>
+
+    <supported>
+      <runtime-component
+         id="org.eclipse.jst.server.generic.runtime.jboss"
+         version="4.0"/>
+      <facet
+         id="jst.web"
+         version="2.2,2.3,2.4"/>
+      <facet
+         id="jst.ejb"
+         version="1.1,2.0,2.1"/>
+      <facet
+         id="jst.ear"
+         version="1.2,1.3,1.4"/>
+      <facet
+         id="jst.connector"
+         version="1.0,1.5"/>
+      <facet
+         id="jst.appclient"
+         version="1.2,1.3,1.4"/>
+      <facet
+         id="jst.utility"
+         version="1.0"/>
+    </supported>
+  
+  </extension>
+  
+  <extension point="org.eclipse.wst.common.project.facet.ui.images">
+    <image runtime-component-type="org.eclipse.jst.server.generic.runtime.jboss"
+      path="icons/obj16/jboss.gif"/>  
+  </extension>
+
+  <extension point="org.eclipse.wst.common.project.facet.core.runtimes">  
+    <adapter>
+      <runtime-component id="org.eclipse.jst.server.generic.runtime.jboss"/>
+      <factory class="org.eclipse.jst.server.ui.internal.RuntimeLabelProvider$Factory"/>
+      <type class="org.eclipse.wst.common.project.facet.ui.IRuntimeComponentLabelProvider"/>
+    </adapter>
+  </extension>
+
+  <extension point="org.eclipse.jst.server.core.runtimeFacetMappings">
+    <runtimeFacetMapping
+      runtimeTypeId="org.eclipse.jst.server.generic.runtime.jboss323"
+      runtime-component="org.eclipse.jst.server.generic.runtime.jboss"
+      version="3.2.3"/>
+    <runtimeFacetMapping
+      runtimeTypeId="org.eclipse.jst.server.generic.runtime.jboss4"
+      runtime-component="org.eclipse.jst.server.generic.runtime.jboss"
+      version="4.0"/>
+  </extension>
+
+</plugin>
diff --git a/plugins/org.eclipse.jst.server.generic.jboss/servers/jboss.serverdef b/plugins/org.eclipse.jst.server.generic.jboss/servers/jboss.serverdef
new file mode 100644
index 0000000..db590ee
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.jboss/servers/jboss.serverdef
@@ -0,0 +1,129 @@
+<?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 4.0" version="v4.0">
+<property id="serverRootDirectory"
+	label="%ApplicationServerDirectory"
+	type="directory"
+	context="runtime"
+	default="/your_server_root/appservers/jboss-4.0.3" />
+<property id="serverAddress"
+	label="%serverAddress"
+	type="string"
+	context="server"
+	default="127.0.0.1" />
+<property id="port"
+	label="%serverPort"
+	type="string"
+	context="server"
+	default="8080" />
+<property id="jndiPort"
+	label="%jndiPort"
+	type="string"
+	context="server"
+	default="1099" />	
+<property id="serverConfig"
+	label="%jboss323serverConfig"
+	type="select"
+	context="server"
+	default="default,all,minimal" />
+
+	<port>
+		<no>${port}</no>
+		<name>Http</name>
+		<protocol>http</protocol>
+	</port>
+
+	<module>
+		<type>jst.web</type>
+		<publishDir>${serverRootDirectory}/server/${serverConfig}/deploy</publishDir>
+		<publisherReference>org.eclipse.jst.server.generic.antpublisher</publisherReference>
+	</module>
+	<module>
+		<type>jst.ejb</type>
+		<publishDir>${serverRootDirectory}/server/${serverConfig}/deploy</publishDir>
+		<publisherReference>org.eclipse.jst.server.generic.antpublisher</publisherReference>
+	</module>
+	<module>
+		<type>jst.ear</type>
+		<publishDir>${serverRootDirectory}/server/${serverConfig}/deploy</publishDir>
+		<publisherReference>org.eclipse.jst.server.generic.antpublisher</publisherReference>
+	</module>
+
+
+	<project>
+		<classpathReference>jboss.project</classpathReference>
+	</project>
+	
+	<start>
+		<mainClass>org.jboss.Main</mainClass>
+		<workingDirectory>${serverRootDirectory}/bin</workingDirectory>
+		<programArguments>-c ${serverConfig}</programArguments>
+		<vmParameters>-Dprogram.name=run.bat -Djava.endorsed.dirs="${serverRootDirectory}/bin/../lib/endorsed" -Xms128m -Xmx512m</vmParameters>
+		<classpathReference>jboss</classpathReference>
+	</start>
+
+	<stop>
+		<mainClass>org.jboss.Shutdown</mainClass>
+		<workingDirectory>${serverRootDirectory}/bin</workingDirectory>
+		<programArguments>-S</programArguments>
+		<vmParameters>-Djboss.boot.loader.name=shutdown.bat</vmParameters>
+		<classpathReference>jboss.shutdown</classpathReference>
+	</stop>
+	<publisher id="org.eclipse.jst.server.generic.antpublisher">
+		<publisherdata>
+			<dataname>build.file</dataname>
+			<datavalue>/buildfiles/jboss323.xml</datavalue>
+		</publisherdata>
+		<publisherdata>
+			<dataname>target.publish.jst.web</dataname>
+			<datavalue>deploy.j2ee.web</datavalue>
+		</publisherdata>
+		<publisherdata>
+			<dataname>target.publish.jst.ejb</dataname>
+			<datavalue>deploy.j2ee.ejb</datavalue>
+		</publisherdata>
+		<publisherdata>
+			<dataname>target.unpublish.jst.web</dataname>
+			<datavalue>undeploy.j2ee.web</datavalue>
+		</publisherdata>
+		<publisherdata>
+			<dataname>target.unpublish.jst.ejb</dataname>
+			<datavalue>undeploy.j2ee.ejb</datavalue>
+		</publisherdata>		
+		<publisherdata>
+			<dataname>target.publish.jst.ear</dataname>
+			<datavalue>deploy.j2ee.ear</datavalue>
+		</publisherdata>
+		<publisherdata>
+			<dataname>target.unpublish.jst.ear</dataname>
+			<datavalue>undeploy.j2ee.ear</datavalue>
+		</publisherdata>				
+	</publisher>
+
+	<classpath id="jboss" >
+		<archive path="${serverRootDirectory}/bin/run.jar" />
+	</classpath>
+	<classpath id="jboss.shutdown" >
+		<archive path="${serverRootDirectory}/bin/shutdown.jar" />
+	</classpath>
+
+	<classpath id="jboss.project" >
+		<archive path="${serverRootDirectory}/client/jboss-j2ee.jar" />
+        <archive path="${serverRootDirectory}/client/jbossall-client.jar" />		
+		<archive path="${serverRootDirectory}/server/default/lib/javax.servlet.jar" />
+		<archive path="${serverRootDirectory}/server/default/lib/javax.servlet.jsp.jar" />
+		<archive path="${serverRootDirectory}/server/default/lib/activation.jar" />
+		<archive path="${serverRootDirectory}/server/default/lib/mail.jar" />
+	</classpath>
+	<jndiConnection>
+		<providerUrl>jnp://${serverAddress}:${jndiPort}</providerUrl>
+		<initialContextFactory>org.jnp.interfaces.NamingContextFactory</initialContextFactory>
+		<jndiProperty>
+			<name></name>
+			<value></value>
+		</jndiProperty>
+	</jndiConnection>
+</tns:ServerRuntime>
\ No newline at end of file
diff --git a/plugins/org.eclipse.jst.server.generic.jboss/servers/jboss323.serverdef b/plugins/org.eclipse.jst.server.generic.jboss/servers/jboss323.serverdef
new file mode 100644
index 0000000..04e5b06
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.jboss/servers/jboss323.serverdef
@@ -0,0 +1,144 @@
+<?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="%ApplicationServerDirectory"
+	type="directory"
+	context="runtime"
+	default="/your_server_root/appservers/jboss-3.2.3" />
+<property id="serverAddress"
+	label="%serverAddress"
+	type="string"
+	context="server"
+	default="127.0.0.1" />
+<property id="port"
+	label="%serverPort"
+	type="string"
+	context="server"
+	default="8080" />
+<property id="jndiPort"
+	label="%jndiPort"
+	type="string"
+	context="server"
+	default="1099" />	
+
+<property id="serverConfig"
+	label="%jboss323serverConfig"
+	type="select"
+	context="server"
+	default="default,all,minimal" />
+
+
+	<port>
+		<no>${port}</no>
+		<name>Http</name>
+		<protocol>http</protocol>
+	</port>
+
+	<module>
+		<type>jst.web</type>
+		<publishDir>${serverRootDirectory}/server/${serverConfig}/deploy</publishDir>
+		<publisherReference>org.eclipse.jst.server.generic.antpublisher</publisherReference>
+	</module>
+	<module>
+		<type>jst.ejb</type>
+		<publishDir>${serverRootDirectory}/server/${serverConfig}/deploy</publishDir>
+		<publisherReference>org.eclipse.jst.server.generic.antpublisher</publisherReference>
+	</module>
+	<module>
+		<type>jst.ear</type>
+		<publishDir>${serverRootDirectory}/server/${serverConfig}/deploy</publishDir>
+		<publisherReference>org.eclipse.jst.server.generic.antpublisher</publisherReference>
+	</module>
+
+	<project>
+		<classpathReference>jboss.project</classpathReference>
+	</project>
+	
+	<start>
+		<mainClass>org.jboss.Main</mainClass>
+		<workingDirectory>${serverRootDirectory}/bin</workingDirectory>
+		<programArguments>-c ${serverConfig}</programArguments>
+		<vmParameters></vmParameters>
+		<classpathReference>jboss</classpathReference>
+	</start>
+
+	<stop>
+		<mainClass>org.jboss.Shutdown</mainClass>
+		<workingDirectory>${serverRootDirectory}/bin</workingDirectory>
+		<programArguments>-S</programArguments>
+		<vmParameters></vmParameters>
+		<classpathReference>jboss</classpathReference>
+	</stop>
+	<publisher id="org.eclipse.jst.server.generic.antpublisher">
+		<publisherdata>
+			<dataname>build.file</dataname>
+			<datavalue>/buildfiles/jboss323.xml</datavalue>
+		</publisherdata>
+		<publisherdata>
+			<dataname>target.publish.jst.web</dataname>
+			<datavalue>deploy.j2ee.web</datavalue>
+		</publisherdata>
+		<publisherdata>
+			<dataname>target.publish.jst.ejb</dataname>
+			<datavalue>deploy.j2ee.ejb</datavalue>
+		</publisherdata>
+		<publisherdata>
+			<dataname>target.unpublish.jst.web</dataname>
+			<datavalue>undeploy.j2ee.web</datavalue>
+		</publisherdata>
+		<publisherdata>
+			<dataname>target.unpublish.jst.ejb</dataname>
+			<datavalue>undeploy.j2ee.ejb</datavalue>
+		</publisherdata>
+		<publisherdata>
+			<dataname>target.publish.jst.ear</dataname>
+			<datavalue>deploy.j2ee.ear</datavalue>
+		</publisherdata>
+		<publisherdata>
+			<dataname>target.unpublish.jst.ear</dataname>
+			<datavalue>undeploy.j2ee.ear</datavalue>
+		</publisherdata>				
+	</publisher>
+
+	<classpath id="jboss" >
+		<archive path="${serverRootDirectory}/bin/run.jar" />
+		<archive path="${serverRootDirectory}/bin/shutdown.jar" />
+		<archive path="${serverRootDirectory}/client/jboss-j2ee.jar" />
+		<archive path="${serverRootDirectory}/server/default/lib/javax.servlet.jar" />
+		<archive path="${serverRootDirectory}/lib/jboss-boot.jar" />
+		<archive path="${serverRootDirectory}/lib/jboss-system.jar" />
+		<archive path="${serverRootDirectory}/lib/jboss-jmx.jar" />
+		<archive path="${serverRootDirectory}/lib/jboss-common.jar" />
+		<archive path="${serverRootDirectory}/lib/concurrent.jar" />
+		<archive path="${serverRootDirectory}/server/default/lib/jboss.jar" />
+		<archive path="${serverRootDirectory}/server/default/lib/jnpserver.jar" />
+		<archive path="${serverRootDirectory}/server/default/lib/jpl-pattern.jar" />
+		<archive path="${serverRootDirectory}/server/default/lib/jpl-util.jar" />
+		<archive path="${serverRootDirectory}/server/default/lib/jboss-transaction.jar" />
+		<archive path="${serverRootDirectory}/server/default/lib/bcel.jar" />
+		<archive path="${serverRootDirectory}/lib/jdom.jar" />
+		<archive path="${serverRootDirectory}/lib/xercesImpl.jar" />
+		<archive path="${serverRootDirectory}/lib/xml-apis.jar" />
+		<archive path="${serverRootDirectory}/lib/gnu-regexp.jar" />
+		<archive path="${serverRootDirectory}/lib/getopt.jar" />
+	</classpath>
+
+	<classpath id="jboss.project" >
+		<archive path="${serverRootDirectory}/client/jboss-j2ee.jar" />
+		<archive path="${serverRootDirectory}/server/default/lib/javax.servlet.jar" />
+		<archive path="${serverRootDirectory}/server/default/lib/activation.jar" />
+		<archive path="${serverRootDirectory}/server/default/lib/mail.jar" />
+	</classpath>
+	<jndiConnection>
+		<providerUrl>jnp://${serverAddress}:${jndiPort}</providerUrl>
+		<initialContextFactory>org.jnp.interfaces.NamingContextFactory</initialContextFactory>
+		<jndiProperty>
+			<name></name>
+			<value></value>
+		</jndiProperty>
+	</jndiConnection>
+</tns:ServerRuntime>
\ No newline at end of file
diff --git a/plugins/org.eclipse.jst.server.generic.jonas/.classpath b/plugins/org.eclipse.jst.server.generic.jonas/.classpath
new file mode 100644
index 0000000..fb0f2c4
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.jonas/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="servers/"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/org.eclipse.jst.server.generic.jonas/.cvsignore b/plugins/org.eclipse.jst.server.generic.jonas/.cvsignore
new file mode 100644
index 0000000..f09c674
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.jonas/.cvsignore
@@ -0,0 +1,3 @@
+bin
+build.xml
+javaCompiler.genericjonas.jar.args
diff --git a/plugins/org.eclipse.jst.server.generic.jonas/.project b/plugins/org.eclipse.jst.server.generic.jonas/.project
new file mode 100644
index 0000000..19d302c
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.jonas/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.jst.server.generic.jonas</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.jonas/META-INF/MANIFEST.MF b/plugins/org.eclipse.jst.server.generic.jonas/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..6458bf8
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.jonas/META-INF/MANIFEST.MF
@@ -0,0 +1,16 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.jst.server.generic.jonas; singleton:=true
+Bundle-Version: 1.5.0.qualifier
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Require-Bundle: org.eclipse.jst.server.core;bundle-version="[1.0.102,1.1.0)",
+ org.eclipse.jst.server.generic.core;bundle-version="[1.0.100,1.1.0)",
+ org.eclipse.jst.server.generic.ui;bundle-version="[1.0.100,1.1.0)",
+ org.eclipse.jst.server.ui;bundle-version="[1.0.102,1.1.0)",
+ org.eclipse.jst.common.project.facet.core;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.wst.common.project.facet.core;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.wst.common.project.facet.ui;bundle-version="[1.1.0,1.2.0)"
+Eclipse-LazyStart: true
+Bundle-ClassPath: genericjonas.jar
diff --git a/plugins/org.eclipse.jst.server.generic.jonas/about.html b/plugins/org.eclipse.jst.server.generic.jonas/about.html
new file mode 100644
index 0000000..4ec5989
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.jonas/about.html
@@ -0,0 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<HTML>
+
+<head>
+<title>About</title>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
+</head>
+
+<BODY lang="EN-US">
+
+<H3>About This Content</H3>
+
+<P>May 2, 2006</P>
+
+<H3>License</H3>
+
+<P>The Eclipse Foundation makes available all content in this plug-in 
+("Content"). Unless otherwise indicated below, the Content is provided to you 
+under the terms and conditions of the Eclipse Public License Version 1.0 
+("EPL"). A copy of the EPL is available at
+<A href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/org/documents/epl-v10.php</A>. 
+For purposes of the EPL, "Program" will mean the Content.</P>
+
+<P>If you did not receive this Content directly from the Eclipse Foundation, the 
+Content is being redistributed by another party ("Redistributor") and different 
+terms and conditions may apply to your use of any object code in the Content. 
+Check the Redistributor’s license that was provided with the Content. If no such 
+license exists, contact the Redistributor. Unless otherwise indicated below, the 
+terms and conditions of the EPL still apply to any source code in the Content 
+and such source code may be obtained at
+<A href="http://www.eclipse.org/">http://www.eclipse.org/</A>.</P>
+
+</BODY>
+</HTML>
diff --git a/plugins/org.eclipse.jst.server.generic.jonas/build.properties b/plugins/org.eclipse.jst.server.generic.jonas/build.properties
new file mode 100644
index 0000000..cb99b1e
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.jonas/build.properties
@@ -0,0 +1,11 @@
+bin.includes = META-INF/,\
+               icons/,\
+               plugin.xml,\
+               about.html,\
+               plugin.properties,\
+               servers/,\
+               buildfiles/,\
+               genericjonas.jar
+src.includes = build.properties
+jars.compile.order = genericjonas.jar
+source.genericjonas.jar = servers/
diff --git a/plugins/org.eclipse.jst.server.generic.jonas/buildfiles/jonas.xml b/plugins/org.eclipse.jst.server.generic.jonas/buildfiles/jonas.xml
new file mode 100644
index 0000000..df582a1
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.jonas/buildfiles/jonas.xml
@@ -0,0 +1,214 @@
+<project name="deployextension"  default="deploy.j2ee.web"  basedir=".">
+
+	<property name="jonas.root" value="${jonasRoot}"/>
+	<property name="jonas.base" value="${jonasBase}"/>
+	<property name="pause" value="10"/>
+	
+	<path id="base.classpath">
+	    <!-- CLASSPATH is added for runtest target -->
+	    <fileset dir="${jonas.root}/lib">
+	      <include name="**/*.jar"/>
+	      <exclude name="**/ow_jonas_bootstrap.jar"/>
+	    </fileset>
+	</path>				
+	<path id="toolpath">
+		<pathelement path="${jonas.base}/conf;${jonas.root}/lib/common/ow_jonas_bootstrap.jar" />
+	</path>
+
+	<target name="deploy.j2ee.web">
+		<antcall target="jonas-web-undeploy" />
+		<jar destfile="${project.working.dir}/${module.name}.war"> 
+			<zipfileset dir="${module.dir}">
+				<include name="**/*.*"/>
+				<exclude name="**/*.war"/>
+			</zipfileset>
+		</jar>
+		<move file="${project.working.dir}/${module.name}.war" todir="${server.publish.dir}"/>
+		<antcall target="jonas-web-deploy" />
+	</target>
+	
+	<target name="deploy.j2ee.ejb">
+		<antcall target="jonas-ejb-undeploy" />
+		<jar destfile="${project.working.dir}/${module.name}.jar"> 
+			<zipfileset dir="${module.dir}">
+	        	<include name="**/*.*"/>
+	       		<exclude name="**/*.java"/>
+			</zipfileset>
+		</jar>
+  		<move file="${project.working.dir}/${module.name}.jar" todir="${server.publish.dir}"/>
+		<antcall target="jonas-ejb-deploy" />
+	</target>
+	
+	
+	
+	<target name="undeploy.j2ee.web">
+		<delete file="${server.publish.dir}/${module.name}.war"> </delete>
+	</target>
+	<target name="undeploy.j2ee.ejb">
+		<delete file="${server.publish.dir}/${module.name}.jar"> </delete>
+	</target>	
+
+	<target name="jonas-ejb-deploy" depends="jonas-jar">
+		<java classname="org.objectweb.jonas.server.Bootstrap" failonerror="false" fork="true" classpathref="toolpath">
+			<arg value="org.objectweb.jonas.adm.JonasAdmin" />
+			<arg value="-a" />
+			<arg value="${server.publish.dir}/${module.name}.jar" />
+			<jvmarg value="-Dinstall.root=${jonas.root}" />
+			<jvmarg value="-Djonas.base=${jonas.base}" />
+			<jvmarg value="-Djava.security.policy=${jonas.base}/conf/java.policy" />
+			<jvmarg value="-Djonas.classpath=" />
+			<jvmarg value="-Djonas.default.classloader=true" />
+			<jvmarg value="-Djavax.rmi.CORBA.PortableRemoteObjectClass=org.objectweb.carol.rmi.multi.MultiPRODelegate" />
+			<jvmarg value="-Djava.naming.factory.initial=org.objectweb.carol.jndi.spi.MultiOrbInitialContextFactory" />
+			<jvmarg value="-Djava.security.auth.login.config=${jonas.base}/conf/jaas.config" />
+			<jvmarg value="-Djava.rmi.server.RMIClassLoaderSpi=org.objectweb.jonas.server.RemoteClassLoaderSpi" />
+		</java>
+	</target>
+	<target name="jonas-ejb-undeploy">
+		<java classname="org.objectweb.jonas.server.Bootstrap" fork="true" failonerror="false" classpathref="toolpath">
+			<arg value="org.objectweb.jonas.adm.JonasAdmin" />
+			<arg value="-r" />
+			<arg value="${server.publish.dir}/${module.name}.jar" />
+			<jvmarg value="-Dinstall.root=${jonas.root}" />
+			<jvmarg value="-Djonas.base=${jonas.base}" />
+			<jvmarg value="-Djava.security.policy=${jonas.base}/conf/java.policy" />
+			<jvmarg value="-Djonas.classpath=" />
+			<jvmarg value="-Djonas.default.classloader=true" />
+			<jvmarg value="-Djavax.rmi.CORBA.PortableRemoteObjectClass=org.objectweb.carol.rmi.multi.MultiPRODelegate" />
+			<jvmarg value="-Djava.naming.factory.initial=org.objectweb.carol.jndi.spi.MultiOrbInitialContextFactory" />
+			<jvmarg value="-Djava.security.auth.login.config=${jonas.base}/conf/jaas.config" />
+			<jvmarg value="-Djava.rmi.server.RMIClassLoaderSpi=org.objectweb.jonas.server.RemoteClassLoaderSpi" />
+		</java>
+	</target>
+
+	<target name="jonas-web-deploy">
+
+		<java classname="org.objectweb.jonas.server.Bootstrap" fork="true" failonerror="false" classpathref="toolpath">
+			<arg value="org.objectweb.jonas.adm.JonasAdmin" />
+			<arg value="-a" />
+			<arg value="${server.publish.dir}/${module.name}.war" />
+			<jvmarg value="-Dinstall.root=${jonas.root}" />
+			<jvmarg value="-Djonas.base=${jonas.base}" />
+			<jvmarg value="-Djava.security.policy=${jonas.base}/conf/java.policy" />
+			<jvmarg value="-Djonas.classpath=" />
+			<jvmarg value="-Djonas.default.classloader=true" />
+			<jvmarg value="-Djavax.rmi.CORBA.PortableRemoteObjectClass=org.objectweb.carol.rmi.multi.MultiPRODelegate" />
+			<jvmarg value="-Djava.naming.factory.initial=org.objectweb.carol.jndi.spi.MultiOrbInitialContextFactory" />
+			<jvmarg value="-Djava.security.auth.login.config=${jonas.base}/conf/jaas.config" />
+			<jvmarg value="-Djava.rmi.server.RMIClassLoaderSpi=org.objectweb.jonas.server.RemoteClassLoaderSpi" />
+		</java>
+	</target>
+	<target name="jonas-web-undeploy">
+		<java classname="org.objectweb.jonas.server.Bootstrap" fork="true" failonerror="false" classpathref="toolpath">
+			<arg value="org.objectweb.jonas.adm.JonasAdmin" />
+			<arg value="-r" />
+			<arg value="${server.publish.dir}/${module.name}.war" />
+			<jvmarg value="-Dinstall.root=${jonas.root}" />
+			<jvmarg value="-Djonas.base=${jonas.base}" />
+			<jvmarg value="-Djava.security.policy=${jonas.base}/conf/java.policy" />
+			<jvmarg value="-Djonas.classpath=" />
+			<jvmarg value="-Djonas.default.classloader=true" />
+			<jvmarg value="-Djavax.rmi.CORBA.PortableRemoteObjectClass=org.objectweb.carol.rmi.multi.MultiPRODelegate" />
+			<jvmarg value="-Djava.naming.factory.initial=org.objectweb.carol.jndi.spi.MultiOrbInitialContextFactory" />
+			<jvmarg value="-Djava.security.auth.login.config=${jonas.base}/conf/jaas.config" />
+			<jvmarg value="-Djava.rmi.server.RMIClassLoaderSpi=org.objectweb.jonas.server.RemoteClassLoaderSpi" />
+		</java>
+	</target>
+	
+	<target name="jonas-ear-deploy">
+		<java classname="org.objectweb.jonas.server.Bootstrap" fork="true" failonerror="false" classpathref="toolpath">
+			<arg value="org.objectweb.jonas.adm.JonasAdmin" />
+			<arg value="-a" />
+			<arg value="${server.publish.dir}/${module.name}.ear" />
+			<jvmarg value="-Dinstall.root=${jonas.root}" />
+			<jvmarg value="-Djonas.base=${jonas.base}" />
+			<jvmarg value="-Djava.security.policy=${jonas.base}/conf/java.policy" />
+			<jvmarg value="-Djonas.classpath=" />
+			<jvmarg value="-Djonas.default.classloader=true" />
+			<jvmarg value="-Djavax.rmi.CORBA.PortableRemoteObjectClass=org.objectweb.carol.rmi.multi.MultiPRODelegate" />
+			<jvmarg value="-Djava.naming.factory.initial=org.objectweb.carol.jndi.spi.MultiOrbInitialContextFactory" />
+			<jvmarg value="-Djava.security.auth.login.config=${jonas.base}/conf/jaas.config" />
+			<jvmarg value="-Djava.rmi.server.RMIClassLoaderSpi=org.objectweb.jonas.server.RemoteClassLoaderSpi" />
+		</java>
+	</target>
+
+	<target name="jonas-ear-undeploy">
+		<java classname="org.objectweb.jonas.server.Bootstrap" fork="true" failonerror="false" classpathref="toolpath">
+			<arg value="org.objectweb.jonas.adm.JonasAdmin" />
+			<arg value="-r" />
+			<arg value="${server.publish.dir}/${module.name}.ear" />
+			<jvmarg value="-Dinstall.root=${jonas.root}" />
+			<jvmarg value="-Djonas.base=${jonas.base}" />
+			<jvmarg value="-Djava.security.policy=${jonas.base}/conf/java.policy" />
+			<jvmarg value="-Djonas.classpath=" />
+			<jvmarg value="-Djonas.default.classloader=true" />
+			<jvmarg value="-Djavax.rmi.CORBA.PortableRemoteObjectClass=org.objectweb.carol.rmi.multi.MultiPRODelegate" />
+			<jvmarg value="-Djava.naming.factory.initial=org.objectweb.carol.jndi.spi.MultiOrbInitialContextFactory" />
+			<jvmarg value="-Djava.security.auth.login.config=${jonas.base}/conf/jaas.config" />
+			<jvmarg value="-Djava.rmi.server.RMIClassLoaderSpi=org.objectweb.jonas.server.RemoteClassLoaderSpi" />
+		</java>
+	</target>
+	
+	
+	
+	<target name="undeploy.j2ee.ear">
+		<delete file="${server.publish.dir}/${module.name}.ear"> </delete>
+	</target>	
+	
+	<target name="deploy.j2ee.ear" depends="-checkJ2EEDeploy" unless="notNeeded">
+		<antcall target="jonas-ear-undeploy" />
+		<jar destfile="${project.working.dir}/${module.name}.ear"> 
+			<zipfileset dir="${module.dir}">
+	        	<include name="**/*.*"/>
+	       		<exclude name="**/*.java"/>
+			</zipfileset>
+		</jar>
+  		<move file="${project.working.dir}/${module.name}.ear" todir="${server.publish.dir}"/>
+		<antcall target="jonas-ear-deploy" />
+		<sleep seconds="${pause}"/>
+	</target>
+	
+	<target name="-checkJ2EEDeploy">
+		<uptodate property="notNeeded" targetfile="${server.publish.dir}/${module.name}.ear">
+			<srcfiles dir="${module.dir}">
+				<include name="**/*.*"/>
+		   		<exclude name="**/*.java"/>
+			</srcfiles>
+		</uptodate>
+	</target>
+	
+	
+	  <target name="jonas-jar"  >
+		<delete dir="${server.publish.dir}/${module.name}_jonas" failonerror="false" />
+	     
+		<unjar src="${server.publish.dir}/${module.name}.jar" dest="${server.publish.dir}/${module.name}_jonas"/> 
+		<delete file="${server.publish.dir}/${module.name}.jar" failonerror="false"  />
+
+		 <taskdef name="jonasEjbJjar"
+		    classname="org.objectweb.jonas.ant.EjbJar"
+		    classpathref="base.classpath" />
+
+	  	<jonasEjbJjar basejarname="${module.name}"
+		    srcdir="${server.publish.dir}/${module.name}_jonas"
+		    descriptordir="${server.publish.dir}/${module.name}_jonas/META-INF" 
+		    dependency="full" >
+	      <include name="**/ejb-jar.xml"/>
+	      <dtd publicId="-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN"
+		   location="${jonas.root}/xml/ejb-jar_2_0.dtd" />
+	      <support dir="${server.publish.dir}/${module.name}_jonas">
+		  	<include name="**/*.*"/>
+		  	<exclude name="**/MANIFEST.MF"/>
+		  	<exclude name="**/ejb-jar.xml"/>
+		  	<exclude name="**/jonas-ejb-jar.xml"/>
+	      </support>
+	      <jonas destdir="${server.publish.dir}"
+	         classpath="${base.classpath}:${server.publish.dir}/${module.name}_jonas" 
+		     jonasRoot="${jonas.root}" 
+		     mappernames=""
+	         protocols="jrmp,jeremie,iiop"
+		     keepgenerated="false" />
+	    </jonasEjbJjar>
+		<delete dir="${server.publish.dir}/${module.name}_jonas" failonerror="false" /> 
+	 </target>
+
+</project>
\ No newline at end of file
diff --git a/plugins/org.eclipse.jst.server.generic.jonas/icons/obj16/jonas.gif b/plugins/org.eclipse.jst.server.generic.jonas/icons/obj16/jonas.gif
new file mode 100644
index 0000000..b51ae39
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.jonas/icons/obj16/jonas.gif
Binary files differ
diff --git a/plugins/org.eclipse.jst.server.generic.jonas/plugin.properties b/plugins/org.eclipse.jst.server.generic.jonas/plugin.properties
new file mode 100644
index 0000000..8c5467e
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.jonas/plugin.properties
Binary files differ
diff --git a/plugins/org.eclipse.jst.server.generic.jonas/plugin.xml b/plugins/org.eclipse.jst.server.generic.jonas/plugin.xml
new file mode 100644
index 0000000..c84787d
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.jonas/plugin.xml
@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+<plugin>
+   <extension point="org.eclipse.wst.server.core.runtimeTypes">
+   
+    <runtimeType
+       id="org.eclipse.jst.server.generic.runtime.jonas4"
+       name="%jonas4runtimeTypeName"
+       description="%jonas4runtimeTypeDescription"
+       vendor="%jonasCategory"
+       version="4"
+       class="org.eclipse.jst.server.generic.core.internal.GenericServerRuntime"
+       >
+       <moduleType
+         types="jst.web"
+         versions="2.2, 2.3, 2.4"/>
+      <moduleType
+         types="jst.ejb"
+         versions="1.1, 2.0, 2.1"/>
+      <moduleType
+         types="jst.ear"
+         versions="1.2, 1.3, 1.4"/>
+      <moduleType
+         types="jst.connector"
+         versions="1.0, 1.5"/>
+       <moduleType
+         types="jst.utility"
+         versions="1.0"/>
+    </runtimeType>
+    
+	</extension>
+
+<extension point="org.eclipse.wst.server.core.serverTypes">
+     <serverType
+           behaviourClass="org.eclipse.jst.server.generic.core.internal.GenericServerBehaviour"
+           class="org.eclipse.jst.server.generic.core.internal.GenericServer"
+           description="%jonas4serverTypeDescription"
+           hasConfiguration="false"
+           id="org.eclipse.jst.server.generic.jonas4"
+           initialState="stopped"
+           launchConfigId="org.eclipse.jst.server.generic.core.launchConfigurationType"
+           launchModes="run,debug,profile"
+           name="%jonas4serverTypeName"
+           runtime="true"
+           runtimeTypeId="org.eclipse.jst.server.generic.runtime.jonas4"
+           startBeforePublish="true"
+           startTimeout="50000"
+           stopTimeout="15000"
+           supportsRemoteHosts="false">
+     </serverType>    
+    
+	</extension>
+<!-- UI Components-->
+    <extension point="org.eclipse.wst.server.ui.wizardFragments">
+	 <fragment
+        id="org.eclipse.jst.server.generic.runtime"
+        typeIds="org.eclipse.jst.server.generic.runtime.jonas4"
+        class="org.eclipse.jst.server.generic.ui.internal.GenericServerRuntimeWizardFragment"/>           
+     <fragment
+        id="org.eclipse.jst.server.generic.server"
+        typeIds="org.eclipse.jst.server.generic.jonas4"
+        class="org.eclipse.jst.server.generic.ui.internal.GenericServerWizardFragment"/>   
+  </extension>
+    <extension point="org.eclipse.wst.server.ui.serverImages">
+     <image
+         id="org.eclipse.jst.server.generic.image"
+         icon="icons/obj16/jonas.gif"
+         typeIds="org.eclipse.jst.server.generic.runtime.jonas4"/>
+     <image
+         id="org.eclipse.jst.server.generic.image"
+         icon="icons/obj16/jonas.gif"
+         typeIds="org.eclipse.jst.server.generic.jonas4"/>
+	</extension>
+
+<!-- Define Classpath provider for all generics -->   
+   <extension point="org.eclipse.jst.server.core.runtimeClasspathProviders">
+     <runtimeClasspathProvider
+        id="org.eclipse.jst.server.generic.runtimeTarget"
+        runtimeTypeIds="org.eclipse.jst.server.generic.runtime.*"
+        class="org.eclipse.jst.server.generic.core.internal.GenericServerRuntimeTargetHandler"/>
+	</extension>
+
+<!-- Server type definitions -->
+   <extension point="org.eclipse.jst.server.generic.core.serverdefinition">
+		<serverdefinition id="org.eclipse.jst.server.generic.runtime.jonas4" definitionfile="/servers/jonas.serverdef">
+		</serverdefinition>
+  </extension>
+
+
+  <extension point="org.eclipse.wst.common.project.facet.core.runtimes">    
+    <runtime-component-type
+       id="org.eclipse.jst.server.generic.runtime.jonas"/>
+
+    <runtime-component-version
+       type="org.eclipse.jst.server.generic.runtime.jonas"
+       version="4.0"/>
+
+    <adapter>
+      <runtime-component
+         id="org.eclipse.jst.server.generic.runtime.jonas"/>
+      <factory
+         class="org.eclipse.jst.server.core.internal.RuntimeClasspathProvider$Factory"/>
+      <type
+         class="org.eclipse.jst.common.project.facet.core.IClasspathProvider"/>
+    </adapter>
+
+    <supported>
+      <runtime-component
+         id="org.eclipse.jst.server.generic.runtime.jonas"
+         version="4.0"/>
+      <facet
+         id="jst.web"
+         version="2.2,2.3,2.4"/>
+      <facet
+         id="jst.ejb"
+         version="1.1,2.0,2.1"/>
+      <facet
+         id="jst.ear"
+         version="1.2,1.3,1.4"/>
+      <facet
+         id="jst.connector"
+         version="1.0,1.5"/>
+      <facet
+         id="jst.appclient"
+         version="1.2,1.3,1.4"/>
+      <facet
+         id="jst.utility"
+         version="1.0"/>
+    </supported>
+
+  </extension>
+
+  <extension point="org.eclipse.wst.common.project.facet.ui.images">
+    <image runtime-component-type="org.eclipse.jst.server.generic.runtime.jonas"
+      path="icons/obj16/jonas.gif"/>
+  </extension>
+
+  <extension point="org.eclipse.wst.common.project.facet.core.runtimes">
+    <adapter>
+      <runtime-component id="org.eclipse.jst.server.generic.runtime.jonas"/>
+      <factory class="org.eclipse.jst.server.ui.internal.RuntimeLabelProvider$Factory"/>
+      <type class="org.eclipse.wst.common.project.facet.ui.IRuntimeComponentLabelProvider"/>
+    </adapter>
+  </extension>
+  
+  <extension point="org.eclipse.jst.server.core.runtimeFacetMappings">
+    <runtimeFacetMapping
+      runtimeTypeId="org.eclipse.jst.server.generic.runtime.jonas"
+      runtime-component="org.eclipse.jst.server.generic.runtime.jonas"
+      version="4.0"/>
+  </extension>
+  
+</plugin>
\ No newline at end of file
diff --git a/plugins/org.eclipse.jst.server.generic.jonas/servers/jonas.serverdef b/plugins/org.eclipse.jst.server.generic.jonas/servers/jonas.serverdef
new file mode 100644
index 0000000..e082a38
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.jonas/servers/jonas.serverdef
@@ -0,0 +1,130 @@
+<?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.x" version="v4.x">
+	<property id="jonasRoot"
+		label="%jonasRoot"
+		type="directory"
+		context="runtime"
+		default="/your_server_root/JOnAS-4.x" />
+	<property id="jonasBase"
+		label="%jonasBase"
+		type="directory"
+		context="runtime"
+		default="/your_server_root/JOnAS-4.x" />
+	<property id="serverAddress"
+		label="%serverAddress"
+		type="string"
+		context="server"
+		default="127.0.0.1" />
+	<property id="port"
+		label="%serverPort"
+		type="string"
+		context="server"
+		default="9000" />
+	<property id="protocols"
+		label="%jonasEjbProtocols"
+		type="string"
+		context="server"
+		default="jrmp" />
+	<property id="mappernames"
+		label="%jonasmappernames"
+		type="string"
+		context="server"
+		default="" />
+
+	<port>
+		<no>${port}</no>
+		<name>Http</name>
+		<protocol>http</protocol>
+	</port>
+
+	<module>
+		<type>jst.web</type>
+		<publishDir>${jonasBase}/webapps/autoload</publishDir>
+		<publisherReference>org.eclipse.jst.server.generic.antpublisher</publisherReference>
+	</module>
+
+	<module>
+		<type>jst.ejb</type>
+		<publishDir>${jonasBase}/ejbjars/autoload</publishDir>
+		<publisherReference>org.eclipse.jst.server.generic.antpublisher</publisherReference>
+	</module>
+	<module>
+		<type>jst.ear</type>
+		<publishDir>${jonasBase}/apps/autoload</publishDir>
+		<publisherReference>org.eclipse.jst.server.generic.antpublisher</publisherReference>
+	</module>
+
+	<project>
+		<classpathReference>jonas.project</classpathReference>
+	</project>
+	
+	<start>
+		<mainClass>org.objectweb.jonas.server.Bootstrap</mainClass>
+		<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>
+		<mainClass>org.objectweb.jonas.server.Bootstrap</mainClass>
+		<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="org.eclipse.jst.server.generic.antpublisher">
+		<publisherdata>
+			<dataname>build.file</dataname>
+			<datavalue>/buildfiles/jonas.xml</datavalue>
+		</publisherdata>
+		<publisherdata>
+			<dataname>target.publish.jst.web</dataname>
+			<datavalue>deploy.j2ee.web</datavalue>
+		</publisherdata>
+		<publisherdata>
+			<dataname>target.publish.jst.ejb</dataname>
+			<datavalue>deploy.j2ee.ejb</datavalue>
+		</publisherdata>
+		<publisherdata>
+			<dataname>target.unpublish.jst.web</dataname>
+			<datavalue>undeploy.j2ee.web</datavalue>
+		</publisherdata>
+		<publisherdata>
+			<dataname>target.unpublish.jst.ejb</dataname>
+			<datavalue>undeploy.j2ee.ejb</datavalue>
+		</publisherdata>
+		<publisherdata>
+			<dataname>target.publish.jst.ear</dataname>
+			<datavalue>deploy.j2ee.ear</datavalue>
+		</publisherdata>
+		<publisherdata>
+			<dataname>target.unpublish.jst.ear</dataname>
+			<datavalue>undeploy.j2ee.ear</datavalue>
+		</publisherdata>			
+	</publisher>
+
+	<classpath id="jonas">
+		<archive path="${jonasRoot}/lib/common/ow_jonas_bootstrap.jar" />
+		<archive path="${jonasRoot}/conf" />
+	</classpath>
+
+	<classpath id="jonas.project">
+		<archive path="${jonasRoot}/lib/common/ow_jonas_bootstrap.jar" />
+		<archive path="${jonasRoot}/lib/commons/j2ee/ejb-2_1-api.jar" />
+		<archive path="${jonasRoot}/lib/commons/j2ee/servlet-2_4.jar" />
+		<archive path="${jonasRoot}/lib/commons/j2ee/jms.jar" />
+	</classpath>
+	<jndiConnection>
+		<providerUrl>iiop://${serverAddress}:2001</providerUrl>
+		<initialContextFactory>org.objectweb.carol.jndi.spi.MultiOrbInitialContextFactory</initialContextFactory>
+		<jndiProperty>
+			<name></name>
+			<value></value>
+		</jndiProperty>
+	</jndiConnection>
+</tns:ServerRuntime>
\ No newline at end of file
diff --git a/plugins/org.eclipse.jst.server.generic.oc4j/.classpath b/plugins/org.eclipse.jst.server.generic.oc4j/.classpath
new file mode 100644
index 0000000..fb0f2c4
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.oc4j/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="servers/"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/org.eclipse.jst.server.generic.oc4j/.cvsignore b/plugins/org.eclipse.jst.server.generic.oc4j/.cvsignore
new file mode 100644
index 0000000..fc5e414
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.oc4j/.cvsignore
@@ -0,0 +1,3 @@
+bin
+build.xml
+javaCompiler.genericoc4j.jar.args
diff --git a/plugins/org.eclipse.jst.server.generic.oc4j/.project b/plugins/org.eclipse.jst.server.generic.oc4j/.project
new file mode 100644
index 0000000..cdbf29f
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.oc4j/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.jst.server.generic.oc4j</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.oc4j/META-INF/MANIFEST.MF b/plugins/org.eclipse.jst.server.generic.oc4j/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..56a49f2
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.oc4j/META-INF/MANIFEST.MF
@@ -0,0 +1,16 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.jst.server.generic.oc4j;singleton:=true
+Bundle-Version: 1.5.0.qualifier
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Require-Bundle: org.eclipse.jst.server.generic.core;bundle-version="[1.0.100,1.1.0)",
+ org.eclipse.jst.server.generic.ui;bundle-version="[1.0.100,1.1.0)",
+ org.eclipse.jst.server.core;bundle-version="[1.0.102,1.1.0)",
+ org.eclipse.jst.server.ui;bundle-version="[1.0.102,1.1.0)",
+ org.eclipse.jst.common.project.facet.core;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.wst.common.project.facet.core;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.wst.common.project.facet.ui;bundle-version="[1.1.0,1.2.0)"
+Eclipse-LazyStart: true
+Bundle-ClassPath: genericoc4j.jar
diff --git a/plugins/org.eclipse.jst.server.generic.oc4j/about.html b/plugins/org.eclipse.jst.server.generic.oc4j/about.html
new file mode 100644
index 0000000..4ec5989
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.oc4j/about.html
@@ -0,0 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<HTML>
+
+<head>
+<title>About</title>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
+</head>
+
+<BODY lang="EN-US">
+
+<H3>About This Content</H3>
+
+<P>May 2, 2006</P>
+
+<H3>License</H3>
+
+<P>The Eclipse Foundation makes available all content in this plug-in 
+("Content"). Unless otherwise indicated below, the Content is provided to you 
+under the terms and conditions of the Eclipse Public License Version 1.0 
+("EPL"). A copy of the EPL is available at
+<A href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/org/documents/epl-v10.php</A>. 
+For purposes of the EPL, "Program" will mean the Content.</P>
+
+<P>If you did not receive this Content directly from the Eclipse Foundation, the 
+Content is being redistributed by another party ("Redistributor") and different 
+terms and conditions may apply to your use of any object code in the Content. 
+Check the Redistributor’s license that was provided with the Content. If no such 
+license exists, contact the Redistributor. Unless otherwise indicated below, the 
+terms and conditions of the EPL still apply to any source code in the Content 
+and such source code may be obtained at
+<A href="http://www.eclipse.org/">http://www.eclipse.org/</A>.</P>
+
+</BODY>
+</HTML>
diff --git a/plugins/org.eclipse.jst.server.generic.oc4j/build.properties b/plugins/org.eclipse.jst.server.generic.oc4j/build.properties
new file mode 100644
index 0000000..35f52a0
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.oc4j/build.properties
@@ -0,0 +1,11 @@
+bin.includes = META-INF/,\
+               plugin.xml,\
+               about.html,\
+               icons/,\
+               buildfiles/,\
+               plugin.properties,\
+               servers/,\
+               genericoc4j.jar
+src.includes = build.properties
+source.genericoc4j.jar = servers/
+jars.compile.order = genericoc4j.jar
diff --git a/plugins/org.eclipse.jst.server.generic.oc4j/buildfiles/oracle.10.1.3.xml b/plugins/org.eclipse.jst.server.generic.oc4j/buildfiles/oracle.10.1.3.xml
new file mode 100644
index 0000000..33e460c
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.oc4j/buildfiles/oracle.10.1.3.xml
@@ -0,0 +1,108 @@
+<project name="publish"  basedir="." xmlns:oracle="antlib:oracle">
+	<import file="oracle/ant-oracle.xml"/>
+		
+	<!-- Only localhost is currently supported by this implementation -->
+	<property name="oc4j.host" value="localhost"/> 
+
+	<property name="deployer.uri" value="deployer:oc4j:${oc4j.host}:${oc4j.admin.port}" />
+	
+	<target name="check.skip.web.deploy">
+		<uptodate property="skip.deploy" targetfile="${server.publish.dir}/${module.name}.war">
+			<srcfiles dir="${module.dir}">
+				<include name="**/*.*"/>
+				<exclude name="**/*.war"/>
+				<exclude name="**/*.java"/>
+			</srcfiles>
+		</uptodate>
+	</target>
+	
+	<target name="check.skip.ejb.deploy">
+		<uptodate property="skip.deploy" targetfile="${server.publish.dir}/${module.name}.jar">
+			<srcfiles dir="${module.dir}">
+				<include name="**/*.*"/>
+				<exclude name="**/*.java"/>
+			</srcfiles>
+		</uptodate>
+	</target>
+	
+	<target name="check.skip.ear.deploy">
+		<uptodate property="skip.deploy" targetfile="${server.publish.dir}/${module.name}.ear">
+			<srcfiles dir="${module.dir}">
+				<include name="**/*.*"/>
+				<exclude name="**/*.java"/>
+			</srcfiles>
+		</uptodate>
+	</target>
+	
+	<target name="package.module.web">
+		<jar destfile="${server.publish.dir}/${module.name}.war"> 
+			<zipfileset dir="${module.dir}">
+				<include name="**/*.*"/>
+				<exclude name="**/*.war"/>
+				<exclude name="**/*.java"/>
+			</zipfileset>
+		</jar>
+	</target>
+		
+	<target name="package.module.ejb">
+		<jar destfile="${server.publish.dir}/${module.name}.jar"> 
+			<zipfileset dir="${module.dir}">
+				<include name="**/*.*"/>
+				<exclude name="**/*.java"/>
+			</zipfileset>
+		</jar>
+	</target>
+		
+	<target name="package.module.ear">
+		<jar destfile="${server.publish.dir}/${module.name}.ear"> 
+			<zipfileset dir="${module.dir}">
+				<include name="**/*.*"/>
+				<exclude name="**/*.java"/>
+			</zipfileset>
+		</jar>
+	</target>	
+	
+	<target name="deploy.j2ee.web" depends="check.skip.web.deploy" unless="skip.deploy">
+		<antcall target="package.module.web"/>
+		<oracle:deploy
+			deployerUri="${deployer.uri}" 
+			userId="${oc4j.admin.user}"
+			password="${oc4j.admin.password}"
+			file="${server.publish.dir}/${module.name}.war"
+			deploymentName="${module.name}"
+			contextRoot="${module.name}"
+			bindAllWebApps="${oc4j.bind.website}"/>
+	</target>
+	
+	<target name="deploy.j2ee.ejb" depends="check.skip.ejb.deploy" unless="skip.deploy" >
+		<antcall target="package.module.ejb"/>
+		<oracle:deploy
+			deployerUri="${deployer.uri}" 
+			userId="${oc4j.admin.user}"
+			password="${oc4j.admin.password}"
+			file="${server.publish.dir}/${module.name}.jar"
+			deploymentName="${module.name}"
+			bindAllWebApps="${oc4j.bind.website}"/>
+	</target>
+	
+	<target name="deploy.j2ee.ear" depends="check.skip.ear.deploy" unless="skip.deploy">
+		<antcall target="package.module.ear"/>
+		
+		<oracle:deploy
+			deployerUri="${deployer.uri}" 
+			userId="${oc4j.admin.user}"
+			password="${oc4j.admin.password}"			
+			file="${server.publish.dir}/${module.name}.ear"
+			deploymentName="${module.name}"
+			bindAllWebApps="${oc4j.bind.website}"/>
+	</target>
+	
+	<target name="undeploy.j2ee.module">
+		<oracle:undeploy
+			deployerUri="${deployer.uri}"
+			userId="${oc4j.admin.user}"
+			password="${oc4j.admin.password}"
+			deploymentName="${module.name}"/>
+	</target>
+	
+</project>
diff --git a/plugins/org.eclipse.jst.server.generic.oc4j/buildfiles/oracle/ant-oracle.1013dp4.xml b/plugins/org.eclipse.jst.server.generic.oc4j/buildfiles/oracle/ant-oracle.1013dp4.xml
new file mode 100644
index 0000000..cfe8599
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.oc4j/buildfiles/oracle/ant-oracle.1013dp4.xml
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<project name="anttasks">
+
+    <!--This file has been modified for use by the Oracle Eclipse WTP plugin. 	-->
+    
+    <property environment="env"/>     
+	
+    <property name="J2EE_HOME" value="${OC4J_HOME}"/>
+    <property name="ORACLE_HOME" value="${OC4J_HOME}/../.."/>
+    <property name="JAVA_HOME" value="${java.home}"/>
+    <property name="OJDK_HOME" value="${ORACLE_HOME}/jdk"/>
+    <property name="TOPLINK_HOME" value="${env.TOPLINK_HOME}"/>
+
+    <!-- If your OS does not support the environment variable
+         Comment out the 3 lines above, and un-comment the 2
+         below. -->
+    <!--
+    <property name="JAVA_HOME" value="d:\Program Files\jdk131"/>
+    <property name="OC4J_HOME" value="d:\Apps\OC4Jv2"/>
+    -->
+
+    <!-- Runtime classpath for J2EE based applications -->
+    <path id="common.j2ee.class.path">
+        <pathelement location="."/>
+        <pathelement location="${ORACLE_HOME}/jdbc/lib/classes12.jar"/>
+        <pathelement location="${J2EE_HOME}/oc4j.jar"/>
+        <pathelement location="${J2EE_HOME}/lib/jndi.jar"/>
+        <pathelement location="${J2EE_HOME}/lib/ejb.jar"/>
+        <pathelement location="${J2EE_HOME}/lib/servlet.jar"/>
+        <pathelement location="${ORACLE_HOME}/jdk/jre/lib/ext/jta.jar"/>
+        <pathelement location="${J2EE_HOME}/lib/jdbc.jar"/>
+        <pathelement location="./build"/>
+        <pathelement location="${J2EE_HOME}/lib/jms.jar"/>
+    </path>
+    <property name="common.j2ee.class.path" refid="common.j2ee.class.path"/>
+
+    <!-- Runtime classpath for webservices applications. -->
+    <path id="common.webservices.class.path">
+        <pathelement location="${J2EE_HOME}/lib/jax-qname-namespace.jar"/>
+        <pathelement location="${J2EE_HOME}/lib/activation.jar"/>
+        <pathelement location="${J2EE_HOME}/lib/mail.jar"/>
+        <pathelement location="${J2EE_HOME}/lib/http_client.jar"/>
+        <pathelement location="${ORACLE_HOME}/lib/xmlparserv2.jar"/>
+        
+         <pathelement location="${ORACLE_HOME}/jlib/osdt_wss.jar"/>
+         <pathelement location="${ORACLE_HOME}/jlib/osdt_xmlsec.jar"/>
+         <pathelement location="${ORACLE_HOME}/jlib/osdt_cert.jar"/>
+         <pathelement location="${ORACLE_HOME}/jlib/osdt_core.jar"/>
+         <pathelement location="${ORACLE_HOME}/jlib/osdt_saml.jar"/>
+         
+        <pathelement location="${ORACLE_HOME}/webservices/lib/wsserver.jar"/>
+        <pathelement location="${ORACLE_HOME}/webservices/lib/wsclient.jar"/>
+        <pathelement location="${ORACLE_HOME}/webservices/lib/wssecurity.jar"/>
+        <pathelement location="${ORACLE_HOME}/webservices/lib/dom4j.jar"/>
+        <pathelement location="${ORACLE_HOME}/webservices/lib/commons-logging.jar"/>
+        <pathelement location="${ORACLE_HOME}/webservices/lib/jaxrpc-api.jar"/>
+        <pathelement location="${ORACLE_HOME}/webservices/lib/jaxrpc.jar"/>
+        <pathelement location="${ORACLE_HOME}/webservices/lib/saaj-api.jar"/>
+        <pathelement location="${ORACLE_HOME}/webservices/lib/orasaaj.jar"/>
+        <pathelement location="${ORACLE_HOME}/webservices/lib/xsdlib.jar"/>
+    </path>
+    <property name="common.webservices.class.path" refid="common.webservices.class.path"/>
+
+    <!-- OC4J tasks classpath.  -->
+    <path id="common.tasks.class.path">
+        <pathelement location="${ORACLE_HOME}/ant/lib/ant-oracle.jar"/>
+        <pathelement location="${J2EE_HOME}/lib/javax88.jar"/>
+        <pathelement location="${J2EE_HOME}/admin_client.jar"/>
+        <pathelement location="${J2EE_HOME}/oc4jclient.jar"/>
+        <pathelement location="${ORACLE_HOME}/webservices/lib/wsa.jar"/>
+        <pathelement location="${J2EE_HOME}/lib/bcel.jar"/>
+    </path>
+    <property name="common.tasks.class.path" refid="common.tasks.class.path"/>
+
+    <!-- Target for displaying build information. -->
+    <target name="common">
+        <echo message="BuildName: ${ant.project.name}"/>
+        <echo message="BuildHome: ${basedir}"/>
+        <echo message="BuildFile: ${ant.file}"/>
+        <echo message="BuildJVM: ${ant.java.version}"/>
+    </target>
+
+    <!-- Task definitions for oc4j deployment tasks -->
+    <taskdef resource="oracle/antlib.xml" uri="antlib:oracle" loaderRef="oracle.tasks.loader">
+    	<classpath>
+            <pathelement path="${common.tasks.class.path}"/> 
+        </classpath>
+    </taskdef>
+
+
+</project>
diff --git a/plugins/org.eclipse.jst.server.generic.oc4j/buildfiles/oracle/ant-oracle.xml b/plugins/org.eclipse.jst.server.generic.oc4j/buildfiles/oracle/ant-oracle.xml
new file mode 100644
index 0000000..8178083
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.oc4j/buildfiles/oracle/ant-oracle.xml
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<project name="anttasks">
+
+    <!--This file has been modified for use by the Oracle Eclipse WTP plugin. 	-->    
+    <property environment="env"/>     
+
+    <property name="J2EE_HOME" value="${OC4J_HOME}"/>
+    <property name="ORACLE_HOME" value="${OC4J_HOME}/../.."/>
+    <property name="JAVA_HOME" value="${java.home}"/>
+    <property name="OJDK_HOME" value="${ORACLE_HOME}/jdk"/>
+    <property name="TOPLINK_HOME" value="${env.TOPLINK_HOME}"/>
+	
+    <!-- Runtime classpath for J2EE based applications -->
+    <path id="common.j2ee.class.path">
+        <pathelement location="."/>
+        <pathelement location="${ORACLE_HOME}/jdbc/lib/ojdbc14dms.jar"/>
+        <pathelement location="${J2EE_HOME}/oc4j.jar"/>
+        <pathelement location="${J2EE_HOME}/lib/ejb.jar"/>
+        <pathelement location="${J2EE_HOME}/lib/servlet.jar"/>
+        <pathelement location="${J2EE_HOME}/lib/jta.jar"/>
+        <pathelement location="${J2EE_HOME}/lib/jms.jar"/>
+        <pathelement location="${J2EE_HOME}/lib/javax88.jar"/>
+        <pathelement location="${J2EE_HOME}/lib/javax77.jar"/>
+        <pathelement location="${J2EE_HOME}/lib/jmxri.jar"/>
+        <pathelement location="${J2EE_HOME}/lib/jmx_remote_api.jar"/>
+        <pathelement location="./build"/>
+    </path>
+    <property name="common.j2ee.class.path" refid="common.j2ee.class.path"/>
+
+    <!-- Runtime classpath for webservices applications. -->
+    <path id="common.webservices.class.path">
+        <pathelement location="${J2EE_HOME}/lib/jax-qname-namespace.jar"/>
+        <pathelement location="${J2EE_HOME}/lib/activation.jar"/>
+        <pathelement location="${J2EE_HOME}/lib/mail.jar"/>
+        <pathelement location="${J2EE_HOME}/lib/http_client.jar"/>
+        <pathelement location="${ORACLE_HOME}/lib/xmlparserv2.jar"/>
+        <pathelement location="${ORACLE_HOME}/jlib/ojpwss.jar"/>
+        <pathelement location="${ORACLE_HOME}/jlib/ojpxml.jar"/>
+        <pathelement location="${ORACLE_HOME}/jlib/ojpse.jar"/>
+        <pathelement location="${ORACLE_HOME}/jlib/ojpsaml.jar"/>
+        <pathelement location="${ORACLE_HOME}/webservices/lib/wsserver.jar"/>
+        <pathelement location="${ORACLE_HOME}/webservices/lib/wsclient.jar"/>
+        <pathelement location="${ORACLE_HOME}/webservices/lib/wssecurity.jar"/>
+        <pathelement location="${ORACLE_HOME}/webservices/lib/dom4j.jar"/>
+        <pathelement location="${ORACLE_HOME}/webservices/lib/commons-logging.jar"/>
+        <pathelement location="${ORACLE_HOME}/webservices/lib/jaxrpc-api.jar"/>
+        <pathelement location="${ORACLE_HOME}/webservices/lib/jaxrpc.jar"/>
+        <pathelement location="${ORACLE_HOME}/webservices/lib/saaj-api.jar"/>
+        <pathelement location="${ORACLE_HOME}/webservices/lib/orasaaj.jar"/>
+        <pathelement location="${ORACLE_HOME}/webservices/lib/xsdlib.jar"/>
+    </path>
+    <property name="common.webservices.class.path" refid="common.webservices.class.path"/>
+
+    <!-- OC4J tasks classpath.  -->
+    <path id="common.tasks.class.path">
+    	<pathelement location="${ORACLE_HOME}/ant/lib/ant-oracle.jar"/>
+    </path>
+    <property name="common.tasks.class.path" refid="common.tasks.class.path"/>
+
+    <!-- Target for displaying build information. -->
+    <target name="common">
+        <echo message="BuildName: ${ant.project.name}"/>
+        <echo message="BuildHome: ${basedir}"/>
+        <echo message="BuildFile: ${ant.file}"/>
+        <echo message="BuildJVM: ${ant.java.version}"/>
+    </target>
+
+    <!-- Task definitions for oc4j deployment tasks -->
+    <taskdef resource="oracle/antlib.xml" uri="antlib:oracle" loaderRef="oracle.tasks.loader">
+    	<classpath>
+            <pathelement path="${common.tasks.class.path}"/> 
+        </classpath>
+    </taskdef>
+
+    <!-- Task definitions for oc4j webservices tasks -->
+    <taskdef resource="oracle/antlib.xml" uri="antlib:oracle" loaderRef="oracle.tasks.loader">
+        <classpath>
+            <pathelement path="${common.tasks.class.path}"/>
+        </classpath>
+    </taskdef>	
+	
+</project>
diff --git a/plugins/org.eclipse.jst.server.generic.oc4j/icons/obj16/oracle.gif b/plugins/org.eclipse.jst.server.generic.oc4j/icons/obj16/oracle.gif
new file mode 100644
index 0000000..b51ae39
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.oc4j/icons/obj16/oracle.gif
Binary files differ
diff --git a/plugins/org.eclipse.jst.server.generic.oc4j/plugin.properties b/plugins/org.eclipse.jst.server.generic.oc4j/plugin.properties
new file mode 100644
index 0000000..d79f6e9
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.oc4j/plugin.properties
@@ -0,0 +1,56 @@
+##################################################################################################
+# Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+# accompanying materials are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+# 
+# Contributors: Gorkem Ercan - initial API and implementation
+#               
+###################################################################################################
+pluginName= OC4J Generic server definitions
+providerName=Eclipse.org
+pluginDescription=Provides OC4J Generic server definitions
+
+
+# ============ OC4J 10.1.3 DP 4====================
+pluginName= Oracle OC4J v10.1.3 DP4 Generic Server Definition Core Plug-in
+pluginDescription=Provides server definition for Oracle OC4J Standalone 10.1.3 DP4.\
+Provides basic server functionality
+oracleCategory=Oracle
+
+oracle.10_1_3Preview.runtime.name=Oracle OC4J Standalone 10.1.3 DP4
+oracle.10_1_3Preview.runtime.description=Oracle OC4J 10.1.3 DP4 runtime
+oracle.10_1_3Preview.server.name=Oracle OC4J Standalone Server 10.1.3 DP4
+oracle.10_1_3Preview.server.description=Oracle OC4J Standalone Server for v10.1.3 \
+Developer Preview 4 on the localhost using the default instance
+
+# ============ OC4J 10.1.3 ====================
+oc4j.pluginName= Oracle OC4J v10.1.3 Generic Server Definition Core Plug-in
+oc4j.pluginDescription=Provides server definition for Oracle OC4J Standalone 10.1.3.\
+Provides basic server functionality
+
+oracle.10_1_3.runtime.name=Oracle OC4J Standalone 10.1.3
+oracle.10_1_3.runtime.description=Oracle OC4J 10.1.3 runtime
+oracle.10_1_3.server.name=Oracle OC4J Standalone Server 10.1.3
+oracle.10_1_3.server.description=Oracle OC4J Standalone Server for v10.1.3 \
+on the localhost using the default instance
+
+# UI Labels
+label.j2ee.home=Oracle J2EE Home:
+label.admin.user=User: 
+label.admin.pw=Password:
+label.host=Address:
+label.host.port=Admin Port:
+label.http.port=HTTP Port:
+label.web.site=Web Site:
+
+# ============== serverdef translations ================
+ApplicationServerDirectory=Application &Server Directory:
+serverAddress=A&ddress:
+serverPort=&Port:
+jndiPort=&JNDI Port:
+serverclassPath=&Classpath Variable:
+serverName=Ser&ver Name:
+username=Use&r Name:
+password=Pass&word:
+
diff --git a/plugins/org.eclipse.jst.server.generic.oc4j/plugin.xml b/plugins/org.eclipse.jst.server.generic.oc4j/plugin.xml
new file mode 100644
index 0000000..c16c8a2
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.oc4j/plugin.xml
@@ -0,0 +1,138 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+<plugin>
+   <extension point="org.eclipse.wst.server.core.runtimeTypes">
+     <runtimeType
+       id="org.eclipse.jst.server.generic.runtime.oracle1013"
+       name="%oracle.10_1_3.runtime.name"
+       description="%oracle.10_1_3.runtime.description"
+       vendor="%oracleCategory"
+       version="10.1.3"
+       class="org.eclipse.jst.server.generic.core.internal.GenericServerRuntime">
+      <moduleType
+         types="jst.web"
+         versions="2.2, 2.3, 2.4"/>
+      <moduleType
+         types="jst.ejb"
+         versions="1.1, 2.0, 2.1, 3.0"/>
+      <moduleType
+         types="jst.ear"
+         versions="1.2, 1.3, 1.4"/>
+      <moduleType
+         types="jst.connector"
+         versions="1.0, 1.5"/>
+       <moduleType
+         types="jst.utility"
+         versions="1.0"/> 
+     </runtimeType>
+   </extension>
+   
+   <extension point="org.eclipse.wst.server.core.serverTypes">
+     <serverType
+           behaviourClass="org.eclipse.jst.server.generic.core.internal.GenericServerBehaviour"
+           class="org.eclipse.jst.server.generic.core.internal.GenericServer"
+           description="%oracle.10_1_3.server.description"
+           hasConfiguration="false"
+           id="org.eclipse.jst.server.generic.oracle1013"
+           initialState="stopped"
+           launchConfigId="org.eclipse.jst.server.generic.core.launchConfigurationType"
+           launchModes="run,debug"
+           name="%oracle.10_1_3.server.name"
+           runtime="true"
+           runtimeTypeId="org.eclipse.jst.server.generic.runtime.oracle1013"
+           startBeforePublish="true"
+           supportsRemoteHosts="false">           
+      </serverType> 
+   </extension>
+   
+   <extension point="org.eclipse.wst.server.ui.wizardFragments">
+     <fragment
+        id="org.eclipse.jst.server.generic.runtime"
+        typeIds="org.eclipse.jst.server.generic.runtime.oracle1013"
+        class="org.eclipse.jst.server.generic.ui.internal.GenericServerRuntimeWizardFragment"/>
+     <fragment
+        id="org.eclipse.jst.server.generic.server"
+        typeIds="org.eclipse.jst.server.generic.oracle1013"
+        class="org.eclipse.jst.server.generic.ui.internal.GenericServerWizardFragment"/>         
+   </extension>
+   
+   <extension point="org.eclipse.wst.server.ui.serverImages">   
+     <image
+         id="org.eclipse.jst.server.generic.image"
+         icon="icons/obj16/oracle.gif"
+         typeIds="org.eclipse.jst.server.generic.oracle1013" />
+     <image
+         id="org.eclipse.jst.server.generic.image"
+         icon="icons/obj16/oracle.gif"
+         typeIds="org.eclipse.jst.server.generic.runtime.oracle1013"/>   
+   </extension>   
+   
+   <extension point="org.eclipse.jst.server.core.runtimeClasspathProviders">   
+     <runtimeClasspathProvider
+        id="org.eclipse.jst.server.generic.runtimeTarget"
+        runtimeTypeIds="org.eclipse.jst.server.generic.runtime.oracle1013"
+        class="org.eclipse.jst.server.generic.core.internal.GenericServerRuntimeTargetHandler"/>   
+   </extension>
+   
+   <extension point="org.eclipse.jst.server.generic.core.serverdefinition">
+		<serverdefinition id="org.eclipse.jst.server.generic.runtime.oracle1013" definitionfile="/servers/oracle.10.1.3.serverdef">
+		</serverdefinition>		
+   </extension>
+   
+   <extension point="org.eclipse.wst.common.project.facet.core.runtimes">
+    <runtime-component-type id="org.eclipse.jst.server.generic.runtime.oracle">
+    </runtime-component-type>
+       
+    <runtime-component-version
+       type="org.eclipse.jst.server.generic.runtime.oracle"
+       version="10.1.3"/>
+
+    <adapter>
+      <runtime-component
+         id="org.eclipse.jst.server.generic.runtime.oracle"/>
+      <factory
+         class="org.eclipse.jst.server.core.internal.RuntimeClasspathProvider$Factory"/>
+      <type
+         class="org.eclipse.jst.common.project.facet.core.IClasspathProvider"/>
+    </adapter>
+
+    <supported>
+      <runtime-component
+         id="org.eclipse.jst.server.generic.runtime.oracle"
+         version="10.1.3"/>
+      <facet id="jst.web"
+         version="2.2,2.3,2.4"/>
+      <facet id="jst.ejb"
+         version="1.1,2.0,2.1"/>
+      <facet id="jst.ear"
+         version="1.2,1.3,1.4"/>
+      <facet id="jst.appclient"
+         version="1.2,1.3,1.4"/>
+      <facet id="jst.utility"
+         version="1.0"/>
+      <facet id="jst.connector"
+         version="1.5"/>
+    </supported>    
+   </extension>
+   
+   <extension point="org.eclipse.wst.common.project.facet.ui.images">
+    <image runtime-component-type="org.eclipse.jst.server.generic.runtime.oracle"
+          path="icons/obj16/oracle.gif"/>   
+   </extension>
+   
+   <extension point="org.eclipse.wst.common.project.facet.core.runtimes">
+    <adapter>
+      <runtime-component id="org.eclipse.jst.server.generic.runtime.oracle"/>
+      <factory class="org.eclipse.jst.server.ui.internal.RuntimeLabelProvider$Factory"/>
+      <type class="org.eclipse.wst.common.project.facet.ui.IRuntimeComponentLabelProvider"/>
+    </adapter>   
+   </extension>
+   
+   <extension point="org.eclipse.jst.server.core.runtimeFacetMappings">
+    <runtimeFacetMapping
+      runtimeTypeId="org.eclipse.jst.server.generic.runtime.oracle1013"
+      runtime-component="org.eclipse.jst.server.generic.runtime.oracle"
+      version="10.1.3"/>
+    </extension>
+   
+</plugin>
diff --git a/plugins/org.eclipse.jst.server.generic.oc4j/servers/oracle.10.1.3.serverdef b/plugins/org.eclipse.jst.server.generic.oc4j/servers/oracle.10.1.3.serverdef
new file mode 100644
index 0000000..0c1c3f5
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.oc4j/servers/oracle.10.1.3.serverdef
@@ -0,0 +1,162 @@
+<?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="Oracle OC4J Standalone Server v10.1.3" version="v10.1.3">
+	
+	<property id="OC4J_HOME"
+		label = "%label.j2ee.home"
+		type="directory"
+		context="runtime"
+		default="C:/oracle/OC4J10.1.3/j2ee/home"/>
+		
+	<property id="oc4j.admin.user"
+		label="%label.admin.user"
+		type="string"
+		context="server"
+		default="oc4jadmin" />
+		
+	<property id="oc4j.admin.password"
+		label="%label.admin.pw"
+		type="string"
+		context="server"
+		default="welcome" />
+		
+	<property id="oc4j.admin.port"
+		label="%label.host.port"
+		type="string"
+		context="server"
+		default="23791" />
+		
+	<property id="oc4j.http.port"
+		label="%label.http.port"
+		type="string"
+		context="server"
+		default="8888" />	
+			
+	<property id="oc4j.bind.website"
+		label="%label.web.site"
+		type="string"
+		context="server"
+		default="default-web-site" />
+		
+	<port>
+		<no>${oc4j.http.port}</no>
+		<name>Http</name>
+		<protocol>http</protocol>
+	</port>
+	
+	<module>
+		<type>jst.web</type>
+		<publishDir>${OC4J_HOME}/applications</publishDir>
+		<publisherReference>org.eclipse.jst.server.generic.antpublisher</publisherReference>
+	</module>
+
+	<module>
+		<type>jst.ejb</type>
+		<publishDir>${OC4J_HOME}/applications</publishDir>
+		<publisherReference>org.eclipse.jst.server.generic.antpublisher</publisherReference>
+	</module>
+
+	<module>
+		<type>jst.ear</type>
+		<publishDir>${OC4J_HOME}/applications</publishDir>
+		<publisherReference>org.eclipse.jst.server.generic.antpublisher</publisherReference>
+	</module>	
+	
+	<project>
+		<classpathReference>oracle_oc4j</classpathReference>
+	</project>
+	
+	<start >
+		<mainClass>oracle.oc4j.loader.boot.BootStrap</mainClass>
+		<workingDirectory>${OC4J_HOME}</workingDirectory>
+		<programArguments></programArguments>
+		<vmParameters></vmParameters>
+		<classpathReference>oracle_boot</classpathReference>
+	</start>
+
+	<stop>
+	    <mainClass>com.evermind.client.orion.Oc4jAdminConsole</mainClass> 
+	    <workingDirectory>${OC4J_HOME}</workingDirectory>  
+	    <programArguments>ormi://localhost:${oc4j.admin.port} ${oc4j.admin.user} ${oc4j.admin.password} -shutdown </programArguments>
+	    <vmParameters></vmParameters>
+	    <classpathReference>oracle_admin</classpathReference>
+	</stop>
+	
+	<publisher id="org.eclipse.jst.server.generic.antpublisher">
+		<publisherdata>
+			<dataname>build.file</dataname>
+			<datavalue>/buildfiles/oracle.10.1.3.xml</datavalue>
+		</publisherdata>
+		<publisherdata>
+			<dataname>target.publish.jst.web</dataname>
+			<datavalue>deploy.j2ee.web</datavalue>
+		</publisherdata>
+		<publisherdata>
+			<dataname>target.publish.jst.ejb</dataname>
+			<datavalue>deploy.j2ee.ejb</datavalue>
+		</publisherdata>
+		<publisherdata>
+			<dataname>target.publish.jst.ear</dataname>
+			<datavalue>deploy.j2ee.ear</datavalue>
+		</publisherdata>
+		<publisherdata>
+			<dataname>target.unpublish.jst.web</dataname>
+			<datavalue>undeploy.j2ee.module</datavalue>
+		</publisherdata>
+		<publisherdata>
+			<dataname>target.unpublish.jst.ejb</dataname>
+			<datavalue>undeploy.j2ee.module</datavalue>
+		</publisherdata>	
+		<publisherdata>
+			<dataname>target.unpublish.jst.ear</dataname>
+			<datavalue>undeploy.j2ee.module</datavalue>
+		</publisherdata>		
+	</publisher>
+
+	<classpath id="oracle_admin">
+		<archive path="${OC4J_HOME}/admin.jar"/>
+	</classpath>
+	
+	<classpath id="oracle_boot">
+		<archive path="${OC4J_HOME}/oc4j.jar"/>
+	</classpath>
+	
+	<classpath id="oracle_oc4j">
+		<archive path="${OC4J_HOME}/oc4j.jar"/>
+		<archive path="${OC4J_HOME}/oc4jclient.jar"/>    		
+		<archive path="${OC4J_HOME}/lib/activation.jar"/>
+		<archive path="${OC4J_HOME}/lib/asm.jar"/>
+		<archive path="${OC4J_HOME}/lib/asm-attrs.jar"/>
+		<archive path="${OC4J_HOME}/lib/connector.jar"/>
+		<archive path="${OC4J_HOME}/lib/ejb.jar"/>
+		<archive path="${OC4J_HOME}/lib/ejb30.jar"/>
+		<archive path="${OC4J_HOME}/lib/jacc-api.jar"/>	
+		<archive path="${OC4J_HOME}/lib/javax77.jar"/>
+		<archive path="${OC4J_HOME}/lib/javax88.jar"/>		
+		<archive path="${OC4J_HOME}/lib/jax-qname-namespace.jar"/> 		
+		<archive path="${OC4J_HOME}/lib/jms.jar"/>
+		<archive path="${OC4J_HOME}/lib/jmx_remote_api.jar"/>		
+		<archive path="${OC4J_HOME}/lib/jta.jar"/>
+		<archive path="${OC4J_HOME}/lib/mail.jar"/>
+		<archive path="${OC4J_HOME}/lib/oc4j-unsupported-api.jar"/>
+		<archive path="${OC4J_HOME}/lib/servlet.jar"/>
+		<archive path="${OC4J_HOME}/../../lib/xmlparserv2.jar"/>
+		<archive path="${OC4J_HOME}/../../toplink/jlib/antlr.jar"/>
+		<archive path="${OC4J_HOME}/../../toplink/jlib/toplink.jar"/>		  		
+		<archive path="${OC4J_HOME}/../../webservices/lib/soap.jar"/>
+		<archive path="${OC4J_HOME}/../../webservices/lib/wsdl.jar"/>		
+	</classpath>
+	
+	<jndiConnection>
+		<providerUrl>ormi://localhost:${oc4j.admin.port}</providerUrl>
+		<initialContextFactory>com.evermind.server.rmi.RMIInitialContextFactory</initialContextFactory>
+		<jndiProperty>
+			<name></name>
+			<value></value>
+		</jndiProperty>
+	</jndiConnection>
+
+</tns:ServerRuntime>
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..751c8f2
--- /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.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<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..60839a8
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.ui/.cvsignore
@@ -0,0 +1,8 @@
+bin
+build.xml
+genericui.jar
+org.eclipse.jst.server.generic.ui_1.0.0.jar
+temp.folder
+genericuisrc.zip
+@dot
+javaCompiler...args
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/META-INF/MANIFEST.MF b/plugins/org.eclipse.jst.server.generic.ui/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..0d32ba0
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.ui/META-INF/MANIFEST.MF
@@ -0,0 +1,18 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.jst.server.generic.ui; singleton:=true
+Bundle-Version: 1.0.100.qualifier
+Bundle-Activator: org.eclipse.jst.server.generic.ui.internal.GenericUiPlugin
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Export-Package: org.eclipse.jst.server.generic.ui.internal;x-internal:=true
+Require-Bundle: org.eclipse.ui;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.core.runtime;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.wst.server.ui;bundle-version="[1.0.102,1.2.0)",
+ org.eclipse.debug.ui;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.jdt.debug.ui;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.jst.server.core;bundle-version="[1.0.102,1.2.0)",
+ org.eclipse.jst.server.generic.core;bundle-version="[1.0.100,1.2.0)",
+ org.eclipse.wst.server.core;bundle-version="[1.0.102,1.2.0)"
+Eclipse-LazyStart: true
diff --git a/plugins/org.eclipse.jst.server.generic.ui/about.html b/plugins/org.eclipse.jst.server.generic.ui/about.html
new file mode 100644
index 0000000..4ec5989
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.ui/about.html
@@ -0,0 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<HTML>
+
+<head>
+<title>About</title>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
+</head>
+
+<BODY lang="EN-US">
+
+<H3>About This Content</H3>
+
+<P>May 2, 2006</P>
+
+<H3>License</H3>
+
+<P>The Eclipse Foundation makes available all content in this plug-in 
+("Content"). Unless otherwise indicated below, the Content is provided to you 
+under the terms and conditions of the Eclipse Public License Version 1.0 
+("EPL"). A copy of the EPL is available at
+<A href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/org/documents/epl-v10.php</A>. 
+For purposes of the EPL, "Program" will mean the Content.</P>
+
+<P>If you did not receive this Content directly from the Eclipse Foundation, the 
+Content is being redistributed by another party ("Redistributor") and different 
+terms and conditions may apply to your use of any object code in the Content. 
+Check the Redistributor’s license that was provided with the Content. If no such 
+license exists, contact the Redistributor. Unless otherwise indicated below, the 
+terms and conditions of the EPL still apply to any source code in the Content 
+and such source code may be obtained at
+<A href="http://www.eclipse.org/">http://www.eclipse.org/</A>.</P>
+
+</BODY>
+</HTML>
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..eb9ec43
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.ui/build.properties
@@ -0,0 +1,18 @@
+##################################################################################################
+# Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+# accompanying materials are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+# 
+# Contributors: Gorkem Ercan - initial API and implementation
+#               
+###################################################################################################
+source.. = src/
+output.. = bin/
+bin.includes = plugin.xml,\
+               .,\
+               icons/,\
+               plugin.properties,\
+               META-INF/,\
+               about.html
+src.includes = build.properties
diff --git a/plugins/org.eclipse.jst.server.generic.ui/icons/obj16/server.gif b/plugins/org.eclipse.jst.server.generic.ui/icons/obj16/server.gif
new file mode 100644
index 0000000..b51ae39
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.ui/icons/obj16/server.gif
Binary files differ
diff --git a/plugins/org.eclipse.jst.server.generic.ui/icons/wizban/new_server_wiz.gif b/plugins/org.eclipse.jst.server.generic.ui/icons/wizban/new_server_wiz.gif
new file mode 100644
index 0000000..30de91f
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.ui/icons/wizban/new_server_wiz.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..a105be1
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.ui/plugin.properties
@@ -0,0 +1,13 @@
+##################################################################################################
+# Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+# accompanying materials are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+# 
+# Contributors: Gorkem Ercan - initial API and implementation
+#               
+###################################################################################################
+pluginName=Generic Server Plugin UI
+providerName=Eclipse.org
+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..ba8f5f9
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.ui/plugin.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+<plugin>
+  <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/server.gif">
+    </launchConfigurationTypeImage>
+    <launchConfigurationTypeImage
+      id="org.eclipse.jst.server.generic.image.ui.ExternalLaunchConfigurationTypeImage"
+      configTypeID="org.eclipse.jst.server.generic.core.ExternalLaunchConfigurationType"
+      icon="icons/obj16/server.gif">
+    </launchConfigurationTypeImage>
+  </extension>
+  
+  <extension point="org.eclipse.debug.ui.launchConfigurationTabGroups">
+    <launchConfigurationTabGroup
+      id="org.eclipse.jst.server.generic.ui.internal.launchConfigurationTabGroup"
+      type="org.eclipse.jst.server.generic.core.launchConfigurationType"
+      class="org.eclipse.jst.server.generic.ui.internal.GenericLaunchConfigurationTabGroup">
+    </launchConfigurationTabGroup>
+    <launchConfigurationTabGroup
+      id="org.eclipse.jst.server.generic.ui.internal.launchConfigurationTabGroup"
+      type="org.eclipse.jst.server.generic.core.ExternalLaunchConfigurationType"
+      class="org.eclipse.jst.server.generic.ui.internal.GenericLaunchConfigurationTabGroup">
+    </launchConfigurationTabGroup>
+  </extension>
+
+</plugin>
diff --git a/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/GenericLaunchConfigurationTabGroup.java b/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/GenericLaunchConfigurationTabGroup.java
new file mode 100644
index 0000000..5ec5c55
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/GenericLaunchConfigurationTabGroup.java
@@ -0,0 +1,74 @@
+/***************************************************************************************************
+ * Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Gorkem Ercan - initial API and implementation
+ *               
+ **************************************************************************************************/
+package org.eclipse.jst.server.generic.ui.internal;
+
+import java.util.ArrayList;
+
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtension;
+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.jst.server.generic.internal.core.util.ExtensionPointUtil;
+import org.eclipse.wst.server.core.IServerType;
+import org.eclipse.wst.server.core.ServerCore;
+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(getTypeIds());
+		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);
+	}
+
+	private String[] getTypeIds() {
+		ArrayList list = new ArrayList();
+		IExtension[] extensions= ExtensionPointUtil.getGenericServerDefinitionExtensions();
+		 for (int i = 0; extensions!=null && i < extensions.length; i++) {
+			 IExtension extension = extensions[i];
+	         IConfigurationElement[] elements = ExtensionPointUtil.getConfigurationElements(extension);
+	         for (int j = 0; j < elements.length; j++) {
+	        	 IConfigurationElement element = elements[j];
+	        	 String genericRuntimeID = element.getAttribute("id");
+	        	 IServerType[] serverTypes = ServerCore.getServerTypes();
+	        	 for (int k = 0; k < serverTypes.length; k++) {
+					if(serverTypes[k].hasRuntime() && serverTypes[k].getRuntimeType().getId().equals(genericRuntimeID))
+						list.add(serverTypes[k].getId());
+				}
+	         }
+		 }
+		 return (String[])list.toArray(new String[list.size()]);
+	}
+	
+
+}
diff --git a/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/GenericServerComposite.java b/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/GenericServerComposite.java
new file mode 100644
index 0000000..699369b
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/GenericServerComposite.java
@@ -0,0 +1,34 @@
+/***************************************************************************************************
+ * Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Gorkem Ercan - initial API and implementation
+ *               
+ **************************************************************************************************/
+package org.eclipse.jst.server.generic.ui.internal;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+
+public class GenericServerComposite extends Composite {
+
+	private GenericServerCompositeDecorator[] fDecorators;
+	public GenericServerComposite(Composite parent, GenericServerCompositeDecorator[] decorators) {
+		super(parent, SWT.NONE);
+		fDecorators = decorators;
+		GridLayout layout =new GridLayout(3,false); 
+		setLayout(layout);
+        setLayoutData(new GridData(GridData.FILL_BOTH));
+		createControl();
+	}
+
+	private void createControl(){
+		for (int i = 0; fDecorators!= null && i < fDecorators.length; i++) {
+			fDecorators[i].decorate(this);
+		}
+	}
+}
diff --git a/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/GenericServerCompositeDecorator.java b/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/GenericServerCompositeDecorator.java
new file mode 100644
index 0000000..2f238c6
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/GenericServerCompositeDecorator.java
@@ -0,0 +1,31 @@
+/***************************************************************************************************
+ * Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Gorkem Ercan - initial API and implementation
+ *               
+ **************************************************************************************************/
+package org.eclipse.jst.server.generic.ui.internal;
+
+
+/**
+ * 
+ * @author Gorkem Ercan
+ */
+public interface GenericServerCompositeDecorator 
+{
+	/**
+	 * 
+	 * @param composite
+	 */
+	public abstract void decorate(GenericServerComposite composite);
+    /**
+	 * Called if all the fields are valid. This gives subclasses opportunity to
+	 * validate and take necessary actions.
+	 * 
+	 * @return boolean
+	 */
+	public abstract boolean validate();
+}
diff --git a/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/GenericServerRuntimeWizardFragment.java b/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/GenericServerRuntimeWizardFragment.java
new file mode 100644
index 0000000..ba97604
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/GenericServerRuntimeWizardFragment.java
@@ -0,0 +1,166 @@
+/***************************************************************************************************
+ * Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Gorkem Ercan - initial API and implementation
+ *               
+ **************************************************************************************************/
+package org.eclipse.jst.server.generic.ui.internal;
+
+import java.util.Map;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.jst.server.generic.core.internal.GenericServerRuntime;
+import org.eclipse.jst.server.generic.servertype.definition.ServerRuntime;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.wst.server.core.IRuntime;
+import org.eclipse.wst.server.core.IRuntimeType;
+import org.eclipse.wst.server.core.IRuntimeWorkingCopy;
+import org.eclipse.wst.server.core.ServerCore;
+import org.eclipse.wst.server.core.TaskModel;
+import org.eclipse.wst.server.core.internal.IInstallableRuntime;
+import org.eclipse.wst.server.core.internal.ServerPlugin;
+import org.eclipse.wst.server.core.model.RuntimeDelegate;
+import org.eclipse.wst.server.ui.wizard.IWizardHandle;
+
+/**
+ * A serverDefinitionType aware wizard for defining runtimes.
+ * 
+ * @author Gorkem Ercan
+ */
+public class GenericServerRuntimeWizardFragment extends ServerDefinitionTypeAwareWizardFragment {
+	
+	private GenericServerCompositeDecorator[] fDecorators;
+	
+	
+	/**
+	 * Constructor
+	 */
+	public GenericServerRuntimeWizardFragment() {
+		super();
+	}
+	/* (non-Javadoc)
+	 * @see org.eclipse.wst.server.ui.wizard.IWizardFragment#isComplete()
+	 */
+	public boolean isComplete() {
+	  	RuntimeDelegate runtime = getRuntimeDelegate();
+		if (runtime == null)
+			return false;
+		IStatus status = runtime.validate();
+		return (status != null && status.isOK());
+	}
+	
+	public void createContent(Composite parent, IWizardHandle handle) {		
+		Map properties= null;
+		ServerRuntime definition=null;
+        if(getRuntimeDelegate()!=null){
+ 			properties = getRuntimeDelegate().getServerInstanceProperties();
+			definition = getServerTypeDefinition(getServerDefinitionId(),properties);
+		}       
+        IInstallableRuntime ir = ServerPlugin.findInstallableRuntime(getRuntimeDelegate().getRuntime().getRuntimeType().getId());
+        if (ir!= null){	
+        	fDecorators= new GenericServerCompositeDecorator[3]; 
+        	fDecorators[0]= new JRESelectDecorator(getRuntimeDelegate());
+        	fDecorators[1]= new ServerTypeDefinitionRuntimeDecorator(definition,properties,getWizard(),getRuntimeDelegate());
+        	fDecorators[2]= new InstallableRuntimeDecorator(getWizard(), getRuntimeDelegate());
+        }
+        else{
+        	fDecorators= new GenericServerCompositeDecorator[2]; 
+        	fDecorators[0]= new JRESelectDecorator(getRuntimeDelegate());
+        	fDecorators[1]= new ServerTypeDefinitionRuntimeDecorator(definition,properties,getWizard(),getRuntimeDelegate());
+        }
+		
+		new GenericServerComposite(parent,fDecorators);
+	}
+
+	
+	private String getServerDefinitionId(){
+		String currentDefinition= null;
+		if(getRuntimeDelegate()!=null)
+			currentDefinition =  getRuntimeDelegate().getRuntime().getRuntimeType().getId();
+		if(currentDefinition!= null && currentDefinition.length()>0)
+		{	
+			return currentDefinition;
+		}
+		return null;
+	}
+	
+	
+	
+	/* (non-Javadoc)
+	 * @see org.eclipse.wst.server.ui.wizard.IWizardFragment#enter()
+	 */
+	public void enter() {
+	    if(getRuntimeDelegate()!=null)
+			getRuntimeDelegate().getRuntimeWorkingCopy().setName(createName());
+	    
+	    for (int i = 0; i < fDecorators.length; i++) {
+			if(fDecorators[i].validate())
+				return;
+		}
+	}
+	
+	public void exit() {
+		//validate to save latest values
+	    for (int i = 0; i < fDecorators.length; i++) {
+			if(fDecorators[i].validate())
+				return;
+		}
+	}
+
+
+	private String createName()
+	{
+	    RuntimeDelegate dl = getRuntimeDelegate();
+	    IRuntimeType runtimeType = dl.getRuntime().getRuntimeType();
+	    String name = GenericServerUIMessages.bind(GenericServerUIMessages.runtimeName,runtimeType.getName());
+		IRuntime[] list = ServerCore.getRuntimes();
+		int suffix = 1;
+		String suffixName=name;
+		for(int i=0;i<list.length;i++)
+	    {
+	        if((list[i].getName().equals(name)|| list[i].getName().equals(suffixName))&& !list[i].equals(dl.getRuntime()))
+	            suffix++;
+	        suffixName= name+" "+suffix;
+	    }
+	    
+		if(suffix>1)
+		    return suffixName;
+	    return name;
+	}
+	
+	private GenericServerRuntime getRuntimeDelegate(){
+		IRuntimeWorkingCopy wc = (IRuntimeWorkingCopy) getTaskModel().getObject(TaskModel.TASK_RUNTIME);
+		if (wc == null)
+			return null;
+		return (GenericServerRuntime) wc.loadAdapter(GenericServerRuntime.class, new NullProgressMonitor());
+	}
+    /* (non-Javadoc)
+     * @see org.eclipse.jst.server.generic.internal.ui.ServerDefinitionTypeAwareWizardFragment#description()
+     */
+    public String description() {
+        String rName = getRuntimeName();
+        if(rName == null || rName.length()<1)
+            rName="Generic";      
+        return  GenericServerUIMessages.bind(GenericServerUIMessages.runtimeWizardDescription,rName);
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.jst.server.generic.internal.ui.ServerDefinitionTypeAwareWizardFragment#title()
+     */
+    public String title() {
+        String rName = getRuntimeName();
+        if(rName == null || rName.length()<1)
+            rName="Generic";
+       return GenericServerUIMessages.bind(GenericServerUIMessages.runtimeWizardTitle,rName);
+    }
+    
+    private String getRuntimeName()
+    {
+       if(getRuntimeDelegate()!=null && getRuntimeDelegate().getRuntime()!=null)
+            return getRuntimeDelegate().getRuntime().getName();
+        return null;
+    }
+    
+}
diff --git a/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/GenericServerUIMessages.java b/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/GenericServerUIMessages.java
new file mode 100644
index 0000000..e238062
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/GenericServerUIMessages.java
@@ -0,0 +1,43 @@
+/***************************************************************************************************
+ * Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Gorkem Ercan - initial API and implementation
+ *               
+ **************************************************************************************************/
+package org.eclipse.jst.server.generic.ui.internal;
+
+import org.eclipse.osgi.util.NLS;
+
+/**
+ * Helper class to get messages
+ * 
+ * @author Gorkem Ercan
+ */
+public class GenericServerUIMessages extends NLS{
+
+	private static final String RESOURCE_BUNDLE= "org.eclipse.jst.server.generic.ui.internal.GenericServerUIMessages";//$NON-NLS-1$
+	public static String serverTypeGroup_label_browse;
+	public static String runtimeName;
+	public static String runtimeWizardDescription;
+	public static String runtimeWizardTitle;
+	public static String serverName;
+	public static String serverWizardDescription;
+	public static String serverWizardTitle;
+	public static String installed_jre_link;
+	public static String jre_select_label;
+	public static String defaultJRE;
+	public static String invalidPath;
+	public static String installServerButton;
+	public static String installationDirectory;
+	
+	static{
+		  NLS.initializeMessages(RESOURCE_BUNDLE, GenericServerUIMessages.class);
+	}
+
+	public static String emptyPath;
+
+
+}
diff --git a/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/GenericServerUIMessages.properties b/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/GenericServerUIMessages.properties
new file mode 100644
index 0000000..6a7c681
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/GenericServerUIMessages.properties
@@ -0,0 +1,23 @@
+##################################################################################################
+# Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+# accompanying materials are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+# 
+# Contributors: Gorkem Ercan - initial API and implementation
+#               
+###################################################################################################
+serverWizardTitle=New {0} Server
+serverWizardDescription=Create a new {0} server 
+runtimeWizardTitle=New {0} Runtime
+runtimeWizardDescription=Define a new {0} runtime
+serverTypeGroup_label_browse=Browse...
+serverName = {0}
+runtimeName= {0}
+installed_jre_link = You can use <a>Installed JRE preferences</a> to create a new JRE
+installServerButton=Install Server
+installationDirectory=Select installation directory
+jre_select_label= &JRE:
+defaultJRE = Default JRE
+invalidPath = {0} is not valid
+emptyPath=Specify a valid path
diff --git a/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/GenericServerWizardFragment.java b/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/GenericServerWizardFragment.java
new file mode 100644
index 0000000..91003b2
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/GenericServerWizardFragment.java
@@ -0,0 +1,148 @@
+/***************************************************************************************************
+ * Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Gorkem Ercan - initial API and implementation
+ *               
+ **************************************************************************************************/
+package org.eclipse.jst.server.generic.ui.internal;
+
+import java.util.Map;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.jst.server.generic.core.internal.GenericServer;
+import org.eclipse.jst.server.generic.core.internal.GenericServerRuntime;
+import org.eclipse.jst.server.generic.servertype.definition.ServerRuntime;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.wst.server.core.IRuntime;
+import org.eclipse.wst.server.core.IServer;
+import org.eclipse.wst.server.core.IServerWorkingCopy;
+import org.eclipse.wst.server.core.ServerCore;
+import org.eclipse.wst.server.core.TaskModel;
+import org.eclipse.wst.server.ui.wizard.IWizardHandle;
+/**
+ * 
+ *
+ * @author Gorkem Ercan
+ */
+public class GenericServerWizardFragment extends ServerDefinitionTypeAwareWizardFragment 
+{
+	private GenericServerCompositeDecorator[] fDecorators;
+
+	/**
+	 * 
+	 */
+	public boolean isComplete() {
+
+		ServerRuntime serverRuntime = getServerTypeDefinitionFor(getServer());
+		if(serverRuntime==null)
+		    return false;
+
+		IServerWorkingCopy server = getServer();
+		GenericServer dl= (GenericServer)server.loadAdapter(GenericServer.class,null);
+
+		IStatus status = dl.validate();
+		return (status != null && status.isOK());
+		
+	}
+
+	public void createContent(Composite parent, IWizardHandle handle){
+		IServerWorkingCopy server = getServer();
+		GenericServer dl= (GenericServer)server.loadAdapter(GenericServer.class,null);
+		ServerRuntime definition = getServerTypeDefinitionFor(server);
+		fDecorators = new GenericServerCompositeDecorator[1];
+		fDecorators[0]=new ServerTypeDefinitionServerDecorator(definition,null,getWizard(),dl);
+		new GenericServerComposite(parent,fDecorators);
+		
+	}
+	/**
+     * @param server
+     * @return
+     */
+    private ServerRuntime getServerTypeDefinitionFor(IServerWorkingCopy server) {        
+        GenericServerRuntime runtime = (GenericServerRuntime)server.getRuntime().getAdapter(GenericServerRuntime.class);
+        if(runtime==null){
+            IRuntime wc = (IRuntime)getTaskModel().getObject(TaskModel.TASK_RUNTIME);
+            runtime= (GenericServerRuntime)wc.getAdapter(GenericServerRuntime.class);
+            if(runtime==null)
+            	runtime= (GenericServerRuntime)wc.loadAdapter(GenericServerRuntime.class,new NullProgressMonitor());
+        }        
+        String id = runtime.getRuntime().getRuntimeType().getId();
+        if(id==null){   
+            return null;
+        }
+        Map runtimeProperties = runtime.getServerInstanceProperties();
+		ServerRuntime definition = getServerTypeDefinition(id,runtimeProperties);
+        return definition;
+    }
+
+    /**
+     * @return
+     */
+    private IServerWorkingCopy getServer() {
+        IServerWorkingCopy server = (IServerWorkingCopy)getTaskModel().getObject(TaskModel.TASK_SERVER);
+        return server;
+    }
+
+    private boolean isNameInUse(String name){
+       	IServer[] servers =ServerCore.getServers();   	
+    	for (int i = 0; i < servers.length; i++) {
+			if(!servers[i].equals(getServer().getOriginal()) && (servers[i].getName().equals(name) ))
+				return true;
+		}
+    	return false;
+    }
+    
+    private String createName(){
+    	String name = GenericServerUIMessages.bind(GenericServerUIMessages.serverName,getServerTypeDefinitionFor(getServer()).getName());
+    	int suffix=1;
+    	String suffixName =name;
+    	while(isNameInUse(suffixName)){
+    		suffixName = name+" "+suffix;
+    		suffix++;
+    	}
+    	return suffixName;
+    }
+    public void enter() {
+    	getServer().setName(createName());
+	    for (int i = 0; i < fDecorators.length; i++) {
+			if(fDecorators[i].validate())
+				return;
+		}
+     }
+	public void exit() {
+	    //validate needed to save the latest values.
+		for (int i = 0; i < fDecorators.length; i++) {
+			if(fDecorators[i].validate())
+				return;
+		}
+	}	
+    /* (non-Javadoc)
+     * @see org.eclipse.jst.server.generic.internal.ui.ServerDefinitionTypeAwareWizardFragment#description()
+     */
+    public String description() {
+        String sName = getServerName();
+        if(sName==null || sName.length()<1)
+            sName="Generic";
+        return  GenericServerUIMessages.bind(GenericServerUIMessages.serverWizardDescription,sName);
+    }
+
+    private String getServerName()
+    {
+        if(getServer()!=null && getServer().getRuntime()!=null)
+           return getServer().getRuntime().getRuntimeType().getName();
+        return null;
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.jst.server.generic.internal.ui.ServerDefinitionTypeAwareWizardFragment#title()
+     */
+    public String title() {
+        String sName= getServerName();
+        if(sName==null || sName.length()<1)
+            sName="Generic";
+        return  GenericServerUIMessages.bind(GenericServerUIMessages.serverWizardTitle,sName);
+    }
+}
diff --git a/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/GenericUiPlugin.java b/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/GenericUiPlugin.java
new file mode 100644
index 0000000..fff5a81
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/GenericUiPlugin.java
@@ -0,0 +1,93 @@
+/***************************************************************************************************
+ * Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Gorkem Ercan - initial API and implementation
+ *               
+ **************************************************************************************************/
+package org.eclipse.jst.server.generic.ui.internal;
+
+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/new_server_wiz.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;
+	}
+}
diff --git a/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/InstallableRuntimeDecorator.java b/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/InstallableRuntimeDecorator.java
new file mode 100644
index 0000000..f5dbad3
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/InstallableRuntimeDecorator.java
@@ -0,0 +1,79 @@
+package org.eclipse.jst.server.generic.ui.internal;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.jface.operation.IRunnableWithProgress;
+import org.eclipse.jst.server.generic.core.internal.GenericServerRuntime;
+import org.eclipse.jst.server.generic.core.internal.Trace;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.DirectoryDialog;
+import org.eclipse.wst.server.core.internal.IInstallableRuntime;
+import org.eclipse.wst.server.core.internal.ServerPlugin;
+import org.eclipse.wst.server.ui.wizard.IWizardHandle;
+
+public class InstallableRuntimeDecorator implements
+		GenericServerCompositeDecorator {
+
+	private GenericServerRuntime fRuntime;
+	private IWizardHandle fWizard;
+
+	public InstallableRuntimeDecorator(IWizardHandle wizard, GenericServerRuntime runtime) {
+		fRuntime = runtime;
+		fWizard = wizard;
+	}
+
+	public void decorate(final GenericServerComposite composite) {
+		final IInstallableRuntime ir = ServerPlugin
+				.findInstallableRuntime(fRuntime.getRuntime().getRuntimeType()
+						.getId());
+
+		Button install = SWTUtil.createButton(composite, GenericServerUIMessages.installServerButton);
+		install.addSelectionListener(new SelectionAdapter() {
+			public void widgetSelected(SelectionEvent se) {
+				DirectoryDialog dialog = new DirectoryDialog(composite
+						.getShell());
+				dialog.setMessage(GenericServerUIMessages.installationDirectory);
+				final String selectedDirectory = dialog.open();
+				if (selectedDirectory != null) {
+					
+					IRunnableWithProgress runnable = new IRunnableWithProgress() {
+						public void run(IProgressMonitor monitor)
+								throws InvocationTargetException,
+								InterruptedException {
+							try {
+								ir.install(new Path(selectedDirectory),
+										new NullProgressMonitor());
+							} catch (CoreException e) {
+								Trace.trace(Trace.SEVERE,
+										"Error installing runtime", e);
+							}
+						}
+					};
+					
+					try {
+						fWizard.run(true, false, runnable);
+					} catch (InterruptedException e) {
+						e.printStackTrace();
+					} catch (InvocationTargetException e) {
+						e.printStackTrace();
+					} catch (Exception e) {
+						Trace.trace(Trace.SEVERE,
+								"Error installing runtime", e);
+					}
+
+				}
+			}
+		});
+	}
+
+	public boolean validate() {
+		return false;
+	}
+
+}
diff --git a/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/JRESelectDecorator.java b/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/JRESelectDecorator.java
new file mode 100644
index 0000000..e54bbf1
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/JRESelectDecorator.java
@@ -0,0 +1,140 @@
+/***************************************************************************************************
+ * Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Gorkem Ercan - initial API and implementation
+ *               
+ **************************************************************************************************/
+package org.eclipse.jst.server.generic.ui.internal;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.eclipse.jdt.launching.IVMInstall;
+import org.eclipse.jdt.launching.IVMInstallType;
+import org.eclipse.jdt.launching.JavaRuntime;
+import org.eclipse.jface.preference.IPreferenceNode;
+import org.eclipse.jface.preference.PreferenceDialog;
+import org.eclipse.jface.preference.PreferenceManager;
+import org.eclipse.jface.window.Window;
+import org.eclipse.jst.server.generic.core.internal.GenericServerRuntime;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.BusyIndicator;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Link;
+import org.eclipse.ui.PlatformUI;
+
+
+public class JRESelectDecorator implements GenericServerCompositeDecorator {
+	private List installedJREs;
+	private String[] jreNames;
+	private GenericServerRuntime fRuntime;
+	public JRESelectDecorator(GenericServerRuntime runtime){
+		super();
+		fRuntime = runtime;
+	}
+	
+	public void decorate(final GenericServerComposite composite) {
+		updateJREs();
+		Link link = new Link(composite,SWT.NONE);
+		link.setLayoutData(new GridData(SWT.FILL,SWT.NONE,true,false,3,1));
+		link.setText(GenericServerUIMessages.installed_jre_link);
+		
+		Label label = new Label(composite, SWT.NONE);
+		label.setText(GenericServerUIMessages.jre_select_label);
+		
+		final Combo combo = new Combo(composite, SWT.DROP_DOWN | SWT.READ_ONLY);
+		combo.setItems(jreNames);
+		GridData data = new GridData(SWT.FILL,SWT.NONE,false,false,2,1);
+		
+		combo.setLayoutData(data);
+		
+		combo.addSelectionListener(new SelectionListener() {
+			public void widgetSelected(SelectionEvent e) {
+				int sel = combo.getSelectionIndex();
+				IVMInstall vmInstall = null;
+				if (sel > 0)
+					vmInstall = (IVMInstall) installedJREs.get(sel - 1);
+			
+				fRuntime.setVMInstall(vmInstall);
+				validate();
+			}
+
+			public void widgetDefaultSelected(SelectionEvent e) {
+				widgetSelected(e);
+			}
+		});
+		
+		link.addSelectionListener(new SelectionAdapter() {
+			public void widgetSelected(SelectionEvent e) {
+				String currentVM = combo.getText();
+				if (showPreferencePage(composite)) {
+					updateJREs();
+					combo.setItems(jreNames);
+					combo.setText(currentVM);
+					if (combo.getSelectionIndex() == -1)
+						combo.select(0);
+				}
+			}
+		});
+
+		if (fRuntime!=null){
+			if(fRuntime.isUsingDefaultJRE()){
+				combo.select(0);
+			}else{
+				combo.setText(fRuntime.getVMInstall().getName());
+			}
+		}
+	}
+
+	
+	protected boolean showPreferencePage(GenericServerComposite composite) {
+		PreferenceManager manager = PlatformUI.getWorkbench().getPreferenceManager();
+		IPreferenceNode node = manager.find("org.eclipse.jdt.ui.preferences.JavaBasePreferencePage").findSubNode("org.eclipse.jdt.debug.ui.preferences.VMPreferencePage");
+		PreferenceManager manager2 = new PreferenceManager();
+		manager2.addToRoot(node);
+		final PreferenceDialog dialog = new PreferenceDialog(composite.getShell(), manager2);
+		final boolean[] result = new boolean[] { false };
+		BusyIndicator.showWhile(composite.getDisplay(), new Runnable() {
+			public void run() {
+				dialog.create();
+				if (dialog.open() == Window.OK)
+					result[0] = true;
+			}
+		});
+		return result[0];
+	}
+	
+	protected void updateJREs() {
+		installedJREs = new ArrayList();
+		IVMInstallType[] vmInstallTypes = JavaRuntime.getVMInstallTypes();
+		int size = vmInstallTypes.length;
+		for (int i = 0; i < size; i++) {
+			IVMInstall[] vmInstalls = vmInstallTypes[i].getVMInstalls();
+			int size2 = vmInstalls.length;
+			for (int j = 0; j < size2; j++) {
+				installedJREs.add(vmInstalls[j]);
+			}
+		}
+		
+		size = installedJREs.size();
+		jreNames = new String[size+1];
+		jreNames[0] = GenericServerUIMessages.defaultJRE;
+		for (int i = 0; i < size; i++) {
+			IVMInstall vmInstall = (IVMInstall) installedJREs.get(i);
+			jreNames[i+1] = vmInstall.getName();
+		}
+	}
+	
+	
+	
+	public boolean validate() {
+		return false;
+	}
+}
diff --git a/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/SWTUtil.java b/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/SWTUtil.java
new file mode 100644
index 0000000..4964138
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/SWTUtil.java
@@ -0,0 +1,88 @@
+/***************************************************************************************************
+ * Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Gorkem Ercan - initial API and implementation
+ *               
+ **************************************************************************************************/
+package org.eclipse.jst.server.generic.ui.internal;
+
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.resource.JFaceResources;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.FontMetrics;
+import org.eclipse.swt.graphics.GC;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+/**
+ * SWT Utility class.
+ * Copied from org.eclipse.wst.server.ui.internal.
+ */
+public class SWTUtil {
+	private static FontMetrics fontMetrics;
+
+	protected static void initializeDialogUnits(Control testControl) {
+		// Compute and store a font metric
+		GC gc = new GC(testControl);
+		gc.setFont(JFaceResources.getDialogFont());
+		fontMetrics = gc.getFontMetrics();
+		gc.dispose();
+	}
+
+	/**
+	 * Returns a width hint for a button control.
+	 */
+	protected static int getButtonWidthHint(Button button) {
+		int widthHint = Dialog.convertHorizontalDLUsToPixels(fontMetrics, IDialogConstants.BUTTON_WIDTH);
+		return Math.max(widthHint, button.computeSize(SWT.DEFAULT, SWT.DEFAULT, true).x);
+	}
+
+	/**
+	 * Create a new button with the standard size.
+	 * 
+	 * @param comp the component to add the button to
+	 * @param label the button label
+	 * @return a button
+	 */
+	public static Button createButton(Composite comp, String label) {
+		Button b = new Button(comp, SWT.PUSH);
+		b.setText(label);
+		if (fontMetrics == null)
+			initializeDialogUnits(comp);
+		GridData data = new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_BEGINNING);
+		data.widthHint = getButtonWidthHint(b);
+		b.setLayoutData(data);
+		return b;
+	}
+	
+	/**
+	 * Convert DLUs to pixels.
+	 * 
+	 * @param comp a component
+	 * @param x pixels
+	 * @return dlus
+	 */
+	public static int convertHorizontalDLUsToPixels(Composite comp, int x) {
+		if (fontMetrics == null)
+			initializeDialogUnits(comp);
+		return Dialog.convertHorizontalDLUsToPixels(fontMetrics, x);
+	}
+
+	/**
+	 * Convert DLUs to pixels.
+	 * 
+	 * @param comp a component
+	 * @param y pixels
+	 * @return dlus
+	 */
+	public static int convertVerticalDLUsToPixels(Composite comp, int y) {
+		if (fontMetrics == null)
+			initializeDialogUnits(comp);
+		return Dialog.convertVerticalDLUsToPixels(fontMetrics, y);
+	}
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/ServerDefinitionTypeAwareWizardFragment.java b/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/ServerDefinitionTypeAwareWizardFragment.java
new file mode 100644
index 0000000..1a910d1
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/ServerDefinitionTypeAwareWizardFragment.java
@@ -0,0 +1,80 @@
+/***************************************************************************************************
+ * Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Gorkem Ercan - initial API and implementation
+ *               
+ **************************************************************************************************/
+package org.eclipse.jst.server.generic.ui.internal;
+
+import java.util.Map;
+
+import org.eclipse.jst.server.generic.core.internal.CorePlugin;
+import org.eclipse.jst.server.generic.servertype.definition.ServerRuntime;
+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;
+
+/**
+ * A wizard fragment that provides support for serverdef files.
+ *
+ * @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);
+		GridLayout grid = new GridLayout(1,false);
+		grid.marginWidth=0;
+		container.setLayout(grid);
+	    container.setLayoutData(new GridData(GridData.FILL_BOTH));
+		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();
+	/**
+	 * Create the real content
+	 * @param parent
+	 * @param handle
+	 */
+	public abstract void createContent(Composite parent, IWizardHandle handle);
+
+	/**
+	 * Retuns the ServerRuntime.
+	 * @param definitionID
+	 * @param properties
+	 * @return
+	 */	
+	protected ServerRuntime getServerTypeDefinition(String definitionID, Map properties)
+	{
+	    return CorePlugin.getDefault().getServerTypeDefinitionManager().getServerRuntimeDefinition(definitionID,properties);
+	}
+}
diff --git a/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/ServerTypeDefinitionDecorator.java b/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/ServerTypeDefinitionDecorator.java
new file mode 100644
index 0000000..9ea43f8
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/ServerTypeDefinitionDecorator.java
@@ -0,0 +1,320 @@
+/***************************************************************************************************
+ * Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Gorkem Ercan - initial API and implementation
+ *               
+ **************************************************************************************************/
+package org.eclipse.jst.server.generic.ui.internal;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.StringTokenizer;
+
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.dialogs.IMessageProvider;
+import org.eclipse.jst.server.generic.servertype.definition.Property;
+import org.eclipse.jst.server.generic.servertype.definition.ServerRuntime;
+import org.eclipse.osgi.util.NLS;
+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.widgets.Button;
+import org.eclipse.swt.widgets.Combo;
+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.Label;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.jst.server.generic.ui.internal.SWTUtil;
+import org.eclipse.wst.server.ui.wizard.IWizardHandle;
+/**
+ * Provides the UI objects for gathering user information
+ * for server properties.
+ * 
+ * @author Gorkem Ercan
+ */
+public abstract class ServerTypeDefinitionDecorator implements GenericServerCompositeDecorator {
+
+	protected static final String CONTEXT_RUNTIME = Property.CONTEXT_RUNTIME;
+	protected static final String CONTEXT_SERVER = Property.CONTEXT_SERVER;
+	private ServerRuntime fDefinition;
+    private Map fProperties;
+	private String fContext;
+	private String fLastMessage = null;
+	protected IWizardHandle fWizard;
+	private List fPropertyControls= new ArrayList();
+
+	private final class PathModifyListener implements ModifyListener {
+		public void modifyText(ModifyEvent e) {
+			String path = ((Text) e.widget).getText();
+			
+			if(path.length()<1)
+			{
+				fLastMessage = GenericServerUIMessages.emptyPath;
+				fWizard.setMessage(fLastMessage,IMessageProvider.ERROR);
+			}
+			else if(!pathExist(path)){
+				fLastMessage = NLS.bind(GenericServerUIMessages.invalidPath,path);
+				fWizard.setMessage(fLastMessage,IMessageProvider.ERROR);
+			}else{
+				if(fLastMessage!=null && fLastMessage.equals(fWizard.getMessage())){
+					fLastMessage=null;
+					fWizard.setMessage(null,IMessageProvider.NONE);
+				}
+				validate();
+			}
+		}
+		private boolean pathExist(String path){
+			File f = new File(path);
+			return f.exists();
+		}
+	}
+
+	/**
+	 * Constructor
+	 * 
+	 * @param definition
+	 * @param initialProperties
+	 * @param context
+	 * @param handle
+	 */
+	public ServerTypeDefinitionDecorator(ServerRuntime definition, Map initialProperties, String context, IWizardHandle handle) {
+		super();
+		fDefinition = definition;
+		fProperties = initialProperties;
+		fContext = context;
+		fWizard = handle;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.jst.server.generic.ui.internal.GenericServerCompositeDecorator#decorate(org.eclipse.jst.server.generic.ui.internal.GenericServerComposite)
+	 */
+	public void decorate(GenericServerComposite composite) {
+
+		List properties =null; 
+		if(fDefinition==null){
+			properties= new ArrayList(0);
+		}
+		else{
+			properties= fDefinition.getProperty();
+		}
+		for (int i = 0; i < properties.size(); i++) {
+			Property property = (Property) properties.get(i);
+			if (this.fContext.equals(property.getContext()))
+				createPropertyControl(composite, property);
+		}
+		Dialog.applyDialogFont(composite);
+	}
+
+	
+    private void createPropertyControl(Composite parent, Property property){
+    	if( Property.TYPE_DIRECTORY.equals(property.getType())) {
+    		Text path = createLabeledPath(property.getLabel(),getPropertyValue(property),parent);
+    		path.setData(property);
+    		registerControl(path);
+     	} else if( Property.TYPE_FILE.equals(property.getType())) {
+    	    Text file = createLabeledFile(property.getLabel(),getPropertyValue(property),parent);
+    		file.setData(property);
+    		registerControl(file);
+       	} else if( Property.TYPE_TEXT.equals(property.getType())) {
+    	    Text str = createLabeledText(property.getLabel(),getPropertyValue(property),parent);
+    		str.setData(property);
+    		registerControl(str);
+       	} else if( Property.TYPE_BOOLEAN.equals(property.getType())) {
+    	    Button bool =createLabeledCheck(property.getLabel(),("true".equals( getPropertyValue(property))),	parent); //$NON-NLS-1$
+    		bool.setData(property);
+    		registerControl(bool);
+       	}else if(Property.TYPE_SELECT.equals(property.getType())) {
+       		Combo combo = createLabeledCombo(parent, property);
+       		combo.setData(property);
+       		registerControl(combo);
+       	}
+       	else  {
+    	    Text defaultText= createLabeledText(property.getLabel(),getPropertyValue(property),parent);
+    		defaultText.setData(property);
+    		registerControl(defaultText);
+    	}
+    }
+
+	private Combo createLabeledCombo(Composite defPanel, Property property) {
+		
+	   	GridData gridData;
+    	Label label = new Label(defPanel, SWT.WRAP);
+    	gridData = new GridData();
+    	label.setLayoutData(gridData);
+    	label.setText(property.getLabel());
+
+		Combo combo = new Combo(defPanel,SWT.READ_ONLY);
+    	gridData = new GridData(GridData.FILL_HORIZONTAL
+    			| GridData.GRAB_HORIZONTAL);
+    	gridData.horizontalSpan = 2;
+    	combo.setLayoutData(gridData);
+    	
+		StringTokenizer tokenizer = new StringTokenizer(property.getDefault(),","); //$NON-NLS-1$
+		while(tokenizer.hasMoreTokens()){
+			combo.add(tokenizer.nextToken());
+		}
+		if(combo.getItemCount()>0)
+			combo.select(0);
+		return combo;
+	}
+    private void registerControl(Control control)
+    {
+    	fPropertyControls.add(control);
+    }
+    private 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) {
+             //nothing to do 
+            }
+
+            public void widgetDefaultSelected(SelectionEvent e) {
+            // nothing to do
+            }
+        });
+    	
+    	return fButton;
+    }
+    private Text createLabeledFile(String title, String value,final Composite defPanel) {
+    	GridData gridData;
+    	Label label = new Label(defPanel, SWT.WRAP);
+    	gridData = new GridData();
+    	label.setLayoutData(gridData);
+    	label.setText(title);
+    
+    	final Text text = new Text(defPanel, SWT.SHADOW_IN | SWT.BORDER);
+    	gridData = new GridData(GridData.FILL_HORIZONTAL
+    			| GridData.GRAB_HORIZONTAL);
+    	gridData.horizontalSpan = 1;
+    	text.setLayoutData(gridData);
+    	text.setText(value);
+    	text.addModifyListener(new PathModifyListener());
+    	Button fButton = SWTUtil.createButton(defPanel,GenericServerUIMessages.serverTypeGroup_label_browse);
+    	
+    	fButton.addSelectionListener(new SelectionListener() {
+    		public void widgetSelected(SelectionEvent e) {
+    			FileDialog dlg = new FileDialog(defPanel.getShell());
+    			dlg.setFileName(text.getText().replace('\\','/'));
+    			String res = dlg.open();
+    			if (res != null) {
+    				text.setText(res.replace('\\','/'));
+
+    			}
+    		}
+    
+    		public void widgetDefaultSelected(SelectionEvent e) {
+    			widgetSelected(e);
+    		}
+    
+    	});
+    
+    	return text;
+    }
+	
+    private Text createLabeledPath(String title, String value,
+    		final Composite parent) {
+    	GridData gridData;
+    	Label label = new Label(parent, SWT.WRAP);
+    	gridData = new GridData();
+    	label.setLayoutData(gridData);
+    	label.setText(title);
+    
+    	final Text text = new Text(parent, SWT.SHADOW_IN | SWT.BORDER);
+    	gridData = new GridData(GridData.FILL_HORIZONTAL);
+    	gridData.horizontalSpan = 1;
+    	text.setLayoutData(gridData);
+    	text.setText(value);
+    	text.addModifyListener(new PathModifyListener());
+    	Button fButton = SWTUtil.createButton(parent,GenericServerUIMessages.serverTypeGroup_label_browse);
+    	fButton.addSelectionListener(new SelectionListener() {
+    		public void widgetSelected(SelectionEvent e) {
+    			DirectoryDialog dlg = new DirectoryDialog(parent.getShell());
+    			dlg.setFilterPath(text.getText().replace('\\','/'));
+    			String res = dlg.open();
+    			if (res != null) {
+    				text.setText(res.replace('\\','/'));
+
+    			}
+    		}
+    
+    		public void widgetDefaultSelected(SelectionEvent e) {
+    			widgetSelected(e);
+    		}
+    
+    	});
+    	return text;
+    }
+    private 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 text = new Text(defPanel, SWT.SHADOW_IN | SWT.BORDER);
+    	gridData = new GridData(GridData.FILL_HORIZONTAL
+    			| GridData.GRAB_HORIZONTAL);
+    	gridData.horizontalSpan = 2;
+    	text.setLayoutData(gridData);
+    	text.setText(value);
+
+    	return text;
+    }
+	private String getPropertyValue(Property property){	
+		if(fProperties!=null && fProperties.isEmpty()==false){
+		//user properties exist use those
+			return(String)fProperties.get(property.getId()); 
+		}	
+		if(Property.CONTEXT_SERVER.equals(property.getContext()))
+			return fDefinition.getResolver().resolveProperties(property.getDefault());
+		return property.getDefault();
+	}	
+
+   /**
+    * Returns the property name/value pairs.
+    * @return Map containing the values collected from the user
+    */
+	public Map getValues(){
+		Map propertyMap = new HashMap();
+    	for(int i=0; i<fPropertyControls.size();i++){
+    		Property prop = (Property)((Control)fPropertyControls.get(i)).getData();
+    		if(fPropertyControls.get(i)instanceof Button){
+    			Button button = (Button)fPropertyControls.get(i);
+    			propertyMap.put(prop.getId(),Boolean.toString(button.getSelection()));
+    		}
+    		else if(fPropertyControls.get(i) instanceof Combo){
+    			Combo combo = (Combo)fPropertyControls.get(i);
+     			int index = combo.getSelectionIndex();
+    			propertyMap.put(prop.getId(),combo.getItem(index));
+    		}else{
+    			Text text = (Text)fPropertyControls.get(i);
+    			propertyMap.put(prop.getId(),text.getText());
+    		}
+    	}
+    	return propertyMap;
+    }
+}
diff --git a/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/ServerTypeDefinitionRuntimeDecorator.java b/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/ServerTypeDefinitionRuntimeDecorator.java
new file mode 100644
index 0000000..50cedca
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/ServerTypeDefinitionRuntimeDecorator.java
@@ -0,0 +1,53 @@
+/***************************************************************************************************
+ * Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Gorkem Ercan - initial API and implementation
+ *               
+ **************************************************************************************************/
+package org.eclipse.jst.server.generic.ui.internal;
+
+import java.util.Map;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.jface.dialogs.IMessageProvider;
+import org.eclipse.jst.server.generic.core.internal.GenericServerRuntime;
+import org.eclipse.jst.server.generic.servertype.definition.ServerRuntime;
+import org.eclipse.wst.server.ui.wizard.IWizardHandle;
+
+public class ServerTypeDefinitionRuntimeDecorator extends ServerTypeDefinitionDecorator {
+
+	private GenericServerRuntime fRuntime;
+	public ServerTypeDefinitionRuntimeDecorator(ServerRuntime definition, Map initialProperties, IWizardHandle wizard, GenericServerRuntime runtime) {
+		super(definition, initialProperties,CONTEXT_RUNTIME,wizard);
+		fRuntime=runtime;
+	}
+
+	public boolean validate(){
+
+		if(fRuntime==null)
+			return false;
+		fRuntime.setServerDefinitionId(fRuntime.getRuntime().getRuntimeType().getId());
+        fRuntime.setServerInstanceProperties(getValues());
+       
+		IStatus status = fRuntime.validate();
+		
+		if (status == null || status.isOK()){
+
+			fWizard.setMessage(null, IMessageProvider.NONE);
+			fWizard.update();
+	        String wDir = fRuntime.getServerTypeDefinition().getResolver().resolveProperties(fRuntime.getServerTypeDefinition().getStart().getWorkingDirectory()); 
+	        fRuntime.getRuntimeWorkingCopy().setLocation(new Path(wDir));
+
+			return false;
+		}else
+		{
+			fWizard.setMessage(status.getMessage(), IMessageProvider.ERROR);
+			fWizard.update();
+			return true;
+		} 
+	}
+}
diff --git a/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/ServerTypeDefinitionServerDecorator.java b/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/ServerTypeDefinitionServerDecorator.java
new file mode 100644
index 0000000..727c258
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/ServerTypeDefinitionServerDecorator.java
@@ -0,0 +1,50 @@
+/***************************************************************************************************
+ * Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Gorkem Ercan - initial API and implementation
+ *               
+ **************************************************************************************************/
+package org.eclipse.jst.server.generic.ui.internal;
+
+import java.util.Map;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.jface.dialogs.IMessageProvider;
+import org.eclipse.jst.server.generic.core.internal.GenericServer;
+import org.eclipse.jst.server.generic.servertype.definition.ServerRuntime;
+import org.eclipse.wst.server.ui.wizard.IWizardHandle;
+/**
+ * Server properties decorator.
+ * @author Gorkem Ercan
+ */
+public class ServerTypeDefinitionServerDecorator extends
+		ServerTypeDefinitionDecorator {
+	
+	private GenericServer fServer;
+	public ServerTypeDefinitionServerDecorator(ServerRuntime definition, Map initialProperties,IWizardHandle wizard,GenericServer server) {
+		super(definition, initialProperties,CONTEXT_SERVER, wizard);
+		fServer=server;
+	}
+
+	public boolean validate() {
+		if(fServer!=null)
+			fServer.setServerInstanceProperties(getValues());
+		IStatus status = fServer.validate();
+		if(status==null || status.isOK())
+		{
+			fWizard.setMessage(null, IMessageProvider.NONE);
+			fWizard.update();
+		}
+		else
+		{
+			fWizard.setMessage(status.getMessage(), IMessageProvider.ERROR);
+			fWizard.update();
+			return true;
+		}
+		return false;
+	}
+
+}
diff --git a/plugins/org.eclipse.jst.server.installable/.cvsignore b/plugins/org.eclipse.jst.server.installable/.cvsignore
new file mode 100644
index 0000000..c14487c
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.installable/.cvsignore
@@ -0,0 +1 @@
+build.xml
diff --git a/plugins/org.eclipse.jst.server.installable/.project b/plugins/org.eclipse.jst.server.installable/.project
new file mode 100644
index 0000000..4d936fd
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.installable/.project
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.jst.server.installable</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<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>
+	</natures>
+</projectDescription>
diff --git a/plugins/org.eclipse.jst.server.installable/META-INF/MANIFEST.MF b/plugins/org.eclipse.jst.server.installable/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..499d7de
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.installable/META-INF/MANIFEST.MF
@@ -0,0 +1,9 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-SymbolicName: org.eclipse.jst.server.installable;singleton:=true
+Bundle-Name: %pluginName
+Bundle-Version: 1.5.2.qualifier
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Require-Bundle:  org.eclipse.core.runtime;bundle-version="[3.2.0,3.3.0)",
+ org.eclipse.wst.server.core;bundle-version="[1.0.102,1.1.0)"
diff --git a/plugins/org.eclipse.jst.server.installable/about.html b/plugins/org.eclipse.jst.server.installable/about.html
new file mode 100644
index 0000000..4ec5989
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.installable/about.html
@@ -0,0 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<HTML>
+
+<head>
+<title>About</title>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
+</head>
+
+<BODY lang="EN-US">
+
+<H3>About This Content</H3>
+
+<P>May 2, 2006</P>
+
+<H3>License</H3>
+
+<P>The Eclipse Foundation makes available all content in this plug-in 
+("Content"). Unless otherwise indicated below, the Content is provided to you 
+under the terms and conditions of the Eclipse Public License Version 1.0 
+("EPL"). A copy of the EPL is available at
+<A href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/org/documents/epl-v10.php</A>. 
+For purposes of the EPL, "Program" will mean the Content.</P>
+
+<P>If you did not receive this Content directly from the Eclipse Foundation, the 
+Content is being redistributed by another party ("Redistributor") and different 
+terms and conditions may apply to your use of any object code in the Content. 
+Check the Redistributor’s license that was provided with the Content. If no such 
+license exists, contact the Redistributor. Unless otherwise indicated below, the 
+terms and conditions of the EPL still apply to any source code in the Content 
+and such source code may be obtained at
+<A href="http://www.eclipse.org/">http://www.eclipse.org/</A>.</P>
+
+</BODY>
+</HTML>
diff --git a/plugins/org.eclipse.jst.server.installable/build.properties b/plugins/org.eclipse.jst.server.installable/build.properties
new file mode 100644
index 0000000..2ce0007
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.installable/build.properties
@@ -0,0 +1,6 @@
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml,\
+               about.html,\
+               plugin.properties
+src.includes = build.properties
diff --git a/plugins/org.eclipse.jst.server.installable/plugin.properties b/plugins/org.eclipse.jst.server.installable/plugin.properties
new file mode 100644
index 0000000..1ffab03
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.installable/plugin.properties
@@ -0,0 +1,29 @@
+##################################################################################################
+# Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. All rights reserved. This program and the
+# accompanying materials are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+# 
+# Contributors: Gorkem Ercan - initial API and implementation
+#               
+###################################################################################################
+pluginName=Installable servers
+providerName=Eclipse.org
+pluginDescription=Provides installable servers
+
+# Geronimo download
+runtimeTypeGeronimo10Label=Geronimo v1.0
+runtimeTypeGeronimo10Description=Apache Geronimo v1.0 supports J2EE 1.2, 1.3 and 1.4.
+runtimeTypeGeronimo11Label=Geronimo v1.1
+runtimeTypeGeronimo11Description=Apache Geronimo v1.1 supports J2EE 1.2, 1.3 and 1.4.
+vendorApache=Apache
+
+# WebSphere CE download
+runtimeTypeWASCE1xLabel=WebSphere Application Server Community Edition v1.x
+runtimeTypeWASCE1xDescription=IBM WebSphere Application Server Community Edition v1.x supports J2EE 1.4.
+vendorIBM=IBM
+
+# Pramati download
+runtimeTypePramatiLabel=Pramati 4.1.x
+runtimeTypePramatiDescription=Pramati 4.1.x Server
+vendorPramati=Pramati
\ No newline at end of file
diff --git a/plugins/org.eclipse.jst.server.installable/plugin.xml b/plugins/org.eclipse.jst.server.installable/plugin.xml
new file mode 100644
index 0000000..8c824a0
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.installable/plugin.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+<plugin>
+  <extension point="org.eclipse.wst.server.core.installableServers">
+    <installableServer
+      id="org.apache.geronimo.generic.runtime.10"
+      name="%runtimeTypeGeronimo10Label"
+      description="%runtimeTypeGeronimo10Description"
+      vendor="%vendorApache"
+      version="1.0"
+      featureId="org.apache.geronimo.feature"
+      featureVersion="1.1.0"
+      featureSite="http://www.apache.org/dist/geronimo/eclipse/updates/">
+    </installableServer>
+    <installableServer
+      id="org.apache.geronimo.generic.runtime.11"
+      name="%runtimeTypeGeronimo11Label"
+      description="%runtimeTypeGeronimo11Description"
+      vendor="%vendorApache"
+      version="1.1"
+      featureId="org.apache.geronimo.feature"
+      featureVersion="1.1.0"
+      featureSite="http://www.apache.org/dist/geronimo/eclipse/updates/">
+    </installableServer>
+    <installableServer
+      id="org.apache.geronimo.generic.runtime.11"
+      name="%runtimeTypeWASCE1xLabel"
+      description="%runtimeTypeWASCE1xDescription"
+      vendor="%vendorIBM"
+      version="1.1"
+      featureId="com.ibm.websphere.ce.feature"
+      featureVersion="1.1.0"
+      featureSite="http://download.boulder.ibm.com/ibmdl/pub/software/websphere/wasce/updates/">
+    </installableServer>
+    <installableServer
+      id="xxx"
+      name="%runtimeTypePramatiLabel"
+      description="%runtimeTypePramatiDescription"
+      vendor="%vendorPramati"
+      version="4.1"
+      featureId="com.pramati.eclipse.feature"
+      featureVersion="1.0.0"
+      featureSite="http://www.pramati.com/downloads/eclipse/updates/">
+    </installableServer>
+  </extension>
+</plugin>
diff --git a/plugins/org.eclipse.jst.server.websphere.core/.classpath b/plugins/org.eclipse.jst.server.websphere.core/.classpath
new file mode 100644
index 0000000..751c8f2
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.websphere.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.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/org.eclipse.jst.server.websphere.core/.cvsignore b/plugins/org.eclipse.jst.server.websphere.core/.cvsignore
new file mode 100644
index 0000000..ef3ffb2
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.websphere.core/.cvsignore
@@ -0,0 +1,6 @@
+bin
+*.xml
+temp.folder
+webspherecore.jar
+webspherecoresrc.zip
+javaCompiler.webspherecore.jar.args
diff --git a/plugins/org.eclipse.jst.server.websphere.core/.project b/plugins/org.eclipse.jst.server.websphere.core/.project
new file mode 100644
index 0000000..83cf217
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.websphere.core/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.jst.server.websphere.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.websphere.core/.settings/org.eclipse.core.resources.prefs b/plugins/org.eclipse.jst.server.websphere.core/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..3cc81c3
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.websphere.core/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,3 @@
+#Sun Apr 16 23:22:14 EDT 2006
+eclipse.preferences.version=1
+encoding/<project>=ISO-8859-1
diff --git a/plugins/org.eclipse.jst.server.websphere.core/.settings/org.eclipse.pde.prefs b/plugins/org.eclipse.jst.server.websphere.core/.settings/org.eclipse.pde.prefs
new file mode 100644
index 0000000..556ca8a
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.websphere.core/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,13 @@
+#Sun Apr 16 23:22:00 EDT 2006
+compilers.p.build=1
+compilers.p.deprecated=1
+compilers.p.no-required-att=0
+compilers.p.not-externalized-att=1
+compilers.p.unknown-attribute=1
+compilers.p.unknown-class=0
+compilers.p.unknown-element=1
+compilers.p.unknown-resource=0
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.use-project=true
+eclipse.preferences.version=1
diff --git a/plugins/org.eclipse.jst.server.websphere.core/META-INF/MANIFEST.MF b/plugins/org.eclipse.jst.server.websphere.core/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..1ed7499
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.websphere.core/META-INF/MANIFEST.MF
@@ -0,0 +1,32 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: WebSphere Generic Server Definition Core Plug-in
+Bundle-SymbolicName: org.eclipse.jst.server.websphere.core; singleton:=true
+Bundle-Version: 1.0.101.qualifier
+Bundle-ClassPath: webspherecore.jar
+Bundle-Activator: org.eclipse.jst.server.websphere.core.CorePlugin
+Bundle-Vendor: Eclipse.org
+Bundle-Localization: plugin
+Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.core.resources;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.debug.core;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.jdt.core;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.jdt.launching;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.wst.server.core;bundle-version="[1.0.102,1.2.0)",
+ org.eclipse.jst.server.core;bundle-version="[1.0.102,1.2.0)",
+ org.eclipse.jst.server.ui;bundle-version="[1.0.102,1.2.0)",
+ org.eclipse.jst.j2ee;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.jst.j2ee.core;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.jst.j2ee.web;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.jst.server.generic.core;bundle-version="[1.0.100,1.2.0)",
+ org.eclipse.jst.server.generic.ui;bundle-version="[1.0.100,1.2.0)",
+ org.eclipse.emf.ecore.xmi;bundle-version="[2.2.0,2.3.0)",
+ org.eclipse.wst.common.modulecore;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.core.runtime;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.core.resources;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.wst.common.core;bundle-version="[1.0.0,1.2.0)",
+ org.eclipse.wst.common.project.facet.core;bundle-version="[1.0.0,1.2.0)",
+ org.eclipse.jst.common.project.facet.core;bundle-version="[1.0.0,1.2.0)",
+ org.eclipse.wst.common.project.facet.ui;bundle-version="[1.0.0,1.2.0)"
+Eclipse-LazyStart: true
+Export-Package: org.eclipse.jst.server.websphere.core
diff --git a/plugins/org.eclipse.jst.server.websphere.core/about.html b/plugins/org.eclipse.jst.server.websphere.core/about.html
new file mode 100644
index 0000000..4ec5989
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.websphere.core/about.html
@@ -0,0 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<HTML>
+
+<head>
+<title>About</title>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
+</head>
+
+<BODY lang="EN-US">
+
+<H3>About This Content</H3>
+
+<P>May 2, 2006</P>
+
+<H3>License</H3>
+
+<P>The Eclipse Foundation makes available all content in this plug-in 
+("Content"). Unless otherwise indicated below, the Content is provided to you 
+under the terms and conditions of the Eclipse Public License Version 1.0 
+("EPL"). A copy of the EPL is available at
+<A href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/org/documents/epl-v10.php</A>. 
+For purposes of the EPL, "Program" will mean the Content.</P>
+
+<P>If you did not receive this Content directly from the Eclipse Foundation, the 
+Content is being redistributed by another party ("Redistributor") and different 
+terms and conditions may apply to your use of any object code in the Content. 
+Check the Redistributor’s license that was provided with the Content. If no such 
+license exists, contact the Redistributor. Unless otherwise indicated below, the 
+terms and conditions of the EPL still apply to any source code in the Content 
+and such source code may be obtained at
+<A href="http://www.eclipse.org/">http://www.eclipse.org/</A>.</P>
+
+</BODY>
+</HTML>
diff --git a/plugins/org.eclipse.jst.server.websphere.core/build.properties b/plugins/org.eclipse.jst.server.websphere.core/build.properties
new file mode 100644
index 0000000..d77c018
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.websphere.core/build.properties
@@ -0,0 +1,10 @@
+bin.includes = plugin.xml,\
+               serverdef/,\
+               META-INF/,\
+               about.html,\
+               webspherecore.jar,\
+               icons/,\
+               plugin.properties
+jars.compile.order = webspherecore.jar
+source.webspherecore.jar = src/
+output.webspherecore.jar = bin/
diff --git a/plugins/org.eclipse.jst.server.websphere.core/icons/obj16/websphere.gif b/plugins/org.eclipse.jst.server.websphere.core/icons/obj16/websphere.gif
new file mode 100644
index 0000000..b51ae39
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.websphere.core/icons/obj16/websphere.gif
Binary files differ
diff --git a/plugins/org.eclipse.jst.server.websphere.core/plugin.properties b/plugins/org.eclipse.jst.server.websphere.core/plugin.properties
new file mode 100644
index 0000000..dd16802
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.websphere.core/plugin.properties
@@ -0,0 +1,19 @@
+pluginName= WebSphere Generic Server Definition Core Plug-in
+providerName=Eclipse.org
+pluginDescription=Provides server definition IBM WebSphere application server
+genericCategory=IBM
+
+# ============ websphere ====================
+websphere.6.runtime.name=IBM WebSphere v6.0
+websphere.6.runtime.description=Publishes and runs J2EE 1.4 modules on a local server. \
+Provides basic server functionality
+websphere.6.server.name=IBM WebSphere v6.0
+websphere.6.server.description=Publishes and runs J2EE 1.4 modules on a local server. \
+Provides basic server functionality
+
+wasHome=IBM WebSphere Installation Directory:
+port=Port:
+wasProfile=Server Profile Directory:
+wasCell=Cell:
+wasNode=Node:
+wasServer=Server:
diff --git a/plugins/org.eclipse.jst.server.websphere.core/plugin.xml b/plugins/org.eclipse.jst.server.websphere.core/plugin.xml
new file mode 100644
index 0000000..a776c55
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.websphere.core/plugin.xml
@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+<plugin>
+
+  <extension point="org.eclipse.wst.server.core.runtimeTypes">
+    <runtimeType
+       id="org.eclipse.jst.server.generic.runtime.websphere.6"
+       name="%websphere.6.runtime.name"
+       description="%websphere.6.runtime.description"
+       vendor="%genericCategory"
+       version="6.0"
+       class="org.eclipse.jst.server.generic.core.internal.GenericServerRuntime">
+      <moduleType
+         types="jst.web"
+         versions="2.2, 2.3, 2.4"/>
+      <moduleType
+         types="jst.ejb"
+         versions="1.1, 2.0, 2.1"/>
+      <moduleType
+         types="jst.ear"
+         versions="1.2, 1.3, 1.4"/>
+      <moduleType
+         types="jst.connector"
+         versions="1.0, 1.5"/>
+       <moduleType
+         types="jst.utility"
+         versions="1.0"/>
+   
+    </runtimeType>
+  </extension>
+
+   <extension point="org.eclipse.wst.server.core.serverTypes">
+
+     <serverType
+           runtime="true"
+           class="org.eclipse.jst.server.generic.core.internal.GenericServer"
+           id="org.eclipse.jst.servers.websphere.6"
+           initialState="stopped"
+		   startTimeout="300000"
+           stopTimeout="15000"
+           supportsRemoteHosts="false"
+           runtimeTypeId="org.eclipse.jst.server.generic.runtime.websphere.6"
+           description="%websphere.6.server.description"
+           launchConfigId="org.eclipse.jst.server.generic.core.launchConfigurationType"
+           behaviourClass="org.eclipse.jst.server.generic.core.internal.GenericServerBehaviour"
+           name="%websphere.6.server.name"
+           hasConfiguration="false"
+           launchModes="run,debug"
+           startBeforePublish="true">
+     </serverType>
+     
+     
+	</extension>
+
+<!-- UI Components-->
+    <extension
+       point="org.eclipse.wst.server.ui.wizardFragments">
+
+     <fragment
+        id="org.eclipse.jst.server.generic.runtime"
+        typeIds="org.eclipse.jst.server.generic.runtime.websphere.6"
+        class="org.eclipse.jst.server.generic.ui.internal.GenericServerRuntimeWizardFragment"/>           
+     <fragment
+        id="org.eclipse.jst.server.generic.server"
+        typeIds="org.eclipse.jst.servers.websphere.6"
+        class="org.eclipse.jst.server.generic.ui.internal.GenericServerWizardFragment"/>   
+        
+  </extension>
+  
+  <extension point="org.eclipse.wst.server.ui.serverImages">
+         
+     <image
+         id="org.eclipse.jst.server.generic.image"
+         icon="icons/obj16/websphere.gif"
+         typeIds="org.eclipse.jst.servers.websphere.6" />
+     <image
+         id="org.eclipse.jst.server.generic.image"
+         icon="icons/obj16/websphere.gif"
+         typeIds="org.eclipse.jst.server.generic.runtime.websphere.6"/>
+
+	</extension>
+  
+<!-- Server type definitions -->
+   <extension point="org.eclipse.jst.server.generic.core.serverdefinition">
+		<serverdefinition id="org.eclipse.jst.server.generic.runtime.websphere.6" definitionfile="/serverdef/websphere.6.serverdef">
+		</serverdefinition>
+   </extension>
+
+   <extension point="org.eclipse.jst.server.generic.core.genericpublisher">
+      <genericpublisher
+            class="org.eclipse.jst.server.websphere.core.AntPublisher"
+            id="org.eclipse.jst.server.generic.websphere.antpublisher"/>
+   </extension>
+
+  <extension point="org.eclipse.wst.common.project.facet.core.runtimes">
+    <runtime-component-type
+       id="org.eclipse.jst.server.generic.runtime.websphere">
+    </runtime-component-type>
+
+    <runtime-component-version
+       type="org.eclipse.jst.server.generic.runtime.websphere"
+       version="6.0"/>
+
+    <adapter>
+      <runtime-component
+         id="org.eclipse.jst.server.generic.runtime.websphere"/>
+      <factory
+         class="org.eclipse.jst.server.core.internal.RuntimeClasspathProvider$Factory"/>
+      <type
+         class="org.eclipse.jst.common.project.facet.core.IClasspathProvider"/>
+    </adapter>
+
+    <supported>
+      <runtime-component
+         id="org.eclipse.jst.server.generic.runtime.websphere"
+         version="6.0"/>
+      <facet
+         id="jst.web"
+         version="2.2,2.3,2.4"/>
+      <facet
+         id="jst.ejb"
+         version="1.1,2.0,2.1"/>
+      <facet
+         id="jst.ear"
+         version="1.2,1.3,1.4"/>
+         
+       <facet
+         id="jst.appclient"
+         version="1.2,1.3,1.4"/>
+       
+       <facet
+         id="jst.utility"
+         version="1.0"/>  
+         
+       <facet
+         id="jst.connector"
+         version="1.0,1.5"/>
+    </supported>
+  </extension>
+
+  <extension point="org.eclipse.wst.common.project.facet.ui.images">
+    <image runtime-component-type="org.eclipse.jst.server.generic.runtime.websphere"
+      path="icons/obj16/websphere.gif"/>
+  </extension>
+
+  <extension point="org.eclipse.wst.common.project.facet.core.runtimes">
+    <adapter>
+      <runtime-component id="org.eclipse.jst.server.generic.runtime.websphere"/>
+      <factory class="org.eclipse.jst.server.ui.internal.RuntimeLabelProvider$Factory"/>
+      <type class="org.eclipse.wst.common.project.facet.ui.IRuntimeComponentLabelProvider"/>
+    </adapter>
+  </extension>
+</plugin>
\ No newline at end of file
diff --git a/plugins/org.eclipse.jst.server.websphere.core/serverdef/scripts/websphere.6.x.xml b/plugins/org.eclipse.jst.server.websphere.core/serverdef/scripts/websphere.6.x.xml
new file mode 100644
index 0000000..2971cec
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.websphere.core/serverdef/scripts/websphere.6.x.xml
@@ -0,0 +1,151 @@
+<project name="deployextension"  default="deploy.j2ee.web"  basedir=".">
+
+	<property name="was.home" value="${wasHome}"/>
+    <property name="module.working.dir" value="${project.working.dir}/${project.name}"></property>
+	<path id="toolpath">
+		<fileset dir="${was.home}/lib">
+			<include name="*.jar" />
+		</fileset>
+		<pathelement path="${was.home}/lib/properties" />
+		<pathelement path="${was.home}/optionalLibraries/jython.jar" />
+	</path>
+
+	<taskdef classpathref="toolpath" name="wsadmin" classname="com.ibm.websphere.ant.tasks.WsAdmin" />
+	<taskdef classpathref="toolpath" name="wsejbdeploy" classname="com.ibm.websphere.ant.tasks.WsEjbDeploy" />	
+	<taskdef classpathref="toolpath" name="wsinstallapp" classname="com.ibm.websphere.ant.tasks.InstallApplication" />	
+
+	<target name="deploy.j2ee.web">
+		<echo message="Module Working Day  ${module.working.dir} Project Working Dir=${project.working.dir} Message Dir=${module.dir} Module Name ${module.name}"></echo>
+		<jar destfile="${project.working.dir}/${module.name}.war"> 
+			<zipfileset dir="${module.working.dir}">
+				<include name="**/*.*"/>
+				<exclude name="**/*.war"/>
+			</zipfileset>
+		</jar>
+		<wsadmin  
+			washome="${was.home}" 	
+			properties="${wasProfile}/properties/wsadmin.properties" 
+			command="$AdminApp uninstall ${module.name}" 
+			failonerror="false">
+		</wsadmin>
+	    <wsadmin  
+			washome="${was.home}" 				
+			properties="${wasProfile}/properties/wsadmin.properties" 
+			command="$AdminApp install ${project.working.dir}/${module.name}.war {-appname ${module.name} -contextroot  ${contextRoot} -usedefaultbindings}" 
+			failonerror="true">
+		</wsadmin>
+	    <wsadmin  
+		  washome="${was.home}" 
+		  properties="${wasProfile}/properties/wsadmin.properties" 
+		  command="$AdminControl invoke [$AdminControl queryNames type=ApplicationManager,*] startApplication ${module.name}" 
+		  failonerror="true">
+	    </wsadmin>			
+	</target>
+	
+	<target name="deploy.j2ee.ejb">
+		<jar destfile="${project.working.dir}/${module.name}.jar"> 
+			<zipfileset dir="${module.dir}">
+	        	<include name="**/*.*"/>
+	       		<exclude name="**/*.java"/>
+			</zipfileset>
+		</jar>
+		<wsejbdeploy 
+				inputJar="${project.working.dir}/${module.name}.jar" 
+				wasHome="${was.home}" 
+				washome="${was.home}" 
+				classpathref="toolpath"
+				outputJar="${project.working.dir}/${module.name}-was.jar" 
+				codegen="true " 
+				keepGenerated="true" 
+				quiet="false" 
+				noValidate="true" 
+				noWarnings="false" 
+				noInform="false" 
+				compatible35="false" 
+				failonerror="true" 
+				trace="true" 
+				jvmMaxMemory="256M" />
+	
+			<wsadmin  
+				washome="${was.home}" 
+				properties="${wasProfile}/properties/wsadmin.properties" 
+				command="$AdminApp uninstall ${module.name}" 
+				failonerror="false">
+			</wsadmin>
+
+		    <wsadmin  
+				washome="${was.home}" 				
+				properties="${wasProfile}/properties/wsadmin.properties" 
+				command="$AdminApp install ${project.working.dir}/${module.name}.jar {-appname ${module.name} -usedefaultbindings}" 
+				failonerror="true">
+			</wsadmin>
+
+			<wsadmin  
+			  washome="${was.home}" 
+			  properties="${wasProfile}/properties/wsadmin.properties" 
+			  command="$AdminControl invoke [$AdminControl queryNames type=ApplicationManager,*] startApplication ${module.name}" 
+			  failonerror="true">
+		    </wsadmin>	
+	</target>
+	
+	<target name="deploy.j2ee.ear">
+		<jar destfile="${project.working.dir}/${module.name}.ear"> 
+			<zipfileset dir="${module.dir}">
+	        	<include name="**/*.*"/>
+	       		<exclude name="**/*.java"/>
+			</zipfileset>
+		</jar>
+
+		<wsadmin  
+					washome="${was.home}" 
+					properties="${wasProfile}/properties/wsadmin.properties" 
+					command="$AdminApp uninstall ${module.name}" 
+					failonerror="false">
+		</wsadmin>
+
+		<wsadmin  
+					washome="${was.home}" 				
+					properties="${wasProfile}/properties/wsadmin.properties" 
+					command="$AdminApp install ${project.working.dir}/${module.name}.ear {-appname ${module.name} -deployejb -usedefaultbindings}" 
+					failonerror="true">
+		</wsadmin>
+		<wsadmin  
+				  washome="${was.home}" 
+				  properties="${wasProfile}/properties/wsadmin.properties" 
+				  command="$AdminControl invoke [$AdminControl queryNames type=ApplicationManager,*] startApplication ${module.name}" 
+				  failonerror="true">
+		 </wsadmin>	
+		
+	</target>	
+	
+	<target name="undeploy.j2ee.web">
+		
+		<wsadmin  
+			washome="${was.home}" 
+			
+			properties="${wasProfile}/properties/wsadmin.properties" 
+			command="$AdminApp uninstall ${module.name}" 
+			failonerror="false">
+		</wsadmin>
+	</target>
+	<target name="undeploy.j2ee.ejb">
+		<wsadmin  
+			washome="${was.home}" 
+			
+			properties="${wasProfile}/properties/wsadmin.properties" 
+			command="$AdminApp uninstall ${module.name}" 
+			failonerror="false">
+		</wsadmin>
+	</target>	
+	
+	<target name="undeploy.j2ee.ear">
+		<wsadmin  
+			washome="${was.home}" 
+			
+			properties="${wasProfile}/properties/wsadmin.properties" 
+			command="$AdminApp uninstall ${module.name}" 
+			failonerror="false">
+		</wsadmin>
+	</target>	
+
+</project>
diff --git a/plugins/org.eclipse.jst.server.websphere.core/serverdef/websphere.6.serverdef b/plugins/org.eclipse.jst.server.websphere.core/serverdef/websphere.6.serverdef
new file mode 100644
index 0000000..3a8dc3d
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.websphere.core/serverdef/websphere.6.serverdef
@@ -0,0 +1,213 @@
+<?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="IBM WebSphere 6" version="v6.0">
+	<property id="wasHome"
+		label="%wasHome"
+		type="directory"
+		context="runtime"
+		default="/your_server_root/was-6.0" />
+
+	<property id="port"
+		label="%port"
+		type="string"
+		context="server"
+		default="9080" />
+
+	<property id="wasProfile"
+		label="%wasProfile"
+		type="directory"
+		context="server"
+		default="/your_server_root/was-6.0/profiles/default" />
+
+	<property id="wasCell"
+		label="%wasCell"
+		type="string"
+		context="server"
+		default="[cell]" />
+
+	<property id="wasNode"
+		label="%wasNode"
+		type="string"
+		context="server"
+		default="[Node]" />
+	<property id="wasServer"
+		label="%wasServer"
+		type="string"
+		context="server"
+		default="server1" />
+
+	<port>
+		<no>${port}</no>
+		<name>Http</name>
+		<protocol>http</protocol>
+	</port>
+
+	<module>
+		<type>jst.web</type>
+		<publishDir>${wasHome}</publishDir>
+		<publisherReference>org.eclipse.jst.server.generic.websphere.antpublisher</publisherReference>
+	</module>
+	<module>
+		<type>jst.ejb</type>
+		<publishDir>${wasHome}</publishDir>
+		<publisherReference>org.eclipse.jst.server.generic.websphere.antpublisher</publisherReference>
+	</module>
+	<module>
+		<type>jst.ear</type>
+		<publishDir>${wasHome}</publishDir>
+		<publisherReference>org.eclipse.jst.server.generic.websphere.antpublisher</publisherReference>
+	</module>
+	<module>
+		<type>jst.connector</type>
+		<publishDir>${wasHome}</publishDir>
+		<publisherReference>org.eclipse.jst.server.generic.websphere.antpublisher</publisherReference>
+	</module>
+	<project>
+		<classpathReference>was.project</classpathReference>
+	</project>
+	
+	<start>
+		<mainClass>com.ibm.ws.bootstrap.WSLauncher</mainClass>
+		<workingDirectory>${wasProfile}</workingDirectory>
+		<programArguments>com.ibm.ws.runtime.WsServer "${wasProfile}/config" "${wasCell}" "${wasNode}" "${wasServer}"</programArguments>
+		<vmParameters>"-Duser.install.root=${wasProfile}"  "-Dserver.root=${wasProfile}"  "-Dwas.install.root=${wasHome}" "-Dcom.ibm.itp.location=${wasHome}/bin" "-Dws.ext.dirs=${wasHome}/java/lib${pathChar}${wasProfile}/classes${pathChar}${wasHome}/classes${pathChar}${wasHome}/lib${pathChar}${wasHome}/installedChannels${pathChar}${wasHome}/lib/ext${pathChar}${wasHome}/web/help${pathChar}${wasHome}/deploytool/itp/plugins/com.ibm.etools.ejbdeploy/runtime"  -Xbootclasspath/p:${wasHome}/java/jre/lib/ext/ibmorb.jar${pathChar}${wasHome}/java/jre/lib/ext/ibmext.jar -Xms50m -Xmx256m "-Dcom.ibm.CORBA.ConfigURL=file:${wasProfile}/properties/sas.client.props" "-Dcom.ibm.SOAP.ConfigURL=file:${wasProfile}/properties/soap.client.props"   "-Djava.util.logging.manager=com.ibm.ws.bootstrap.WsLogManager" "-Djava.util.logging.configureByServer=true" "-Dibm.websphere.preload.classes=true"  "-Djava.library.path=${wasHome}/java/bin${pathChar}${wasHome}/bin${pathChar}${wasHome}/java/bin${pathChar}${wasHome}/java/jre/bin"</vmParameters>
+		<classpathReference>was</classpathReference>
+	</start>
+
+	<stop>
+		<mainClass>com.ibm.ws.bootstrap.WSLauncher</mainClass>
+		<workingDirectory>${wasHome}</workingDirectory>
+		<programArguments>com.ibm.ws.management.tools.WsServerStop "${wasProfile}/config" "${wasCell}" "${wasNode}" "${wasServer}"</programArguments>
+		<vmParameters>"-Duser.install.root=${wasProfile}"  "-Dserver.root=${wasProfile}"  "-Dwas.install.root=${wasHome}" "-Dws.ext.dirs=${wasHome}/java/lib${pathChar}${wasHome}/classes${pathChar}${wasHome}/lib${pathChar}${wasHome}/installedChannels${pathChar}${wasHome}/lib/ext${pathChar}${wasHome}/web/help${pathChar}${wasHome}/deploytool/itp/plugins/com.ibm.etools.ejbdeploy/runtime"   "-Xbootclasspath/p:${wasHome}/java/jre/lib/ext/ibmorb.jar${pathChar}${wasHome}/java/jre/lib/ext/ibmext.jar" -Xms50m -Xmx256m "-Dcom.ibm.CORBA.ConfigURL=file:${wasProfile}/properties/sas.client.props" "-Dcom.ibm.SOAP.ConfigURL=file:${wasProfile}/properties/soap.client.props"   "-Djava.util.logging.manager=com.ibm.ws.bootstrap.WsLogManager" "-Djava.util.logging.configureByServer=true" "-Dibm.websphere.preload.classes=true"  "-Djava.library.path=${wasHome}/java/bin${pathChar}${wasHome}/bin${pathChar}${wasHome}/java/bin${pathChar}${wasHome}/java/jre/bin"</vmParameters>
+		<classpathReference>was</classpathReference>
+	</stop>
+	
+	<publisher id="org.eclipse.jst.server.generic.antpublisher">
+		<publisherdata>
+			<dataname>build.file</dataname>
+			<datavalue>/serverdef/scripts/websphere.6.x.xml</datavalue>
+		</publisherdata>
+		<publisherdata>
+			<dataname>target.publish.jst.web</dataname>
+			<datavalue>deploy.j2ee.web</datavalue>
+		</publisherdata>
+		<publisherdata>
+			<dataname>target.publish.jst.ejb</dataname>
+			<datavalue>deploy.j2ee.ejb</datavalue>
+		</publisherdata>
+		<publisherdata>
+			<dataname>target.unpublish.jst.web</dataname>
+			<datavalue>undeploy.j2ee.web</datavalue>
+		</publisherdata>
+		<publisherdata>
+			<dataname>target.unpublish.jst.ejb</dataname>
+			<datavalue>undeploy.j2ee.ejb</datavalue>
+		</publisherdata>
+		<publisherdata>
+			<dataname>target.publish.jst.ear</dataname>
+			<datavalue>deploy.j2ee.ear</datavalue>
+		</publisherdata>
+		<publisherdata>
+			<dataname>target.unpublish.jst.ear</dataname>
+			<datavalue>undeploy.j2ee.ear</datavalue>
+		</publisherdata>		
+	</publisher>
+
+	<classpath id="was" >
+	    <archive path="${wasHome}/properties" />
+	    <archive path="${wasHome}/lib/bootstrap.jar" />
+        <archive path="${wasHome}/lib/j2ee.jar" />
+        <archive path="${wasHome}/lib/lmproxy.jar" />
+        <archive path="${wasHome}/lib/urlprotocols.jar" />
+	</classpath>
+
+	<classpath id="was.project">
+	    <archive path="${wasHome}/lib/activitySession.jar" />
+        <archive path="${wasHome}/lib/acwa.jar" />
+		<archive path="${wasHome}/lib/admin.jar" />        
+		<archive path="${wasHome}/lib/appprofile.jar" />        
+		<archive path="${wasHome}/lib/asynchbeans.jar" />   
+		<archive path="${wasHome}/lib/bootstrap.jar" />		     
+		<archive path="${wasHome}/lib/bsf.jar" />        
+		<archive path="${wasHome}/lib/channelfw.jar" />        
+		<archive path="${wasHome}/lib/cluster.jar" />        
+		<archive path="${wasHome}/lib/clusteradapter.jar" />        
+		<archive path="${wasHome}/lib/commonj-twm.jar" />        
+		<archive path="${wasHome}/lib/commons-discovery.jar" />        
+		<archive path="${wasHome}/lib/commons-logging-api.jar" />        
+		<archive path="${wasHome}/lib/distexcep.jar" />        
+		<archive path="${wasHome}/lib/dwlmclient.jar" />        
+		<archive path="${wasHome}/lib/dynacache.jar" />        
+		<archive path="${wasHome}/lib/ecutils.jar" />        
+		<archive path="${wasHome}/lib/ejbcontainer.jar" />        
+		<archive path="${wasHome}/lib/ejbcontainerImpl.jar" />        
+		<archive path="${wasHome}/lib/ejbportable.jar" />        
+		<archive path="${wasHome}/lib/emf.jar" />      
+		<archive path="${wasHome}/lib/ffdc.jar" />        
+		<archive path="${wasHome}/lib/i18nctx.jar" />        
+		<archive path="${wasHome}/installedChannels/channel.http.jar" />        
+		<archive path="${wasHome}/installedChannels/channel.ssl.jar" />        
+		<archive path="${wasHome}/installedChannels/channel.tcp.jar" />        
+		<archive path="${wasHome}/lib/ivjejb35.jar" />        
+		<archive path="${wasHome}/lib/j2cIntf.jar" />        
+		<archive path="${wasHome}/lib/j2ee.jar" />        
+		<archive path="${wasHome}/lib/jdbcmediator.jar" />       
+		<archive path="${wasHome}/lib/jsf-api.jar" />       
+		<archive path="${wasHome}/lib/jstl.jar" />       
+		<archive path="${wasHome}/lib/management.jar"/>
+		<archive path="${wasHome}/lib/marshall.jar"/>
+		<archive path="${wasHome}/lib/objectpool.jar"/>
+		<archive path="${wasHome}/lib/odc.jar"/>
+		<archive path="${wasHome}/lib/pm.jar"/>
+		<archive path="${wasHome}/lib/pmimpl.jar"/>
+		<archive path="${wasHome}/lib/processintf.jar"/>
+		<archive path="${wasHome}/lib/qryclient.jar"/>
+		<archive path="${wasHome}/lib/query.jar"/>
+		<archive path="${wasHome}/lib/querymd.jar"/> 
+		<archive path="${wasHome}/lib/queryws.jar"/>
+		<archive path="${wasHome}/lib/ras.jar"/>
+		<archive path="${wasHome}/lib/rsadaptercci.jar"/>
+		<archive path="${wasHome}/lib/rsadapterspi.jar"/>
+		<archive path="${wasHome}/lib/rsaexternal.jar"/>
+		<archive path="${wasHome}/lib/runtime.jar"/>
+		<archive path="${wasHome}/lib/runtimefw.jar"/>
+		<archive path="${wasHome}/lib/sas.jar"/>
+		<archive path="${wasHome}/lib/scheduler-client.jar"/>
+		<archive path="${wasHome}/lib/scheduler-service.jar"/>
+		<archive path="${wasHome}/lib/security.jar"/>
+		<archive path="${wasHome}/lib/securityImpl.jar"/>
+		<archive path="${wasHome}/lib/servletevent.jar"/>
+		<archive path="${wasHome}/lib/sib.common.jar"/>
+		<archive path="${wasHome}/lib/sib.server.jar"/>
+		<archive path="${wasHome}/lib/soap.jar"/>
+		<archive path="${wasHome}/lib/soap-sec.jar"/>
+		<archive path="${wasHome}/lib/standard.jar"/>
+		<archive path="${wasHome}/lib/startupbean.jar"/>
+		<archive path="${wasHome}/lib/tx.jar"/>
+		<archive path="${wasHome}/lib/uddi4jv2.jar"/>
+		<archive path="${wasHome}/lib/utils.jar"/>
+		<archive path="${wasHome}/lib/vaprt.jar"/>
+		<archive path="${wasHome}/lib/wccm_base.jar"/>
+		<archive path="${wasHome}/lib/webcontainer.jar"/>
+		<archive path="${wasHome}/lib/webservices.jar"/>
+		<archive path="${wasHome}/lib/wsatlib.jar"/>
+		<archive path="${wasHome}/lib/ws-commons-logging.jar"/>
+		<archive path="${wasHome}/lib/wsdl4j.jar"/>
+		<archive path="${wasHome}/lib/wsexception.jar"/>
+		<archive path="${wasHome}/lib/wsif.jar"/>
+		<archive path="${wasHome}/lib/wsif-j2c.jar"/>
+		<archive path="${wasHome}/lib/ws-jsf.jar"/>
+		<archive path="${wasHome}/lib/wssec.jar"/>
+	</classpath>
+	<jndiConnection>
+		<providerUrl>iiop://${serverAddress}:2001</providerUrl>
+		<initialContextFactory>org.objectweb.carol.jndi.spi.MultiOrbInitialContextFactory</initialContextFactory>
+		<jndiProperty>
+			<name></name>
+			<value></value>
+		</jndiProperty>
+	</jndiConnection>
+</tns:ServerRuntime>
\ No newline at end of file
diff --git a/plugins/org.eclipse.jst.server.websphere.core/src/org/eclipse/jst/server/websphere/core/AntPublisher.java b/plugins/org.eclipse.jst.server.websphere.core/src/org/eclipse/jst/server/websphere/core/AntPublisher.java
new file mode 100644
index 0000000..8e93171
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.websphere.core/src/org/eclipse/jst/server/websphere/core/AntPublisher.java
@@ -0,0 +1,14 @@
+package org.eclipse.jst.server.websphere.core;
+
+import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
+import org.eclipse.jdt.launching.IJavaLaunchConfigurationConstants;
+
+public class AntPublisher extends org.eclipse.jst.server.generic.core.internal.publishers.AntPublisher {
+	public static final String PUBLISHER_ID="org.eclipse.jst.server.generic.websphere.antpublisher"; //$NON-NLS-1$
+
+	protected void setupAntLaunchConfiguration(ILaunchConfigurationWorkingCopy wc) {
+		String wasProfile = (String)this.getServerRuntime().getServerInstanceProperties().get("wasProfile");
+		wc.setAttribute(IJavaLaunchConfigurationConstants.ATTR_VM_ARGUMENTS,"-Duser.install.root="+wasProfile);
+
+	}
+}
diff --git a/plugins/org.eclipse.jst.server.websphere.core/src/org/eclipse/jst/server/websphere/core/CorePlugin.java b/plugins/org.eclipse.jst.server.websphere.core/src/org/eclipse/jst/server/websphere/core/CorePlugin.java
new file mode 100644
index 0000000..ad61369
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.websphere.core/src/org/eclipse/jst/server/websphere/core/CorePlugin.java
@@ -0,0 +1,58 @@
+package org.eclipse.jst.server.websphere.core;
+
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+import org.eclipse.core.runtime.Plugin;
+
+/**
+ * The main plugin class to be used in the desktop.
+ */
+public class CorePlugin extends Plugin {
+	//The shared instance.
+	private static CorePlugin plugin;
+	//Resource bundle.
+	private ResourceBundle resourceBundle;
+	
+	/**
+	 * The constructor.
+	 */
+	public CorePlugin() {
+		super();
+		plugin = this;
+	}
+
+	
+	/**
+	 * 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() {
+		try {
+			if (resourceBundle == null)
+				resourceBundle = ResourceBundle.getBundle("org.eclipse.jst.server.websphere.core.CorePluginResources");
+		} catch (MissingResourceException x) {
+			resourceBundle = null;
+		}
+		return resourceBundle;
+	}
+}