[165664] Axis2:  Integrate Apache Axis 2 into WTP.
diff --git a/bundles/org.eclipse.jst.ws.axis2.consumption.ui/.classpath b/bundles/org.eclipse.jst.ws.axis2.consumption.ui/.classpath
new file mode 100644
index 0000000..304e861
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.consumption.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/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/bundles/org.eclipse.jst.ws.axis2.consumption.ui/.project b/bundles/org.eclipse.jst.ws.axis2.consumption.ui/.project
new file mode 100644
index 0000000..46d662e
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.consumption.ui/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.jst.ws.axis2.consumption.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/bundles/org.eclipse.jst.ws.axis2.consumption.ui/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.jst.ws.axis2.consumption.ui/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..07f2864
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.consumption.ui/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,62 @@
+#Wed Mar 07 12:36:28 LKT 2007
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
+org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
+org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
+org.eclipse.jdt.core.compiler.problem.nullReference=ignore
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.5
diff --git a/bundles/org.eclipse.jst.ws.axis2.consumption.ui/.settings/org.eclipse.jdt.ui.prefs b/bundles/org.eclipse.jst.ws.axis2.consumption.ui/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..05b7c7c
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.consumption.ui/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,4 @@
+#Wed Feb 21 10:48:27 LKT 2007
+eclipse.preferences.version=1
+internal.default.compliance=default
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8"?>\n<templates/>
diff --git a/bundles/org.eclipse.jst.ws.axis2.consumption.ui/META-INF/MANIFEST.MF b/bundles/org.eclipse.jst.ws.axis2.consumption.ui/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..9d012c2
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.consumption.ui/META-INF/MANIFEST.MF
@@ -0,0 +1,35 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %PLUGIN_NAME
+Bundle-SymbolicName: org.eclipse.jst.ws.axis2.consumption.ui;singleton:=true
+Bundle-Version: 1.0.0
+Bundle-Activator: org.eclipse.jst.ws.internal.axis2.consumption.ui.plugin.WebServiceAxis2ConsumptionUIPlugin
+Bundle-Localization: plugin
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.ui.ide,
+ org.eclipse.core.resources,
+ org.eclipse.jdt.core,
+ org.eclipse.wst.ws.parser,
+ org.eclipse.jst.ws,
+ org.eclipse.jst.ws.ui,
+ org.eclipse.jst.ws.consumption,
+ org.eclipse.jst.ws.consumption.ui,
+ org.eclipse.wst.ws,
+ org.eclipse.wst.command.env,
+ org.eclipse.wst.command.env.core,
+ org.eclipse.wst.command.env.ui,
+ org.eclipse.wst.server.core,
+ org.eclipse.wst.wsdl,
+ org.eclipse.wst.common.frameworks,
+ org.eclipse.wst.common.environment,
+ org.eclipse.jst.ws.axis2.consumption.core,
+ org.eclipse.jst.ws.axis2.ui,
+ org.eclipse.jst.ws.axis2.core
+Eclipse-LazyStart: true
+Bundle-Vendor: %PLUGIN_PROVIDER
+Export-Package: org.eclipse.jst.ws.internal.axis2.consumption.ui.plugin,
+ org.eclipse.jst.ws.internal.axis2.consumption.ui.widgets,
+ org.eclipse.jst.ws.internal.axis2.consumption.ui.wizard.client,
+ org.eclipse.jst.ws.internal.axis2.consumption.ui.wsrt
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
diff --git a/bundles/org.eclipse.jst.ws.axis2.consumption.ui/build.properties b/bundles/org.eclipse.jst.ws.axis2.consumption.ui/build.properties
new file mode 100644
index 0000000..0a9054c
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.consumption.ui/build.properties
@@ -0,0 +1,7 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               plugin.xml,\
+               META-INF/,\
+               .,\
+               plugin.properties
diff --git a/bundles/org.eclipse.jst.ws.axis2.consumption.ui/plugin.properties b/bundles/org.eclipse.jst.ws.axis2.consumption.ui/plugin.properties
new file mode 100644
index 0000000..47a8c2e
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.consumption.ui/plugin.properties
@@ -0,0 +1,29 @@
+###############################################################################
+# Copyright (c) 2007 WSO2 Inc. and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+# WSO2 Inc. - initial API and implementation
+# yyyymmdd bug      Email and other contact information
+# -------- -------- -----------------------------------------------------------
+# 20070118   168762 sandakith@wso2.com - Lahiru Sandakith, Initial code to introduse the Axis2 runtime to the framework for 168762
+###############################################################################
+#
+
+#
+# Messages in plugin.xml.
+#
+PLUGIN_NAME=Webservice Axis2 Consumption UI
+PLUGIN_PROVIDER=WSO2
+
+WEBSERVICECLIENTTYPE_NAME_JAVA_AXIS=Java proxy
+LABEL_RUNTIME_AXIS_11=Apache Axis2
+DESC_RUNTIME_AXIS_11=Apache Axis2
+#
+#	Web Services Preferance Pages
+#
+# Categories
+PREFERENCE_CATEGORY_AXIS2_EMITTER=Axis2 Emitter
diff --git a/bundles/org.eclipse.jst.ws.axis2.consumption.ui/plugin.xml b/bundles/org.eclipse.jst.ws.axis2.consumption.ui/plugin.xml
new file mode 100644
index 0000000..fd14ae2
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.consumption.ui/plugin.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<plugin>
+   
+	<extension point="org.eclipse.wst.command.env.ui.widgetRegistry">
+       <widgetFactory   
+             id="Axis2ClientConfig"
+             insertBeforeCommandId="org.eclipse.jst.ws.axis2.consumption.core.command.Axis2WebservicesServerCommand"
+             class="org.eclipse.jst.ws.internal.axis2.consumption.ui.wsrt.Axis2ClientConfigWidgetFactory"/>
+    </extension> 
+    <extension point="org.eclipse.wst.command.env.antDataMapping">
+        <map
+              key="ClientProjectName"
+              operation="org.eclipse.jst.ws.axis2.creation.core.command.Axis2ClientDefaultingCommand"
+              property="ClientProject"
+              transform="org.eclipse.jst.ws.internal.common.StringToIProjectTransformer"/>
+    </extension> 
+
+</plugin>
\ No newline at end of file
diff --git a/bundles/org.eclipse.jst.ws.axis2.consumption.ui/src/org/eclipse/jst/ws/internal/axis2/consumption/ui/plugin/WebServiceAxis2ConsumptionUIPlugin.java b/bundles/org.eclipse.jst.ws.axis2.consumption.ui/src/org/eclipse/jst/ws/internal/axis2/consumption/ui/plugin/WebServiceAxis2ConsumptionUIPlugin.java
new file mode 100644
index 0000000..79c03f3
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.consumption.ui/src/org/eclipse/jst/ws/internal/axis2/consumption/ui/plugin/WebServiceAxis2ConsumptionUIPlugin.java
@@ -0,0 +1,50 @@
+package org.eclipse.jst.ws.internal.axis2.consumption.ui.plugin;
+
+import org.eclipse.core.runtime.Plugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class WebServiceAxis2ConsumptionUIPlugin extends Plugin {
+
+	// The plug-in ID
+	public static final String PLUGIN_ID = "org.eclipse.jst.ws.axis2.consumption.ui";
+
+	// The shared instance
+	private static WebServiceAxis2ConsumptionUIPlugin plugin;
+	
+	/**
+	 * The constructor
+	 */
+	public WebServiceAxis2ConsumptionUIPlugin() {
+		plugin = this;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+	 */
+	public void start(BundleContext context) throws Exception {
+		super.start(context);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+	 */
+	public void stop(BundleContext context) throws Exception {
+		plugin = null;
+		super.stop(context);
+	}
+
+	/**
+	 * Returns the shared instance
+	 *
+	 * @return the shared instance
+	 */
+	public static WebServiceAxis2ConsumptionUIPlugin getDefault() {
+		return plugin;
+	}
+
+}
diff --git a/bundles/org.eclipse.jst.ws.axis2.consumption.ui/src/org/eclipse/jst/ws/internal/axis2/consumption/ui/task/DefaultsForHTTPBasicAuthCommand.java b/bundles/org.eclipse.jst.ws.axis2.consumption.ui/src/org/eclipse/jst/ws/internal/axis2/consumption/ui/task/DefaultsForHTTPBasicAuthCommand.java
new file mode 100644
index 0000000..bc3dd33
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.consumption.ui/src/org/eclipse/jst/ws/internal/axis2/consumption/ui/task/DefaultsForHTTPBasicAuthCommand.java
@@ -0,0 +1,18 @@
+package org.eclipse.jst.ws.internal.axis2.consumption.ui.task;
+
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.wst.common.frameworks.datamodel.AbstractDataModelOperation;
+
+public class DefaultsForHTTPBasicAuthCommand extends AbstractDataModelOperation {
+
+	public IStatus execute(IProgressMonitor monitor, IAdaptable info)
+			throws ExecutionException {
+		IStatus status = Status.OK_STATUS;
+		return status;
+	}
+
+}
diff --git a/bundles/org.eclipse.jst.ws.axis2.consumption.ui/src/org/eclipse/jst/ws/internal/axis2/consumption/ui/widgets/Axis2ProxyWidget.java b/bundles/org.eclipse.jst.ws.axis2.consumption.ui/src/org/eclipse/jst/ws/internal/axis2/consumption/ui/widgets/Axis2ProxyWidget.java
new file mode 100644
index 0000000..636c518
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.consumption.ui/src/org/eclipse/jst/ws/internal/axis2/consumption/ui/widgets/Axis2ProxyWidget.java
@@ -0,0 +1,571 @@
+/*******************************************************************************
+ * Copyright (c) 2007 WSO2 Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * WSO2 Inc. - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20070130   168762 sandakith@wso2.com - Lahiru Sandakith, Initial code to introduse the Axis2 
+ * 										  runtime to the framework for 168762
+ *******************************************************************************/
+package org.eclipse.jst.ws.internal.axis2.consumption.ui.widgets;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jst.ws.axis2.consumption.core.data.DataModel;
+import org.eclipse.jst.ws.axis2.consumption.core.messages.Axis2ConsumptionUIMessages;
+import org.eclipse.jst.ws.axis2.consumption.core.utils.WSDLPropertyReader;
+import org.eclipse.jst.ws.axis2.core.utils.ClassLoadingUtil;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.TableEditor;
+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.graphics.Point;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.swt.widgets.TableItem;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.wst.command.internal.env.core.common.StatusUtils;
+import org.eclipse.wst.command.internal.env.ui.widgets.SimpleWidgetDataContributor;
+import org.eclipse.wst.command.internal.env.ui.widgets.WidgetDataEvents;
+
+public class Axis2ProxyWidget extends SimpleWidgetDataContributor {
+	
+	DataModel model;
+	IStatus status = Status.OK_STATUS;
+
+
+	public Axis2ProxyWidget(DataModel model) {
+		this.model=model;
+	}
+
+	//private String pluginId_ = "org.eclipse.jst.ws.axis2.consumption.ui";
+	
+	private Button genProxyCheckbox_;
+	private Button syncAndAsyncRadioButton;
+	private Button syncOnlyRadioButton;
+	private Button asyncOnlyRadioButton;
+	//private Button testCaseCheckBoxButton;
+	//private Button generateAllCheckBoxButton;
+	private Combo databindingTypeCombo;
+	private Combo portNameCombo;
+	private Combo serviceNameCombo;
+	private Text packageText;
+	Label   label, fillLabel, fillLabel1, fillLabel2, fillLabel3, fillLabel4, fillLabel5, fillLabel6;
+	//private java.util.List serviceQNameList2 = null;
+	private Table namespace2packageTable = null;
+	private Button generateAllCheckBoxButton;
+	private Button testCaseCheckBoxButton;
+	
+	private WSDLPropertyReader reader;
+	private List serviceQNameList = null;
+
+
+	public WidgetDataEvents addControls( Composite parent, Listener statusListener )
+	{
+		
+		Composite  mainComp = new Composite( parent, SWT.NONE );
+		GridLayout layout   = new GridLayout();
+		mainComp.setLayout(layout);
+
+		layout.numColumns = 3;
+		GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+		mainComp.setLayoutData( gd );
+
+		// service name
+		label = new Label(mainComp, SWT.NULL);
+		label.setText(Axis2ConsumptionUIMessages.LABEL_SERVICE_NAME_CAPTION);
+
+		serviceNameCombo = new Combo(mainComp, SWT.DROP_DOWN | SWT.BORDER
+				| SWT.READ_ONLY);
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.horizontalSpan = 2;
+		serviceNameCombo.setLayoutData(gd);
+		serviceNameCombo.addSelectionListener(new SelectionListener() {
+			public void widgetSelected(SelectionEvent e) {
+				//loadPortNames();
+				model.setServiceName(serviceNameCombo.getText());
+			}
+			public void widgetDefaultSelected(SelectionEvent e) {
+			}
+		});
+
+		// port name
+		label = new Label(mainComp, SWT.NULL);
+		label.setText(Axis2ConsumptionUIMessages.LABEL_PORTNAME);
+		portNameCombo = new Combo(mainComp, SWT.DROP_DOWN | SWT.BORDER
+				| SWT.READ_ONLY);
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.horizontalSpan = 2;
+		portNameCombo.setLayoutData(gd);
+		portNameCombo.addSelectionListener(new SelectionListener() {
+			public void widgetSelected(SelectionEvent e) {
+				model.setPortName(portNameCombo.getText());
+			}
+			public void widgetDefaultSelected(SelectionEvent e) {
+			}
+		});
+
+		// Databinding
+		label = new Label(mainComp, SWT.NULL);
+		label.setText(Axis2ConsumptionUIMessages.LABEL_DATABINDING_CAPTION);
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.horizontalSpan = 2;
+		databindingTypeCombo = new Combo(mainComp, SWT.DROP_DOWN | SWT.BORDER | SWT.READ_ONLY);
+		databindingTypeCombo.setLayoutData(gd);
+		fillDatabinderCombo();
+		databindingTypeCombo.select(0);
+		databindingTypeCombo.addSelectionListener(new SelectionListener() {
+			public void widgetSelected(SelectionEvent e) {
+				model.setDatabindingType(databindingTypeCombo.getText());
+			};
+			public void widgetDefaultSelected(SelectionEvent e) {
+			};
+		});
+		
+		// package name
+		label = new Label(mainComp, SWT.NULL);
+		label.setText(Axis2ConsumptionUIMessages.LABEL_PACKEGE_NAME);
+		packageText = new Text(mainComp, SWT.BORDER);
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.horizontalSpan = 2;
+
+		packageText.setLayoutData(gd);
+		packageText.setText(""); // get this text from the
+		packageText.addModifyListener(new ModifyListener() {
+			public void modifyText(ModifyEvent e) {
+				model.setPackageText(packageText.getText());
+			}
+		});
+		
+		//filling label 
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.horizontalSpan = 3;
+		fillLabel = new Label(mainComp, SWT.HORIZONTAL | SWT.NULL);
+		fillLabel.setLayoutData(gd);
+		
+		//Client type label 
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.horizontalSpan = 3;
+		fillLabel2 = new Label(mainComp, SWT.HORIZONTAL | SWT.NULL);
+		fillLabel2.setText(Axis2ConsumptionUIMessages.LABEL_CLIENT_SIDE);
+		fillLabel2.setLayoutData(gd);
+		
+		//client side buttons
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.horizontalSpan = 1;
+		syncAndAsyncRadioButton = new Button(mainComp, SWT.RADIO);
+		syncAndAsyncRadioButton.setLayoutData(gd);
+		syncAndAsyncRadioButton.setText(Axis2ConsumptionUIMessages.LABEL_SYNC_AND_ASYNC);
+		syncAndAsyncRadioButton.setVisible(true);
+		syncAndAsyncRadioButton.setSelection(true);
+		syncAndAsyncRadioButton.addSelectionListener(new SelectionListener() {
+			public void widgetSelected(SelectionEvent e) {
+				model.setSync(syncOnlyRadioButton.getSelection());
+				model.setSync(asyncOnlyRadioButton.getSelection());
+			}
+			public void widgetDefaultSelected(SelectionEvent e) {
+			}
+		});
+
+		
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.horizontalSpan = 1;
+		syncOnlyRadioButton = new Button(mainComp, SWT.RADIO);
+		syncOnlyRadioButton.setLayoutData(gd);
+		syncOnlyRadioButton.setText(Axis2ConsumptionUIMessages.LABEL_SYNC);
+		syncOnlyRadioButton.setSelection(false);
+		syncOnlyRadioButton.addSelectionListener(new SelectionListener() {
+			public void widgetSelected(SelectionEvent e) {
+				model.setSync(syncOnlyRadioButton.getSelection());
+			}
+			public void widgetDefaultSelected(SelectionEvent e) {
+			}
+		});
+
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.horizontalSpan = 1;
+		asyncOnlyRadioButton = new Button(mainComp, SWT.RADIO);
+		asyncOnlyRadioButton.setLayoutData(gd);
+		asyncOnlyRadioButton
+				.setText(Axis2ConsumptionUIMessages.LABEL_ASYNC);
+		asyncOnlyRadioButton.setSelection(false);
+		asyncOnlyRadioButton.addSelectionListener(new SelectionListener() {
+			public void widgetSelected(SelectionEvent e) {
+				model.setSync(asyncOnlyRadioButton.getSelection());
+			}
+			public void widgetDefaultSelected(SelectionEvent e) {
+			}
+		});
+		
+		
+		//filling label 
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.horizontalSpan = 3;
+		fillLabel = new Label(mainComp, SWT.HORIZONTAL | SWT.NULL);
+		fillLabel.setLayoutData(gd);
+		
+		// generate test case option
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.horizontalSpan = 3;
+		testCaseCheckBoxButton = new Button(mainComp, SWT.CHECK);
+		testCaseCheckBoxButton.setLayoutData(gd);
+		testCaseCheckBoxButton
+		.setText(Axis2ConsumptionUIMessages.LABEL_GENERATE_TESTCASE_CAPTION);
+		model.setTestCaseCheck(false);
+		testCaseCheckBoxButton.addSelectionListener(new SelectionListener() {
+			public void widgetSelected(SelectionEvent e) {
+				model.setTestCaseCheck(true);
+			}
+
+			public void widgetDefaultSelected(SelectionEvent e) {
+			}
+		});
+
+
+		// generate all
+		generateAllCheckBoxButton = new Button(mainComp, SWT.CHECK);
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.horizontalSpan = 3;
+		generateAllCheckBoxButton.setLayoutData(gd);
+		generateAllCheckBoxButton.setSelection(false);
+		generateAllCheckBoxButton.setText(Axis2ConsumptionUIMessages.LABEL_GENERATE_ALL);
+		generateAllCheckBoxButton.addSelectionListener(new SelectionListener() {
+			public void widgetSelected(SelectionEvent e) {
+				model.setGenerateAllCheck(true);
+			}
+			public void widgetDefaultSelected(SelectionEvent e) {
+			}
+		});
+
+		
+		//filling label 
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.horizontalSpan = 3;
+		fillLabel3 = new Label(mainComp, SWT.HORIZONTAL | SWT.NULL);
+
+		//filling label 
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.horizontalSpan = 3;
+		fillLabel4 = new Label(mainComp, SWT.HORIZONTAL | SWT.NULL);
+		
+		//add a table to set namespace to package mapping
+		gd = new GridData(GridData.FILL_BOTH);
+        gd.horizontalSpan = 3;
+        gd.verticalSpan = 5;
+        
+        namespace2packageTable = new Table(mainComp,SWT.BORDER|SWT.MULTI);
+        namespace2packageTable.setLinesVisible(true);
+        namespace2packageTable.setHeaderVisible(true); 
+        namespace2packageTable.setEnabled(true);
+        namespace2packageTable.setLayoutData(gd);
+       
+        declareColumn(namespace2packageTable,
+        		350, //a default width until we adjust
+        		Axis2ConsumptionUIMessages.LABEL_NAMESPACE);
+        declareColumn(namespace2packageTable,
+        		200,//a default width until we adjust
+        		Axis2ConsumptionUIMessages.LABEL_PACKAGE);
+        
+        namespace2packageTable.setVisible(true);
+        
+        // add the table editor
+        final TableEditor editor = new TableEditor(namespace2packageTable);
+        editor.setColumn(1);
+        editor.horizontalAlignment = SWT.LEFT;
+        editor.grabHorizontal = true;
+
+        namespace2packageTable.addListener(SWT.MouseDown, new Listener() {
+            public void handleEvent(Event event) {
+              Rectangle clientArea = namespace2packageTable.getClientArea();
+              Point pt = new Point(event.x, event.y);
+              int index = namespace2packageTable.getTopIndex();
+              while (index < namespace2packageTable.getItemCount()) {
+                boolean visible = false;
+                final TableItem item = namespace2packageTable.getItem(index);
+                for (int i = 0; i < namespace2packageTable.getColumnCount(); i++) {
+                  Rectangle rect = item.getBounds(i);
+                  if (rect.contains(pt)) {
+                    final int column = i;
+                    final Text text = new Text(namespace2packageTable, SWT.NONE);
+                    Listener textListener = new Listener() {
+                      public void handleEvent(final Event e) {
+                        switch (e.type) {
+                        case SWT.FocusOut:
+                          item.setText(column, text.getText());
+                          text.dispose();
+                          break;
+                        case SWT.Traverse:
+                          switch (e.detail) {
+                          case SWT.TRAVERSE_RETURN:
+                            item
+                                .setText(column, text
+                                    .getText());
+                          // FALL THROUGH
+                          case SWT.TRAVERSE_ESCAPE:
+                            text.dispose();
+                            e.doit = false;
+                          }
+                          break;
+                        }
+                      }
+                    };
+                    text.addListener(SWT.FocusOut, textListener);
+                    text.addListener(SWT.Traverse, textListener);
+                    editor.setEditor(text, item, i);
+                    text.setText(item.getText(i));
+                    text.selectAll();
+                    text.setFocus();
+                    return;
+                  }
+                  if (!visible && rect.intersects(clientArea)) {
+                    visible = true;
+                  }
+                }
+                if (!visible)
+                  return;
+                index++;
+              }
+              model.setNamespaseToPackageMapping(getNs2PkgMapping());
+            }
+          });
+        
+
+//		UIUtils      uiUtils  = new UIUtils( pluginId_ );
+//		parent.setToolTipText( Axis2ConsumptionUIMessages.TOOLTIP_PPAE_PAGE );
+//		PlatformUI.getWorkbench().getHelpSystem().setHelp( parent, pluginId_ + "." +  this.pluginId_);
+		
+		populateParamsFromWSDL();
+		populateModel();
+
+		return this;
+	}
+	
+	/**
+	 * A util method to create a new column
+	 * @param table
+	 * @param width
+	 * @param colName
+	 */
+	private void declareColumn(Table table, int width,String colName){
+        TableColumn column = new TableColumn(table,SWT.NONE);
+        column.setWidth(width);
+        column.setText(colName);
+    }
+	
+	/**
+	 * get the package to namespace mappings
+	 * @return
+	 */
+	public String getNs2PkgMapping(){
+		String returnList="";
+		TableItem[] items = namespace2packageTable.getItems();
+		String packageValue; 
+		for (int i=0;i<items.length;i++){
+			packageValue = items[i].getText(1);
+			if (packageValue!=null && !"".equals(packageValue)){
+				returnList = returnList +
+				             ("".equals(returnList)?"":",") +
+				             items[i].getText(0)+ "=" + packageValue;
+			}
+			
+		}
+		return "".equals(returnList)?null:returnList;
+	}
+
+	public boolean isGenProxy()	{
+		//boolean enabled = genProxyCheckbox_.getSelection();
+		return true; //always
+
+	}
+
+	public void setGenerateProxy( Boolean genProxy ){
+		genProxyCheckbox_.setSelection( genProxy.booleanValue() );
+	}   
+	
+	/**
+	 * Fill the combo with proper databinding names
+	 */
+	private void fillDatabinderCombo() {
+		databindingTypeCombo.add(Axis2ConsumptionUIMessages.DATA_BINDING_ADB);
+		databindingTypeCombo.add(Axis2ConsumptionUIMessages.DATA_BINDING_NONE);
+		databindingTypeCombo.select(0);
+	}
+	
+	private void populateModel() {
+		model.setServiceName(serviceNameCombo.getText());
+		model.setPortName(portNameCombo.getText());
+		model.setPackageText(packageText.getText());
+		model.setDatabindingType(databindingTypeCombo.getText());
+		model.setASync(asyncOnlyRadioButton.getSelection());
+		model.setSync(syncOnlyRadioButton.getSelection());
+		if (syncAndAsyncRadioButton.getSelection()){
+			model.setASync(true);
+			model.setSync(true);
+		}
+		model.setGenerateAllCheck(generateAllCheckBoxButton.getSelection());
+		model.setTestCaseCheck(testCaseCheckBoxButton.getSelection());
+		model.setNamespaseToPackageMapping(getNs2PkgMapping());
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.wst.command.env.ui.widgets.WidgetContributor#getStatus()
+	 */
+	public IStatus getStatus() 
+	{
+		IStatus result = null;
+		return result;
+	}
+
+	private void populatePackageName() {
+		this.packageText.setText(reader.packageFromTargetNamespace());
+	}
+
+	/**
+	 * populate the service and the port from the WSDL this needs to be public
+	 * since the WSDLselection page may call this
+	 */
+	public void populateParamsFromWSDL() {
+		if (reader == null)
+			reader = new WSDLPropertyReader();
+		try {
+			String lname = model.getWsdlURI();
+			if (!"".equals(lname.trim())) {
+
+				reader.readWSDL(model.getWebProjectName(), lname);
+
+				this.serviceQNameList = reader.getServiceList();
+				if (!serviceQNameList.isEmpty()) {
+					serviceNameCombo.removeAll();
+					for (int i = 0; i < serviceQNameList.size(); i++) {
+						// add the local part of the
+						Object serviceQnameInstance = serviceQNameList.get(0);
+						Class QNameClass = ClassLoadingUtil.loadClassFromAntClassLoader("javax.xml.namespace.QName");
+						
+						Method GetLocalPartMethod  = QNameClass.getMethod("getLocalPart", null);
+						
+						Object resultLocalPart = GetLocalPartMethod.invoke(serviceQnameInstance, null);
+						serviceNameCombo.add(resultLocalPart.toString());
+					}
+					;
+					// select the first one as the default
+					serviceNameCombo.select(0);
+
+					// load the ports
+					loadPortNames();
+
+				} else {
+					// service name list being empty means we are switching to
+					// the interface mode
+					if (serviceNameCombo!=null) serviceNameCombo.removeAll();
+					if (portNameCombo!=null) portNameCombo.removeAll();
+
+				}
+
+				populatePackageName();
+
+				//populate the namespacess
+				loadNamespaces(reader.getDefinitionNamespaceMap());
+			}
+		} catch (Exception e) {
+			status = StatusUtils.errorStatus(NLS.bind(
+					Axis2ConsumptionUIMessages.ERROR_INVALID_WSDL_FILE_READ_WRITEL,
+					new String[]{e.getLocalizedMessage()}), e);
+		}
+	}
+	
+	/**
+	 * Loads the namespaces
+	 * @param namespaceMap
+	 */
+	private void loadNamespaces(Map namespaceMap){
+		Iterator namespaces = namespaceMap.values().iterator();
+		namespace2packageTable.removeAll();
+        TableItem[] items = new TableItem[namespaceMap.size()]; // An item for each field
+        
+        int i = 0;
+        while(namespaces.hasNext()){
+        	
+           items[i] = new TableItem(namespace2packageTable, SWT.NULL);
+           String namespace = (String)namespaces.next();
+           items[i].setText(0,namespace);
+           items[i].setText(1,getPackageFromNamespace(namespace));
+           i++;
+        }
+
+        namespace2packageTable.setVisible(true);
+		
+	}
+
+	private void loadPortNames() {
+		int selectionIndex = serviceNameCombo.getSelectionIndex();
+		if (selectionIndex != -1) {
+			java.util.List ports = reader.getPortNameList( serviceQNameList
+					.get(selectionIndex));
+			if (!ports.isEmpty()) {
+				portNameCombo.removeAll();
+				for (int i = 0; i < ports.size(); i++) {
+					// add the local part of the
+					portNameCombo.add(ports.get(i).toString());
+				}
+				portNameCombo.select(0);
+			} else {
+				// error no ports found
+			}
+		}
+	}
+	
+	/**
+	 * get the package derived by  Namespace
+	 */
+	public String getPackageFromNamespace(String namespace){
+		// Use reflection to invoke org.apache.axis2.util.URLProcessor makePackageName(namespace) statically
+		Object stringReturn = null;
+		try {
+			Class URLProcessorClass = ClassLoadingUtil.loadClassFromAntClassLoader("org.apache.axis2.util.URLProcessor");
+
+			Class parameterTypes[] = new Class[1];
+			parameterTypes[0] = String.class;
+			Method makePackageNameMethod = URLProcessorClass.getMethod("makePackageName", parameterTypes);
+			
+			Object args[] = new Object[1];
+			args[0] = namespace;
+			stringReturn = makePackageNameMethod.invoke(null, args);
+		} catch (SecurityException e) {
+			e.printStackTrace();
+		} catch (NoSuchMethodException e) {
+			e.printStackTrace();
+		} catch (IllegalArgumentException e) {
+			e.printStackTrace();
+		} catch (IllegalAccessException e) {
+			e.printStackTrace();
+		} catch (InvocationTargetException e) {
+			e.printStackTrace();
+		}
+		return  (String)stringReturn;
+
+	}
+
+}
diff --git a/bundles/org.eclipse.jst.ws.axis2.consumption.ui/src/org/eclipse/jst/ws/internal/axis2/consumption/ui/wizard/client/WebServiceClientAxis2Type.java b/bundles/org.eclipse.jst.ws.axis2.consumption.ui/src/org/eclipse/jst/ws/internal/axis2/consumption/ui/wizard/client/WebServiceClientAxis2Type.java
new file mode 100644
index 0000000..d3e2927
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.consumption.ui/src/org/eclipse/jst/ws/internal/axis2/consumption/ui/wizard/client/WebServiceClientAxis2Type.java
@@ -0,0 +1,99 @@
+/*******************************************************************************
+ * Copyright (c) 2007 WSO2 Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * WSO2 Inc. - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20070130   168762 sandakith@wso2.com - Lahiru Sandakith, Initial code to introduse the Axis2 
+ * 										  runtime to the framework for 168762
+ *******************************************************************************/
+package org.eclipse.jst.ws.internal.axis2.consumption.ui.wizard.client;
+
+import org.eclipse.jst.ws.axis2.consumption.core.data.DataModel;
+import org.eclipse.jst.ws.axis2.consumption.core.messages.Axis2ConsumptionUIMessages;
+import org.eclipse.jst.ws.internal.axis2.consumption.ui.widgets.Axis2ProxyWidget;
+import org.eclipse.wst.command.internal.env.core.data.DataMappingRegistry;
+import org.eclipse.wst.command.internal.env.core.fragment.CommandFragment;
+import org.eclipse.wst.command.internal.env.core.fragment.CommandFragmentFactory;
+import org.eclipse.wst.command.internal.env.core.fragment.SimpleFragment;
+import org.eclipse.wst.command.internal.env.ui.widgets.CanFinishRegistry;
+import org.eclipse.wst.command.internal.env.ui.widgets.CommandWidgetBinding;
+import org.eclipse.wst.command.internal.env.ui.widgets.WidgetContributor;
+import org.eclipse.wst.command.internal.env.ui.widgets.WidgetContributorFactory;
+import org.eclipse.wst.command.internal.env.ui.widgets.WidgetRegistry;
+
+public class WebServiceClientAxis2Type implements CommandWidgetBinding {
+	
+	DataModel model;
+	
+	public WebServiceClientAxis2Type(DataModel model){
+		this.model = model;
+	}
+
+	
+	  /* (non-Javadoc)
+	   * @see org.eclipse.wst.command.env.ui.widgets.CommandWidgetBinding#registerDataMappings(org.eclipse.wst.command.internal.env.core.data.DataMappingRegistry)
+	   */
+	  public void registerDataMappings(DataMappingRegistry dataRegistry) {
+	  	// AxisClientDefaultingCommand  	
+	    // dataRegistry.addMapping( Axis2ClientDefaultingCommand.class, "CustomizeClientMappings", Axis2ProxyWidget.class );
+	    
+	  }
+	  
+	  /* (non-Javadoc)
+	   * @see org.eclipse.wst.command.env.ui.widgets.CommandWidgetBinding#registerWidgetMappings(org.eclipse.wst.command.env.ui.widgets.WidgetRegistry)
+	   */
+	  public void registerWidgetMappings(WidgetRegistry widgetRegistry) {
+	   
+	    widgetRegistry.add( "AxisClientStart", 
+	        Axis2ConsumptionUIMessages.PAGE_TITLE_WS_AXIS2_PROXY,
+	        Axis2ConsumptionUIMessages.PAGE_DESC_WS_AXIS2_PROXY,
+	        new WidgetContributorFactory()
+	        {
+	          public WidgetContributor create()
+	          {
+	            return new Axis2ProxyWidget(model);
+	          }
+	        } );
+	    
+	    //widgetRegistry.add( "AxisClientBeanMapping", 
+	    //    Axis2ConsumptionUIMessages.PAGE_TITLE_WS_XML2PROXY,
+	    //    Axis2ConsumptionUIMessages.LABEL_EXPLORE_MAPPINGS_XML2BEAN,
+	    //    new WidgetContributorFactory()
+	    //    {
+	    //      public WidgetContributor create()
+	    //      {
+	    //        return new AxisMappingsWidget(AxisMappingsWidget.MODE_XML2PROXY );
+	    //      }
+	    //    } );
+	  }
+	  
+	  /* (non-Javadoc)
+	   * @see org.eclipse.wst.command.internal.env.core.fragment.CommandFragmentFactoryFactory#create()
+	   */
+	  public CommandFragmentFactory create() 
+	  {
+	    return new CommandFragmentFactory()
+	           {
+	             public CommandFragment create()
+	             {
+	               //dead code - doesn't matter what gets returned here.
+	               return new SimpleFragment();
+	             }
+	           };
+	  }
+	  /* (non-Javadoc)
+	   * @see org.eclipse.wst.command.env.ui.widgets.CommandWidgetBinding#registerCanFinish(org.eclipse.wst.command.env.ui.widgets.CanFinishRegistry)
+	   */
+	  public void registerCanFinish(CanFinishRegistry canFinishRegistry){
+	  }
+	  
+	  public void setWebServiceDataModel( DataModel model ){
+			this.model = model;
+	  }
+}
diff --git a/bundles/org.eclipse.jst.ws.axis2.consumption.ui/src/org/eclipse/jst/ws/internal/axis2/consumption/ui/wsrt/Axis2ClientConfigWidgetFactory.java b/bundles/org.eclipse.jst.ws.axis2.consumption.ui/src/org/eclipse/jst/ws/internal/axis2/consumption/ui/wsrt/Axis2ClientConfigWidgetFactory.java
new file mode 100644
index 0000000..326e941
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.consumption.ui/src/org/eclipse/jst/ws/internal/axis2/consumption/ui/wsrt/Axis2ClientConfigWidgetFactory.java
@@ -0,0 +1,73 @@
+/*******************************************************************************
+ * Copyright (c) 2007 WSO2 Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * WSO2 Inc. - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20070230   168762 sandakith@wso2.com - Lahiru Sandakith, Initial code to introduse the Axis2 
+ * 										  runtime to the framework for 168762
+ *******************************************************************************/
+package org.eclipse.jst.ws.internal.axis2.consumption.ui.wsrt;
+
+import org.eclipse.jst.ws.axis2.consumption.core.command.Axis2ClientDefaultingCommand;
+import org.eclipse.jst.ws.axis2.consumption.core.data.DataModel;
+import org.eclipse.jst.ws.axis2.consumption.core.messages.Axis2ConsumptionUIMessages;
+import org.eclipse.jst.ws.internal.axis2.consumption.ui.widgets.Axis2ProxyWidget;
+import org.eclipse.jst.ws.internal.axis2.consumption.ui.wizard.client.WebServiceClientAxis2Type;
+import org.eclipse.wst.command.internal.env.core.data.DataMappingRegistry;
+import org.eclipse.wst.command.internal.env.ui.widgets.INamedWidgetContributor;
+import org.eclipse.wst.command.internal.env.ui.widgets.INamedWidgetContributorFactory;
+import org.eclipse.wst.command.internal.env.ui.widgets.WidgetBindingToWidgetFactoryAdapter;
+
+public class Axis2ClientConfigWidgetFactory implements INamedWidgetContributorFactory{
+	private INamedWidgetContributor             proxyConfigWidget;
+	private INamedWidgetContributor             mappingsWidget;
+	private Axis2ProxyWidget                     proxyWidget;
+	private WidgetBindingToWidgetFactoryAdapter adapter;
+	private DataModel 							model;
+	private WebServiceClientAxis2Type           wsClientAxis2Type;
+	private DataMappingRegistry dataRegistry;
+	
+	public Axis2ClientConfigWidgetFactory(){
+	}
+	
+	public INamedWidgetContributor getFirstNamedWidget() {
+		init();
+		//wsClientAxis2Type.setWebServiceDataModel(model);
+		return proxyConfigWidget;
+	}
+
+	public INamedWidgetContributor getNextNamedWidget( INamedWidgetContributor widgetContributor) {
+	  return widgetContributor == proxyConfigWidget && proxyWidget.isGenProxy() ? mappingsWidget : null;
+	}
+	
+	public void registerDataMappings(DataMappingRegistry dataRegistry) {
+		this.dataRegistry=dataRegistry;
+		// Map the data model from the defaulting command to this widget factory.
+		// The framework will actually to the call to getWebServiceDataModel in
+		// the ExampleDefaultingCommand class and then call the setWebServiceDataModel
+		// method in this class.
+		dataRegistry.addMapping( Axis2ClientDefaultingCommand.class, 
+								 Axis2ConsumptionUIMessages.LABEL_DATA_MODEL, 
+								 Axis2ClientConfigWidgetFactory.class );
+	}
+	
+	public void setWebServiceDataModel( DataModel model ){
+		this.model = model;
+	}
+	
+	private void init(){
+		  wsClientAxis2Type = new WebServiceClientAxis2Type(model);
+		  adapter = new WidgetBindingToWidgetFactoryAdapter(wsClientAxis2Type );
+		  proxyConfigWidget = adapter.getWidget( "AxisClientStart" );
+		  proxyWidget       = (Axis2ProxyWidget)proxyConfigWidget.getWidgetContributorFactory().create();
+		  mappingsWidget   = adapter.getWidget( "AxisClientBeanMapping" );
+		  adapter.registerDataMappings( dataRegistry );
+
+	}
+}
diff --git a/bundles/org.eclipse.jst.ws.axis2.consumption.ui/src/org/eclipse/jst/ws/internal/axis2/consumption/ui/wsrt/Axis2WebServiceClient.java b/bundles/org.eclipse.jst.ws.axis2.consumption.ui/src/org/eclipse/jst/ws/internal/axis2/consumption/ui/wsrt/Axis2WebServiceClient.java
new file mode 100644
index 0000000..592697b
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.consumption.ui/src/org/eclipse/jst/ws/internal/axis2/consumption/ui/wsrt/Axis2WebServiceClient.java
@@ -0,0 +1,84 @@
+/*******************************************************************************
+ * Copyright (c) 2007 WSO2 Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * WSO2 Inc. - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20070230   168762 sandakith@wso2.com - Lahiru Sandakith, Initial code to introduse the Axis2 
+ * 										  runtime to the framework for 168762
+ *******************************************************************************/
+package org.eclipse.jst.ws.internal.axis2.consumption.ui.wsrt;
+
+import java.util.Vector;
+
+import org.eclipse.jst.ws.axis2.consumption.core.command.Axis2ClientCodegenCommand;
+import org.eclipse.jst.ws.axis2.consumption.core.command.Axis2ClientDefaultingCommand;
+import org.eclipse.jst.ws.axis2.consumption.core.command.Axis2WebservicesServerCommand;
+import org.eclipse.jst.ws.axis2.consumption.core.data.DataModel;
+import org.eclipse.jst.ws.internal.axis2.consumption.ui.task.DefaultsForHTTPBasicAuthCommand;
+import org.eclipse.wst.command.internal.env.core.ICommandFactory;
+import org.eclipse.wst.command.internal.env.core.SimpleCommandFactory;
+import org.eclipse.wst.command.internal.env.core.data.DataMappingRegistry;
+import org.eclipse.wst.command.internal.env.eclipse.EclipseEnvironment;
+import org.eclipse.wst.common.environment.IEnvironment;
+import org.eclipse.wst.ws.internal.wsrt.AbstractWebServiceClient;
+import org.eclipse.wst.ws.internal.wsrt.IContext;
+import org.eclipse.wst.ws.internal.wsrt.ISelection;
+import org.eclipse.wst.ws.internal.wsrt.WebServiceClientInfo;
+
+public class Axis2WebServiceClient extends AbstractWebServiceClient {
+
+	public Axis2WebServiceClient(WebServiceClientInfo info) {
+		super(info);
+	}
+
+	public ICommandFactory assemble(IEnvironment env, IContext ctx,
+			ISelection arg2, String arg3, String arg4) {
+		return null;
+	}
+
+	public ICommandFactory deploy(IEnvironment env, IContext ctx,
+			ISelection arg2, String arg3, String arg4) {
+		return null;
+	}
+
+	public ICommandFactory develop(IEnvironment env, IContext ctx,
+			ISelection sel, String project, String earProject) {
+		DataModel model = new DataModel();
+		
+		EclipseEnvironment environment = (EclipseEnvironment)env;
+		registerDataMappings( environment.getCommandManager().getMappingRegistry());
+		model.setWebProjectName(project);
+		Vector commands = new Vector();
+		commands.add(new Axis2ClientDefaultingCommand(model,this));
+		commands.add(new Axis2WebservicesServerCommand(model, project));
+		commands.add(new Axis2ClientCodegenCommand(model));
+		
+		return new SimpleCommandFactory(commands);
+	}
+
+	public ICommandFactory install(IEnvironment env, IContext ctx,
+			ISelection sel, String project, String earProject) {
+		return null;
+	}
+
+	public ICommandFactory run(IEnvironment env, IContext ctx,
+			ISelection sel, String project, String earProject) {
+		return null;
+	}
+
+	public void registerDataMappings(DataMappingRegistry registry){
+		// AxisClientDefaultingCommand
+		registry.addMapping(Axis2ClientDefaultingCommand.class, 
+							"WsdlURL", 
+							DefaultsForHTTPBasicAuthCommand.class,
+							"WsdlServiceURL", null); //OK
+
+	}
+
+}
diff --git a/bundles/org.eclipse.jst.ws.axis2.core/.classpath b/bundles/org.eclipse.jst.ws.axis2.core/.classpath
new file mode 100644
index 0000000..304e861
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.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/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/bundles/org.eclipse.jst.ws.axis2.core/.project b/bundles/org.eclipse.jst.ws.axis2.core/.project
new file mode 100644
index 0000000..2230d2d
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.core/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.jst.ws.axis2.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/bundles/org.eclipse.jst.ws.axis2.core/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.jst.ws.axis2.core/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..6e7793f
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.core/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,57 @@
+#Tue Mar 20 10:45:04 LKT 2007
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
+org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
+org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
+org.eclipse.jdt.core.compiler.problem.nullReference=ignore
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.5
diff --git a/bundles/org.eclipse.jst.ws.axis2.core/META-INF/MANIFEST.MF b/bundles/org.eclipse.jst.ws.axis2.core/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..73fba01
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.core/META-INF/MANIFEST.MF
@@ -0,0 +1,35 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %PLUGIN_NAME
+Bundle-SymbolicName: org.eclipse.jst.ws.axis2.core;singleton:=true
+Bundle-Version: 1.0.0
+Bundle-Activator: org.eclipse.jst.ws.axis2.core.plugin.WebServiceAxis2CorePlugin
+Bundle-Vendor: %PLUGIN_PROVIDER
+Bundle-Localization: plugin
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.core.resources,
+ org.apache.ant,
+ org.eclipse.ui,
+ org.eclipse.wst.common.project.facet.core,
+ org.eclipse.wst.common.project.facet.ui,
+ org.eclipse.wst.common.modulecore,
+ org.eclipse.jst.j2ee.web,
+ org.eclipse.jst.j2ee,
+ org.eclipse.jst.j2ee.core,
+ org.eclipse.emf.common,
+ org.eclipse.emf.ecore,
+ org.eclipse.jem,
+ org.eclipse.wst.command.env,
+ org.eclipse.wst.command.env.core,
+ org.eclipse.jst.ws,
+ org.eclipse.wst.common.environment,
+ org.eclipse.wst.common.frameworks,
+ org.eclipse.wst.common.frameworks.ui,
+ org.eclipse.wst.command.env.ui
+Eclipse-LazyStart: true
+Export-Package: org.eclipse.jst.ws.axis2.core.context,
+ org.eclipse.jst.ws.axis2.core.plugin,
+ org.eclipse.jst.ws.axis2.core.plugin.data,
+ org.eclipse.jst.ws.axis2.core.plugin.messages,
+ org.eclipse.jst.ws.axis2.core.utils
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
diff --git a/bundles/org.eclipse.jst.ws.axis2.core/build.properties b/bundles/org.eclipse.jst.ws.axis2.core/build.properties
new file mode 100644
index 0000000..0dc34f7
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.core/build.properties
@@ -0,0 +1,6 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml,\
+               plugin.properties
diff --git a/bundles/org.eclipse.jst.ws.axis2.core/plugin.properties b/bundles/org.eclipse.jst.ws.axis2.core/plugin.properties
new file mode 100644
index 0000000..7695ba6
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.core/plugin.properties
@@ -0,0 +1,31 @@
+###############################################################################
+# Copyright (c) 2007 WSO2 Inc. and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+# WSO2 Inc. - initial API and implementation
+# yyyymmdd bug      Email and other contact information
+# -------- -------- -----------------------------------------------------------
+# 20070405   168762 sandakith@wso2.com - Lahiru Sandakith, Initial code to 
+#					introduse the Axis2 runtime to the framework for 168762
+###############################################################################
+#
+
+#
+# Messages in plugin.xml.
+#
+PLUGIN_NAME=Axis2 Core Plug-in
+PLUGIN_PROVIDER=WSO2
+
+AXIS2_CATOGERY_LABEL=Axis2 Web Services
+AXIS2_CATOGERY_DISCRIPTION=Enables Web Services generation through Axis2 Web services engine.
+
+AXIS2_FACET_CORE_LABEL=Axis2 Web Services Core
+AXIS2_FACET_CORE_DISCRIPTION=Prepare the Project for Web Services generation through Axis2 Web services engine.
+
+
+AXIS2_FACET_EXT_LABEL=Axis2 Web Services Extensions
+AXIS2_FACET_EXT_DISCRIPTION=Prepare the Project for additional Web services support with the Axis2 Web services runtime.
\ No newline at end of file
diff --git a/bundles/org.eclipse.jst.ws.axis2.core/plugin.xml b/bundles/org.eclipse.jst.ws.axis2.core/plugin.xml
new file mode 100644
index 0000000..575375d
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.core/plugin.xml
@@ -0,0 +1,69 @@
+<plugin>
+
+	<extension point="org.eclipse.wst.common.project.facet.core.facets">
+	
+	  <category id="axis2.category">
+    	<label>%AXIS2_CATOGERY_LABEL</label>
+    	<description>%AXIS2_CATOGERY_DISCRIPTION</description>
+  	  </category>
+
+		  <project-facet id="axis2.core">
+			<label>%AXIS2_FACET_CORE_LABEL</label>
+			<description>%AXIS2_FACET_CORE_DISCRIPTION</description>
+			<category>axis2.category</category>
+		  </project-facet>
+
+		<project-facet-version facet="axis2.core" version="1.1">
+		    <constraint>
+      			<requires facet="jst.web" version="2.2,2.3,2.4"/>
+    		</constraint>
+    		<action type="INSTALL">
+      			<delegate class="org.eclipse.jst.ws.axis2.facet.deligate.Axis2CoreFacetInstallDelegate"/>
+    		</action>
+    		<action type="UNINSTALL">
+      			<delegate class="org.eclipse.jst.ws.axis2.facet.deligate.Axis2CoreFacetUnInstallDelegate"/>
+    		</action>
+  		</project-facet-version>
+
+		  <project-facet id="axis2.ext">
+			<label>%AXIS2_FACET_EXT_LABEL</label>
+			<description>%AXIS2_FACET_EXT_DISCRIPTION</description>
+			<category>axis2.category</category>
+		  </project-facet>
+
+		<project-facet-version facet="axis2.ext" version="1.1">
+		    <constraint>
+      			<requires facet="axis2.core" version="1.1"/>
+    		</constraint>
+    		<action type="INSTALL">
+      			<delegate class="org.eclipse.jst.ws.axis2.facet.deligate.Axis2ExtFacetInstallDelegate"/>
+    		</action>
+    		<action type="UNINSTALL">
+      			<delegate class="org.eclipse.jst.ws.axis2.facet.deligate.Axis2ExtFacetUnInstallDelegate"/>
+    		</action>
+  		</project-facet-version>
+  
+	</extension>
+	
+	<extension point="org.eclipse.wst.common.project.facet.ui.images">
+  		<image facet="axis2.core" path="icons/axis2-facet-add.gif"/>
+  		<image facet="axis2.ext" path="icons/axis2-facet-add.gif"/>
+  		<image category="axis2.category" path="icons/axis2-facet.ico"/>
+	</extension>
+	
+	<extension
+       point="org.eclipse.wst.common.project.facet.core.runtimes">
+    <supported>
+      <runtime-component
+         any="true"/>
+      <facet
+         id="axis2.core"
+         version="1.1"/>
+      <facet
+         id="axis2.ext"
+         version="1.1"/>
+    </supported>
+   </extension>
+
+
+</plugin>
\ No newline at end of file
diff --git a/bundles/org.eclipse.jst.ws.axis2.core/src/org/eclipse/jst/ws/axis2/core/context/BUServiceContext.java b/bundles/org.eclipse.jst.ws.axis2.core/src/org/eclipse/jst/ws/axis2/core/context/BUServiceContext.java
new file mode 100644
index 0000000..1e60e0b
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.core/src/org/eclipse/jst/ws/axis2/core/context/BUServiceContext.java
@@ -0,0 +1,27 @@
+package org.eclipse.jst.ws.axis2.core.context;
+
+public class BUServiceContext {
+	
+	private static BUServiceContext instance;
+	private static String serviceName; 
+	
+	//singleton
+	private BUServiceContext(){}
+	
+	public static BUServiceContext getInstance(){
+		if (instance == null) {
+			instance = new BUServiceContext();
+		}
+		return instance;
+	}
+
+	public String getServiceName() {
+		return serviceName;
+	}
+
+	public void setServiceName(String serviceName) {
+		BUServiceContext.serviceName = serviceName;
+	}
+	
+	
+}
diff --git a/bundles/org.eclipse.jst.ws.axis2.core/src/org/eclipse/jst/ws/axis2/core/plugin/WebServiceAxis2CorePlugin.java b/bundles/org.eclipse.jst.ws.axis2.core/src/org/eclipse/jst/ws/axis2/core/plugin/WebServiceAxis2CorePlugin.java
new file mode 100644
index 0000000..5928a6a
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.core/src/org/eclipse/jst/ws/axis2/core/plugin/WebServiceAxis2CorePlugin.java
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ * Copyright (c) 2007 WSO2 Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * WSO2 Inc. - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20070130   168762 sandakith@wso2.com - Lahiru Sandakith, Initial code to introduse the Axis2 
+ * 										  runtime to the framework for 168762
+ *******************************************************************************/
+package org.eclipse.jst.ws.axis2.core.plugin;
+
+import org.eclipse.core.runtime.Plugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class WebServiceAxis2CorePlugin extends Plugin {
+
+	// The plug-in ID
+	public static final String PLUGIN_ID = "org.eclipse.jst.ws.axis2.core.plugin";
+
+	// The shared instance
+	private static WebServiceAxis2CorePlugin plugin;
+	
+	/**
+	 * The constructor
+	 */
+	public WebServiceAxis2CorePlugin() {
+		plugin = this;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.eclipse.core.runtime.Plugins#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 {
+		plugin = null;
+		super.stop(context);
+	}
+
+	/**
+	 * Returns the shared instance
+	 *
+	 * @return the shared instance
+	 */
+	public static WebServiceAxis2CorePlugin getDefault() {
+		return plugin;
+	}
+
+}
diff --git a/bundles/org.eclipse.jst.ws.axis2.core/src/org/eclipse/jst/ws/axis2/core/plugin/data/ServerModel.java b/bundles/org.eclipse.jst.ws.axis2.core/src/org/eclipse/jst/ws/axis2/core/plugin/data/ServerModel.java
new file mode 100644
index 0000000..f69c821
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.core/src/org/eclipse/jst/ws/axis2/core/plugin/data/ServerModel.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2007 WSO2 Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * WSO2 Inc. - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20070213   168762 sandakith@wso2.com - Lahiru Sandakith, Initial code to introduse 
+ * 										the Axis2 runtime to the framework for 168762
+ *******************************************************************************/
+package org.eclipse.jst.ws.axis2.core.plugin.data;
+
+public class ServerModel {
+	
+	private static String axis2ServerPath;
+
+	public static String getAxis2ServerPath() {
+		return axis2ServerPath;
+	}
+
+	public static void setAxis2ServerPath(String axis2ServerPathParam) {
+		axis2ServerPath = axis2ServerPathParam;
+	}
+
+}
diff --git a/bundles/org.eclipse.jst.ws.axis2.core/src/org/eclipse/jst/ws/axis2/core/plugin/messages/Axis2CoreUI.properties b/bundles/org.eclipse.jst.ws.axis2.core/src/org/eclipse/jst/ws/axis2/core/plugin/messages/Axis2CoreUI.properties
new file mode 100644
index 0000000..885221b
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.core/src/org/eclipse/jst/ws/axis2/core/plugin/messages/Axis2CoreUI.properties
@@ -0,0 +1,73 @@
+###############################################################################
+# Copyright (c) 2007 WSO2 Inc. and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+# WSO2 Inc. - initial API and implementation
+# yyyymmdd bug      Email and other contact information
+# -------- -------- -----------------------------------------------------------
+# 20070110   168762 sandakith@wso2.com - Lahiru Sandakith, Initial code to introduse the Axis2 
+#										 runtime to the framework for 168762
+###############################################################################
+
+LABEL_BROUSE=Browse
+LABEL_WEB_SERVICE_CODEGEN=Web service codegen options
+LABEL_WEB_SERVICE_CLIENT_CODEGEN=Web service client codegen options
+LABEL_WEB_SERVICE_AAR=Web service archive options
+LABEL_DATABINDING=Default Databinding
+LABEL_AAR_EXTENTION=AAR Default Extention
+LABEL_WEBAPP_LOCATION=Axis2 Webapp location :  
+LABEL_AXIS2_RUNTIME_LOAD=Axis2 Runtime Loaded Suncessfully  !!!
+LABEL_AXIS2_RUNTIME_LOAD_ERROR=Error occured during loading Axis2 Runtime\n Please select the correct Axis2 Runtime Folder !!
+LABEL_GENERATE_TESTCASE_CAPTION=Generate test case to test the service
+LABEL_GENERATE_SERVERSIDE_INTERFACE=Generate an Interface for Skeleton
+LABEL_GENERATE_ALL=Generate All Types for all elements refered by shemas
+LABEL_CLIENT_SIDE=Client mode
+LABEL_SYNC_AND_ASYNC=Generate both sync and async
+LABEL_SYNC=Generate sync style only
+LABEL_ASYNC=Generate async style only
+
+DIR_WEBCONTENT=WebContent
+DIR_TEMPWAR=tempwar
+DIR_DIST=dist
+DIR_WEB_INF=WEB-INF
+DIR_LIB=lib
+
+FILE_AXIS2_WAR=axis2.war
+
+
+NULL=
+ADB=adb
+AAR=aar
+AXIS2_LOCATION=Axis2 Runtime
+AXIS2_RUNTIME=Axis2 Runtime
+AXIS2_PREFERENCES=Axis2 Preferences
+ERROR_INVALID_AXIS2_SERVER_LOCATION=Invalid Axis2 Webapp location
+TEMP_AXIS2_FACET_DIR=org.apache.axis2.facet
+DIR_DOT_METADATA=.metadata
+DIR_DOT_PLUGINS=.plugins
+DIR_UNZIP=unzip
+
+LOCAL_SERVER_PORT=http://localhost:8080
+SERVICES=services
+
+WEBAPP_EXPLODED_SERVER_LOCATION_FILE=server.properties
+SERVER_STATUS_LOCATION_FILE=status.properties
+
+
+PROPERTY_KEY_PATH=path
+PROPERTY_KEY_STATUS=status
+
+SERVER_STATUS=status
+SERVER_STATUS_PASS=pass
+SERVER_STATUS_FAIL=fail
+
+ERROR_INVALID_FILE_READ_WRITEL=Exception occured while file read wrote
+ERROR_SERVER_IS_NOT_SET=Axis2 runtime is not set at web services preferences page!! Please set the web services runtime by navigating through preferences.
+
+
+PROGRESS_INSTALL_AXIS2_RUNTIME=Installing Axis2 Runtime...
+PROGRESS_UNINSTALL_AXIS2_RUNTIME=UnInstalling the Axis2 Runtime...
diff --git a/bundles/org.eclipse.jst.ws.axis2.core/src/org/eclipse/jst/ws/axis2/core/plugin/messages/Axis2CoreUIMessages.java b/bundles/org.eclipse.jst.ws.axis2.core/src/org/eclipse/jst/ws/axis2/core/plugin/messages/Axis2CoreUIMessages.java
new file mode 100644
index 0000000..5b23a86
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.core/src/org/eclipse/jst/ws/axis2/core/plugin/messages/Axis2CoreUIMessages.java
@@ -0,0 +1,84 @@
+/*******************************************************************************
+ * Copyright (c) 2007 WSO2 Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * WSO2 Inc. - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20070110   168762 sandakith@wso2.com - Lahiru Sandakith, Initial code to introduse 
+ * 										the Axis2 runtime to the framework for 168762
+ *******************************************************************************/
+package org.eclipse.jst.ws.axis2.core.plugin.messages;
+
+import org.eclipse.osgi.util.NLS;
+
+public final class Axis2CoreUIMessages extends NLS {
+
+	private static final String BUNDLE_NAME = "org.eclipse.jst.ws.axis2.core.plugin.messages.Axis2CoreUI";//$NON-NLS-1$
+
+	private Axis2CoreUIMessages() {
+		// Do not instantiate
+	}
+
+	public static String LABEL_BROUSE;
+	public static String LABEL_WEB_SERVICE_CODEGEN;
+	public static String LABEL_WEB_SERVICE_CLIENT_CODEGEN;
+	public static String LABEL_WEB_SERVICE_AAR;
+	public static String LABEL_AAR_EXTENTION;
+	public static String LABEL_DATABINDING;
+	public static String LABEL_AXIS2_RUNTIME_LOAD;
+	public static String LABEL_AXIS2_RUNTIME_LOAD_ERROR;
+	public static String LABEL_GENERATE_TESTCASE_CAPTION;
+	public static String LABEL_GENERATE_SERVERSIDE_INTERFACE;
+	public static String LABEL_GENERATE_ALL;
+	public static String LABEL_CLIENT_SIDE;
+	public static String LABEL_SYNC_AND_ASYNC;
+	public static String LABEL_SYNC;
+	public static String LABEL_ASYNC;
+	
+	public static String DIR_WEBCONTENT;
+	public static String DIR_TEMPWAR;
+	public static String DIR_DIST;
+	public static String DIR_DOT_METADATA;
+	public static String DIR_WEB_INF;
+	public static String DIR_LIB;
+	public static String DIR_DOT_PLUGINS;
+	public static String DIR_UNZIP;
+
+	public static String FILE_AXIS2_WAR;
+	
+	public static String AXIS2_LOCATION;
+	public static String AXIS2_RUNTIME;
+	public static String AXIS2_PREFERENCES;
+	public static String TEMP_AXIS2_FACET_DIR;
+	public static String WEBAPP_EXPLODED_SERVER_LOCATION_FILE;
+	public static String SERVER_STATUS_LOCATION_FILE;
+	public static String LABEL_WEBAPP_LOCATION;
+	public static String NULL;
+	public static String ADB;
+	public static String AAR;
+	public static String PROPERTY_KEY_PATH;
+	public static String PROPERTY_KEY_STATUS;
+	public static String LOCAL_SERVER_PORT;
+	public static String SERVICES;
+
+	public static String SERVER_STATUS;
+	public static String SERVER_STATUS_PASS;
+	public static String SERVER_STATUS_FAIL;
+
+	public static String ERROR_INVALID_AXIS2_SERVER_LOCATION;
+	public static String ERROR_INVALID_FILE_READ_WRITEL;
+	public static String ERROR_SERVER_IS_NOT_SET;
+
+	
+	public static String PROGRESS_INSTALL_AXIS2_RUNTIME;
+	public static String PROGRESS_UNINSTALL_AXIS2_RUNTIME;
+	
+	static {
+		NLS.initializeMessages(BUNDLE_NAME, Axis2CoreUIMessages.class);
+	}
+}
diff --git a/bundles/org.eclipse.jst.ws.axis2.core/src/org/eclipse/jst/ws/axis2/core/utils/Axis2CoreUtils.java b/bundles/org.eclipse.jst.ws.axis2.core/src/org/eclipse/jst/ws/axis2/core/utils/Axis2CoreUtils.java
new file mode 100644
index 0000000..7d5b3a9
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.core/src/org/eclipse/jst/ws/axis2/core/utils/Axis2CoreUtils.java
@@ -0,0 +1,60 @@
+/*******************************************************************************
+ * Copyright (c) 2007 WSO2 Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * WSO2 Inc. - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20070130   168762 sandakith@wso2.com - Lahiru Sandakith, Initial code to introduse the Axis2 
+ * 										  runtime to the framework for 168762
+ *******************************************************************************/
+package org.eclipse.jst.ws.axis2.core.utils;
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.jst.ws.axis2.core.plugin.messages.Axis2CoreUIMessages;
+
+public class Axis2CoreUtils {
+	
+	public static String tempAxis2Directory() {
+		String projectDirDotMetadata = addAnotherNodeToPath(ResourcesPlugin.getWorkspace().getRoot().getLocation().toOSString(), 
+				 Axis2CoreUIMessages.DIR_DOT_METADATA);
+		String projectDirDotPlugins= addAnotherNodeToPath(projectDirDotMetadata,
+												Axis2CoreUIMessages.DIR_DOT_PLUGINS);
+		String tempAxis2Dir =addAnotherNodeToPath(projectDirDotPlugins, 
+							 Axis2CoreUIMessages.TEMP_AXIS2_FACET_DIR);
+		return tempAxis2Dir;
+	}
+	
+	public static String tempAxis2WebappFileLocation() {
+		return
+		addAnotherNodeToPath(tempAxis2Directory(),
+							 Axis2CoreUIMessages.WEBAPP_EXPLODED_SERVER_LOCATION_FILE);
+	}
+	
+	
+	public static String tempRuntimeStatusFileLocation() {
+		return
+		addAnotherNodeToPath(tempAxis2Directory(),
+							 Axis2CoreUIMessages.SERVER_STATUS_LOCATION_FILE);
+	}
+	
+	public static String addAnotherNodeToPath(String currentPath, String newNode) {
+		return currentPath + File.separator + newNode;
+	}
+	
+	public static void  writePropertyToFile(File file,String key, String value) throws IOException {
+	       BufferedWriter out = new BufferedWriter(new FileWriter(file));
+	       out.write(key+"="+value+"\n");
+	       out.close();
+	}
+
+}
diff --git a/bundles/org.eclipse.jst.ws.axis2.core/src/org/eclipse/jst/ws/axis2/core/utils/ClassLoadingUtil.java b/bundles/org.eclipse.jst.ws.axis2.core/src/org/eclipse/jst/ws/axis2/core/utils/ClassLoadingUtil.java
new file mode 100644
index 0000000..b3f49ef
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.core/src/org/eclipse/jst/ws/axis2/core/utils/ClassLoadingUtil.java
@@ -0,0 +1,216 @@
+/*******************************************************************************
+ * Copyright (c) 2007 WSO2 Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * WSO2 Inc. - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20070130   168762 sandakith@wso2.com - Lahiru Sandakith, Initial code to introduse the Axis2 
+ * 										  runtime to the framework for 168762
+ *******************************************************************************/
+package org.eclipse.jst.ws.axis2.core.utils;
+
+import java.io.File;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLClassLoader;
+
+import org.apache.tools.ant.AntClassLoader;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.types.Path;
+
+public class ClassLoadingUtil {
+
+	private static String[] axis2ClassPath = null;
+	private static int libCount = 0;
+	private static AntClassLoader antClassLoader;
+	
+	public static void init(String project) {
+
+		//Obtain a ant class loader instance
+		antClassLoader =  new AntClassLoader();
+		
+		// Set the class loader to child first
+		antClassLoader.setParentFirst(false);
+		
+		String[] classLoadPath = getAxis2Libs(project);
+		URL[] urls = new URL[classLoadPath.length];
+
+		Path classpath = new Path(new Project());
+		
+		try{
+			for (int i = 0; i < classLoadPath.length; i++) {
+				//Create a File object on the root of the directory containing the class file
+				if(classLoadPath[i]!=null){
+					File file = new File(classLoadPath[i]);
+					// Convert File to a URL
+					URL url = file.toURL();          
+					urls[i]= url;
+					classpath.setPath(classLoadPath[i]);
+				}
+			}
+			
+		}catch(MalformedURLException e){
+			e.printStackTrace();
+		}
+			antClassLoader.setClassPath(classpath);
+	}
+	
+	
+	
+
+	/**
+	 * Load the class from the class loader 
+	 * @param project
+	 * @param fillyQualifiedClassName
+	 * @return Class loaded through class loader
+	 */
+	public static Class loadClassFromAxis2LibPath(String project, String fillyQualifiedClassName){
+
+		String[] classLoadPath = getAxis2Libs(project);
+		Class cls = null;
+		URL[] urls = new URL[classLoadPath.length];
+
+
+		try {	
+			for (int i = 0; i < classLoadPath.length; i++) {
+				//Create a File object on the root of the directory containing the class file
+				if(classLoadPath[i]!=null){
+					File file = new File(classLoadPath[i]);
+					// Convert File to a URL
+					URL url = file.toURL();          
+					urls[i]= url;
+				}
+			}
+
+			// Create a new class loader with the directory
+			ClassLoader cl = new URLClassLoader(urls,Thread.currentThread().getContextClassLoader());
+//			ClassLoader cl = new URLClassLoader(urls,null); //Set no parent class loader and give me from local jars only
+
+			// Load in the class
+			cls = cl.loadClass(fillyQualifiedClassName);
+			
+		} catch (MalformedURLException e) {
+			e.printStackTrace();
+		} catch (ClassNotFoundException e) {
+			e.printStackTrace();
+		}
+
+		return cls;
+	}
+
+	/**
+	 * load the instance from the class loader
+	 * @param project
+	 * @param fillyQualifiedClassName
+	 * @param parameterTypes
+	 * @param initargs
+	 * @deprecated 
+	 * @return instance from the class loader
+	 */
+	public static Object getInstanceFromAxis2LibPath(String project, String fillyQualifiedClassName,Class[] parameterTypes,Object[] initargs){
+
+		String[] classLoadPath = getAxis2Libs(project);
+		Class cls = null;
+		Object instance = null;
+		URL[] urls = new URL[classLoadPath.length];
+
+
+		try {	
+			for (int i = 0; i < classLoadPath.length; i++) {
+				//Create a File object on the root of the directory containing the class file
+				if(classLoadPath[i]!=null){
+					File file = new File(classLoadPath[i]);
+					// Convert File to a URL
+					URL url = file.toURL();          
+					urls[i]= url;
+				}
+			}
+
+			// Create a new class loader with the directory
+			URLClassLoader cl = new URLClassLoader(urls, Thread.currentThread().getContextClassLoader());
+			//cl.
+
+			// Load in the class
+			cls = cl.loadClass(fillyQualifiedClassName);
+			
+			Constructor constructor = cls.getConstructor(parameterTypes);
+			instance = constructor.newInstance(initargs);
+			
+			
+		} catch (MalformedURLException e) {
+			e.printStackTrace();
+		} catch (ClassNotFoundException e) {
+			e.printStackTrace();
+		} catch (SecurityException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		} catch (NoSuchMethodException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		} catch (IllegalArgumentException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		} catch (InstantiationException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		} catch (IllegalAccessException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		} catch (InvocationTargetException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+
+		return instance;
+	}
+	
+	
+	public static Class loadClassFromAntClassLoader(String fillyQualifiedClassName){
+		
+		Class cls = null;
+		try{	
+			cls = antClassLoader.loadClass(fillyQualifiedClassName);
+		} catch (ClassNotFoundException e) {
+			e.printStackTrace();
+		}
+		return cls;
+	}
+	
+	
+	
+	private static String[] getAxis2Libs(String project){
+		File webContainerPath = new File(FacetContainerUtils.pathToWebProjectContainerLib(project));
+		axis2ClassPath = new String[webContainerPath.list().length];
+		libCount = 0;
+		visitAllFiles(webContainerPath);
+		return axis2ClassPath;
+	}
+
+
+	public static void visitAllFiles(File dir) {
+		if(!dir.toString().endsWith(".txt")){
+			if (dir.isDirectory()) {
+
+				String[] children = dir.list();
+				for (int i=0; i<children.length; i++) {
+					visitAllFiles(new File(dir, children[i]));
+				}
+
+			} else {
+				axis2ClassPath[libCount]=dir.getAbsolutePath();
+				libCount+=1;
+			}
+
+		}
+
+	}
+
+
+}
diff --git a/bundles/org.eclipse.jst.ws.axis2.core/src/org/eclipse/jst/ws/axis2/core/utils/FacetContainerUtils.java b/bundles/org.eclipse.jst.ws.axis2.core/src/org/eclipse/jst/ws/axis2/core/utils/FacetContainerUtils.java
new file mode 100644
index 0000000..4d4c169
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.core/src/org/eclipse/jst/ws/axis2/core/utils/FacetContainerUtils.java
@@ -0,0 +1,104 @@
+/*******************************************************************************
+ * Copyright (c) 2007 WSO2 Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * WSO2 Inc. - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20070222  168766 sandakith@wso2.com - Lahiru Sandakith, Initial code to introduse the Axis2 
+ * 										  facet to the framework for 168766
+ *******************************************************************************/
+package org.eclipse.jst.ws.axis2.core.utils;
+
+import java.io.File;
+
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.jst.ws.axis2.core.plugin.messages.Axis2CoreUIMessages;
+import org.eclipse.jst.ws.axis2.core.utils.Axis2CoreUtils;
+
+public class FacetContainerUtils {
+
+	public static String  pathToWebProjectContainer(String project) {
+
+		String workspaceDirectory = ResourcesPlugin.getWorkspace().getRoot()
+												   .getLocation().toOSString();
+		String projectString = replaceEscapecharactors(project.toString());
+
+		String currentDynamicWebProjectDir = Axis2CoreUtils.addAnotherNodeToPath(
+															workspaceDirectory, 
+															getProjectNameFromFramewokNameString(projectString)
+															); 
+
+		//TODO The Web content directory can be different. cater that also
+		String webContainerDirString = Axis2CoreUtils.addAnotherNodeToPath(
+														currentDynamicWebProjectDir,
+														Axis2CoreUIMessages.DIR_WEBCONTENT);
+		
+		return webContainerDirString;
+	}
+	
+	
+	public static String pathToWebProjectContainerLib(String project){
+
+		String webContainerWEBINFString = Axis2CoreUtils.addAnotherNodeToPath(
+															pathToWebProjectContainer(project),
+															Axis2CoreUIMessages.DIR_WEB_INF);
+
+		return  Axis2CoreUtils.addAnotherNodeToPath(
+								webContainerWEBINFString,
+								Axis2CoreUIMessages.DIR_LIB);
+	}
+	
+	
+	
+	//Fix for the windows build not working
+	private static String replaceEscapecharactors(String vulnarableString){
+		if (vulnarableString.indexOf("/")!=-1){
+			vulnarableString = vulnarableString.replace('/', File.separator.charAt(0));
+		}
+		return vulnarableString;
+	}
+	
+	
+	private static String getProjectNameFromFramewokNameString(String frameworkProjectString){
+		if (frameworkProjectString.indexOf(getSplitCharactor())== -1){
+			return frameworkProjectString;
+		}else{
+			return frameworkProjectString.split(getSplitCharactors())[1];
+		}
+		
+	}
+	
+	
+	private static String getSplitCharactor(){
+		//Windows check (because from inside wtp in return I received a hard coded path)
+		if (File.separatorChar == '\\'){
+			return "\\" ;
+		}else{
+			return File.separator;
+		}
+	}
+	
+	private static String getSplitCharactors(){
+		//Windows check (because from inside wtp in return I received a hard coded path)
+		if (File.separatorChar == '\\'){
+			return "\\" + File.separator;
+		}else{
+			return File.separator;
+		}
+	}
+	
+	
+	public static String getDeployedWSDLURL(String projectName, String serviceName){
+		//TODO get the hostname and port from eclispe runtime  
+		String[] deployedWSDLURLParts = {projectName.split("Client")[0],
+										 Axis2CoreUIMessages.SERVICES,
+										 serviceName
+										 };
+		return FileUtils.addNodesToURL(Axis2CoreUIMessages.LOCAL_SERVER_PORT, deployedWSDLURLParts)+"?wsdl";
+	}
+}
diff --git a/bundles/org.eclipse.jst.ws.axis2.core/src/org/eclipse/jst/ws/axis2/core/utils/FileUtils.java b/bundles/org.eclipse.jst.ws.axis2.core/src/org/eclipse/jst/ws/axis2/core/utils/FileUtils.java
new file mode 100644
index 0000000..3a40df8
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.core/src/org/eclipse/jst/ws/axis2/core/utils/FileUtils.java
@@ -0,0 +1,193 @@
+/*******************************************************************************
+ * Copyright (c) 2007 IBM and WSO2 Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - Initial API and implementation
+ * WSO2 Inc. - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20070110   168762 sandakith@wso2.com - Lahiru Sandakith, Initial code to introduse the 
+ * 										  Axis2 runtime to the framework for 168762
+ *******************************************************************************/
+package org.eclipse.jst.ws.axis2.core.utils;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+
+public class FileUtils
+{
+	public FileUtils(){
+		super();
+	}
+
+	public static void copyFile(String src, String dest) {
+		InputStream is = null;
+		FileOutputStream fos = null;
+
+		try
+		{
+			is = new FileInputStream(src);
+			fos = new FileOutputStream(dest);
+			int c = 0;
+			byte[] array = new byte[1024];
+			while ((c = is.read(array)) >= 0){
+				fos.write(array, 0, c);
+			}
+		}
+		catch (Exception e)	{
+			e.printStackTrace();
+		}
+		finally	{
+			try	{
+				fos.close();
+				is.close();
+			}
+			catch (Exception e)	{
+				e.printStackTrace();
+			}
+		}
+	}
+
+	public static File createFileAndParentDirectories(String fileName) throws Exception {
+		File file = new File(fileName);
+		File parent = file.getParentFile();
+		if (!parent.exists()){
+			parent.mkdirs();
+		}
+		file.createNewFile();
+		return file;
+	}
+	
+	public static boolean deleteDir(File dir) {
+        if (dir.isDirectory()) {
+            String[] children = dir.list();
+            for (int i=0; i<children.length; i++) {
+                boolean success = deleteDir(new File(dir, children[i]));
+                if (!success) {
+                    return false;
+                }
+            }
+        }
+        return dir.delete();
+    }
+
+	public static void deleteDirectories(File dir) {
+		File[] children = dir.listFiles();
+		for (int i = 0; i < children.length; i++){
+			if (children[i].list() != null && children[i].list().length > 0){
+				deleteDirectories(children[i]);
+			}
+			else{
+				children[i].delete();
+			}
+		}
+		dir.delete();
+	}
+
+	public static void deleteDirectories(String dir) {
+		File directory = new File(dir);
+		deleteDirectories(directory);
+	}
+
+	public static void createTargetFile(String sourceFileName, String targetFileName) throws Exception {
+		createTargetFile(sourceFileName, targetFileName, false);
+	}
+
+	public static void createTargetFile(String sourceFileName, String targetFileName, boolean overwrite) throws Exception{
+		File idealResultFile = new File(targetFileName);
+		if (overwrite || !idealResultFile.exists())
+		{
+			FileUtils.createFileAndParentDirectories(targetFileName);
+			FileUtils.copyFile(sourceFileName, targetFileName);
+		}
+	}
+
+	public static boolean createDirectory(String directory){
+		// Create a directory; all ancestor directories must exist
+		boolean success = (new File(directory)).mkdir();
+		if (!success) {
+			// Directory creation failed
+		}
+		return success;  
+	}
+
+	public static boolean createDirectorys(String directory){
+		// Create a directory; all ancestor directories must exist
+		boolean success = (new File(directory)).mkdirs();
+		if (!success) {
+			// Directory creation failed
+		}
+		return success;  
+	}
+
+	//Copies all files under srcDir to dstDir.
+	// If dstDir does not exist, it will be created.
+	public static void copyDirectory(File srcDir, File dstDir) throws IOException {
+		if (srcDir.isDirectory()) {
+			if (!dstDir.exists()) {
+				dstDir.mkdir();
+			}
+
+			String[] children = srcDir.list();
+			for (int i=0; i<children.length; i++) {
+				copyDirectory(new File(srcDir, children[i]),
+						new File(dstDir, children[i]));
+			}
+		} else {
+			copy(srcDir, dstDir);
+		}
+	}
+
+	//Copies src file to dst file.
+	// If the dst file does not exist, it is created
+	public static void copy(File src, File dst) throws IOException {
+		InputStream in = new FileInputStream(src);
+		OutputStream out = new FileOutputStream(dst);
+
+		// Transfer bytes from in to out
+		byte[] buf = new byte[1024];
+		int len;
+		while ((len = in.read(buf)) > 0) {
+			out.write(buf, 0, len);
+		}
+		in.close();
+		out.close();
+	}
+
+	public static String addAnotherNodeToPath(String currentPath, String newNode) {
+		return currentPath + File.separator + newNode;
+	}
+	
+	public static String addNodesToPath(String currentPath, String[] newNode) {
+		String returnPath=currentPath;
+		for (int i = 0; i < newNode.length; i++) {
+			returnPath = returnPath + File.separator + newNode[i];
+		}
+		return returnPath;
+	}
+	
+	public static String addNodesToPath(StringBuffer currentPath, String[] pathNodes) {
+		for (int i = 0; i < pathNodes.length; i++){
+			currentPath.append(File.separator);
+			currentPath.append(pathNodes[i]);
+		}
+		return currentPath.toString();
+	}
+	
+	public static String addNodesToURL(String currentPath, String[] newNode) {
+		String returnPath=currentPath;
+		for (int i = 0; i < newNode.length; i++) {
+			returnPath = returnPath + "/" + newNode[i];
+		}
+		return returnPath;
+	}
+
+}
diff --git a/bundles/org.eclipse.jst.ws.axis2.core/src/org/eclipse/jst/ws/axis2/core/utils/RuntimePropertyUtils.java b/bundles/org.eclipse.jst.ws.axis2.core/src/org/eclipse/jst/ws/axis2/core/utils/RuntimePropertyUtils.java
new file mode 100644
index 0000000..aa8068e
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.core/src/org/eclipse/jst/ws/axis2/core/utils/RuntimePropertyUtils.java
@@ -0,0 +1,134 @@
+/*******************************************************************************
+ * Copyright (c) 2007 WSO2 Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * WSO2 Inc. - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20070130   168762 sandakith@wso2.com - Lahiru Sandakith, Initial code to introduse the Axis2 
+ * 										  runtime to the framework for 168762
+ *******************************************************************************/
+package org.eclipse.jst.ws.axis2.core.utils;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.util.Properties;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jst.ws.axis2.core.plugin.messages.Axis2CoreUIMessages;
+
+public class RuntimePropertyUtils {
+	private static File PropertiesFileDir,serverPropertiesFile,statusPropertyFile;
+	private static IStatus status;
+	private static Properties properties;
+	
+	private static void init(){
+		PropertiesFileDir = new File(Axis2CoreUtils.tempAxis2Directory());
+		if (!PropertiesFileDir.exists()){
+			PropertiesFileDir.mkdirs();
+		}
+		properties = new Properties();
+	}
+	
+	private static void serverPropertiesFileInit() throws IOException{
+		serverPropertiesFile = new File(Axis2CoreUtils.tempAxis2WebappFileLocation());
+		if (!serverPropertiesFile.exists()){
+			serverPropertiesFile.createNewFile();
+		}
+		properties.load(new FileInputStream(serverPropertiesFile));
+	}
+	
+	private static void statusPropertiesFileInit() throws IOException{
+		statusPropertyFile = new File(Axis2CoreUtils.tempRuntimeStatusFileLocation());
+		if (!statusPropertyFile.exists()){
+			statusPropertyFile.createNewFile();
+		}
+		properties.load(new FileInputStream(statusPropertyFile));
+	}
+	
+	public static IStatus writeServerPathToPropertiesFile(String axis2Path) {
+		//Fix for properties file skipping the File seperator charactor on windows when loading again
+		String axis2PathNew = null;
+		if ((axis2Path.indexOf("\\")) != -1) {
+			axis2PathNew = axis2Path.replace(File.separator, File.separator+File.separator);;
+		}else{
+			axis2PathNew=axis2Path;
+		}
+		try {
+			init();
+			serverPropertiesFileInit();
+			if(! (properties.size()== 0)){
+				if(properties.containsKey(Axis2CoreUIMessages.PROPERTY_KEY_PATH)){
+					properties.remove(Axis2CoreUIMessages.PROPERTY_KEY_PATH);
+				}
+			}
+				Axis2CoreUtils.writePropertyToFile(serverPropertiesFile, 
+												   Axis2CoreUIMessages.PROPERTY_KEY_PATH,
+												   axis2PathNew);
+		} catch (FileNotFoundException e) {
+			updateStatusError();
+		} catch (IOException e) {
+			updateStatusError();
+		}
+		
+		return status;
+	}
+	
+	public static String getServerPathFromPropertiesFile(){
+		init();
+		String serverPath = null;
+		serverPropertiesFile = new File(Axis2CoreUtils.tempAxis2WebappFileLocation());
+		if (!serverPropertiesFile.exists()){
+			updateStatusError();			
+		}
+		try {
+			properties.load(new FileInputStream(serverPropertiesFile));
+			if(properties.containsKey(Axis2CoreUIMessages.PROPERTY_KEY_PATH)){
+				serverPath = properties.getProperty(Axis2CoreUIMessages.PROPERTY_KEY_PATH);
+			}
+		} catch (FileNotFoundException e) {
+			updateStatusError();
+		} catch (IOException e) {
+			updateStatusError();
+		}
+		return serverPath;
+	}
+	
+	
+	public static IStatus writeServerStausToPropertiesFile(String runtimeStatus) {
+		try {
+			init();
+			statusPropertiesFileInit();
+			if(! (properties.size()== 0)){
+				if(properties.containsKey(Axis2CoreUIMessages.PROPERTY_KEY_STATUS)){
+					properties.remove(Axis2CoreUIMessages.PROPERTY_KEY_STATUS);
+				}
+			}
+			Axis2CoreUtils.writePropertyToFile(statusPropertyFile, 
+											   Axis2CoreUIMessages.PROPERTY_KEY_STATUS, 
+											   runtimeStatus);
+		} catch (FileNotFoundException e) {
+			updateStatusError(); 
+		} catch (IOException e) {
+			updateStatusError();
+		}
+		
+		return status;
+	}
+
+	private static void updateStatusError(){
+			status = new Status( IStatus.ERROR, 
+					"id", 
+					0, 
+					Axis2CoreUIMessages.ERROR_INVALID_AXIS2_SERVER_LOCATION, 
+					null ); 
+		}
+		
+	}
diff --git a/bundles/org.eclipse.jst.ws.axis2.core/src/org/eclipse/jst/ws/axis2/facet/commands/Axis2WebservicesServerCommand.java b/bundles/org.eclipse.jst.ws.axis2.core/src/org/eclipse/jst/ws/axis2/facet/commands/Axis2WebservicesServerCommand.java
new file mode 100644
index 0000000..e9b5f92
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.core/src/org/eclipse/jst/ws/axis2/facet/commands/Axis2WebservicesServerCommand.java
@@ -0,0 +1,65 @@
+/*******************************************************************************
+ * Copyright (c) 2007 WSO2 Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * WSO2 Inc. - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20070213  168766 sandakith@wso2.com - Lahiru Sandakith, Initial code to introduse the Axis2 
+ * 										  facet to the framework for 168766
+ *******************************************************************************/
+package org.eclipse.jst.ws.axis2.facet.commands;
+
+import java.io.File;
+
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jst.ws.axis2.core.plugin.messages.Axis2CoreUIMessages;
+import org.eclipse.jst.ws.axis2.core.utils.FacetContainerUtils;
+import org.eclipse.jst.ws.axis2.core.utils.FileUtils;
+import org.eclipse.jst.ws.axis2.facet.utils.Axis2RuntimeUtils;
+import org.eclipse.jst.ws.axis2.facet.utils.ContentCopyUtils;
+import org.eclipse.wst.common.frameworks.datamodel.AbstractDataModelOperation;
+
+public class Axis2WebservicesServerCommand extends
+AbstractDataModelOperation {
+
+	String project;
+	public Axis2WebservicesServerCommand(String project){
+		this.project = project;
+	}
+
+	public IStatus execute(IProgressMonitor monitor, IAdaptable info)
+	throws ExecutionException {
+		return Status.OK_STATUS;
+	}
+	
+	public IStatus exexuteOverrride(IProgressMonitor monitor) throws ExecutionException {
+		//Copy the axis2 libs in to this client project
+		IStatus status = Status.OK_STATUS;
+		
+		ContentCopyUtils contentCopyUtils = new ContentCopyUtils();
+				String runtimeLocation = Axis2RuntimeUtils.copyAxis2War(
+															monitor,
+															Axis2CoreUIMessages.PROPERTY_KEY_PATH);
+				status = contentCopyUtils.copyDirectoryRecursivelyIntoWorkspace(
+						runtimeLocation, 
+						FacetContainerUtils.pathToWebProjectContainer(project), 
+						monitor 
+					);
+				
+				//clean up tempory files
+				File tempFacetDirectory = new File(runtimeLocation);
+				if (tempFacetDirectory.exists()) {
+					FileUtils.deleteDir(tempFacetDirectory);
+				}
+		return status;
+	}
+}
diff --git a/bundles/org.eclipse.jst.ws.axis2.core/src/org/eclipse/jst/ws/axis2/facet/deligate/Axis2CoreFacetInstallDelegate.java b/bundles/org.eclipse.jst.ws.axis2.core/src/org/eclipse/jst/ws/axis2/facet/deligate/Axis2CoreFacetInstallDelegate.java
new file mode 100644
index 0000000..4da7d38
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.core/src/org/eclipse/jst/ws/axis2/facet/deligate/Axis2CoreFacetInstallDelegate.java
@@ -0,0 +1,58 @@
+/*******************************************************************************
+ * Copyright (c) 2007 WSO2 Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * WSO2 Inc. - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20070213  168766 sandakith@wso2.com - Lahiru Sandakith, Initial code to introduse the Axis2 
+ * 										  facet to the framework for 168766
+ *******************************************************************************/
+package org.eclipse.jst.ws.axis2.facet.deligate;
+
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.resources.IProject;
+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.ws.axis2.core.plugin.messages.Axis2CoreUIMessages;
+import org.eclipse.jst.ws.axis2.core.utils.RuntimePropertyUtils;
+import org.eclipse.jst.ws.axis2.facet.commands.Axis2WebservicesServerCommand;
+import org.eclipse.wst.common.project.facet.core.IDelegate;
+import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
+
+public class Axis2CoreFacetInstallDelegate implements IDelegate {
+	
+	private IStatus status;
+	
+	public void execute(IProject project, IProjectFacetVersion arg1, Object arg2,
+			IProgressMonitor monitor) throws CoreException {
+			monitor.beginTask(Axis2CoreUIMessages.PROGRESS_INSTALL_AXIS2_RUNTIME, 2 );
+	        try {
+	        	Axis2WebservicesServerCommand command = new Axis2WebservicesServerCommand(
+	        													project.toString()
+	        												); 
+	        	status = command.exexuteOverrride(monitor);
+	        	if (status.getCode() == Status.OK_STATUS.getCode() ){
+	        		RuntimePropertyUtils.writeServerStausToPropertiesFile(
+	        								Axis2CoreUIMessages.SERVER_STATUS_PASS);
+	        	}else{
+	        		RuntimePropertyUtils.writeServerStausToPropertiesFile(
+							Axis2CoreUIMessages.SERVER_STATUS_FAIL);
+	        	}
+	            monitor.worked( 1 );
+	            
+	        } catch (ExecutionException e) {
+				e.printStackTrace();
+			}
+	        finally {
+	            monitor.done();
+	        }
+	}
+
+}
diff --git a/bundles/org.eclipse.jst.ws.axis2.core/src/org/eclipse/jst/ws/axis2/facet/deligate/Axis2CoreFacetUnInstallDelegate.java b/bundles/org.eclipse.jst.ws.axis2.core/src/org/eclipse/jst/ws/axis2/facet/deligate/Axis2CoreFacetUnInstallDelegate.java
new file mode 100644
index 0000000..114407d
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.core/src/org/eclipse/jst/ws/axis2/facet/deligate/Axis2CoreFacetUnInstallDelegate.java
@@ -0,0 +1,50 @@
+/*******************************************************************************
+ * Copyright (c) 2007 WSO2 Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * WSO2 Inc. - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20070213  168766 sandakith@wso2.com - Lahiru Sandakith, Initial code to introduse the Axis2 
+ * 										  facet to the framework for 168766
+ *******************************************************************************/
+package org.eclipse.jst.ws.axis2.facet.deligate;
+
+import java.io.File;
+
+import org.eclipse.core.resources.IProject;
+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.ws.axis2.core.plugin.messages.Axis2CoreUIMessages;
+import org.eclipse.jst.ws.axis2.core.utils.FacetContainerUtils;
+import org.eclipse.jst.ws.axis2.core.utils.FileUtils;
+import org.eclipse.wst.common.project.facet.core.IDelegate;
+import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
+
+public class Axis2CoreFacetUnInstallDelegate implements IDelegate {
+	
+	private IStatus status;
+	
+	public void execute(IProject project, IProjectFacetVersion arg1, Object arg2,
+			IProgressMonitor monitor) throws CoreException {
+		monitor.beginTask(Axis2CoreUIMessages.PROGRESS_UNINSTALL_AXIS2_RUNTIME, 2 );
+			File webContainerDir = new File(FacetContainerUtils.pathToWebProjectContainer(
+																project.toString()));
+			if (webContainerDir.isDirectory()) {
+				FileUtils.deleteDirectories(webContainerDir);
+			}
+			// TODO rollback the dynamic web project to the previous state.
+	        status = Status.OK_STATUS;
+			monitor.worked( 1 );
+	}
+	
+	public IStatus getStatus(){
+		return status;
+	}
+}
diff --git a/bundles/org.eclipse.jst.ws.axis2.core/src/org/eclipse/jst/ws/axis2/facet/deligate/Axis2ExtFacetInstallDelegate.java b/bundles/org.eclipse.jst.ws.axis2.core/src/org/eclipse/jst/ws/axis2/facet/deligate/Axis2ExtFacetInstallDelegate.java
new file mode 100644
index 0000000..5d7f5cb
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.core/src/org/eclipse/jst/ws/axis2/facet/deligate/Axis2ExtFacetInstallDelegate.java
@@ -0,0 +1,30 @@
+/*******************************************************************************
+ * Copyright (c) 2007 WSO2 Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * WSO2 Inc. - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20070213  168766 sandakith@wso2.com - Lahiru Sandakith, Initial code to introduse the Axis2 
+ * 										  facet to the framework for 168766
+ *******************************************************************************/
+package org.eclipse.jst.ws.axis2.facet.deligate;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.wst.common.project.facet.core.IDelegate;
+import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
+
+public class Axis2ExtFacetInstallDelegate implements IDelegate {
+
+	public void execute(IProject arg0, IProjectFacetVersion arg1, Object arg2,
+			IProgressMonitor arg3) throws CoreException {
+			//TODO This will include the more requirements that needed to be automated
+			//	   when we cover the other RFE s in future.
+	}
+}
diff --git a/bundles/org.eclipse.jst.ws.axis2.core/src/org/eclipse/jst/ws/axis2/facet/deligate/Axis2ExtFacetUnInstallDelegate.java b/bundles/org.eclipse.jst.ws.axis2.core/src/org/eclipse/jst/ws/axis2/facet/deligate/Axis2ExtFacetUnInstallDelegate.java
new file mode 100644
index 0000000..edc71cf
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.core/src/org/eclipse/jst/ws/axis2/facet/deligate/Axis2ExtFacetUnInstallDelegate.java
@@ -0,0 +1,30 @@
+/*******************************************************************************
+ * Copyright (c) 2007 WSO2 Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * WSO2 Inc. - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20070213  168766 sandakith@wso2.com - Lahiru Sandakith, Initial code to introduse the Axis2 
+ * 										  facet to the framework for 168766
+ *******************************************************************************/
+package org.eclipse.jst.ws.axis2.facet.deligate;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.wst.common.project.facet.core.IDelegate;
+import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
+
+public class Axis2ExtFacetUnInstallDelegate implements IDelegate {
+
+	public void execute(IProject arg0, IProjectFacetVersion arg1, Object arg2,
+			IProgressMonitor arg3) throws CoreException {
+			//TODO This will include the more requirements that needed to be automated
+			//	   when we cover the other RFE s in future.
+	}
+}
diff --git a/bundles/org.eclipse.jst.ws.axis2.core/src/org/eclipse/jst/ws/axis2/facet/messages/Axis2FacetUI.properties b/bundles/org.eclipse.jst.ws.axis2.core/src/org/eclipse/jst/ws/axis2/facet/messages/Axis2FacetUI.properties
new file mode 100644
index 0000000..1cb3d0c
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.core/src/org/eclipse/jst/ws/axis2/facet/messages/Axis2FacetUI.properties
@@ -0,0 +1,17 @@
+###############################################################################
+# Copyright (c) 2007 WSO2 Inc. and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+# WSO2 Inc. - initial API and implementation
+# yyyymmdd bug      Email and other contact information
+# -------- -------- -----------------------------------------------------------
+# 20070214   168762 sandakith@wso2.com - Lahiru Sandakith, Initial code to introduse 
+# 										  the Axis2 facet to the framework for 168762
+###############################################################################
+
+
+WEB_INF_LIB=WEB-INF/lib
\ No newline at end of file
diff --git a/bundles/org.eclipse.jst.ws.axis2.core/src/org/eclipse/jst/ws/axis2/facet/messages/Axis2FacetUIMessages.java b/bundles/org.eclipse.jst.ws.axis2.core/src/org/eclipse/jst/ws/axis2/facet/messages/Axis2FacetUIMessages.java
new file mode 100644
index 0000000..439d9b1
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.core/src/org/eclipse/jst/ws/axis2/facet/messages/Axis2FacetUIMessages.java
@@ -0,0 +1,32 @@
+/*******************************************************************************
+ * Copyright (c) 2007 WSO2 Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * WSO2 Inc. - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20070213  168766 sandakith@wso2.com - Lahiru Sandakith, Initial code to introduse the Axis2 
+ * 										  facet to the framework for 168766
+ *******************************************************************************/
+package org.eclipse.jst.ws.axis2.facet.messages;
+
+import org.eclipse.osgi.util.NLS;
+
+public final class Axis2FacetUIMessages extends NLS {
+
+	private static final String BUNDLE_NAME = "org.eclipse.jst.ws.axis2.facet.messages.Axis2FacetUI";//$NON-NLS-1$
+
+	private Axis2FacetUIMessages() {
+		// Do not instantiate
+	}
+
+	public static String WEB_INF_LIB;
+	
+	static {
+		NLS.initializeMessages(BUNDLE_NAME, Axis2FacetUIMessages.class);
+	}
+}
diff --git a/bundles/org.eclipse.jst.ws.axis2.core/src/org/eclipse/jst/ws/axis2/facet/model/FacetModel.java b/bundles/org.eclipse.jst.ws.axis2.core/src/org/eclipse/jst/ws/axis2/facet/model/FacetModel.java
new file mode 100644
index 0000000..ba0d68e
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.core/src/org/eclipse/jst/ws/axis2/facet/model/FacetModel.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2007 WSO2 Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * WSO2 Inc. - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20070222  168766 sandakith@wso2.com - Lahiru Sandakith, Initial code to introduse the Axis2 
+ * 										  facet to the framework for 168766
+ *******************************************************************************/
+package org.eclipse.jst.ws.axis2.facet.model;
+
+public class FacetModel {
+	
+	private static String webFacetConinerDir;
+
+	public static String getWebFacetConinerDir() {
+		return webFacetConinerDir;
+	}
+
+	public static void setWebFacetConinerDir(String inputWebFacetConinerDir) {
+		webFacetConinerDir = inputWebFacetConinerDir;
+	}
+
+}
diff --git a/bundles/org.eclipse.jst.ws.axis2.core/src/org/eclipse/jst/ws/axis2/facet/plugin/Axis2FacetPlugin.java b/bundles/org.eclipse.jst.ws.axis2.core/src/org/eclipse/jst/ws/axis2/facet/plugin/Axis2FacetPlugin.java
new file mode 100644
index 0000000..c95e133
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.core/src/org/eclipse/jst/ws/axis2/facet/plugin/Axis2FacetPlugin.java
@@ -0,0 +1,87 @@
+/*******************************************************************************
+ * Copyright (c) 2007 WSO2 Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * WSO2 Inc. - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20070213  168766 sandakith@wso2.com - Lahiru Sandakith, Initial code to introduse the Axis2 
+ * 										  facet to the framework for 168766
+ *******************************************************************************/
+package org.eclipse.jst.ws.axis2.facet.plugin;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Axis2FacetPlugin extends AbstractUIPlugin {
+
+	// The plug-in ID
+	public static final String PLUGIN_ID = "org.apache.axis2.facet";
+
+	// The shared instance
+	private static Axis2FacetPlugin plugin;
+	
+	/**
+	 * The constructor
+	 */
+	public Axis2FacetPlugin() {
+		plugin = this;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+	 */
+	public void start(BundleContext context) throws Exception {
+		super.start(context);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+	 */
+	public void stop(BundleContext context) throws Exception {
+		plugin = null;
+		super.stop(context);
+	}
+
+	public static Axis2FacetPlugin getDefault() {
+		return plugin;
+	}
+	
+	public static Axis2FacetPlugin getInstance() {
+		return plugin;
+	}
+	
+    public static void log( final Exception e ){
+        final String msg = e.getMessage() + "";
+        log( new Status( IStatus.ERROR, PLUGIN_ID, IStatus.OK, msg, e ) );
+    }
+
+    public static void log( final IStatus status ){
+        getInstance().getLog().log( status );
+    }
+
+    public static void log( final String msg ){
+        log( new Status( IStatus.ERROR, PLUGIN_ID, IStatus.OK, msg, null ) );
+    }
+
+    public static IStatus createErrorStatus( final String msg ){
+        return createErrorStatus( msg, null );
+    }
+
+    public static IStatus createErrorStatus( final String msg,
+                                             final Exception e ){
+        return new Status( IStatus.ERROR, PLUGIN_ID, 0, msg, e );
+    }
+
+}
diff --git a/bundles/org.eclipse.jst.ws.axis2.core/src/org/eclipse/jst/ws/axis2/facet/utils/Axis2RuntimeUtils.java b/bundles/org.eclipse.jst.ws.axis2.core/src/org/eclipse/jst/ws/axis2/facet/utils/Axis2RuntimeUtils.java
new file mode 100644
index 0000000..2b1024d
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.core/src/org/eclipse/jst/ws/axis2/facet/utils/Axis2RuntimeUtils.java
@@ -0,0 +1,183 @@
+/*******************************************************************************
+ * Copyright (c) 2007 WSO2 Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * WSO2 Inc. - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20070213  168766 sandakith@wso2.com - Lahiru Sandakith, Initial code to introduse the Axis2 
+ * 										  facet to the framework for 168766
+ *******************************************************************************/
+package org.eclipse.jst.ws.axis2.facet.utils;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.channels.FileChannel;
+import java.util.Enumeration;
+import java.util.Properties;
+import java.util.SortedSet;
+import java.util.TreeSet;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipFile;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jst.ws.axis2.core.plugin.data.ServerModel;
+import org.eclipse.jst.ws.axis2.core.plugin.messages.Axis2CoreUIMessages;
+import org.eclipse.jst.ws.axis2.core.utils.Axis2CoreUtils;
+import org.eclipse.jst.ws.axis2.core.utils.FileUtils;
+
+public class Axis2RuntimeUtils {
+	
+	public static final int ZIP=0, UNZIP = 1;
+	protected static int mode = UNZIP;
+	static ZipFile zipFile;
+	protected static byte[] b;
+	static SortedSet createdDirs;
+	static String outputPath;
+
+	public static String  copyAxis2War(IProgressMonitor monitor, String Axis2Home) {
+		String tempWarFile = null;
+		String tempWarLocation = null;
+		String  tempUnzipLocation = null;
+		try {
+			if (new File (Axis2CoreUtils.tempAxis2Directory()).isDirectory()) {
+				tempWarLocation = Axis2CoreUtils.addAnotherNodeToPath(
+															Axis2CoreUtils.tempAxis2Directory(),
+															Axis2CoreUIMessages.DIR_TEMPWAR);
+			File tempWarLocationFile= new File(tempWarLocation);
+			if (tempWarLocationFile.exists()) {
+				FileUtils.deleteDirectories(tempWarLocationFile);
+			}
+			tempWarLocationFile.mkdirs();
+			tempWarFile = Axis2CoreUtils.addAnotherNodeToPath(
+															tempWarLocation,	
+															Axis2CoreUIMessages.FILE_AXIS2_WAR);
+			new File(tempWarFile).createNewFile();
+			Properties properties = new Properties();
+			properties.load(new FileInputStream(Axis2CoreUtils.tempAxis2WebappFileLocation()));
+				if (properties.containsKey(Axis2CoreUIMessages.PROPERTY_KEY_PATH)){
+					String axis2WarLocation = Axis2CoreUtils.addAnotherNodeToPath(
+													(ServerModel.getAxis2ServerPath()!=null)?ServerModel.getAxis2ServerPath():		
+															properties.getProperty(Axis2CoreUIMessages.PROPERTY_KEY_PATH),
+													Axis2CoreUIMessages.DIR_DIST);
+					String axis2WarFile = Axis2CoreUtils.addAnotherNodeToPath(
+																axis2WarLocation,
+																Axis2CoreUIMessages.FILE_AXIS2_WAR);
+					
+					FileChannel srcChannel = new FileInputStream(axis2WarFile).getChannel();
+					FileChannel dstChannel = new FileOutputStream(tempWarFile).getChannel();
+					// Copy file contents from source to destination
+					dstChannel.transferFrom(srcChannel, 0, srcChannel.size());
+					// Close the channels
+					srcChannel.close();
+					dstChannel.close();
+				
+				//unzip this into another foulder
+				tempUnzipLocation = FileUtils.addAnotherNodeToPath(tempWarLocation, Axis2CoreUIMessages.DIR_UNZIP);
+				File tempUnzipLocationFile= new File(tempUnzipLocation);
+				if (!tempUnzipLocationFile.exists()) {
+					tempUnzipLocationFile.mkdirs();
+				}
+				unzipAxis2War(tempWarFile,tempUnzipLocation );
+
+				}
+				
+			} else {
+				//Throws an error message
+			}
+		} catch (FileNotFoundException e) {
+			e.printStackTrace();	
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+
+		return tempUnzipLocation;
+	}
+	
+	
+	private static void unzipAxis2War(String fileName,String outputPath){
+	      b = new byte[8092];
+	      setOutputPath(outputPath);
+	      if (fileName.endsWith(".war") )
+	        unZip(fileName);
+	      else
+	    	  throw new IllegalStateException("Wrong file type" + fileName);
+	}
+
+	/** For a given Zip file, process each entry. */
+	public static void unZip(String fileName) {
+	
+	  createdDirs = new TreeSet();
+	  try {
+	    zipFile = new ZipFile(fileName);
+	    Enumeration all = zipFile.entries();
+	    while (all.hasMoreElements()) {
+	      unzipFile((ZipEntry) all.nextElement());
+	    }
+	  } catch (IOException e) {
+	    e.printStackTrace();
+	  }
+	}
+
+	
+	protected static void unzipFile(ZipEntry e) throws IOException {
+
+	  boolean warnedMkDir = false;
+	    String zipName = e.getName();
+	    switch (mode) {
+	    case UNZIP:
+	      if (zipName.startsWith("/")) {
+	        if (!warnedMkDir)
+	        warnedMkDir = true;
+	        zipName = zipName.substring(1);
+	      }
+	      if (zipName.endsWith("/")) {
+	        return;
+	      }
+	      int ix = zipName.lastIndexOf('/');
+	      if (ix > 0) {
+	        String dirName = zipName.substring(0, ix);
+	        if (!createdDirs.contains(dirName)) {
+	          File d = new File(getOutputPath()+File.separator+dirName);
+	          if (!(d.exists() && d.isDirectory())) {
+	            if (!d.mkdirs()) {
+	              throw new IllegalStateException("Warning: unable to mkdir " + dirName);
+	            }
+	            createdDirs.add(dirName);
+	          }
+	        }
+	      }
+          FileOutputStream os = new FileOutputStream(getOutputPath()+File.separator+zipName);
+	      InputStream is = zipFile.getInputStream(e);
+	      int n = 0;
+	      while ((n = is.read(b)) > 0)
+	        os.write(b, 0, n);
+	      is.close();
+	      os.close();
+	      break;
+	    default:
+	      throw new IllegalStateException("mode value (" + mode + ") bad");
+	    }
+	  }
+
+	
+
+	public static String getOutputPath() {
+		return outputPath;
+	}
+
+
+	public static void setOutputPath(String outputPath) {
+		Axis2RuntimeUtils.outputPath = outputPath;
+	}
+
+		    
+}
diff --git a/bundles/org.eclipse.jst.ws.axis2.core/src/org/eclipse/jst/ws/axis2/facet/utils/ContentCopyUtils.java b/bundles/org.eclipse.jst.ws.axis2.core/src/org/eclipse/jst/ws/axis2/facet/utils/ContentCopyUtils.java
new file mode 100644
index 0000000..03993d0
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.core/src/org/eclipse/jst/ws/axis2/facet/utils/ContentCopyUtils.java
@@ -0,0 +1,329 @@
+/*******************************************************************************
+ * Copyright (c) 2007 IBM Corporation, WSO2 Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ * WSO2 Inc. - initial extended API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20070213  168766 sandakith@wso2.com - Lahiru Sandakith, Initial code to introduse the Axis2 
+ * 										  facet to the framework for 168766
+ *******************************************************************************/
+package org.eclipse.jst.ws.axis2.facet.utils;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IWorkspace;
+import org.eclipse.core.resources.IWorkspaceRoot;
+import org.eclipse.core.resources.ResourcesPlugin;
+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.Path;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jst.ws.axis2.core.plugin.messages.Axis2CoreUIMessages;
+import org.eclipse.jst.ws.internal.plugin.WebServicePlugin;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.wst.command.internal.env.core.common.StatusUtils;
+import org.eclipse.wst.command.internal.env.core.context.ResourceContext;
+
+public class ContentCopyUtils {
+
+	private static IWorkspaceRoot root_ = null;
+	private static IWorkspace workspace_ = null;
+	private List fileAndDirectoriesList = new ArrayList();
+	FileInputStream finStream = null;		
+
+	/**
+	 * This method will copy the source directory into the eclipse workspace according to the Eclipse Framework API
+	 * @param sourceDir
+	 * @param destinationDir
+	 * @param monitor
+	 * @param statusHandler
+	 * @return
+	 */
+	public IStatus copyDirectoryRecursivelyIntoWorkspace(String sourceDir, String destinationDir,IProgressMonitor monitor) {
+		IStatus status = Status.OK_STATUS;
+		fileAndDirectoriesList.clear();
+		File axis2WebappFolder = new File(sourceDir);
+		visitAllDirsAndFiles(axis2WebappFolder);
+		List deployFiles = new ArrayList();
+		deployFiles= fileAndDirectoriesList;
+
+		try {
+
+			//Import the axis2 dependency plugin according to the Resources API of eclipse 
+			ResourceContext context = WebServicePlugin.getInstance().getResourceContext();	
+
+			IPath outputPath = new Path (destinationDir);
+
+			String fileName;
+			IPath targetPath=null;
+			boolean isDirectory = false;
+
+			String deployFile;
+			Iterator iterator;
+
+			String tempOutputDir = axis2WebappFolder.toString();
+			iterator = deployFiles.iterator();
+			while (iterator.hasNext()) {
+				deployFile = (String) iterator.next();
+				File source = new File(deployFile);
+				if (source.isDirectory()) {
+					isDirectory =true;
+				}else{
+					isDirectory=false;
+					finStream = new FileInputStream(source);
+				}
+
+				if (deployFile.startsWith(tempOutputDir)) {
+					fileName = deployFile.substring(tempOutputDir.length());
+					targetPath = outputPath.append(fileName).makeAbsolute();
+					if (isDirectory){
+						makeFolderPathAtLocation(context,  
+								targetPath,
+								monitor);
+					}else{
+						if (finStream != null) {
+							createFileAtLocation(context,  
+									targetPath,
+									finStream,
+									monitor);
+						}
+						finStream.close();
+					}
+				}
+			}
+		} catch (IOException e) {
+			status = StatusUtils.errorStatus(NLS.bind(Axis2CoreUIMessages.ERROR_INVALID_FILE_READ_WRITEL,new String[]{e.getLocalizedMessage()}), e);
+		} catch (CoreException e) {
+			status = StatusUtils.errorStatus(NLS.bind(Axis2CoreUIMessages.ERROR_INVALID_FILE_READ_WRITEL,new String[]{e.getLocalizedMessage()}), e);
+		}
+
+		return status;
+
+	}
+
+	//	Process all files and directories under dir
+	private void visitAllDirsAndFiles(File dir) {
+
+		fileAndDirectoriesList.add(dir.getAbsolutePath());
+
+		if (dir.isDirectory()) {
+			String[] children = dir.list();
+			for (int i=0; i<children.length; i++) {
+				visitAllDirsAndFiles(new File(dir, children[i]));
+			}
+		}
+	}
+	
+	
+	
+	private static IFolder makeFolder (
+		    ResourceContext  resourceContext,
+		    IContainer       parent,
+		    String           folderName,
+		    IProgressMonitor progressMonitor )
+		  
+		  throws CoreException
+		  {
+		    IResource child  = parent.findMember(folderName);
+		    if( child == null )
+		    {
+		      IFolder folder = parent.getFolder(new Path(folderName));
+		      folder.create(true,true,null);
+		      return folder;
+		    }
+		    else if( child.getType() == IResource.FOLDER )
+		    {
+		      return (IFolder)child;
+		    }
+		    else
+		    {
+		      throw new CoreException(
+		        new Status( IStatus.ERROR, 
+		                    "ResourceUtils",
+		                    0, 
+		                    NLS.bind("ERROR",//EnvironmentMessages.MSG_ERROR_RESOURCE_NOT_FOLDER,
+							                 new Object[]{ parent.getFullPath().append(folderName).toString() }),
+					null ) );
+		    }
+		  }
+
+	
+	public static IContainer makeFolderPathAtLocation (
+			   ResourceContext  resourceContext,
+			   IContainer       resource,
+			   IProgressMonitor progressMonitor )
+			 
+			   throws CoreException
+			   {
+				 if (resource.exists())
+				 {
+					 if (resource instanceof IContainer)
+					 {
+						 return (IContainer) resource;
+					 }
+					 else
+					 {
+						 throw new CoreException(
+								 new Status( IStatus.ERROR, 
+										 "ResourceUtils",
+										 0, 
+										 NLS.bind("ERROR",//EnvironmentMessages.MSG_ERROR_RESOURCE_NOT_FOLDER,
+												 new Object[]{ resource.getFullPath().toString() }),
+												 null ) );
+					 }
+				 }
+				 else
+				 {
+					 IContainer parent = makeFolderPathAtLocation(resourceContext, resource.getParent(), progressMonitor );
+					 String folderName = resource.getName();
+					 
+					 return makeFolder(resourceContext, parent, folderName, progressMonitor  );
+				 }
+			 }
+	
+	
+	 /**
+	  * Creates a path of folders.
+	  * Do not call with an absolutePath of less than one segment.
+	  * @param resourceContext the resource context for making folders.
+	  * @param absolutePath the path of folders that will be created.
+	  * @param progressMonitor the progress monitor to be used.
+	  * @param statusHandler the status handler.
+	  * @return returns the IContainer of the created folder.
+	  */
+	 public static IContainer makeFolderPathAtLocation (
+	   ResourceContext  resourceContext,
+	   IPath            absolutePath,
+	   IProgressMonitor progressMonitor )
+	 
+	   throws CoreException
+	 {
+	 	return makeFolderPathAtLocation(resourceContext,
+	 		getWorkspaceRoot().getContainerForLocation(absolutePath),
+	 		progressMonitor);
+	 }
+	 
+	 
+	 public static IWorkspaceRoot getWorkspaceRoot ()
+	  {
+	    if (root_ == null)
+	    {
+	      root_ = ResourcesPlugin.getWorkspace().getRoot();
+	    }
+	    return root_;
+	  }
+	
+	  public static IFile createFileAtLocation (
+			     ResourceContext resourceContext,
+			     IPath           absolutePath,
+			     InputStream     inputStream,
+			     IProgressMonitor progressMonitor )
+
+			     throws CoreException 
+			   {    
+			     if (!absolutePath.isAbsolute())
+			     {
+			       throw new CoreException(new Status(IStatus.ERROR, "ResourceUtils",0,NLS.bind("ERROR",//EnvironmentMessages.MSG_ERROR_PATH_NOT_ABSOLUTE,
+			    		   new Object[] {absolutePath.toString()}),null));
+			     }
+			     if (absolutePath.segmentCount() < 1)
+			     {
+			       throw new CoreException(new Status(IStatus.ERROR,"ResourceUtils",0,NLS.bind("ERROR",//EnvironmentMessages.MSG_ERROR_PATH_EMPTY,
+			    		   new Object[] {absolutePath.toString()}),null));
+			     }
+			     if (absolutePath.segmentCount() < 2)
+			     {
+			       throw new CoreException(new Status(IStatus.ERROR,"ResourceUtils",0,NLS.bind("ERROR",//EnvironmentMessages.MSG_ERROR_PATH_NOT_FOLDER,
+			    		   new Object[] {absolutePath.toString()}),null));
+			     }
+			     IContainer parent   = makeFolderPathAtLocation(resourceContext, absolutePath.removeLastSegments(1), progressMonitor);
+			     String     fileName = absolutePath.lastSegment();
+			     
+			     return makeFile(resourceContext, parent, fileName, inputStream, progressMonitor);
+			   }
+	
+	
+	  private static IFile makeFile (
+			    ResourceContext  resourceContext,
+			    IContainer       parent,
+			    String           fileName,
+			    InputStream      inputStream,
+			    IProgressMonitor progressMonitor )
+			 
+			    throws CoreException
+			  {
+			    IResource child  = parent.findMember(fileName);
+			    
+			    if( child != null )
+			    {
+			      if( child.getType() == IResource.FILE )
+			      {
+			        //We have permission to overwrite so check if file is read-only
+			        if( child.getResourceAttributes().isReadOnly() )
+			        {
+			          IFile[] files = new IFile[1];
+			          files[0] = (IFile)child;
+			        }
+
+			        //Change the contents of the existing file.
+			        IFile file = parent.getFile( new Path(fileName) );
+			        file.setContents( inputStream, true, true, null );
+			        
+			        return file;
+			      
+			      }
+			      else
+			      {
+			        throw new CoreException( 
+			          new Status( IStatus.ERROR,
+			                      "ResourceUtils",
+			                      0, 
+			                      NLS.bind("ERROR",//EnvironmentMessages.MSG_ERROR_RESOURCE_NOT_FILE,
+							                       new Object[] {parent.getFullPath().append(fileName)}),
+								  null ) );
+			      }
+			    }
+			    else
+			    {
+			      //Create a new file.
+			      IFile file = parent.getFile( new Path(fileName) );
+			      file.create( inputStream, true, null);
+			      
+			      return file;
+			    }
+			  }
+	  
+	  public static IWorkspace getWorkspace ()
+	  {
+	    if (workspace_ == null)
+	    {
+	      if (root_ == null)
+	      {
+	        root_ = ResourcesPlugin.getWorkspace().getRoot();
+	      }
+	      
+	      workspace_ = root_.getWorkspace();
+	    }
+	    
+	    return workspace_;
+	  }
+	  
+}
diff --git a/bundles/org.eclipse.jst.ws.axis2.creation.core/.classpath b/bundles/org.eclipse.jst.ws.axis2.creation.core/.classpath
new file mode 100644
index 0000000..304e861
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.creation.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/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/bundles/org.eclipse.jst.ws.axis2.creation.core/.project b/bundles/org.eclipse.jst.ws.axis2.creation.core/.project
new file mode 100644
index 0000000..b1c0d65
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.creation.core/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.jst.ws.axis2.creation.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/bundles/org.eclipse.jst.ws.axis2.creation.core/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.jst.ws.axis2.creation.core/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..499f7c8
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.creation.core/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,62 @@
+#Thu Feb 22 14:28:31 LKT 2007
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
+org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
+org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
+org.eclipse.jdt.core.compiler.problem.nullReference=ignore
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.5
diff --git a/bundles/org.eclipse.jst.ws.axis2.creation.core/.settings/org.eclipse.jdt.ui.prefs b/bundles/org.eclipse.jst.ws.axis2.creation.core/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..8322bb7
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.creation.core/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,4 @@
+#Wed Feb 21 10:49:06 LKT 2007
+eclipse.preferences.version=1
+internal.default.compliance=default
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8"?>\n<templates/>
diff --git a/bundles/org.eclipse.jst.ws.axis2.creation.core/META-INF/MANIFEST.MF b/bundles/org.eclipse.jst.ws.axis2.creation.core/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..3d5e7e7
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.creation.core/META-INF/MANIFEST.MF
@@ -0,0 +1,29 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Core Plug-in
+Bundle-SymbolicName: org.eclipse.jst.ws.axis2.creation.core
+Bundle-Version: 1.0.0
+Bundle-Activator: org.eclipse.jst.ws.axis2.creation.core.plugin.WebServiceAxis2CreationCorePlugin
+Bundle-Localization: plugin
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.core.resources,
+ org.eclipse.wst.command.env,
+ org.eclipse.wst.common.frameworks,
+ org.eclipse.wst.ws,
+ org.eclipse.wst.common.frameworks.ui,
+ org.eclipse.wst.command.env.core,
+ org.eclipse.wst.command.env.ui,
+ org.eclipse.wst.command.env.infopop,
+ org.eclipse.core.commands,
+ org.eclipse.wst.common.environment,
+ org.eclipse.jst.ws,
+ org.eclipse.jdt.core,
+ org.eclipse.jst.ws.axis2.consumption.core,
+ org.eclipse.jst.ws.axis2.core,
+ org.apache.ant
+Eclipse-LazyStart: true
+Export-Package: org.eclipse.jst.ws.axis2.creation.core.command,
+ org.eclipse.jst.ws.axis2.creation.core.messages,
+ org.eclipse.jst.ws.axis2.creation.core.plugin,
+ org.eclipse.jst.ws.axis2.creation.core.utils
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
diff --git a/bundles/org.eclipse.jst.ws.axis2.creation.core/build.properties b/bundles/org.eclipse.jst.ws.axis2.creation.core/build.properties
new file mode 100644
index 0000000..e9863e2
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.creation.core/build.properties
@@ -0,0 +1,5 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml
diff --git a/bundles/org.eclipse.jst.ws.axis2.creation.core/data/DataModel.java b/bundles/org.eclipse.jst.ws.axis2.creation.core/data/DataModel.java
new file mode 100644
index 0000000..e5c5657
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.creation.core/data/DataModel.java
@@ -0,0 +1,182 @@
+/*******************************************************************************
+ * Copyright (c) 2007 WSO2 Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * WSO2 Inc. - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20070110   168762 sandakith@wso2.com - Lahiru Sandakith, Initial code to introduse the Axis2 
+ * 										  runtime to the framework for 168762
+ *******************************************************************************/
+package org.eclipse.jst.ws.internal.axis2.creation.ui.data;
+
+public class DataModel{
+	
+	private String  webProjectName;
+	
+	//Client Side
+	private String serviceClass;
+	private boolean generateServicesXML;
+	private boolean servicesXML;
+	private boolean generateAAR;
+	private String  pathToServicesXML;
+	private String  pathToWebServicesTempDir;
+	
+	//Server Side 
+	private String  wsdlURI;
+	private boolean generateServerSideInterface;
+    private boolean serverXMLCheck;
+	private boolean generateAllCheck;
+	private boolean testCaseCheck;
+	private String databindingType;
+	private String portName;
+	private String serviceName;
+	private String packageText;
+	private String namespaseToPackageMapping;
+
+
+	public boolean isGenerateServicesXML()
+	{
+		return generateServicesXML;
+	}
+
+	public void setGenerateServicesXML(boolean generateServicesXML)
+	{
+		this.generateServicesXML = generateServicesXML;
+	}
+
+	public String getPathToServicesXML()
+	{
+		return pathToServicesXML;
+	}
+
+	public void setPathToServicesXML(String pathToServicesXML)
+	{
+		this.pathToServicesXML = pathToServicesXML;
+	}
+
+	public boolean isGenerateAAR() {
+		return generateAAR;
+	}
+
+	public void setGenerateAAR(boolean generateAAR) {
+		this.generateAAR = generateAAR;
+	}
+
+	public String getWebProjectName() {
+		return webProjectName;
+	}
+
+	public void setWebProjectName(String webProjectName) {
+		this.webProjectName = webProjectName;
+	}
+
+	public boolean isServicesXML() {
+		return servicesXML;
+	}
+
+	public void setServicesXML(boolean servicesXML) {
+		this.servicesXML = servicesXML;
+	}
+
+	public String getPathToWebServicesTempDir() {
+		return pathToWebServicesTempDir;
+	}
+
+	public void setPathToWebServicesTempDir(String pathToWebServicesTempDir) {
+		this.pathToWebServicesTempDir = pathToWebServicesTempDir;
+	}
+
+	public String getWsdlURI() {
+		return wsdlURI;
+	}
+
+	public void setWsdlURI(String wsdlURI) {
+		this.wsdlURI = wsdlURI;
+	}
+
+	public String getDatabindingType() {
+		return databindingType;
+	}
+
+	public void setDatabindingType(String databindingType) {
+		this.databindingType = databindingType;
+	}
+
+	public boolean isGenerateAllCheck() {
+		return generateAllCheck;
+	}
+
+	public void setGenerateAllCheck(boolean generateAllCheck) {
+		this.generateAllCheck = generateAllCheck;
+	}
+
+	public boolean isGenerateServerSideInterface() {
+		return generateServerSideInterface;
+	}
+
+	public void setGenerateServerSideInterface(boolean generateServerSideInterface) {
+		this.generateServerSideInterface = generateServerSideInterface;
+	}
+
+	public String getPortName() {
+		return portName;
+	}
+
+	public void setPortName(String portName) {
+		this.portName = portName;
+	}
+
+	public boolean isServerXMLCheck() {
+		return serverXMLCheck;
+	}
+
+	public void setServerXMLCheck(boolean serverXMLCheck) {
+		this.serverXMLCheck = serverXMLCheck;
+	}
+
+	public String getServiceName() {
+		return serviceName;
+	}
+
+	public void setServiceName(String serviceName) {
+		this.serviceName = serviceName;
+	}
+
+	public boolean isTestCaseCheck() {
+		return testCaseCheck;
+	}
+
+	public void setTestCaseCheck(boolean testCaseCheck) {
+		this.testCaseCheck = testCaseCheck;
+	}
+
+	public String getPackageText() {
+		return packageText;
+	}
+
+	public void setPackageText(String packageText) {
+		this.packageText = packageText;
+	}
+
+	public String getServiceClass() {
+		return serviceClass;
+	}
+
+	public void setServiceClass(String serviceClass) {
+		this.serviceClass = serviceClass;
+	}
+
+	public String getNamespaseToPackageMapping() {
+		return namespaseToPackageMapping;
+	}
+
+	public void setNamespaseToPackageMapping(String namespaseToPackageMapping) {
+		this.namespaseToPackageMapping = namespaseToPackageMapping;
+	}
+
+}
diff --git a/bundles/org.eclipse.jst.ws.axis2.creation.core/plugin.xml b/bundles/org.eclipse.jst.ws.axis2.creation.core/plugin.xml
new file mode 100644
index 0000000..1f01135
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.creation.core/plugin.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+<plugin>
+
+    
+</plugin>
\ No newline at end of file
diff --git a/bundles/org.eclipse.jst.ws.axis2.creation.core/src/org/eclipse/jst/ws/axis2/creation/core/command/Axis2BUCommand.java b/bundles/org.eclipse.jst.ws.axis2.creation.core/src/org/eclipse/jst/ws/axis2/creation/core/command/Axis2BUCommand.java
new file mode 100644
index 0000000..bd5ffe1
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.creation.core/src/org/eclipse/jst/ws/axis2/creation/core/command/Axis2BUCommand.java
@@ -0,0 +1,47 @@
+/*******************************************************************************
+ * Copyright (c) 2007 WSO2 Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * WSO2 Inc. - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20070110   168762 sandakith@wso2.com - Lahiru Sandakith, Initial code to introduse the Axis2 runtime to the framework for 168762
+ *******************************************************************************/
+package org.eclipse.jst.ws.axis2.creation.core.command;
+
+
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jst.ws.axis2.creation.core.data.DataModel;
+import org.eclipse.jst.ws.axis2.creation.core.messages.Axis2CreationUIMessages;
+import org.eclipse.wst.command.internal.env.core.common.StatusUtils;
+import org.eclipse.wst.common.frameworks.datamodel.AbstractDataModelOperation;
+
+
+public class Axis2BUCommand extends AbstractDataModelOperation 
+{
+  private DataModel model;
+  
+  public Axis2BUCommand( DataModel model )
+  {
+    this.model = model;  
+  }
+  
+  public IStatus execute( IProgressMonitor monitor, IAdaptable adaptable ) 
+  {
+    IStatus status ;  
+    // Check for the nessesary data are available for the scenario to begin
+    if (model.getServiceClass() == null){
+		status = StatusUtils.errorStatus(Axis2CreationUIMessages.ERROR_INVALID_SERVICE_CREATION);
+    }else {
+		status = Status.OK_STATUS; // Ok to proceed 
+	}
+    return status;      	
+  }
+}
diff --git a/bundles/org.eclipse.jst.ws.axis2.creation.core/src/org/eclipse/jst/ws/axis2/creation/core/command/Axis2BUServiceCreationCommand.java b/bundles/org.eclipse.jst.ws.axis2.creation.core/src/org/eclipse/jst/ws/axis2/creation/core/command/Axis2BUServiceCreationCommand.java
new file mode 100644
index 0000000..5dbf2ca
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.creation.core/src/org/eclipse/jst/ws/axis2/creation/core/command/Axis2BUServiceCreationCommand.java
@@ -0,0 +1,134 @@
+/*******************************************************************************
+ * Copyright (c) 2007 WSO2 Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * WSO2 Inc. - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20070110   168762 sandakith@wso2.com - Lahiru Sandakith, Initial code to introduse the Axis2 runtime to the framework for 168762
+ *******************************************************************************/
+package org.eclipse.jst.ws.axis2.creation.core.command;
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jst.ws.axis2.core.utils.FileUtils;
+import org.eclipse.jst.ws.axis2.creation.core.data.DataModel;
+import org.eclipse.jst.ws.axis2.creation.core.messages.Axis2CreationUIMessages;
+import org.eclipse.jst.ws.axis2.creation.core.utils.CommonUtils;
+import org.eclipse.jst.ws.axis2.creation.core.utils.ServiceXMLCreator;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.wst.command.internal.env.core.common.StatusUtils;
+import org.eclipse.wst.common.environment.IEnvironment;
+import org.eclipse.wst.common.frameworks.datamodel.AbstractDataModelOperation;
+import org.eclipse.wst.ws.internal.wsrt.IWebService;
+
+public class Axis2BUServiceCreationCommand extends
+		AbstractDataModelOperation {
+	
+	  	private DataModel model;
+		private IWebService ws;
+
+	  public Axis2BUServiceCreationCommand( DataModel model,IWebService ws, String project )
+	  {
+	    this.model = model;  
+	    this.ws=ws;
+	  }
+
+	public IStatus execute(IProgressMonitor monitor, IAdaptable info)
+			throws ExecutionException {
+		IStatus status = Status.OK_STATUS;  
+		IEnvironment environment = getEnvironment();
+		//The full Qulalified Service Class
+		String serviceClass = ws.getWebServiceInfo().getImplURL(); 
+		try {
+			
+//			String workspaceDirectory = ResourceUtils.getWorkspaceRoot().getLocation().toOSString();
+			String workspaceDirectory = ResourcesPlugin.getWorkspace().getRoot().getLocation().toOSString();
+			String currentDynamicWebProjectDir = FileUtils.addAnotherNodeToPath(workspaceDirectory, model.getWebProjectName());
+			String matadataDir = FileUtils.addAnotherNodeToPath(workspaceDirectory,Axis2CreationUIMessages.DIR_DOT_METADATA);
+		    String matadataPluginsDir = FileUtils.addAnotherNodeToPath(matadataDir,Axis2CreationUIMessages.DIR_DOT_PLUGINS);
+		    String matadataAxis2Dir = FileUtils.addAnotherNodeToPath(matadataPluginsDir, Axis2CreationUIMessages.AXIS2_PROJECT);
+		    String webservicesDir = FileUtils.addAnotherNodeToPath(matadataAxis2Dir,
+		    													   Axis2CreationUIMessages.DIR_WEBSERVICES);
+		    model.setPathToWebServicesTempDir(webservicesDir);
+		    
+			//Get the Service name from the class name
+		    String serviceName = CommonUtils.classNameFromQualifiedName(serviceClass); 
+		    //String servicePackage = CommonUtils.packageNameFromQualifiedName(serviceClass); 
+			
+			String servicesDirectory = FileUtils.addAnotherNodeToPath(webservicesDir, serviceName);
+			//String servicePackagePath = CommonUtils.packgeName2PathName(servicePackage); 
+			//String serviceClassImplDirectory = servicesDirectory + File.separator + servicePackagePath;
+			String serviceXMLDirectory = FileUtils.addAnotherNodeToPath(servicesDirectory, Axis2CreationUIMessages.DIR_META_INF);
+			
+			//Create the directories
+			//Create the Webservices stuff on the workspace .matadata directory  
+		    FileUtils.createDirectorys(servicesDirectory);
+		    FileUtils.createDirectorys(serviceXMLDirectory);		    
+		    
+		    //create the services.xml file
+		    File serviceXMLFile;
+            if (model.isGenerateServicesXML()){
+			    ServiceXMLCreator serviceXMLCreator = new ServiceXMLCreator(serviceName, serviceClass, null);
+			    serviceXMLFile = new File(serviceXMLDirectory + File.separator + Axis2CreationUIMessages.FILE_SERVICES_XML);
+			    FileWriter serviceXMLFileWriter;
+	
+				serviceXMLFileWriter = new FileWriter(serviceXMLFile, false);
+	            BufferedWriter writer = new BufferedWriter(serviceXMLFileWriter) ;
+	            writer.write(serviceXMLCreator.toString()) ;
+	            writer.close() ;
+            }else {
+            	String pathToServicesXML = model.getPathToServicesXML();
+            	if (pathToServicesXML == null){
+    				status = StatusUtils.errorStatus(Axis2CreationUIMessages.ERROR_INVALID_SERVICES_XML);
+    				environment.getStatusHandler().reportError(status); 
+            	}else{
+            		serviceXMLFile = new File(pathToServicesXML);
+            		File targetServicesXMLFile = new File(serviceXMLDirectory + File.separator + Axis2CreationUIMessages.FILE_SERVICES_XML);
+            		FileUtils.copy(serviceXMLFile, targetServicesXMLFile);
+            	}
+            	
+            }
+	        
+            // Copy the classes directory to the sevices directory
+			String defaultClassesSubDirectory = Axis2CreationUIMessages.DIR_BUILD + File.separator + Axis2CreationUIMessages.DIR_CLASSES;
+			//TODO copy only the relevent .classes to the aar
+			String classesDirectory = currentDynamicWebProjectDir + File.separator + defaultClassesSubDirectory;
+			
+			FileUtils.copyDirectory(new File(classesDirectory), new File(servicesDirectory));
+			
+//			//Create the .aar file 
+//			String aarDirString =  FileUtils.addAnotherNodeToPath(webservicesDir, Axis2CreationUIMessages.DIR_AAR);
+//			File aarDir = new File(aarDirString);
+//			FileUtils.createDirectorys(aarDirString);
+//			AARFileWriter aarFileWriter = new AARFileWriter();
+//			File serviseDir = new File(servicesDirectory);
+//			aarFileWriter.writeAARFile(aarDir, serviceName + Axis2CreationUIMessages.FILE_AAR, serviseDir);
+			
+			//Import all the stuff form the .matadata directory to inside the current web project
+			} catch (IOException e) {
+				status = StatusUtils.errorStatus(NLS.bind(Axis2CreationUIMessages.ERROR_INVALID_FILE_READ_WRITEL,new String[]{e.getLocalizedMessage()}), e);
+				environment.getStatusHandler().reportError(status); 
+			} catch (Exception e) {
+				status = StatusUtils.errorStatus(NLS.bind(Axis2CreationUIMessages.ERROR_INVALID_SERVICE_CREATION,new String[]{e.getLocalizedMessage()}), e);
+				environment.getStatusHandler().reportError(status); 
+			}
+		    
+		
+	    
+	    return status;
+	}
+}
diff --git a/bundles/org.eclipse.jst.ws.axis2.creation.core/src/org/eclipse/jst/ws/axis2/creation/core/command/Axis2BuildProjectCommand.java b/bundles/org.eclipse.jst.ws.axis2.creation.core/src/org/eclipse/jst/ws/axis2/creation/core/command/Axis2BuildProjectCommand.java
new file mode 100644
index 0000000..6b86541
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.creation.core/src/org/eclipse/jst/ws/axis2/creation/core/command/Axis2BuildProjectCommand.java
@@ -0,0 +1,101 @@
+/*******************************************************************************
+ * Copyright (c) 2007 WSO2 Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * WSO2 Inc. - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20070110   168762 sandakith@wso2.com - Lahiru Sandakith, Initial code to introduse the Axis2 runtime to the framework for 168762
+ *******************************************************************************/
+package org.eclipse.jst.ws.axis2.creation.core.command;
+
+//import org.apache.xerces.impl.validation.ValidationManager;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IncrementalProjectBuilder;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.OperationCanceledException;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.wst.common.frameworks.datamodel.AbstractDataModelOperation;
+
+public class Axis2BuildProjectCommand extends
+		AbstractDataModelOperation {
+	
+//	  private ValidationManager validationManager;
+	  private IProject project;
+	  private boolean forceBuild;
+
+	  /**
+	   * Default CTOR;
+	   */
+	  public Axis2BuildProjectCommand(){
+	  }
+	  
+	  public Axis2BuildProjectCommand(IProject project){
+		  this.project = project;
+	  }
+	  
+	  public Axis2BuildProjectCommand(IProject project, boolean forceBuild){
+		  this.project = project;
+		  this.forceBuild = forceBuild;
+	  }
+
+	  /**
+	   * Execute the command
+	   */
+	  public IStatus execute( IProgressMonitor monitor, IAdaptable adaptable )
+	  {
+	    try
+	    {
+	      if (forceBuild)
+	        project.build(IncrementalProjectBuilder.INCREMENTAL_BUILD, new NullProgressMonitor());
+//	      else if (validationManager == null)
+//	        project.build(IncrementalProjectBuilder.INCREMENTAL_BUILD, new NullProgressMonitor());
+//	      else if (validationManager.getWorkspaceAutoBuildPreference())
+//	        project.build(IncrementalProjectBuilder.INCREMENTAL_BUILD, new NullProgressMonitor());
+	    }
+	    catch (Exception e){
+	    }
+	    
+	    try{
+	      Platform.getJobManager().join(ResourcesPlugin.FAMILY_AUTO_BUILD, new NullProgressMonitor());   
+	    }
+	    catch (InterruptedException ie){
+	      // continue execution
+	    }
+	    catch (OperationCanceledException oce){
+	      // continue execution
+	    }
+	    
+	    return Status.OK_STATUS;
+	  }
+	  /**
+	   * @param forceBuild The forceBuild to set.
+	   */
+	  public void setForceBuild(boolean forceBuild) {
+	    this.forceBuild = forceBuild;
+	  }
+
+	  /**
+	   * @param project The project to set.
+	   */
+	  public void setProject(IProject project) {
+	    this.project = project;
+	  }
+
+//	  /**
+//	   * @param validationManager The validationManager to set.
+//	   */
+//	  public void setValidationManager(ValidationManager validationManager) {
+//	    this.validationManager = validationManager;
+//	  }
+
+}
diff --git a/bundles/org.eclipse.jst.ws.axis2.creation.core/src/org/eclipse/jst/ws/axis2/creation/core/command/Axis2ChengeBuildPathCommand.java b/bundles/org.eclipse.jst.ws.axis2.creation.core/src/org/eclipse/jst/ws/axis2/creation/core/command/Axis2ChengeBuildPathCommand.java
new file mode 100644
index 0000000..1fb540a
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.creation.core/src/org/eclipse/jst/ws/axis2/creation/core/command/Axis2ChengeBuildPathCommand.java
@@ -0,0 +1,62 @@
+/*******************************************************************************
+ * Copyright (c) 2007 WSO2 Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * WSO2 Inc. - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20070125  168762 sandakith@wso2.com - Lahiru Sandakith, Initial code to introduse the Axis2 
+ * 										  runtime to the framework for 168762
+ *******************************************************************************/
+package org.eclipse.jst.ws.axis2.creation.core.command;
+
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jdt.core.IClasspathEntry;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.wst.common.frameworks.datamodel.AbstractDataModelOperation;
+
+public class Axis2ChengeBuildPathCommand extends AbstractDataModelOperation {
+	
+	private IProject project;
+	private String srcDir;
+	private String outDir;
+	
+	public Axis2ChengeBuildPathCommand(IProject project, String srcDir, String outDir) {
+		this.project = project;
+		this.srcDir = srcDir;
+		this.outDir = outDir;
+	}
+
+	public IStatus execute(IProgressMonitor monitor, IAdaptable info)
+				   throws ExecutionException {
+		
+		IPath srcPath = new Path(srcDir);
+		IPath outPath = new Path(outDir);
+		
+		IStatus status = Status.OK_STATUS;
+		final IJavaProject jproj = JavaCore.create(project);
+        final IClasspathEntry[] cp = {JavaCore.newSourceEntry(srcPath)};
+
+        try {
+			jproj.setRawClasspath(cp, outPath, null);
+			jproj.save(null, true);
+		} catch (JavaModelException e) {
+			e.printStackTrace();
+		}
+		return status;
+	}
+
+}
diff --git a/bundles/org.eclipse.jst.ws.axis2.creation.core/src/org/eclipse/jst/ws/axis2/creation/core/command/Axis2CleanupCommand.java b/bundles/org.eclipse.jst.ws.axis2.creation.core/src/org/eclipse/jst/ws/axis2/creation/core/command/Axis2CleanupCommand.java
new file mode 100644
index 0000000..b4bb82c
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.creation.core/src/org/eclipse/jst/ws/axis2/creation/core/command/Axis2CleanupCommand.java
@@ -0,0 +1,37 @@
+/*******************************************************************************
+ * Copyright (c) 2007 WSO2 Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * WSO2 Inc. - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20070314   168762 sandakith@wso2.com - Lahiru Sandakith, Initial code to introduse 
+ * 										the Axis2 runtime to the framework for 168762
+ *******************************************************************************/
+package org.eclipse.jst.ws.axis2.creation.core.command;
+
+
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.wst.common.frameworks.datamodel.AbstractDataModelOperation;
+
+
+public class Axis2CleanupCommand extends AbstractDataModelOperation 
+{
+  
+  public Axis2CleanupCommand(){
+  }
+  
+  public IStatus execute( IProgressMonitor monitor, IAdaptable adaptable ) 
+  {
+    // Cleanup the reflection over head by increasing the priority to the garbage thread
+    System.gc();
+    return Status.OK_STATUS;      	
+  }
+}
diff --git a/bundles/org.eclipse.jst.ws.axis2.creation.core/src/org/eclipse/jst/ws/axis2/creation/core/command/Axis2DefaultingCommand.java b/bundles/org.eclipse.jst.ws.axis2.creation.core/src/org/eclipse/jst/ws/axis2/creation/core/command/Axis2DefaultingCommand.java
new file mode 100644
index 0000000..0b077f7
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.creation.core/src/org/eclipse/jst/ws/axis2/creation/core/command/Axis2DefaultingCommand.java
@@ -0,0 +1,96 @@
+/*******************************************************************************
+ * Copyright (c) 2007 WSO2 Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * WSO2 Inc. - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20070206   168762 sandakith@wso2.com - Lahiru Sandakith, Initial code to introduse the Axis2 
+ * 										  runtime to the framework for 168762
+ *******************************************************************************/
+package org.eclipse.jst.ws.axis2.creation.core.command;
+
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.util.Properties;
+
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jst.ws.axis2.consumption.core.utils.DefaultCodegenUtil;
+import org.eclipse.jst.ws.axis2.core.context.BUServiceContext;
+import org.eclipse.jst.ws.axis2.core.plugin.messages.Axis2CoreUIMessages;
+import org.eclipse.jst.ws.axis2.core.utils.Axis2CoreUtils;
+import org.eclipse.jst.ws.axis2.creation.core.data.DataModel;
+import org.eclipse.jst.ws.axis2.creation.core.messages.Axis2CreationUIMessages;
+import org.eclipse.jst.ws.axis2.creation.core.utils.CommonUtils;
+import org.eclipse.wst.command.internal.env.core.common.StatusUtils;
+import org.eclipse.wst.common.frameworks.datamodel.AbstractDataModelOperation;
+import org.eclipse.wst.ws.internal.wsrt.IWebService;
+import org.eclipse.wst.ws.internal.wsrt.WebServiceScenario;
+
+public class Axis2DefaultingCommand extends AbstractDataModelOperation 
+{
+	private DataModel model;
+	private IWebService ws;
+	private int scenario;
+	IStatus status;
+
+	public Axis2DefaultingCommand( DataModel model ,IWebService ws, int scenario)
+	{
+		this.model = model;  
+		this.ws=ws;
+		this.scenario=scenario;
+	}
+
+	public IStatus execute( IProgressMonitor monitor, IAdaptable adaptable ){
+		//Check wether the current dynamic Web Project is properly build to invoke web service
+		Properties properties = new Properties();
+		try {
+			properties.load(new FileInputStream(Axis2CoreUtils.tempRuntimeStatusFileLocation()));
+			if (properties.containsKey(Axis2CoreUIMessages.PROPERTY_KEY_STATUS)){
+				 status = Status.OK_STATUS;
+				 model.setServerStatus(true);
+			}else{
+				status = StatusUtils.errorStatus(Axis2CoreUIMessages.ERROR_SERVER_IS_NOT_SET);
+			}
+		} catch (FileNotFoundException e) {
+			status = StatusUtils.errorStatus(Axis2CoreUIMessages.ERROR_INVALID_FILE_READ_WRITEL+
+												Axis2CoreUIMessages.ERROR_SERVER_IS_NOT_SET);
+		} catch (IOException e) {
+			status = StatusUtils.errorStatus(Axis2CoreUIMessages.ERROR_INVALID_FILE_READ_WRITEL+
+												Axis2CoreUIMessages.ERROR_SERVER_IS_NOT_SET);
+		}
+		
+		if (scenario == WebServiceScenario.TOPDOWN) {
+			model.setWsdlURI(ws.getWebServiceInfo().getWsdlURL());
+			model.setDatabindingType(Axis2CreationUIMessages.DATA_BINDING_ADB);
+			DefaultCodegenUtil defaultCodegenUtil = new DefaultCodegenUtil(model);
+			defaultCodegenUtil.populateModelParamsFromWSDL();
+			model.setServicesXML(true);
+			model.setServerXMLCheck(true);
+		}else if (scenario == WebServiceScenario.BOTTOMUP) {
+			model.setServiceClass(ws.getWebServiceInfo().getImplURL());
+			//set the service name inside BUServiceContext for used by client if invoke together
+			BUServiceContext.getInstance().setServiceName(
+					CommonUtils.classNameFromQualifiedName(ws.getWebServiceInfo().getImplURL())
+					);
+			
+			model.setGenerateServicesXML(true);
+		}else{
+			//never come here
+		}
+		return status;      	
+	}
+
+	public DataModel getWebServiceDataModel()
+	{
+		return model;
+	}
+}
diff --git a/bundles/org.eclipse.jst.ws.axis2.creation.core/src/org/eclipse/jst/ws/axis2/creation/core/command/Axis2ServicesXMLValidationCommand.java b/bundles/org.eclipse.jst.ws.axis2.creation.core/src/org/eclipse/jst/ws/axis2/creation/core/command/Axis2ServicesXMLValidationCommand.java
new file mode 100644
index 0000000..974dcef
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.creation.core/src/org/eclipse/jst/ws/axis2/creation/core/command/Axis2ServicesXMLValidationCommand.java
@@ -0,0 +1,32 @@
+/*******************************************************************************
+ * Copyright (c) 2007 WSO2 Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * WSO2 Inc. - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20070110   168762 sandakith@wso2.com - Lahiru Sandakith, Initial code to introduse the Axis2 runtime to the framework for 168762
+ *******************************************************************************/
+package org.eclipse.jst.ws.axis2.creation.core.command;
+
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.wst.common.frameworks.datamodel.AbstractDataModelOperation;
+
+public class Axis2ServicesXMLValidationCommand extends
+		AbstractDataModelOperation {
+
+	public IStatus execute(IProgressMonitor monitor, IAdaptable info)
+			throws ExecutionException {
+		//Here write the code to validate the services.xml
+	    IStatus status = Status.OK_STATUS; 
+	    return status;
+	}
+}
diff --git a/bundles/org.eclipse.jst.ws.axis2.creation.core/src/org/eclipse/jst/ws/axis2/creation/core/command/Axis2SkelImplCommand.java b/bundles/org.eclipse.jst.ws.axis2.creation.core/src/org/eclipse/jst/ws/axis2/creation/core/command/Axis2SkelImplCommand.java
new file mode 100644
index 0000000..ed0c772
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.creation.core/src/org/eclipse/jst/ws/axis2/creation/core/command/Axis2SkelImplCommand.java
@@ -0,0 +1,91 @@
+/*******************************************************************************
+ * Copyright (c) 2007 WSO2 Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * WSO2 Inc. - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20070123   168762 sandakith@wso2.com - Lahiru Sandakith, Initial code to introduse the Axis2 
+ * 										  runtime to the framework for 168762
+ *******************************************************************************/
+package org.eclipse.jst.ws.axis2.creation.core.command;
+
+import java.net.MalformedURLException;
+
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jst.ws.axis2.core.utils.FileUtils;
+import org.eclipse.jst.ws.axis2.creation.core.data.DataModel;
+import org.eclipse.jst.ws.axis2.creation.core.messages.Axis2CreationUIMessages;
+import org.eclipse.jst.ws.axis2.creation.core.utils.CommonUtils;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.wst.command.internal.env.core.common.StatusUtils;
+import org.eclipse.wst.common.environment.IEnvironment;
+import org.eclipse.wst.common.frameworks.datamodel.AbstractDataModelOperation;
+import org.eclipse.wst.ws.internal.wsrt.WebServiceInfo;
+
+public class Axis2SkelImplCommand extends AbstractDataModelOperation {
+
+	private WebServiceInfo webServiceInfo;
+	private DataModel model;
+
+	public Axis2SkelImplCommand(WebServiceInfo webServiceInfo, DataModel model){
+		this.webServiceInfo = webServiceInfo;
+		this.model=model;
+	}
+
+	public IStatus execute(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
+		
+		IStatus status = Status.OK_STATUS;
+		IEnvironment environment = getEnvironment();
+
+		String workspaceDirectory = ResourcesPlugin.getWorkspace().getRoot().
+													getLocation().toOSString();
+		String currentDynamicWebProjectDir = FileUtils.addAnotherNodeToPath(
+													   workspaceDirectory, 
+													   model.getWebProjectName());
+		String projectSrcDir =  FileUtils.addAnotherNodeToPath(
+											currentDynamicWebProjectDir, 
+											Axis2CreationUIMessages.DIR_SRC);
+
+		String packagePath = CommonUtils.packgeName2PathName(model.getPackageText());
+		String packageDir = FileUtils.addAnotherNodeToPath(projectSrcDir, packagePath);
+		String serviceSkeletonImpl = FileUtils.addAnotherNodeToPath(packageDir, model.
+																	getServiceName());
+
+		String serviceSkeletonImplURL =  serviceSkeletonImpl + 
+										 Axis2CreationUIMessages.SKELETON_SUFFIX;
+		IPath serviceSkeletonImplURLPath = new Path(serviceSkeletonImplURL); 
+		try {
+			//webServiceInfo.setImplURL(serviceSkeletonImplURLPath.toFile().toURL().toString());
+			//String[] implURLArray = {serviceSkeletonImplURL};
+			//webServiceInfo.setImplURLs( implURLArray);
+			
+			String serviceSkeletonImplURLString = 
+				serviceSkeletonImplURLPath.toFile().toURL().toString();
+
+			webServiceInfo.setImplURL(serviceSkeletonImplURLString);
+			String[] implURLArray = {serviceSkeletonImplURLString};
+			webServiceInfo.setImplURLs( implURLArray);
+
+			
+		} catch (MalformedURLException e) {
+			status = StatusUtils.errorStatus(NLS.bind(Axis2CreationUIMessages.ERROR_INVALID_FILE_READ_WRITEL,new String[]{e.getLocalizedMessage()}), e);
+			environment.getStatusHandler().reportError(status); 
+		}
+
+		return status;
+		
+	}
+	
+}
diff --git a/bundles/org.eclipse.jst.ws.axis2.creation.core/src/org/eclipse/jst/ws/axis2/creation/core/command/Axis2TDCommand.java b/bundles/org.eclipse.jst.ws.axis2.creation.core/src/org/eclipse/jst/ws/axis2/creation/core/command/Axis2TDCommand.java
new file mode 100644
index 0000000..e07e7d0
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.creation.core/src/org/eclipse/jst/ws/axis2/creation/core/command/Axis2TDCommand.java
@@ -0,0 +1,47 @@
+/*******************************************************************************
+ * Copyright (c) 2007 WSO2 Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * WSO2 Inc. - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20070110   168762 sandakith@wso2.com - Lahiru Sandakith, Initial code to introduse the Axis2 runtime to the framework for 168762
+ *******************************************************************************/
+package org.eclipse.jst.ws.axis2.creation.core.command;
+
+
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jst.ws.axis2.creation.core.data.DataModel;
+import org.eclipse.jst.ws.axis2.creation.core.messages.Axis2CreationUIMessages;
+import org.eclipse.wst.command.internal.env.core.common.StatusUtils;
+import org.eclipse.wst.common.frameworks.datamodel.AbstractDataModelOperation;
+
+
+public class Axis2TDCommand extends AbstractDataModelOperation 
+{
+  private DataModel model;
+  
+  public Axis2TDCommand( DataModel model )
+  {
+    this.model = model;  
+  }
+  
+  public IStatus execute( IProgressMonitor monitor, IAdaptable adaptable ) 
+  {
+    IStatus status = Status.OK_STATUS;  
+    // Check for the nessesary data are available for the scenario to begin
+    if (model.getWsdlURI() == null){
+		status = StatusUtils.errorStatus(Axis2CreationUIMessages.ERROR_INVALID_SERVICE_CREATION);
+    }else {
+		status = Status.OK_STATUS; // Ok to proceed 
+	}
+    return status;      	
+  }
+}
diff --git a/bundles/org.eclipse.jst.ws.axis2.creation.core/src/org/eclipse/jst/ws/axis2/creation/core/command/Axis2TDServiceCreationCommand.java b/bundles/org.eclipse.jst.ws.axis2.creation.core/src/org/eclipse/jst/ws/axis2/creation/core/command/Axis2TDServiceCreationCommand.java
new file mode 100644
index 0000000..4029c24
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.creation.core/src/org/eclipse/jst/ws/axis2/creation/core/command/Axis2TDServiceCreationCommand.java
@@ -0,0 +1,95 @@
+package org.eclipse.jst.ws.axis2.creation.core.command;
+
+import java.io.File;
+import java.io.IOException;
+
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jst.ws.axis2.core.utils.FileUtils;
+import org.eclipse.jst.ws.axis2.creation.core.data.DataModel;
+import org.eclipse.jst.ws.axis2.creation.core.messages.Axis2CreationUIMessages;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.wst.command.internal.env.core.common.StatusUtils;
+import org.eclipse.wst.common.environment.IEnvironment;
+import org.eclipse.wst.common.frameworks.datamodel.AbstractDataModelOperation;
+import org.eclipse.wst.ws.internal.wsrt.IWebService;
+
+public class Axis2TDServiceCreationCommand extends
+AbstractDataModelOperation {
+	
+  	private DataModel model;
+
+  public Axis2TDServiceCreationCommand( DataModel model,IWebService ws, String project )
+  {
+    this.model = model;  
+  }
+
+public IStatus execute(IProgressMonitor monitor, IAdaptable info)
+		throws ExecutionException {
+	IStatus status = Status.OK_STATUS;  
+	IEnvironment environment = getEnvironment();
+	//The full Qulalified Service Class
+//	String serviceDefinition = ws.getWebServiceInfo().getWsdlURL(); 
+	try {
+		
+//		String workspaceDirectory = ResourceUtils.getWorkspaceRoot().getLocation().toOSString();
+		String workspaceDirectory = ResourcesPlugin.getWorkspace().getRoot().getLocation().toOSString();
+		String currentDynamicWebProjectDir = FileUtils.addAnotherNodeToPath(workspaceDirectory, model.getWebProjectName());
+		String matadataDir = FileUtils.addAnotherNodeToPath(workspaceDirectory,Axis2CreationUIMessages.DIR_DOT_METADATA);
+	    String matadataPluginsDir = FileUtils.addAnotherNodeToPath(matadataDir,Axis2CreationUIMessages.DIR_DOT_PLUGINS);
+	    String matadataAxis2Dir = FileUtils.addAnotherNodeToPath(matadataPluginsDir, Axis2CreationUIMessages.AXIS2_PROJECT);
+	    String tempServicesDir = FileUtils.addAnotherNodeToPath(matadataAxis2Dir,
+	    													   Axis2CreationUIMessages.DIR_SERVICES);
+	    
+	    model.setPathToWebServicesTempDir(tempServicesDir);
+		
+	    //Exploded temperory services directory
+		String currentservicesDirectory = FileUtils.addAnotherNodeToPath(tempServicesDir, model.getServiceName());
+		String metaInfDirectory = FileUtils.addAnotherNodeToPath(currentservicesDirectory, Axis2CreationUIMessages.DIR_META_INF);
+		
+		//Create the directories
+		//Create the Webservices stuff on the workspace .matadata directory  
+	    FileUtils.createDirectorys(currentservicesDirectory);
+	    FileUtils.createDirectorys(metaInfDirectory);		    
+	    
+	    
+	    //copy the generated resources (services.xml .wsdl ) files
+	    //at resources/service.xml
+	    String currentProjectResourcesDirString = FileUtils.addAnotherNodeToPath(currentDynamicWebProjectDir, Axis2CreationUIMessages.DIR_RESOURCES);
+	    File currentProjectResourcesDir = new File(currentProjectResourcesDirString);
+	    FileUtils.copyDirectory(currentProjectResourcesDir, new File(metaInfDirectory));
+        
+        // Copy the classes directory to the sevices directory
+		String defaultClassesSubDirectory = Axis2CreationUIMessages.DIR_BUILD + File.separator + Axis2CreationUIMessages.DIR_CLASSES;
+		//TODO copy only the relevent .classes to the aar
+		String classesDirectory = currentDynamicWebProjectDir + File.separator + defaultClassesSubDirectory;
+		
+		FileUtils.copyDirectory(new File(classesDirectory), new File(currentservicesDirectory));
+		
+//		//Create the .aar file 
+//		String aarDirString =  FileUtils.addAnotherNodeToPath(webservicesDir, Axis2CreationUIMessages.DIR_AAR);
+//		File aarDir = new File(aarDirString);
+//		FileUtils.createDirectorys(aarDirString);
+//		AARFileWriter aarFileWriter = new AARFileWriter();
+//		File serviseDir = new File(servicesDirectory);
+//		aarFileWriter.writeAARFile(aarDir, serviceName + Axis2CreationUIMessages.FILE_AAR, serviseDir);
+		
+		
+		//Import all the stuff form the .matadata directory to inside the current web project
+		} catch (IOException e) {
+			status = StatusUtils.errorStatus(NLS.bind(Axis2CreationUIMessages.ERROR_INVALID_FILE_READ_WRITEL,new String[]{e.getLocalizedMessage()}), e);
+			environment.getStatusHandler().reportError(status); 
+		} catch (Exception e) {
+			status = StatusUtils.errorStatus(NLS.bind(Axis2CreationUIMessages.ERROR_INVALID_SERVICE_CREATION,new String[]{e.getLocalizedMessage()}), e);
+			environment.getStatusHandler().reportError(status); 
+		}
+	    
+	
+    
+    return status;
+}
+}
diff --git a/bundles/org.eclipse.jst.ws.axis2.creation.core/src/org/eclipse/jst/ws/axis2/creation/core/command/Axis2WSDL2JavaCommand.java b/bundles/org.eclipse.jst.ws.axis2.creation.core/src/org/eclipse/jst/ws/axis2/creation/core/command/Axis2WSDL2JavaCommand.java
new file mode 100644
index 0000000..b7ac20f
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.creation.core/src/org/eclipse/jst/ws/axis2/creation/core/command/Axis2WSDL2JavaCommand.java
@@ -0,0 +1,193 @@
+/*******************************************************************************
+ * Copyright (c) 2007 WSO2 Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * WSO2 Inc. - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20070118   168762 sandakith@wso2.com - Lahiru Sandakith, Initial code to introduse the Axis2 
+ * 										  runtime to the framework for 168762
+ *******************************************************************************/
+package org.eclipse.jst.ws.axis2.creation.core.command;
+
+import java.io.File;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Method;
+import java.util.Map;
+
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jst.ws.axis2.consumption.core.utils.ContentCopyUtils;
+import org.eclipse.jst.ws.axis2.consumption.core.utils.WSDL2JavaGenerator;
+import org.eclipse.jst.ws.axis2.core.utils.ClassLoadingUtil;
+import org.eclipse.jst.ws.axis2.core.utils.FileUtils;
+import org.eclipse.jst.ws.axis2.creation.core.data.DataModel;
+import org.eclipse.jst.ws.axis2.creation.core.messages.Axis2CreationUIMessages;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.wst.command.internal.env.core.common.StatusUtils;
+import org.eclipse.wst.common.environment.IEnvironment;
+import org.eclipse.wst.common.environment.IStatusHandler;
+import org.eclipse.wst.common.frameworks.datamodel.AbstractDataModelOperation;
+
+public class Axis2WSDL2JavaCommand extends AbstractDataModelOperation {
+	
+	  private DataModel model;
+		
+	  public Axis2WSDL2JavaCommand( DataModel model ){
+	    this.model = model;  
+	  }
+
+
+	public IStatus execute(IProgressMonitor monitor, IAdaptable info)
+													 throws ExecutionException {
+		
+		IStatus status = Status.OK_STATUS;  
+		IEnvironment environment = getEnvironment();
+		IStatusHandler statusHandler = environment.getStatusHandler();	
+		
+		String workspaceDirectory = ResourcesPlugin.getWorkspace().getRoot().
+													getLocation().toOSString();
+		String currentDynamicWebProjectDir = FileUtils.addAnotherNodeToPath(
+														workspaceDirectory,
+														model.getWebProjectName());
+		String matadataDir = FileUtils.addAnotherNodeToPath(
+										workspaceDirectory,
+										Axis2CreationUIMessages.DIR_DOT_METADATA);
+	    String matadataPluginsDir = FileUtils.addAnotherNodeToPath(
+	    								matadataDir,
+	    								Axis2CreationUIMessages.DIR_DOT_PLUGINS);
+	    String matadataAxis2Dir = FileUtils.addAnotherNodeToPath(
+	    									matadataPluginsDir, 
+	    									Axis2CreationUIMessages.AXIS2_PROJECT);
+		String tempCodegenOutputLocation = FileUtils.addAnotherNodeToPath(
+											matadataAxis2Dir, 
+											Axis2CreationUIMessages.CODEGEN_RESULTS);
+		File tempCodegenLocationFile = new File(tempCodegenOutputLocation);
+		if (tempCodegenLocationFile.exists())FileUtils.deleteDirectories(tempCodegenOutputLocation);
+		FileUtils.createDirectorys(tempCodegenOutputLocation);
+        WSDL2JavaGenerator generator = new WSDL2JavaGenerator(); 
+        
+        //AxisService service;
+        Object axisServiceInstance;
+        
+	try {
+		//service = generator.getAxisService(model.getWsdlURI());
+		ClassLoadingUtil.init(model.getWebProjectName());
+		axisServiceInstance = generator.getAxisService(model.getWsdlURI());
+        Map optionsMap = generator.fillOptionMap(	
+        	false,  //async always false
+            false,	//sync always false
+            true,   //is serverside true
+            model.isServerXMLCheck(),
+            model.isTestCaseCheck(),
+            model.isGenerateAllCheck(),
+            (model.getServiceName()!=null)?model.getServiceName():null,
+            (model.getPortName()!=null)?model.getPortName():null,
+            (model.getDatabindingType().toLowerCase()!=null)?model.getDatabindingType().toLowerCase():null,
+            (model.getWsdlURI()!=null)?model.getWsdlURI():null,
+            (model.getPackageText()!=null)?model.getPackageText():null,
+            "java",
+            tempCodegenOutputLocation,
+            model.getNamespaseToPackageMapping(),
+            model.isGenerateServerSideInterface()
+          );
+        
+        
+        //CodeGenConfiguration codegenConfig = new CodeGenConfiguration(service, optionsMap);
+		Class CodeGenConfigurationClass = ClassLoadingUtil.loadClassFromAntClassLoader("org.apache.axis2.wsdl.codegen.CodeGenConfiguration");
+
+		Class[] parameterTypes = new Class[2];
+		parameterTypes[0] = axisServiceInstance.getClass();
+		parameterTypes[1] = Map.class;
+		Constructor CodeGenConfigurationConstructor = CodeGenConfigurationClass.getConstructor(parameterTypes);
+       
+		Object initargs[] = new Object[2];
+		initargs[0] = axisServiceInstance;
+		initargs[1] = optionsMap;
+		Object CodeGenConfigurationInstance  = CodeGenConfigurationConstructor.newInstance(initargs);
+		
+        //set the baseURI
+        //codegenConfig.setBaseURI(generator.getBaseUri(model.getWsdlURI()));
+		
+		Class[] parameterTypes1 = new Class[1];
+		parameterTypes1[0] = String.class;
+		Method setBaseURIMethod = CodeGenConfigurationClass.getMethod("setBaseURI", parameterTypes1);
+
+		Object args[] = new Object[1];
+		args[0] = generator.getBaseUri(model.getWsdlURI());
+		setBaseURIMethod.invoke(CodeGenConfigurationInstance, args);
+		
+		//Get the namespace from the AxisService and set it in the configuration 
+		Class AxisServiceClass = ClassLoadingUtil.loadClassFromAntClassLoader("org.apache.axis2.description.AxisService");
+
+		Method getTargetNamespaceMethod = AxisServiceClass.getMethod("getTargetNamespace", null);
+		Object targetNamespace = getTargetNamespaceMethod.invoke(axisServiceInstance, null);
+		
+		
+		Class URLProcessorClass = ClassLoadingUtil.loadClassFromAntClassLoader("org.apache.axis2.util.URLProcessor");
+		Class parameterTypes4[] = new Class[1];
+		parameterTypes4[0] = String.class;
+		Method makePackageNameMethod = URLProcessorClass.getMethod("makePackageName", parameterTypes4);
+		
+		Object args4[] = new Object[1];
+		args4[0] = targetNamespace;
+		Object stringReturn = makePackageNameMethod.invoke(null, args4);
+		
+		model.setPackageText(stringReturn.toString());
+		
+		Class[] parameterTypes3 = new Class[1];
+		parameterTypes3[0] = String.class;
+		Method setPackageNameMethod = CodeGenConfigurationClass.getMethod("setPackageName", parameterTypes3);
+
+		Object args2[] = new Object[1];
+		args2[0] = stringReturn;
+		setPackageNameMethod.invoke(CodeGenConfigurationInstance, args2);
+		
+        //new CodeGenerationEngine(codegenConfig).generate();
+		
+        //Class CodeGenerationEngineClass = Class.forName("org.apache.axis2.wsdl.codegen.CodeGenerationEngine");
+		Class CodeGenerationEngineClass = ClassLoadingUtil.loadClassFromAntClassLoader("org.apache.axis2.wsdl.codegen.CodeGenerationEngine");
+
+		Class[] parameterTypes2 = new Class[1];
+		parameterTypes2[0] = CodeGenConfigurationInstance.getClass();
+		Constructor CodeGenerationEngineConstructor = CodeGenerationEngineClass.getConstructor(parameterTypes2);
+        
+		Object initargs1[] = new Object[1];
+		initargs1[0] = CodeGenConfigurationInstance;
+		Object CodeGenerationEngineInstance  = CodeGenerationEngineConstructor.newInstance(initargs1);
+		
+		//Invoke Codegen Method
+		Method generateMethod = CodeGenerationEngineClass.getMethod("generate", null);
+		generateMethod.invoke(CodeGenerationEngineInstance, null);
+		
+        
+		//Copy the existing codegen results to the current project
+        ContentCopyUtils contentCopyUtils = new ContentCopyUtils();
+	    status = contentCopyUtils.copyDirectoryRecursivelyIntoWorkspace(
+	    							tempCodegenOutputLocation, 
+	    							currentDynamicWebProjectDir, 
+	    							monitor, 
+	    							statusHandler);
+
+        
+	} catch (Exception e) {
+		status = StatusUtils.errorStatus(NLS.bind(
+											Axis2CreationUIMessages.ERROR_CODEGEN_EXCEPTION,
+											new String[]{e.getLocalizedMessage()}),
+										e);
+		e.printStackTrace();
+		environment.getStatusHandler().reportError(status); 
+	}
+		
+		return status;
+	}
+
+}
diff --git a/bundles/org.eclipse.jst.ws.axis2.creation.core/src/org/eclipse/jst/ws/axis2/creation/core/command/Axis2WebservicesServerCommand.java b/bundles/org.eclipse.jst.ws.axis2.creation.core/src/org/eclipse/jst/ws/axis2/creation/core/command/Axis2WebservicesServerCommand.java
new file mode 100644
index 0000000..c25a86e
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.creation.core/src/org/eclipse/jst/ws/axis2/creation/core/command/Axis2WebservicesServerCommand.java
@@ -0,0 +1,102 @@
+/*******************************************************************************
+ * Copyright (c) 2007 WSO2 Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * WSO2 Inc. - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20070110   168762 sandakith@wso2.com - Lahiru Sandakith, Initial code to introduse the Axis2 
+ * 										  runtime to the framework for 168762
+ *******************************************************************************/
+package org.eclipse.jst.ws.axis2.creation.core.command;
+
+import java.io.File;
+
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jst.ws.axis2.consumption.core.utils.ContentCopyUtils;
+import org.eclipse.jst.ws.axis2.core.utils.FileUtils;
+import org.eclipse.jst.ws.axis2.creation.core.data.DataModel;
+import org.eclipse.jst.ws.axis2.creation.core.messages.Axis2CreationUIMessages;
+import org.eclipse.wst.common.environment.IEnvironment;
+import org.eclipse.wst.common.environment.IStatusHandler;
+import org.eclipse.wst.common.frameworks.datamodel.AbstractDataModelOperation;
+import org.eclipse.wst.ws.internal.wsrt.WebServiceScenario;
+
+public class Axis2WebservicesServerCommand extends AbstractDataModelOperation {
+
+	private DataModel model;
+	private int scenario;
+
+	public Axis2WebservicesServerCommand( DataModel model, int scenario ){
+		this.model = model;  
+		this.scenario = scenario;
+	}
+
+	public IStatus execute(IProgressMonitor monitor, IAdaptable info)
+	throws ExecutionException {
+
+		IStatus status = Status.OK_STATUS;
+		IEnvironment environment = getEnvironment();
+		IStatusHandler statusHandler = environment.getStatusHandler();	
+
+		String workspaceDirectory = ResourcesPlugin.getWorkspace().getRoot().
+													getLocation().toOSString();
+		String currentDynamicWebProjectDir = FileUtils.addAnotherNodeToPath(
+														workspaceDirectory, 
+														model.getWebProjectName()); 
+
+		//TODO The Web content directory can be different. cater that also
+		String webContainerDirString = FileUtils.addAnotherNodeToPath(currentDynamicWebProjectDir,
+															Axis2CreationUIMessages.DIR_WEBCONTENT);
+
+		ContentCopyUtils contentCopyUtils = new ContentCopyUtils();
+		
+		//Check for the server status
+		if (model.getServerStatus()){
+			if (scenario == WebServiceScenario.BOTTOMUP){
+				//Import the tempory webservices directory according to the Resources API of eclipse 
+				String webserviceTempDirString = model.getPathToWebServicesTempDir();
+				String repositoryString = webContainerDirString 
+				+ File.separator + Axis2CreationUIMessages.DIR_WEB_INF 
+				+ File.separator + Axis2CreationUIMessages.DIR_SERVICES;
+				//Copy the existing services to the repository
+				status = contentCopyUtils.copyDirectoryRecursivelyIntoWorkspace(
+											webserviceTempDirString, 
+											repositoryString, 
+											monitor, 
+											statusHandler);
+				FileUtils.deleteDirectories(webserviceTempDirString);
+
+
+			}else if (scenario == WebServiceScenario.TOPDOWN){
+				//Do topdown
+				String webserviceTempDirString = model.getPathToWebServicesTempDir();
+				String repositoryString = webContainerDirString 
+				+ File.separator + Axis2CreationUIMessages.DIR_WEB_INF 
+				+ File.separator + Axis2CreationUIMessages.DIR_SERVICES;
+				//Copy the existing services to the repository
+				status = contentCopyUtils.copyDirectoryRecursivelyIntoWorkspace(
+											webserviceTempDirString, 
+											repositoryString, 
+											monitor, 
+											statusHandler);
+				FileUtils.deleteDirectories(webserviceTempDirString);
+			}
+			status = Status.OK_STATUS;
+		}else{
+			status = Status.CANCEL_STATUS;
+		}
+
+		return status;
+	}
+
+}
diff --git a/bundles/org.eclipse.jst.ws.axis2.creation.core/src/org/eclipse/jst/ws/axis2/creation/core/messages/Axis2CreationUI.properties b/bundles/org.eclipse.jst.ws.axis2.creation.core/src/org/eclipse/jst/ws/axis2/creation/core/messages/Axis2CreationUI.properties
new file mode 100644
index 0000000..0e367bc
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.creation.core/src/org/eclipse/jst/ws/axis2/creation/core/messages/Axis2CreationUI.properties
@@ -0,0 +1,88 @@
+###############################################################################
+# Copyright (c) 2007 WSO2 Inc. and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+# WSO2 Inc. - initial API and implementation
+# yyyymmdd bug      Email and other contact information
+# -------- -------- -----------------------------------------------------------
+# 20070110   168762 sandakith@wso2.com - Lahiru Sandakith, Initial code to introduse the Axis2 
+#										 runtime to the framework for 168762
+###############################################################################
+#
+# Axis2 server component type labels
+#
+LABEL_CLIENT_COMP_TYPE_WEB=Web
+LABEL_HAVE_SERVICES_XML_FILE=Have a Sevices.xml file
+LABEL_DEFAULT_SERVICES_XML_FILE=Generate Default Sevices.xml file
+LABEL_AXIS2_PREFERENCE_PAGE=Axis2 Web Service Java Bean Configuration
+LABEL_AXIS2_PREFERENCE_PAGE_HEADING=Axis2 Web Service Java Bean Configuration
+LABEL_AXIS2_PREFERENCE_PAGE_SUB_HEADING=Customize your Webservice on this page
+LABEL_BROWSE=&Browse
+LABEL_DATA_MODEL=WebServiceDataModel
+LABEL_EDIT_SERVICES_XML=Do you want edit the services.xml
+LABEL_JAVA_2_WSDL_PAGE_HEADING=Axis2 Web Service skeleton Java Bean Configuration
+LABEL_JAVA_2_WSDL_PAGE_SUB_HEADING=Please select the appropriate options for the code generation
+LABEL_SERVICE_NAME_CAPTION=Service Name
+LABEL_GENERATE_SERVICEXML_CAPTION=Generate a default services.xml
+LABEL_GENERATE_TESTCASE_CAPTION=Generate test case to test the service
+LABEL_DATABINDING_CAPTION=Databinding Name
+LABEL_PORTNAME=Port Name
+LABEL_GENERATE_ALL=Generate All Types for all elements refered by shemas
+LABEL_GENERATE_SERVERSIDE_INTERFACE=Generate an Interface for Skeleton
+LABEL_PACKEGE_NAME=Custom package name
+LABEL_NAMESPACE=Namespace
+LABEL_PACKAGE=Package
+LABEL_NAMESPACE_TO_PACKAGE=Namespace to package mappings
+
+#
+# Axis2 server component type files
+#
+FILE_SERVICES_XML=services.xml
+FILE_AAR=.aar
+FILE_XML=*.xml
+
+#
+# Axis2 server component type folders
+#
+DIR_META_INF=META-INF
+DIR_BUILD=build
+DIR_SRC=src
+DIR_CLASSES=classes
+DIR_RESOURCES=resources
+DIR_AAR=aar
+DIR_WEB_INF=WEB-INF
+DIR_SERVICES=services
+DIR_WEBSERVICES=webservices
+DIR_WEBCONTENT=WebContent
+DIR_WORKSPACE=workspace
+DIR_AXIS2=axis2
+DIR_PLUGINS=plugins
+DIR_DOT_METADATA=.metadata
+DIR_DOT_PLUGINS=.plugins
+
+#
+# Axis2 server component type error
+#
+ERROR_INVALID_SERVICES_XML=You must select a valid services.xml file!
+ERROR_INVALID_FILE_READ_WRITEL=Exception occured while file read wrote
+ERROR_INVALID_WSDL_FILE_READ_WRITEL=Exception occured while wsdl file read wrote
+ERROR_INVALID_SERVICE_CREATION=Exception occured while service creation
+ERROR_WSDL_NIT_FOUND=Specified WSDL is not found!, Please Check whether you have entered the correct path to a *.wsdl on previous page.
+ERROR_CODEGEN_EXCEPTION=Exception occured while code generation the wsdl
+
+#
+# Axis2 server component type other
+#
+JAR_TASK=jar
+AXIS2_RUNTIME=org.apache.axis2_1.0.0/axis2
+#AXIS2_RUNTIME=org.apache.axis2/axis2
+AXIS2_PROJECT=org.eclipse.jst.ws.axis2
+CODEGEN_RESULTS=codegen
+
+DATA_BINDING_ADB=ADB
+DATA_BINDING_NONE=NONE
+SKELETON_SUFFIX=Skeleton.java
diff --git a/bundles/org.eclipse.jst.ws.axis2.creation.core/src/org/eclipse/jst/ws/axis2/creation/core/messages/Axis2CreationUIMessages.java b/bundles/org.eclipse.jst.ws.axis2.creation.core/src/org/eclipse/jst/ws/axis2/creation/core/messages/Axis2CreationUIMessages.java
new file mode 100644
index 0000000..c86679e
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.creation.core/src/org/eclipse/jst/ws/axis2/creation/core/messages/Axis2CreationUIMessages.java
@@ -0,0 +1,89 @@
+/*******************************************************************************
+ * Copyright (c) 2007 WSO2 Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * WSO2 Inc. - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20070110   168762 sandakith@wso2.com - Lahiru Sandakith, Initial code to introduse the Axis2 runtime to the framework for 168762
+ *******************************************************************************/
+package org.eclipse.jst.ws.axis2.creation.core.messages;
+
+import org.eclipse.osgi.util.NLS;
+
+public class Axis2CreationUIMessages extends NLS {
+
+	//get the lables from this massages to the properties file
+	private static final String BUNDLE_NAME = "org.eclipse.jst.ws.axis2.creation.core.messages.Axis2CreationUI";//$NON-NLS-1$
+
+	private Axis2CreationUIMessages() {
+		// Do not instantiate
+	}
+	//labels
+	public static String LABEL_HAVE_SERVICES_XML_FILE;
+	public static String LABEL_DEFAULT_SERVICES_XML_FILE;
+	public static String LABEL_AXIS2_PREFERENCE_PAGE;
+	public static String LABEL_AXIS2_PREFERENCE_PAGE_HEADING;
+	public static String LABEL_AXIS2_PREFERENCE_PAGE_SUB_HEADING;
+	public static String LABEL_BROWSE;
+	public static String LABEL_DATA_MODEL;
+	public static String LABEL_EDIT_SERVICES_XML;
+	public static String LABEL_JAVA_2_WSDL_PAGE_HEADING;
+	public static String LABEL_JAVA_2_WSDL_PAGE_SUB_HEADING;
+	public static String LABEL_SERVICE_NAME_CAPTION;
+	public static String LABEL_GENERATE_SERVICEXML_CAPTION;
+	public static String LABEL_GENERATE_TESTCASE_CAPTION;
+	public static String LABEL_DATABINDING_CAPTION;
+	public static String LABEL_PORTNAME;
+	public static String LABEL_GENERATE_ALL;
+	public static String LABEL_GENERATE_SERVERSIDE_INTERFACE;
+	public static String LABEL_PACKEGE_NAME;
+	public static String LABEL_NAMESPACE;
+	public static String LABEL_PACKAGE;
+	public static String LABEL_NAMESPACE_TO_PACKAGE;
+	
+	//files
+	public static String FILE_SERVICES_XML;
+	public static String FILE_AAR;
+	public static String FILE_XML;
+	//folders
+	public static String DIR_DYNAMIC_PROJECT_WEBSERVICES;
+	public static String DIR_BUILD;
+	public static String DIR_SRC;
+	public static String DIR_CLASSES;
+	public static String DIR_RESOURCES;
+	public static String DIR_AAR;
+	public static String DIR_META_INF;
+	public static String DIR_WEB_INF;
+	public static String DIR_SERVICES;
+	public static String DIR_WEBSERVICES;
+	public static String DIR_WEBCONTENT;
+	public static String DIR_WORKSPACE;
+	public static String DIR_AXIS2;
+	public static String DIR_PLUGINS;
+	public static String DIR_DOT_METADATA;
+	public static String DIR_DOT_PLUGINS;
+	//error
+	public static String ERROR_INVALID_SERVICES_XML;
+	public static String ERROR_INVALID_FILE_READ_WRITEL;
+	public static String ERROR_INVALID_WSDL_FILE_READ_WRITEL;
+	public static String ERROR_INVALID_SERVICE_CREATION;
+	public static String ERROR_CODEGEN_EXCEPTION;
+	//other
+	public static String JAR_TASK;
+	public static String AXIS2_RUNTIME;
+	public static String AXIS2_PROJECT;
+	public static String CODEGEN_RESULTS;
+	public static String DATA_BINDING_ADB;
+	public static String DATA_BINDING_NONE;
+	public static String SKELETON_SUFFIX;
+
+	static {
+		NLS.initializeMessages(BUNDLE_NAME, Axis2CreationUIMessages.class);
+	}
+
+}
diff --git a/bundles/org.eclipse.jst.ws.axis2.creation.core/src/org/eclipse/jst/ws/axis2/creation/core/plugin/WebServiceAxis2CreationCorePlugin.java b/bundles/org.eclipse.jst.ws.axis2.creation.core/src/org/eclipse/jst/ws/axis2/creation/core/plugin/WebServiceAxis2CreationCorePlugin.java
new file mode 100644
index 0000000..56c9fb3
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.creation.core/src/org/eclipse/jst/ws/axis2/creation/core/plugin/WebServiceAxis2CreationCorePlugin.java
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ * Copyright (c) 2007 WSO2 Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * WSO2 Inc. - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20070130   168762 sandakith@wso2.com - Lahiru Sandakith, Initial code to introduse the Axis2 
+ * 										  runtime to the framework for 168762
+ *******************************************************************************/
+package org.eclipse.jst.ws.axis2.creation.core.plugin;
+
+import org.eclipse.core.runtime.Plugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class WebServiceAxis2CreationCorePlugin extends Plugin {
+
+	// The plug-in ID
+	public static final String PLUGIN_ID = "org.eclipse.jst.ws.axis2.creation.core.plugin";
+
+	// The shared instance
+	private static WebServiceAxis2CreationCorePlugin plugin;
+	
+	/**
+	 * The constructor
+	 */
+	public WebServiceAxis2CreationCorePlugin() {
+		plugin = this;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.eclipse.core.runtime.Plugins#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 {
+		plugin = null;
+		super.stop(context);
+	}
+
+	/**
+	 * Returns the shared instance
+	 *
+	 * @return the shared instance
+	 */
+	public static WebServiceAxis2CreationCorePlugin getDefault() {
+		return plugin;
+	}
+
+}
diff --git a/bundles/org.eclipse.jst.ws.axis2.creation.core/src/org/eclipse/jst/ws/axis2/creation/core/utils/AARFileWriter.java b/bundles/org.eclipse.jst.ws.axis2.creation.core/src/org/eclipse/jst/ws/axis2/creation/core/utils/AARFileWriter.java
new file mode 100644
index 0000000..eeff2ec
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.creation.core/src/org/eclipse/jst/ws/axis2/creation/core/utils/AARFileWriter.java
@@ -0,0 +1,52 @@
+/*******************************************************************************
+ * Copyright (c) 2007 WSO2 Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * WSO2 Inc. - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20070110   168762 sandakith@wso2.com - Lahiru Sandakith, Initial code to introduse the Axis2 
+ * 										  runtime to the framework for 168762
+ *******************************************************************************/
+package org.eclipse.jst.ws.axis2.creation.core.utils;
+
+import java.io.File;
+import java.io.IOException;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.taskdefs.Jar;
+import org.eclipse.jst.ws.axis2.creation.core.messages.Axis2CreationUIMessages;
+
+public class AARFileWriter extends Jar{
+
+    public AARFileWriter() {
+        this.setProject(new Project());
+        this.getProject().init();
+        this.setTaskType(Axis2CreationUIMessages.JAR_TASK);
+        this.setTaskName(Axis2CreationUIMessages.JAR_TASK);
+        this.setOwningTarget(new org.apache.tools.ant.Target());
+    }
+
+    public void writeAARFile(File outputFolder,
+    						 String outputFileName,
+    						 File inputFileFolder) throws IOException,Exception {
+
+        if (!outputFolder.exists()){
+            outputFolder.mkdir(); //create the output path
+        }else{
+            if (!outputFolder.isDirectory())
+                return;
+        }
+
+        File targetFile = new File(outputFolder,outputFileName);
+        this.setBasedir(inputFileFolder);
+        this.setDestFile(targetFile);
+
+        //run the task
+        this.perform();
+    }
+
+}
\ No newline at end of file
diff --git a/bundles/org.eclipse.jst.ws.axis2.creation.core/src/org/eclipse/jst/ws/axis2/creation/core/utils/CommonUtils.java b/bundles/org.eclipse.jst.ws.axis2.creation.core/src/org/eclipse/jst/ws/axis2/creation/core/utils/CommonUtils.java
new file mode 100644
index 0000000..bf21d79
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.creation.core/src/org/eclipse/jst/ws/axis2/creation/core/utils/CommonUtils.java
@@ -0,0 +1,51 @@
+/*******************************************************************************
+ * Copyright (c) 2007 WSO2 Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ * WSO2 Inc. - initial API and implementation
+ * -------- -------- -----------------------------------------------------------
+ * 20070110   168762 sandakith@wso2.com - Lahiru Sandakith, Initial code to introduse the Axis2 
+ * 										  runtime to the framework for 168762
+ *******************************************************************************/
+package org.eclipse.jst.ws.axis2.creation.core.utils;
+
+
+public class CommonUtils {
+	
+	 public static String classNameFromQualifiedName(String qualifiedCalssName){
+		 //This was done due to not splitting with . Strange
+		 qualifiedCalssName = qualifiedCalssName.replace('.', ':');
+		 String[] parts = qualifiedCalssName.split(":");
+		 if (parts.length == 0){
+			 return "";
+		 }
+		 return parts[parts.length-1];
+	 }
+	  
+	 public static String packageNameFromQualifiedName(String qualifiedCalssName){
+		 //This was done due to not splitting with . Strange
+		 qualifiedCalssName = qualifiedCalssName.replace('.', ':');
+		 String[] parts = qualifiedCalssName.split(":");
+		 StringBuffer packageName = new StringBuffer();
+		 for (int i = 0; i < parts.length-1; i++) {
+			 packageName.append(parts[i]);
+			 if (! (i == parts.length-2)){
+				 packageName.append(".");
+			 }
+		 }
+		 return packageName.toString();
+	 }
+	 
+	 
+	 public static String packgeName2PathName(String packageName){
+		 packageName = packageName.replace('.', '/');
+		 return packageName;
+	 }
+	 
+
+}
diff --git a/bundles/org.eclipse.jst.ws.axis2.creation.core/src/org/eclipse/jst/ws/axis2/creation/core/utils/PluginLocationFinderUtil.java b/bundles/org.eclipse.jst.ws.axis2.creation.core/src/org/eclipse/jst/ws/axis2/creation/core/utils/PluginLocationFinderUtil.java
new file mode 100644
index 0000000..88a4aa6
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.creation.core/src/org/eclipse/jst/ws/axis2/creation/core/utils/PluginLocationFinderUtil.java
@@ -0,0 +1,120 @@
+/*******************************************************************************
+ * Copyright (c) 2007 WSO2 Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * WSO2 Inc. - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20070130   168762 sandakith@wso2.com - Lahiru Sandakith, Initial code to introduse the Axis2 
+ * 										  runtime to the framework for 168762
+ *******************************************************************************/
+package org.eclipse.jst.ws.axis2.creation.core.utils;
+
+
+public class PluginLocationFinderUtil {
+//	/**
+//	 *  
+//	 * @return returns a Vector containing PluginData objects.
+//	 * Each PluginData object represents a Plugin found under any of the following 
+//	 * plugin directories
+//	 * a. the targetPlatformLocation\eclipse\plugins directory, 
+//	 * b. other plugin directories as specified by *.link files under 
+//	 *    targetPlatform\eclipse\links directory 
+//	 **/ 
+//	public static Vector getPluginsInTargetPlatform(){
+//		/**
+//		//step1: Get path of target platform.
+//		//step2: Prepare path of links folder.
+//		//step3: Get list of files in links folder.
+//		//step4: Parse each link file and get the path of linked Eclipse folder.
+//		//step5: Prepare a list of all plugin root folders 
+//		//       (Eclipse plugins and linked Eclipse plugins).
+//		//step6: 6a. For each plugin root folder, 
+//		//       6b. go to each plugin directory and get path of plugin.xml.
+//		//step7: Parse the plugin.xml file to get plugin id, plugin version, 
+//		//       and store in vectors, lists, etc.
+//		//step8: Go back to step 6 to continue with next plugin directory.
+//		**/
+//
+//		//step1: Get path of target platform. 
+//		//Fall back to Eclipse install location if targetplatform in not set.
+//		URL platFormURL = Platform.getInstallLocation().getURL();
+//		Location location = Platform.getInstallLocation();
+//		IPath eclipsePath = null ;		
+//
+//		//Get path of target platform against which the users of this tool 
+//		//will compile their code.	
+////		IPath targetPlatFormLocation = new Path(getTargetPlatformPath(true));
+////		IPath targetPlatFormLocation = new Path(System.getProperty("user.dir"));
+//
+////		if(_useTargetPlatform == false)
+//			eclipsePath = new Path(platFormURL.getPath());
+////		else
+////			eclipsePath = targetPlatFormLocation;
+//		
+////		showMessage("Considering target platform to be: " + 
+////					eclipsePath.toString());
+//		
+//		//step2: Prepare path of links folder.
+//		//step3: Get list of files in links folder.		
+//		//step4: Parse each link file and get the path of linked Eclipse folder.
+//		IPath linksPath = new Path( eclipsePath.toString() ).append("/links");
+//		String linkedPaths[] = getLinkedPaths(linksPath.toString());
+//		int linkedPathLength = 0;
+//		if(null != linkedPaths){
+//			linkedPathLength = linkedPaths.length;
+//		}
+//		
+//		//step5: Prepare a list of all plugin root folders 
+//		//       (Eclipse plugins and linked Eclipse plugins).
+//		IPath eclipsePluginRootFolders[] = new IPath[linkedPathLength + 1];
+//		eclipsePluginRootFolders[0] = 
+//			new Path( eclipsePath.toString() ).append("/plugins");
+//		if(null != linkedPaths){
+//			for(int i=0; i<linkedPaths.length; i++){
+//				eclipsePluginRootFolders[i+1] = 
+//				new Path(linkedPaths[i]).append("/eclipse/plugins");
+//			}
+//		}
+//
+//		//step6: 6a. For each plugin root folder, 
+//		//       6b. go to each plugin directory and get path of plugin.xml.
+//		//step7: Parse the plugin.xml file to get plugin id, plugin version, 
+//		//       and store in vectors, lists, etc.
+//		Vector vectorsInThisVector = new Vector();
+//		for(int i=0; i<eclipsePluginRootFolders.length; i++){
+//			System.out.println("\n========plugin IDs and Versions in " + 
+//			eclipsePluginRootFolders[i] + "========");
+//			Vector pluginDataObjs  = 
+//			getPluginDataForAllPlugins(
+//				eclipsePluginRootFolders[i].toString());
+//			vectorsInThisVector.add(pluginDataObjs);
+//			System.out.println(pluginDataObjs);
+//			System.out.println("\n===========|||=== end ===|||===========");
+//		}
+//		
+//		Vector pluginData = new Vector();
+//		Iterator outerIterator = vectorsInThisVector.iterator();
+//		while(outerIterator.hasNext()){
+//			Vector pluginDataObjs = (Vector)outerIterator.next();
+//			Iterator innerIterator = pluginDataObjs.iterator();
+//			while(innerIterator.hasNext()){
+//				PluginData pd = (PluginData)innerIterator.next();
+//				String pluginIdKey = pd.getPluginID();
+//				String versionValue = pd.getPluginVersion();
+//				String pluginPath = pd.getPluginLocation();
+//				pluginData.add(pd);
+//			}
+//		}
+//		
+//		int breakpoint=0;
+//
+//		return pluginData;
+//	}
+//
+//
+}
diff --git a/bundles/org.eclipse.jst.ws.axis2.creation.core/src/org/eclipse/jst/ws/axis2/creation/core/utils/ServiceXMLCreator.java b/bundles/org.eclipse.jst.ws.axis2.creation.core/src/org/eclipse/jst/ws/axis2/creation/core/utils/ServiceXMLCreator.java
new file mode 100644
index 0000000..28d3be2
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.creation.core/src/org/eclipse/jst/ws/axis2/creation/core/utils/ServiceXMLCreator.java
@@ -0,0 +1,58 @@
+/*******************************************************************************
+ * Copyright (c) 2007 WSO2 Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * WSO2 Inc. - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20070110   168762 sandakith@wso2.com - Lahiru Sandakith, Initial code to introduse the Axis2 
+ * 										  runtime to the framework for 168762
+ *******************************************************************************/
+package org.eclipse.jst.ws.axis2.creation.core.utils;
+
+import java.util.ArrayList;
+
+public class ServiceXMLCreator {
+    private String serviceName;
+    private String serviceClass;
+    private ArrayList operations;
+
+    public ServiceXMLCreator(String serviceName, String serviceClass, ArrayList operations) {
+        this.serviceName = serviceName;
+        this.serviceClass = serviceClass;
+        this.operations = operations;
+    }
+
+    public String getServiceName() {
+        return serviceName;
+    }
+
+    public String getServiceClass() {
+        return serviceClass;
+    }
+
+    public ArrayList getOperations() {
+        return operations;
+    }
+
+    public String toString() {
+        String serviceXML = "<service name=\"" + serviceName + "\" >\n" +
+        "\t<description>\n" +
+        "\t\tPlease Type your service description here\n" +
+        "\t</description>\n" +
+        "\t<messageReceivers>\n" +
+        "\t\t<messageReceiver mep=\"http://www.w3.org/2004/08/wsdl/in-only\" " +
+        "class=\"org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver\" />\n" +
+        "\t\t<messageReceiver  mep=\"http://www.w3.org/2004/08/wsdl/in-out\"  " +
+        "class=\"org.apache.axis2.rpc.receivers.RPCMessageReceiver\"/>\n" +
+        "\t</messageReceivers>\n" + 
+        "\t<parameter name=\"ServiceClass\" locked=\"false\">" + serviceClass + "</parameter>\n" ; 
+        serviceXML = serviceXML + "</service>\n";
+        return serviceXML;
+    }
+
+}
\ No newline at end of file
diff --git a/bundles/org.eclipse.jst.ws.axis2.creation.ui/.classpath b/bundles/org.eclipse.jst.ws.axis2.creation.ui/.classpath
new file mode 100644
index 0000000..304e861
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.creation.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/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/bundles/org.eclipse.jst.ws.axis2.creation.ui/.project b/bundles/org.eclipse.jst.ws.axis2.creation.ui/.project
new file mode 100644
index 0000000..b48462a
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.creation.ui/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.jst.ws.axis2.creation.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/bundles/org.eclipse.jst.ws.axis2.creation.ui/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.jst.ws.axis2.creation.ui/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..5ab8f84
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.creation.ui/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,57 @@
+#Thu Feb 22 14:31:42 LKT 2007
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
+org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
+org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
+org.eclipse.jdt.core.compiler.problem.nullReference=ignore
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.5
diff --git a/bundles/org.eclipse.jst.ws.axis2.creation.ui/META-INF/MANIFEST.MF b/bundles/org.eclipse.jst.ws.axis2.creation.ui/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..32fdb01
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.creation.ui/META-INF/MANIFEST.MF
@@ -0,0 +1,29 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Ui Plug-in
+Bundle-SymbolicName: org.eclipse.jst.ws.axis2.creation.ui;singleton:=true
+Bundle-Version: 1.0.0
+Bundle-Activator: org.eclipse.jst.ws.internal.axis2.creation.ui.plugin.WebServiceAxis2CreationUIPlugin
+Bundle-Localization: plugin
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.core.resources,
+ org.eclipse.jst.ws.consumption.ui,
+ org.eclipse.wst.ws,
+ org.eclipse.wst.common.environment,
+ org.eclipse.wst.command.env.core,
+ org.eclipse.emf.common,
+ org.eclipse.wst.common.frameworks,
+ org.eclipse.wst.command.env.ui,
+ org.eclipse.jst.ws,
+ org.eclipse.wst.command.env,
+ org.eclipse.jdt.core,
+ org.eclipse.jst.ws.axis2.creation.core,
+ org.eclipse.jst.ws.axis2.consumption.ui,
+ org.eclipse.jst.ws.axis2.consumption.core,
+ org.eclipse.jst.ws.axis2.core
+Eclipse-LazyStart: true
+Export-Package: org.eclipse.jst.ws.internal.axis2.creation.ui.widgets.bean,
+ org.eclipse.jst.ws.internal.axis2.creation.ui.widgets.skeleton,
+ org.eclipse.jst.ws.internal.axis2.creation.ui.wsrt
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
diff --git a/bundles/org.eclipse.jst.ws.axis2.creation.ui/build.properties b/bundles/org.eclipse.jst.ws.axis2.creation.ui/build.properties
new file mode 100644
index 0000000..a8546f7
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.creation.ui/build.properties
@@ -0,0 +1,19 @@
+###############################################################################
+# Copyright (c) 2007 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
+# yyyymmdd bug      Email and other contact information
+# -------- -------- -----------------------------------------------------------
+# 20070110   168762 sandakith@wso2.com - Lahiru Sandakith, Initial code to introduse the Axis2 runtime to the framework for 168762
+###############################################################################
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml,\
+               plugin.properties
diff --git a/bundles/org.eclipse.jst.ws.axis2.creation.ui/plugin.properties b/bundles/org.eclipse.jst.ws.axis2.creation.ui/plugin.properties
new file mode 100644
index 0000000..8078b32
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.creation.ui/plugin.properties
@@ -0,0 +1,18 @@
+###############################################################################
+# Copyright (c) 2006, 2007 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
+# yyyymmdd bug      Email and other contact information
+# -------- -------- -----------------------------------------------------------
+# 20070110   168762 sandakith@wso2.com - Lahiru Sandakith, Initial code to introduse the Axis2 runtime to the framework for 168762
+###############################################################################
+
+#
+# Messages in plugin.xml.
+#
+LABEL_RUNTIME_AXIS_2=Apache Axis2
diff --git a/bundles/org.eclipse.jst.ws.axis2.creation.ui/plugin.xml b/bundles/org.eclipse.jst.ws.axis2.creation.ui/plugin.xml
new file mode 100644
index 0000000..5004d58
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.creation.ui/plugin.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.2"?>
+<plugin>
+
+	<extension point="org.eclipse.wst.command.env.ui.widgetRegistry">
+      <widgetFactory   
+        id="BeanExampleConfig"
+        insertBeforeCommandId="org.eclipse.jst.ws.axis2.creation.core.command.Axis2BUCommand"
+        class="org.eclipse.jst.ws.internal.axis2.creation.ui.wsrt.Axis2BeanConfigWidgetFactory"/>
+    </extension> 
+    
+	<extension point="org.eclipse.wst.command.env.ui.widgetRegistry">
+      <widgetFactory   
+        id="SkelExampleConfig"
+        insertBeforeCommandId="org.eclipse.jst.ws.axis2.creation.core.command.Axis2TDCommand"
+        class="org.eclipse.jst.ws.internal.axis2.creation.ui.wsrt.Axis2SkelConfigWidgetFactory" />
+    </extension> 
+    
+    <extension point="org.eclipse.jst.ws.consumption.ui.runtimes">
+      <runtime
+        id="org.eclipse.jst.ws.axis2.creation.axis2WebServiceRT"
+        label="%LABEL_RUNTIME_AXIS_2"
+        serverRequired="false"/>
+    </extension>
+
+
+	<!-- define support for Axis2 Java bean bottom up and top-down support in web projects -->
+    <extension point="org.eclipse.jst.ws.consumption.ui.serviceRuntimes">
+      <serviceRuntime
+        id="org.eclipse.jst.ws.axis2.creation.java" 
+        serviceImplementationTypeId="org.eclipse.jst.ws.wsImpl.java"
+        runtimeId="org.eclipse.jst.ws.axis2.creation.axis2WebServiceRT"
+        bottomUp="true"
+        topDown="true"
+        class="org.eclipse.jst.ws.internal.axis2.creation.ui.wsrt.Axis2WebServiceRuntime">
+
+        <required-facet-version facet="jst.web" version="2.3" allow-newer="true"/>
+        <required-facet-version facet="axis2.core" version="1.1" allow-newer="true" />
+        <required-facet-version facet="axis2.ext" version="1.1" allow-newer="true" />
+
+      </serviceRuntime>
+    </extension>   
+        
+    <!-- define support for Axis Java clients in Web projects -->
+    <extension point="org.eclipse.jst.ws.consumption.ui.clientRuntimes">
+      <clientRuntime
+        id="org.eclipse.jst.ws.axis2.consumption.web"
+        clientImplementationTypeId="org.eclipse.jst.ws.client.type.java"
+        runtimeId="org.eclipse.jst.ws.axis2.creation.axis2WebServiceRT"
+        class="org.eclipse.jst.ws.internal.axis2.creation.ui.wsrt.Axis2WebServiceRuntime">
+
+        <required-facet-version facet="jst.web" version="2.3" allow-newer="true" />
+        <required-facet-version facet="axis2.core" version="1.1" allow-newer="true" />
+        <required-facet-version facet="axis2.ext" version="1.1" allow-newer="true" />
+
+      </clientRuntime>
+    </extension>     
+    
+</plugin>
diff --git a/bundles/org.eclipse.jst.ws.axis2.creation.ui/src/org/eclipse/jst/ws/internal/axis2/creation/ui/plugin/WebServiceAxis2CreationUIPlugin.java b/bundles/org.eclipse.jst.ws.axis2.creation.ui/src/org/eclipse/jst/ws/internal/axis2/creation/ui/plugin/WebServiceAxis2CreationUIPlugin.java
new file mode 100644
index 0000000..1ebe6f5
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.creation.ui/src/org/eclipse/jst/ws/internal/axis2/creation/ui/plugin/WebServiceAxis2CreationUIPlugin.java
@@ -0,0 +1,62 @@
+/*******************************************************************************
+ * Copyright (c) 2007 WSO2 Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * WSO2 Inc. - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20070110   168762 sandakith@wso2.com - Lahiru Sandakith, Initial code to introduse the Axis2 
+ * 										  runtime to the framework for 168762
+ *******************************************************************************/
+package org.eclipse.jst.ws.internal.axis2.creation.ui.plugin;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class WebServiceAxis2CreationUIPlugin extends AbstractUIPlugin {
+
+	// The plug-in ID
+	public static final String PLUGIN_ID = "org.eclipse.jst.ws.axis2.creation.ui";
+
+	// The shared instance
+	private static WebServiceAxis2CreationUIPlugin plugin;
+	
+	/**
+	 * The constructor
+	 */
+	public WebServiceAxis2CreationUIPlugin() {
+		plugin = this;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+	 */
+	public void start(BundleContext context) throws Exception {
+		super.start(context);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+	 */
+	public void stop(BundleContext context) throws Exception {
+		plugin = null;
+		super.stop(context);
+	}
+
+	/**
+	 * @return the shared instance
+	 */
+	public static WebServiceAxis2CreationUIPlugin getDefault() {
+		return plugin;
+	}
+
+}
diff --git a/bundles/org.eclipse.jst.ws.axis2.creation.ui/src/org/eclipse/jst/ws/internal/axis2/creation/ui/widgets/bean/ServicesXMLSelectBeanWidget.java b/bundles/org.eclipse.jst.ws.axis2.creation.ui/src/org/eclipse/jst/ws/internal/axis2/creation/ui/widgets/bean/ServicesXMLSelectBeanWidget.java
new file mode 100644
index 0000000..55a27dc
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.creation.ui/src/org/eclipse/jst/ws/internal/axis2/creation/ui/widgets/bean/ServicesXMLSelectBeanWidget.java
@@ -0,0 +1,224 @@
+/*******************************************************************************
+ * Copyright (c) 2007 WSO2 Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * WSO2 Inc. - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20070110   168762 sandakith@wso2.com - Lahiru Sandakith, Initial code to introduse the Axis2 
+ * 										  runtime to the framework for 168762
+ *******************************************************************************/
+package org.eclipse.jst.ws.internal.axis2.creation.ui.widgets.bean;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jst.ws.axis2.creation.core.data.DataModel;
+import org.eclipse.jst.ws.axis2.creation.core.messages.Axis2CreationUIMessages;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.FileDialog;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.wst.command.internal.env.ui.widgets.SimpleWidgetDataContributor;
+import org.eclipse.wst.command.internal.env.ui.widgets.WidgetDataEvents;
+
+
+public class ServicesXMLSelectBeanWidget extends SimpleWidgetDataContributor 
+{
+	private DataModel 	model;
+	private Button	 	browseButton;
+	private Text 		servicesXMLPath;
+	private Button 		generateServicesXML;
+	private Button 		haveServicesXML;
+
+	public ServicesXMLSelectBeanWidget( DataModel model )
+	{
+		this.model = model;  
+	}
+
+	public WidgetDataEvents addControls( Composite parent, final Listener statusListener )
+	{
+		final Composite  mainComp = new Composite( parent, SWT.NONE );
+		GridLayout layout   = new GridLayout();
+		layout.numColumns = 14;
+		GridData   griddata = new GridData( GridData.FILL_HORIZONTAL );
+		Label      label    = new Label( mainComp, SWT.NONE );
+
+		griddata = new GridData( GridData.FILL_HORIZONTAL );
+		griddata.horizontalSpan = 14;
+		mainComp.setLayout( layout );
+		mainComp.setLayoutData( griddata );
+		label.setText( Axis2CreationUIMessages.LABEL_AXIS2_PREFERENCE_PAGE );
+		model.setGenerateServicesXML(true);
+		model.setServicesXML(false);
+
+		griddata = new GridData( GridData.FILL_HORIZONTAL );
+		griddata.horizontalSpan = 14;
+		haveServicesXML = new Button( mainComp, SWT.CHECK );
+		haveServicesXML.setText(Axis2CreationUIMessages.LABEL_HAVE_SERVICES_XML_FILE);	
+		haveServicesXML.setLayoutData(griddata);
+		haveServicesXML.addSelectionListener( new SelectionAdapter()
+		{
+			public void widgetSelected(SelectionEvent e)
+			{
+				if (haveServicesXML.getSelection()){
+					haveServicesXML.setSelection(true);
+					generateServicesXML.setSelection(false);
+					enableServicesXMLBrowse();
+				}else{
+					if (!generateServicesXML.getSelection()){
+						haveServicesXML.setSelection(true); 
+						generateServicesXML.setSelection(false);
+						enableServicesXMLBrowse();
+					}else{
+						haveServicesXML.setSelection(false);
+						disableServicesXMLBrowse();
+					}
+				}
+				model.setGenerateServicesXML(false);
+				model.setServicesXML(true);
+
+				// Need to trigger a validation at this point to ensure
+				// that the next button is enabled properly just in case
+				// this is the last page in the wizard.
+				statusListener.handleEvent( null );
+			}     
+		});
+		griddata = new GridData( GridData.FILL_HORIZONTAL );
+		griddata.horizontalSpan = 13;
+
+		servicesXMLPath = new Text( mainComp, SWT.BORDER );
+		servicesXMLPath.setText("");
+		servicesXMLPath.setLayoutData(griddata);
+		servicesXMLPath.addModifyListener( new ModifyListener()
+		{
+			public void modifyText(ModifyEvent e)
+			{
+				model.setPathToServicesXML( servicesXMLPath.getText() );
+				// Need to trigger a validation at this point to ensure
+				// that the next button is enabled properly just in case
+				// this is the last page in the wizard.
+				statusListener.handleEvent( null );
+			}
+		});
+
+		griddata = new GridData( );
+		griddata.horizontalSpan = 1;
+		griddata.minimumWidth = 50;
+		griddata.grabExcessHorizontalSpace = true;
+		browseButton = new Button( mainComp, SWT.NULL );
+		browseButton.setText(Axis2CreationUIMessages.LABEL_BROWSE);
+		browseButton.setLayoutData(griddata);
+		browseButton.addSelectionListener( new SelectionAdapter()
+		{
+			public void widgetSelected(SelectionEvent e)
+			{
+				handleBrowse(mainComp.getShell());
+				// Need to trigger a validation at this point to ensure
+				// that the next button is enabled properly just in case
+				// this is the last page in the wizard.
+				statusListener.handleEvent( null );
+			}     
+		}); 
+
+
+		griddata = new GridData( GridData.FILL_HORIZONTAL );
+		griddata.horizontalSpan = 14;
+		generateServicesXML = new Button( mainComp, SWT.CHECK );
+		generateServicesXML.setText( Axis2CreationUIMessages.LABEL_DEFAULT_SERVICES_XML_FILE );
+		generateServicesXML.setLayoutData(griddata);
+		generateServicesXML.setSelection(true);
+		generateServicesXML.addSelectionListener( new SelectionAdapter()
+		{
+			public void widgetSelected(SelectionEvent e)
+			{
+				if (generateServicesXML.getSelection()){
+					generateServicesXML.setSelection(true); 
+					haveServicesXML.setSelection(false);
+					disableServicesXMLBrowse();
+				}else{
+					if (!haveServicesXML.getSelection()){
+						generateServicesXML.setSelection(true); 
+						haveServicesXML.setSelection(false);
+					}else{
+						generateServicesXML.setSelection(false);
+					}
+				}
+				model.setGenerateServicesXML(true);
+				model.setServicesXML(false);
+				// Need to trigger a validation at this point to ensure
+				// that the next button is enabled properly just in case
+				// this is the last page in the wizard.
+				statusListener.handleEvent( null );
+			}     
+		}); 
+
+		disableServicesXMLBrowse();
+
+		return this;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.wst.command.env.ui.widgets.WidgetContributor#getStatus()
+	 */
+	public IStatus getStatus() 
+	{
+		IStatus result = null;
+
+		if( haveServicesXML.getSelection() && servicesXMLPath.getText().equals("") )
+		{
+			result = new Status( IStatus.ERROR, 
+								"id", 
+								0, 
+								Axis2CreationUIMessages.ERROR_INVALID_SERVICES_XML, 
+								null ); 
+		}
+
+		return result;
+	}
+
+	/**
+	 * enable the services.xml text and browse button
+	 */
+	private void enableServicesXMLBrowse(){
+		browseButton.setEnabled(true);
+		servicesXMLPath.setEnabled(true);
+	}
+
+	/**
+	 * disable the services.xml text and browse button
+	 */
+	private void disableServicesXMLBrowse(){
+		browseButton.setEnabled(false);
+		servicesXMLPath.setEnabled(false);
+	}
+
+	/**
+	 * Pops up the file browse dialog box
+	 */
+	private void handleBrowse(Shell parent) {
+		FileDialog fileDialog = new FileDialog(parent);
+		fileDialog.setFilterExtensions(new String[] { Axis2CreationUIMessages.FILE_XML });
+		String fileName = fileDialog.open();
+		if (fileName != null) {
+			servicesXMLPath.setText(fileName);
+			model.setPathToServicesXML( servicesXMLPath.getText() );
+		}
+	}
+}
+
+
+
diff --git a/bundles/org.eclipse.jst.ws.axis2.creation.ui/src/org/eclipse/jst/ws/internal/axis2/creation/ui/widgets/skeleton/WSDL2JAVASkelConfigWidget.java b/bundles/org.eclipse.jst.ws.axis2.creation.ui/src/org/eclipse/jst/ws/internal/axis2/creation/ui/widgets/skeleton/WSDL2JAVASkelConfigWidget.java
new file mode 100644
index 0000000..a5fa29b
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.creation.ui/src/org/eclipse/jst/ws/internal/axis2/creation/ui/widgets/skeleton/WSDL2JAVASkelConfigWidget.java
@@ -0,0 +1,506 @@
+/*******************************************************************************
+ * Copyright (c) 2007 WSO2 Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * WSO2 Inc. - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20070110   168762 sandakith@wso2.com - Lahiru Sandakith, Initial code to introduse the Axis2 
+ * 										  runtime to the framework for 168762
+ *******************************************************************************/
+package org.eclipse.jst.ws.internal.axis2.creation.ui.widgets.skeleton;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.Iterator;
+import java.util.Map;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jst.ws.axis2.consumption.core.utils.WSDLPropertyReader;
+import org.eclipse.jst.ws.axis2.core.utils.ClassLoadingUtil;
+import org.eclipse.jst.ws.axis2.creation.core.data.DataModel;
+import org.eclipse.jst.ws.axis2.creation.core.messages.Axis2CreationUIMessages;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.TableEditor;
+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.graphics.Point;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.swt.widgets.TableItem;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.wst.command.internal.env.core.common.StatusUtils;
+import org.eclipse.wst.command.internal.env.ui.widgets.SimpleWidgetDataContributor;
+import org.eclipse.wst.command.internal.env.ui.widgets.WidgetDataEvents;
+
+
+public class WSDL2JAVASkelConfigWidget extends SimpleWidgetDataContributor 
+{
+	private DataModel model;
+	IStatus status = Status.OK_STATUS;
+
+	//controls
+	//check box for server side interface
+	private Button generateServerSideInterfaceCheckBoxButton;
+	private Button generateAllCheckBoxButton;
+	private Button testCaseCheckBoxButton;
+	private Combo databindingTypeCombo;
+	// Text box to have the portname
+	private Combo portNameCombo;
+	//Text box to have the service name
+	private Combo serviceNameCombo;
+	private WSDLPropertyReader reader;
+	private java.util.List serviceQNameList = null;
+	private Table namespace2packageTable = null;
+	//Label holding the full qualified package name for generated code
+	private Text packageText;
+	//Checkbox to enable the generation of test case classes for the generated implementation of the webservice.
+	Label      label, fillLabel, fillLabel1, fillLabel2, fillLabel3, fillLabel4, fillLabel5, fillLabel6;
+
+	public WSDL2JAVASkelConfigWidget( DataModel model )	{
+		this.model = model;  
+	}
+
+	public WidgetDataEvents addControls( Composite parent, final Listener statusListener ){
+		Composite  mainComp = new Composite( parent, SWT.NONE );
+		GridLayout layout   = new GridLayout();
+		mainComp.setLayout(layout);
+
+		layout.numColumns = 3;
+		GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+		mainComp.setLayoutData( gd );
+
+		// service name
+		label = new Label(mainComp, SWT.NULL);
+		label.setText(Axis2CreationUIMessages.LABEL_SERVICE_NAME_CAPTION);
+
+		serviceNameCombo = new Combo(mainComp, SWT.DROP_DOWN | SWT.BORDER
+				| SWT.READ_ONLY);
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.horizontalSpan = 2;
+		serviceNameCombo.setLayoutData(gd);
+		serviceNameCombo.addSelectionListener(new SelectionListener() {
+			public void widgetSelected(SelectionEvent e) {
+				model.setServiceName(serviceNameCombo.getText());
+			}
+			public void widgetDefaultSelected(SelectionEvent e) {
+			}
+		});
+
+		// port name
+		label = new Label(mainComp, SWT.NULL);
+		label.setText(Axis2CreationUIMessages.LABEL_PORTNAME);
+		portNameCombo = new Combo(mainComp, SWT.DROP_DOWN | SWT.BORDER
+				| SWT.READ_ONLY);
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.horizontalSpan = 2;
+		portNameCombo.setLayoutData(gd);
+		portNameCombo.addSelectionListener(new SelectionListener() {
+			public void widgetSelected(SelectionEvent e) {
+				model.setPortName(portNameCombo.getText());
+			}
+			public void widgetDefaultSelected(SelectionEvent e) {
+			}
+		});
+
+		// Databinding
+		label = new Label(mainComp, SWT.NULL);
+		label.setText(Axis2CreationUIMessages.LABEL_DATABINDING_CAPTION);
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.horizontalSpan = 2;
+		databindingTypeCombo = new Combo(mainComp, SWT.DROP_DOWN | SWT.BORDER | SWT.READ_ONLY);
+		databindingTypeCombo.setLayoutData(gd);
+		fillDatabinderCombo();
+		databindingTypeCombo.select(0);
+		databindingTypeCombo.addSelectionListener(new SelectionListener() {
+			public void widgetSelected(SelectionEvent e) {
+				model.setDatabindingType(databindingTypeCombo.getText());
+			};
+			public void widgetDefaultSelected(SelectionEvent e) {
+			};
+		});
+
+		// package name
+		label = new Label(mainComp, SWT.NULL);
+		label.setText(Axis2CreationUIMessages.LABEL_PACKEGE_NAME);
+		packageText = new Text(mainComp, SWT.BORDER);
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.horizontalSpan = 2;
+
+		packageText.setLayoutData(gd);
+		packageText.setText(""); // get this text from the
+		packageText.addModifyListener(new ModifyListener() {
+			public void modifyText(ModifyEvent e) {
+				model.setPackageText(packageText.getText());
+			}
+		});
+
+		//filling label 
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.horizontalSpan = 3;
+		fillLabel = new Label(mainComp, SWT.HORIZONTAL | SWT.NULL);
+
+		//filling label 
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.horizontalSpan = 3;
+		fillLabel2 = new Label(mainComp, SWT.HORIZONTAL | SWT.NULL);
+
+		//filling label 
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.horizontalSpan = 3;
+		fillLabel3 = new Label(mainComp, SWT.HORIZONTAL | SWT.NULL);
+
+		//filling label 
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.horizontalSpan = 3;
+		fillLabel4 = new Label(mainComp, SWT.HORIZONTAL | SWT.NULL);
+
+		// generate test case option
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.horizontalSpan = 3;
+		testCaseCheckBoxButton = new Button(mainComp, SWT.CHECK);
+		testCaseCheckBoxButton.setLayoutData(gd);
+		testCaseCheckBoxButton
+		.setText(Axis2CreationUIMessages.LABEL_GENERATE_TESTCASE_CAPTION);
+		model.setTestCaseCheck(false);
+		testCaseCheckBoxButton.addSelectionListener(new SelectionListener() {
+			public void widgetSelected(SelectionEvent e) {
+				model.setTestCaseCheck(true);
+			}
+
+			public void widgetDefaultSelected(SelectionEvent e) {
+			}
+		});
+
+		model.setServerXMLCheck(true);
+
+		//the server side interface option
+		generateServerSideInterfaceCheckBoxButton = new Button(mainComp, SWT.CHECK);
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.horizontalSpan = 3;
+		generateServerSideInterfaceCheckBoxButton.setLayoutData(gd);
+		generateServerSideInterfaceCheckBoxButton.setSelection(false);
+		generateServerSideInterfaceCheckBoxButton.setText(Axis2CreationUIMessages.
+														  LABEL_GENERATE_SERVERSIDE_INTERFACE);
+		model.setGenerateAllCheck(false);
+		generateServerSideInterfaceCheckBoxButton.addSelectionListener(new SelectionListener() {
+			public void widgetSelected(SelectionEvent e) {
+				model.setGenerateServerSideInterface(true);
+			}
+			public void widgetDefaultSelected(SelectionEvent e) {
+			}
+		});
+
+		// generate all
+		generateAllCheckBoxButton = new Button(mainComp, SWT.CHECK);
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.horizontalSpan = 3;
+		generateAllCheckBoxButton.setLayoutData(gd);
+		generateAllCheckBoxButton.setSelection(false);
+		generateAllCheckBoxButton.setText(Axis2CreationUIMessages.LABEL_GENERATE_ALL);
+		generateAllCheckBoxButton.addSelectionListener(new SelectionListener() {
+			public void widgetSelected(SelectionEvent e) {
+				model.setGenerateAllCheck(true);
+			}
+			public void widgetDefaultSelected(SelectionEvent e) {
+			}
+		});
+		
+		//filling label 
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.horizontalSpan = 3;
+		fillLabel5 = new Label(mainComp, SWT.HORIZONTAL | SWT.NULL);
+
+		//filling label 
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.horizontalSpan = 3;
+		fillLabel6 = new Label(mainComp, SWT.HORIZONTAL | SWT.NULL);
+		
+		//add a table to set namespace to package mapping
+		gd = new GridData(GridData.FILL_BOTH);
+        gd.horizontalSpan = 3;
+        gd.verticalSpan = 5;
+        
+        namespace2packageTable = new Table(mainComp,SWT.BORDER|SWT.MULTI);
+        namespace2packageTable.setLinesVisible(true);
+        namespace2packageTable.setHeaderVisible(true); 
+        namespace2packageTable.setEnabled(true);
+        namespace2packageTable.setLayoutData(gd);
+       
+        declareColumn(namespace2packageTable,
+        		350, //a default width until we adjust
+        		Axis2CreationUIMessages.LABEL_NAMESPACE);
+        declareColumn(namespace2packageTable,
+        		200,//a default width until we adjust
+        		Axis2CreationUIMessages.LABEL_PACKAGE);
+        
+        namespace2packageTable.setVisible(true);
+        
+        // add the table editor
+        final TableEditor editor = new TableEditor(namespace2packageTable);
+        editor.setColumn(1);
+        editor.horizontalAlignment = SWT.LEFT;
+        editor.grabHorizontal = true;
+
+        namespace2packageTable.addListener(SWT.MouseDown, new Listener() {
+            public void handleEvent(Event event) {
+              Rectangle clientArea = namespace2packageTable.getClientArea();
+              Point pt = new Point(event.x, event.y);
+              int index = namespace2packageTable.getTopIndex();
+              while (index < namespace2packageTable.getItemCount()) {
+                boolean visible = false;
+                final TableItem item = namespace2packageTable.getItem(index);
+                for (int i = 0; i < namespace2packageTable.getColumnCount(); i++) {
+                  Rectangle rect = item.getBounds(i);
+                  if (rect.contains(pt)) {
+                    final int column = i;
+                    final Text text = new Text(namespace2packageTable, SWT.NONE);
+                    Listener textListener = new Listener() {
+                      public void handleEvent(final Event e) {
+                        switch (e.type) {
+                        case SWT.FocusOut:
+                          item.setText(column, text.getText());
+                          text.dispose();
+                          break;
+                        case SWT.Traverse:
+                          switch (e.detail) {
+                          case SWT.TRAVERSE_RETURN:
+                            item
+                                .setText(column, text
+                                    .getText());
+                          case SWT.TRAVERSE_ESCAPE:
+                            text.dispose();
+                            e.doit = false;
+                          }
+                          break;
+                        }
+                      }
+                    };
+                    text.addListener(SWT.FocusOut, textListener);
+                    text.addListener(SWT.Traverse, textListener);
+                    editor.setEditor(text, item, i);
+                    text.setText(item.getText(i));
+                    text.selectAll();
+                    text.setFocus();
+                    return;
+                  }
+                  if (!visible && rect.intersects(clientArea)) {
+                    visible = true;
+                  }
+                }
+                if (!visible)
+                  return;
+                index++;
+              }
+              model.setNamespaseToPackageMapping(getNs2PkgMapping());
+            }
+          });
+        
+		populateParamsFromWSDL();
+		populateModel();
+
+		return this;
+	}
+
+	private void populateModel() {
+		model.setServiceName(serviceNameCombo.getText());
+		model.setPortName(portNameCombo.getText());
+		model.setPackageText(packageText.getText());
+		model.setDatabindingType(databindingTypeCombo.getText());
+		model.setGenerateAllCheck(generateAllCheckBoxButton.getSelection());
+		model.setGenerateServerSideInterface(generateServerSideInterfaceCheckBoxButton.getSelection());
+		model.setTestCaseCheck(testCaseCheckBoxButton.getSelection());
+		model.setNamespaseToPackageMapping(getNs2PkgMapping());
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.wst.command.env.ui.widgets.WidgetContributor#getStatus()
+	 */
+	public IStatus getStatus() 
+	{
+		IStatus result = null;
+		return result;
+	}
+
+	private void populatePackageName() {
+		this.packageText.setText(reader.packageFromTargetNamespace());
+	}
+
+	/**
+	 * populate the service and the port from the WSDL this needs to be public
+	 * since the WSDLselection page may call this
+	 */
+	public void populateParamsFromWSDL() {
+		if (reader == null)
+			reader = new WSDLPropertyReader();
+		try {
+			String lname = model.getWsdlURI();
+			if (!"".equals(lname.trim())) {
+
+				reader.readWSDL(model.getWebProjectName(), lname);
+
+				this.serviceQNameList = reader.getServiceList();
+				if (!serviceQNameList.isEmpty()) {
+					serviceNameCombo.removeAll();
+					for (int i = 0; i < serviceQNameList.size(); i++) {
+						// add the local part of the
+						Object serviceQnameInstance = serviceQNameList.get(0);
+						Class QNameClass = ClassLoadingUtil.loadClassFromAntClassLoader("javax.xml.namespace.QName");
+						Method GetLocalPartMethod  = QNameClass.getMethod("getLocalPart", null);
+						Object resultLocalPart = GetLocalPartMethod.invoke(serviceQnameInstance, null);
+						serviceNameCombo.add(resultLocalPart.toString());
+					}
+					;
+					// select the first one as the default
+					serviceNameCombo.select(0);
+
+					// load the ports
+					loadPortNames();
+
+				} else {
+					// service name list being empty means we are switching to
+					// the interface mode
+					if (serviceNameCombo!=null) serviceNameCombo.removeAll();
+					if (portNameCombo!=null) portNameCombo.removeAll();
+
+				}
+
+				populatePackageName();
+
+				//populate the namespacess
+				loadNamespaces(reader.getDefinitionNamespaceMap());
+			}
+		} catch (Exception e) {
+			if (e.getClass().getName().equals("javax.wsdl.WSDLException"))
+			status = StatusUtils.errorStatus(NLS.bind(Axis2CreationUIMessages.ERROR_INVALID_WSDL_FILE_READ_WRITEL,new String[]{e.getLocalizedMessage()}), e);
+		}
+	}
+
+	private void loadPortNames() {
+		int selectionIndex = serviceNameCombo.getSelectionIndex();
+		if (selectionIndex != -1) {
+			java.util.List ports = reader.getPortNameList(serviceQNameList
+					.get(selectionIndex));
+			if (!ports.isEmpty()) {
+				portNameCombo.removeAll();
+				for (int i = 0; i < ports.size(); i++) {
+					// add the local part of the
+					portNameCombo.add(ports.get(i).toString());
+				}
+				portNameCombo.select(0);
+			} else {
+				// TODO error no ports found
+			}
+		}
+	}
+
+	/**
+	 * Fill the combo with proper databinding names
+	 */
+	private void fillDatabinderCombo() {
+		databindingTypeCombo.add(Axis2CreationUIMessages.DATA_BINDING_ADB);
+		databindingTypeCombo.add(Axis2CreationUIMessages.DATA_BINDING_NONE);
+		databindingTypeCombo.select(0);
+	}
+	
+	
+	/**
+	 * A util method to create a new column
+	 * @param table
+	 * @param width
+	 * @param colName
+	 */
+	private void declareColumn(Table table, int width,String colName){
+        TableColumn column = new TableColumn(table,SWT.NONE);
+        column.setWidth(width);
+        column.setText(colName);
+    }
+	
+	/**
+	 * Loads the namespaces
+	 * @param namespaceMap
+	 */
+	private void loadNamespaces(Map namespaceMap){
+		Iterator namespaces = namespaceMap.values().iterator();
+		namespace2packageTable.removeAll();
+        TableItem[] items = new TableItem[namespaceMap.size()]; // An item for each field
+        int i = 0;
+        while(namespaces.hasNext()){
+        	
+           items[i] = new TableItem(namespace2packageTable, SWT.NULL);
+           String namespace = (String)namespaces.next();
+           items[i].setText(0,namespace);
+           items[i].setText(1,getPackageFromNamespace(namespace));
+           i++;
+        }
+        namespace2packageTable.setVisible(true);
+	}
+	
+	/**
+	 * get the package to namespace mappings
+	 * @return
+	 */
+	public String getNs2PkgMapping(){
+		String returnList="";
+		TableItem[] items = namespace2packageTable.getItems();
+		String packageValue; 
+		for (int i=0;i<items.length;i++){
+			packageValue = items[i].getText(1);
+			if (packageValue!=null && !"".equals(packageValue)){
+				returnList = returnList +
+				             ("".equals(returnList)?"":",") +
+				             items[i].getText(0)+ "=" + packageValue;
+			}
+			
+		}
+		return "".equals(returnList)?null:returnList;
+	}
+	
+	
+	/**
+	 * get the package derived by  Namespace
+	 */
+	public String getPackageFromNamespace(String namespace){
+		
+		Object result = null;
+		try {
+			//Class URLProcessor = Class.forName("org.apache.axis2.util.URLProcessor");
+			Class URLProcessor = ClassLoadingUtil.loadClassFromAntClassLoader("org.apache.axis2.util.URLProcessor");
+			Class parameterTypes[] = new Class[1];
+			parameterTypes[0] = String.class;
+			Method makePackageNameMethod = URLProcessor.getMethod("makePackageName", parameterTypes);
+			Object args[] = new Object[1];
+			args[0] = namespace;
+			result = makePackageNameMethod.invoke(makePackageNameMethod, args);
+		} catch (SecurityException e) {
+			e.printStackTrace();
+		} catch (NoSuchMethodException e) {
+			e.printStackTrace();
+		} catch (IllegalArgumentException e) {
+			e.printStackTrace();
+		} catch (IllegalAccessException e) {
+			e.printStackTrace();
+		} catch (InvocationTargetException e) {
+			e.printStackTrace();
+		}
+		return (String)result;
+	}
+
+}
diff --git a/bundles/org.eclipse.jst.ws.axis2.creation.ui/src/org/eclipse/jst/ws/internal/axis2/creation/ui/wsrt/Axis2BeanConfigWidgetFactory.java b/bundles/org.eclipse.jst.ws.axis2.creation.ui/src/org/eclipse/jst/ws/internal/axis2/creation/ui/wsrt/Axis2BeanConfigWidgetFactory.java
new file mode 100644
index 0000000..05721c1
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.creation.ui/src/org/eclipse/jst/ws/internal/axis2/creation/ui/wsrt/Axis2BeanConfigWidgetFactory.java
@@ -0,0 +1,86 @@
+/*******************************************************************************
+ * Copyright (c) 2007 WSO2 Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * WSO2 Inc. - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20070110   168762 sandakith@wso2.com - Lahiru Sandakith, Initial code to introduse the Axis2 
+ * 										  runtime to the framework for 168762
+ *******************************************************************************/
+
+package org.eclipse.jst.ws.internal.axis2.creation.ui.wsrt;
+
+import org.eclipse.jst.ws.axis2.creation.core.command.Axis2DefaultingCommand;
+import org.eclipse.jst.ws.axis2.creation.core.data.DataModel;
+import org.eclipse.jst.ws.axis2.creation.core.messages.Axis2CreationUIMessages;
+import org.eclipse.jst.ws.internal.axis2.creation.ui.widgets.bean.ServicesXMLSelectBeanWidget;
+import org.eclipse.wst.command.internal.env.core.data.DataMappingRegistry;
+import org.eclipse.wst.command.internal.env.ui.widgets.INamedWidgetContributor;
+import org.eclipse.wst.command.internal.env.ui.widgets.INamedWidgetContributorFactory;
+import org.eclipse.wst.command.internal.env.ui.widgets.SimpleWidgetContributor;
+import org.eclipse.wst.command.internal.env.ui.widgets.WidgetContributor;
+import org.eclipse.wst.command.internal.env.ui.widgets.WidgetContributorFactory;
+import org.eclipse.wst.command.internal.env.ui.widgets.WidgetDataContributor;
+
+public class Axis2BeanConfigWidgetFactory implements INamedWidgetContributorFactory {
+
+	private SimpleWidgetContributor  servicesXMLSelectWidgetContrib;
+	private DataModel                model;
+
+	public Axis2BeanConfigWidgetFactory(){	  
+	}
+
+	public INamedWidgetContributor getFirstNamedWidget(){
+		if( servicesXMLSelectWidgetContrib == null ) init();
+		return servicesXMLSelectWidgetContrib;
+	}
+
+	public INamedWidgetContributor getNextNamedWidget( INamedWidgetContributor widgetContributor){
+		if( servicesXMLSelectWidgetContrib == null ) init();
+		INamedWidgetContributor nextWidgetContrib = null;
+		return nextWidgetContrib;
+	}
+
+	public void registerDataMappings(DataMappingRegistry dataRegistry) 
+	{
+		// Map the data model from the defaulting command to this widget factory.
+		// The framework will actually to the call to getWebServiceDataModel in
+		// the ExampleDefaultingCommand class and then call the setWebServiceDataModel
+		// method in this class.
+		dataRegistry.addMapping(Axis2DefaultingCommand.class, 
+								Axis2CreationUIMessages.LABEL_DATA_MODEL, 
+								Axis2BeanConfigWidgetFactory.class );
+	}
+
+	public void setWebServiceDataModel( DataModel model ){
+		this.model = model;
+	}
+
+	private void init(){
+		//Pages of Axis2 Web Services Java Bean Scenario
+		ServicesXMLSelectBeanWidget servicesXMLSelectWidget = new ServicesXMLSelectBeanWidget(model);
+		servicesXMLSelectWidgetContrib  = createWidgetContributor( 
+				Axis2CreationUIMessages.LABEL_AXIS2_PREFERENCE_PAGE_HEADING,
+				Axis2CreationUIMessages.LABEL_AXIS2_PREFERENCE_PAGE_SUB_HEADING, 
+				servicesXMLSelectWidget );
+	}
+
+	private SimpleWidgetContributor createWidgetContributor(String title, 
+															String description, 
+															final WidgetDataContributor contributor){
+		SimpleWidgetContributor widgetContrib  = new SimpleWidgetContributor();
+		widgetContrib.setTitle(title);
+		widgetContrib.setDescription(description);
+		widgetContrib.setFactory( new WidgetContributorFactory(){
+			public WidgetContributor create(){
+				return contributor;
+			}
+		});
+		return widgetContrib;
+	}   
+}
diff --git a/bundles/org.eclipse.jst.ws.axis2.creation.ui/src/org/eclipse/jst/ws/internal/axis2/creation/ui/wsrt/Axis2SkelConfigWidgetFactory.java b/bundles/org.eclipse.jst.ws.axis2.creation.ui/src/org/eclipse/jst/ws/internal/axis2/creation/ui/wsrt/Axis2SkelConfigWidgetFactory.java
new file mode 100644
index 0000000..ba5c8e4
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.creation.ui/src/org/eclipse/jst/ws/internal/axis2/creation/ui/wsrt/Axis2SkelConfigWidgetFactory.java
@@ -0,0 +1,86 @@
+/*******************************************************************************
+ * Copyright (c) 2007 WSO2 Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * WSO2 Inc. - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20070110   168762 sandakith@wso2.com - Lahiru Sandakith, Initial code to introduse the Axis2 
+ * 										  runtime to the framework for 168762
+ *******************************************************************************/
+
+package org.eclipse.jst.ws.internal.axis2.creation.ui.wsrt;
+
+import org.eclipse.jst.ws.axis2.creation.core.command.Axis2DefaultingCommand;
+import org.eclipse.jst.ws.axis2.creation.core.data.DataModel;
+import org.eclipse.jst.ws.axis2.creation.core.messages.Axis2CreationUIMessages;
+import org.eclipse.jst.ws.internal.axis2.creation.ui.widgets.skeleton.WSDL2JAVASkelConfigWidget;
+import org.eclipse.wst.command.internal.env.core.data.DataMappingRegistry;
+import org.eclipse.wst.command.internal.env.ui.widgets.INamedWidgetContributor;
+import org.eclipse.wst.command.internal.env.ui.widgets.INamedWidgetContributorFactory;
+import org.eclipse.wst.command.internal.env.ui.widgets.SimpleWidgetContributor;
+import org.eclipse.wst.command.internal.env.ui.widgets.WidgetContributor;
+import org.eclipse.wst.command.internal.env.ui.widgets.WidgetContributorFactory;
+import org.eclipse.wst.command.internal.env.ui.widgets.WidgetDataContributor;
+
+public class Axis2SkelConfigWidgetFactory implements INamedWidgetContributorFactory {
+
+	private SimpleWidgetContributor  skelConfig1WidgetContrib;
+	private DataModel                model;
+
+	public Axis2SkelConfigWidgetFactory(){	  
+	}
+
+	public INamedWidgetContributor getFirstNamedWidget(){
+		if( skelConfig1WidgetContrib == null ) init();
+		return skelConfig1WidgetContrib;
+	}
+
+	public INamedWidgetContributor getNextNamedWidget( INamedWidgetContributor widgetContributor){
+		if( skelConfig1WidgetContrib == null ) init();
+		INamedWidgetContributor nextWidgetContrib = null;
+		return nextWidgetContrib;
+	}
+
+	public void registerDataMappings(DataMappingRegistry dataRegistry){
+		// Map the data model from the defaulting command to this widget factory.
+		// The framework will actually to the call to getWebServiceDataModel in
+		// the ExampleDefaultingCommand class and then call the setWebServiceDataModel
+		// method in this class.
+		dataRegistry.addMapping( Axis2DefaultingCommand.class, 
+								 Axis2CreationUIMessages.LABEL_DATA_MODEL, 
+								 Axis2SkelConfigWidgetFactory.class );
+	}
+
+	public void setWebServiceDataModel( DataModel model ){
+		this.model = model;
+	}
+
+	private void init(){
+		WSDL2JAVASkelConfigWidget  skel1 = new WSDL2JAVASkelConfigWidget( model );
+
+		skelConfig1WidgetContrib  = createWidgetContributor( 
+				Axis2CreationUIMessages.LABEL_JAVA_2_WSDL_PAGE_HEADING,
+				Axis2CreationUIMessages.LABEL_JAVA_2_WSDL_PAGE_SUB_HEADING, 
+				skel1 );
+	}
+
+	private SimpleWidgetContributor createWidgetContributor(String title, 
+															String description, 
+															final WidgetDataContributor contributor){
+		SimpleWidgetContributor widgetContrib  = new SimpleWidgetContributor();
+		widgetContrib.setTitle(title);
+		widgetContrib.setDescription(description);
+		widgetContrib.setFactory( new WidgetContributorFactory(){
+			public WidgetContributor create(){
+				return contributor;
+			}
+		});
+
+		return widgetContrib;
+	}   
+}
diff --git a/bundles/org.eclipse.jst.ws.axis2.creation.ui/src/org/eclipse/jst/ws/internal/axis2/creation/ui/wsrt/Axis2WebService.java b/bundles/org.eclipse.jst.ws.axis2.creation.ui/src/org/eclipse/jst/ws/internal/axis2/creation/ui/wsrt/Axis2WebService.java
new file mode 100644
index 0000000..11e6e5d
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.creation.ui/src/org/eclipse/jst/ws/internal/axis2/creation/ui/wsrt/Axis2WebService.java
@@ -0,0 +1,110 @@
+/*******************************************************************************
+ * Copyright (c) 2007 WSO2 Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * WSO2 Inc. - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20070110   168762 sandakith@wso2.com - Lahiru Sandakith, Initial code to introduse the Axis2 runtime to the framework for 168762
+ *******************************************************************************/
+package org.eclipse.jst.ws.internal.axis2.creation.ui.wsrt;
+
+import java.util.Vector;
+
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.jst.ws.axis2.creation.core.command.Axis2BUCommand;
+import org.eclipse.jst.ws.axis2.creation.core.command.Axis2BUServiceCreationCommand;
+import org.eclipse.jst.ws.axis2.creation.core.command.Axis2BuildProjectCommand;
+import org.eclipse.jst.ws.axis2.creation.core.command.Axis2CleanupCommand;
+import org.eclipse.jst.ws.axis2.creation.core.command.Axis2DefaultingCommand;
+import org.eclipse.jst.ws.axis2.creation.core.command.Axis2ServicesXMLValidationCommand;
+import org.eclipse.jst.ws.axis2.creation.core.command.Axis2SkelImplCommand;
+import org.eclipse.jst.ws.axis2.creation.core.command.Axis2TDCommand;
+import org.eclipse.jst.ws.axis2.creation.core.command.Axis2TDServiceCreationCommand;
+import org.eclipse.jst.ws.axis2.creation.core.command.Axis2WSDL2JavaCommand;
+import org.eclipse.jst.ws.axis2.creation.core.command.Axis2WebservicesServerCommand;
+import org.eclipse.jst.ws.axis2.creation.core.data.DataModel;
+//import org.eclipse.jst.ws.internal.axis2.creation.ui.command.Page1ComesUpBeforeThisBUCommand;
+//import org.eclipse.jst.ws.internal.axis2.creation.ui.command.Page1ComesUpBeforeThisTDCommand;
+import org.eclipse.wst.command.internal.env.core.ICommandFactory;
+import org.eclipse.wst.command.internal.env.core.SimpleCommandFactory;
+import org.eclipse.wst.common.environment.IEnvironment;
+import org.eclipse.wst.ws.internal.wsrt.AbstractWebService;
+import org.eclipse.wst.ws.internal.wsrt.IContext;
+import org.eclipse.wst.ws.internal.wsrt.ISelection;
+import org.eclipse.wst.ws.internal.wsrt.WebServiceInfo;
+import org.eclipse.wst.ws.internal.wsrt.WebServiceScenario;
+
+public class Axis2WebService extends AbstractWebService
+{
+//	private Axis2WebServiceInfo axis2WebServiceInfo;
+
+	public Axis2WebService(WebServiceInfo info)
+	{
+		super(info);
+	}
+
+	public ICommandFactory assemble(IEnvironment env, IContext ctx,
+			ISelection sel, String project, String earProject)
+	{
+		return null;
+	}
+
+	public ICommandFactory deploy(IEnvironment env, IContext ctx, ISelection sel,
+			String project, String earProject)
+	{
+		return null;
+	}
+
+	public ICommandFactory develop(IEnvironment env, IContext ctx, ISelection sel,
+			String project, String earProject)
+	{
+		Vector commands = new Vector();
+		DataModel model = new DataModel();
+		//EclipseEnvironment environment = (EclipseEnvironment)env;
+
+		model.setWebProjectName(project);
+
+		if (ctx.getScenario().getValue() == WebServiceScenario.BOTTOMUP)	{ 
+			commands.add(new Axis2DefaultingCommand( model,this, ctx.getScenario().getValue() ) );
+			commands.add(new Axis2BUCommand( model ) );
+			commands.add(new Axis2ServicesXMLValidationCommand());
+			commands.add(new Axis2BUServiceCreationCommand(model,this,project));
+			commands.add(new Axis2WebservicesServerCommand(model, ctx.getScenario().getValue() ));
+		} 
+		else if (ctx.getScenario().getValue() == WebServiceScenario.TOPDOWN) {  
+			commands.add(new Axis2DefaultingCommand( model,this, ctx.getScenario().getValue()  ) );
+			commands.add(new Axis2TDCommand( model) );
+			commands.add(new Axis2WSDL2JavaCommand( model) );
+			commands.add( new Axis2BuildProjectCommand(ResourcesPlugin.getWorkspace().getRoot().getProject(project),true));
+			commands.add(new Axis2TDServiceCreationCommand(model,this,project));
+			commands.add(new Axis2WebservicesServerCommand(model, ctx.getScenario().getValue()));
+			//yes, again invoke the build command to redeploy the service after complete full build
+			commands.add( new Axis2BuildProjectCommand(ResourcesPlugin.getWorkspace().getRoot().getProject(project),true));
+			commands.add(new Axis2SkelImplCommand(this.getWebServiceInfo(),model));
+			commands.add(new Axis2CleanupCommand());
+		} 
+		else 
+		{
+			return null;
+		}
+
+		return new SimpleCommandFactory(commands);
+	}
+
+	public ICommandFactory install(IEnvironment env, IContext ctx, ISelection sel,
+			String project, String earProject)
+	{
+		return null;
+	}
+
+	public ICommandFactory run(IEnvironment env, IContext ctx, ISelection sel,
+			String project, String earProject)
+	{
+		return null;
+	}
+}
diff --git a/bundles/org.eclipse.jst.ws.axis2.creation.ui/src/org/eclipse/jst/ws/internal/axis2/creation/ui/wsrt/Axis2WebServiceInfo.java b/bundles/org.eclipse.jst.ws.axis2.creation.ui/src/org/eclipse/jst/ws/internal/axis2/creation/ui/wsrt/Axis2WebServiceInfo.java
new file mode 100644
index 0000000..5235e9d
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.creation.ui/src/org/eclipse/jst/ws/internal/axis2/creation/ui/wsrt/Axis2WebServiceInfo.java
@@ -0,0 +1,20 @@
+/*******************************************************************************
+ * Copyright (c) 2007 WSO2 Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * WSO2 Inc. - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20070110   168762 sandakith@wso2.com - Lahiru Sandakith, Initial code to introduse the Axis2 
+ * 										  runtime to the framework for 168762
+ *******************************************************************************/
+
+package org.eclipse.jst.ws.internal.axis2.creation.ui.wsrt;
+
+public class Axis2WebServiceInfo {
+
+}
diff --git a/bundles/org.eclipse.jst.ws.axis2.creation.ui/src/org/eclipse/jst/ws/internal/axis2/creation/ui/wsrt/Axis2WebServiceRuntime.java b/bundles/org.eclipse.jst.ws.axis2.creation.ui/src/org/eclipse/jst/ws/internal/axis2/creation/ui/wsrt/Axis2WebServiceRuntime.java
new file mode 100644
index 0000000..0dfb583
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.creation.ui/src/org/eclipse/jst/ws/internal/axis2/creation/ui/wsrt/Axis2WebServiceRuntime.java
@@ -0,0 +1,36 @@
+/*******************************************************************************
+ * Copyright (c) 2007 WSO2 Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * WSO2 Inc. - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20070110   168762 sandakith@wso2.com - Lahiru Sandakith, Initial code to introduse the Axis2 
+ * 										  runtime to the framework for 168762
+ *******************************************************************************/
+
+package org.eclipse.jst.ws.internal.axis2.creation.ui.wsrt;
+
+import org.eclipse.jst.ws.internal.axis2.consumption.ui.wsrt.Axis2WebServiceClient;
+import org.eclipse.wst.ws.internal.wsrt.AbstractWebServiceRuntime;
+import org.eclipse.wst.ws.internal.wsrt.IWebService;
+import org.eclipse.wst.ws.internal.wsrt.IWebServiceClient;
+import org.eclipse.wst.ws.internal.wsrt.WebServiceClientInfo;
+import org.eclipse.wst.ws.internal.wsrt.WebServiceInfo;
+
+public class Axis2WebServiceRuntime extends AbstractWebServiceRuntime
+{
+
+	public IWebService getWebService(WebServiceInfo info){
+		return new Axis2WebService(info);
+	}
+
+	public IWebServiceClient getWebServiceClient(WebServiceClientInfo info){
+		return new Axis2WebServiceClient(info);
+	}
+	
+}
diff --git a/bundles/org.eclipse.jst.ws.axis2.ui/.classpath b/bundles/org.eclipse.jst.ws.axis2.ui/.classpath
new file mode 100644
index 0000000..304e861
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.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/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/bundles/org.eclipse.jst.ws.axis2.ui/.project b/bundles/org.eclipse.jst.ws.axis2.ui/.project
new file mode 100644
index 0000000..acc7e17
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.ui/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.jst.ws.axis2.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/bundles/org.eclipse.jst.ws.axis2.ui/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.jst.ws.axis2.ui/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..c69c26a
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.ui/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,57 @@
+#Tue Mar 20 10:45:38 LKT 2007
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
+org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
+org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
+org.eclipse.jdt.core.compiler.problem.nullReference=ignore
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.5
diff --git a/bundles/org.eclipse.jst.ws.axis2.ui/META-INF/MANIFEST.MF b/bundles/org.eclipse.jst.ws.axis2.ui/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..27f1398
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.ui/META-INF/MANIFEST.MF
@@ -0,0 +1,17 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Axis2 Ui Plug-in
+Bundle-SymbolicName: org.eclipse.jst.ws.axis2.ui;singleton:=true
+Bundle-Version: 1.0.0
+Bundle-Activator: org.eclipse.jst.ws.axis2.ui.plugin.WebServiceAxis2UIPlugin
+Bundle-Vendor: WSO2
+Bundle-Localization: plugin
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.jst.ws.axis2.core,
+ org.eclipse.jst.ws,
+ org.eclipse.jst.ws.ui
+Eclipse-LazyStart: true
+Export-Package: org.eclipse.jst.ws.axis2.ui.plugin,
+ org.eclipse.jst.ws.internal.axis2.consumption.ui.preferences
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
diff --git a/bundles/org.eclipse.jst.ws.axis2.ui/build.properties b/bundles/org.eclipse.jst.ws.axis2.ui/build.properties
new file mode 100644
index 0000000..30b2fc4
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.ui/build.properties
@@ -0,0 +1,6 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               plugin.properties,\
+               plugin.xml
diff --git a/bundles/org.eclipse.jst.ws.axis2.ui/plugin.properties b/bundles/org.eclipse.jst.ws.axis2.ui/plugin.properties
new file mode 100644
index 0000000..a30093d
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.ui/plugin.properties
@@ -0,0 +1,21 @@
+###############################################################################
+# Copyright (c) 2007 WSO2 Inc. and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+# WSO2 Inc. - initial API and implementation
+# yyyymmdd bug      Email and other contact information
+# -------- -------- -----------------------------------------------------------
+# 20070118   168762 sandakith@wso2.com - Lahiru Sandakith, Initial code to introduse the Axis2 runtime to the framework for 168762
+###############################################################################
+#
+
+#
+# Messages in plugin.xml.
+# Web Services Preferance Pages
+#
+# Categories
+PREFERENCE_CATEGORY_AXIS2_RUNTIME=Axis2 Preferences 
diff --git a/bundles/org.eclipse.jst.ws.axis2.ui/plugin.xml b/bundles/org.eclipse.jst.ws.axis2.ui/plugin.xml
new file mode 100644
index 0000000..5f22106
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.ui/plugin.xml
@@ -0,0 +1,12 @@
+<plugin>
+  
+   <extension point="org.eclipse.ui.preferencePages">     
+      <page
+            name="%PREFERENCE_CATEGORY_AXIS2_RUNTIME"
+            category="org.eclipse.wst.ws.internal.ui.preferences.name"
+            class="org.eclipse.jst.ws.internal.axis2.consumption.ui.preferences.Axis2RuntimePreferencePage"
+            id="org.eclipse.jst.ws.internal.axis2.consumption.ui.preferences.Axis2RuntimePreferencePage">
+      </page>
+   </extension>
+   
+</plugin>
\ No newline at end of file
diff --git a/bundles/org.eclipse.jst.ws.axis2.ui/src/org/eclipse/jst/ws/axis2/ui/plugin/WebServiceAxis2UIPlugin.java b/bundles/org.eclipse.jst.ws.axis2.ui/src/org/eclipse/jst/ws/axis2/ui/plugin/WebServiceAxis2UIPlugin.java
new file mode 100644
index 0000000..66cb17e
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.ui/src/org/eclipse/jst/ws/axis2/ui/plugin/WebServiceAxis2UIPlugin.java
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ * Copyright (c) 2007 WSO2 Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * WSO2 Inc. - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20070130   168762 sandakith@wso2.com - Lahiru Sandakith, Initial code to introduse the Axis2 
+ * 										  runtime to the framework for 168762
+ *******************************************************************************/
+package org.eclipse.jst.ws.axis2.ui.plugin;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class WebServiceAxis2UIPlugin extends AbstractUIPlugin {
+
+	// The plug-in ID
+	public static final String PLUGIN_ID = "org.eclipse.jst.ws.axis2.ui.plugin";
+
+	// The shared instance
+	private static WebServiceAxis2UIPlugin plugin;
+	
+	/**
+	 * The constructor
+	 */
+	public WebServiceAxis2UIPlugin() {
+		plugin = this;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+	 */
+	public void start(BundleContext context) throws Exception {
+		super.start(context);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+	 */
+	public void stop(BundleContext context) throws Exception {
+		plugin = null;
+		super.stop(context);
+	}
+
+	/**
+	 * Returns the shared instance
+	 *
+	 * @return the shared instance
+	 */
+	public static WebServiceAxis2UIPlugin getDefault() {
+		return plugin;
+	}
+
+}
diff --git a/bundles/org.eclipse.jst.ws.axis2.ui/src/org/eclipse/jst/ws/internal/axis2/consumption/ui/preferences/Axis2RuntimePreferencePage.java b/bundles/org.eclipse.jst.ws.axis2.ui/src/org/eclipse/jst/ws/internal/axis2/consumption/ui/preferences/Axis2RuntimePreferencePage.java
new file mode 100644
index 0000000..db3a06d
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis2.ui/src/org/eclipse/jst/ws/internal/axis2/consumption/ui/preferences/Axis2RuntimePreferencePage.java
@@ -0,0 +1,400 @@
+/*******************************************************************************
+ * Copyright (c) 2007 WSO2 Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * WSO2 Inc. - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20070130   168762 sandakith@wso2.com - Lahiru Sandakith, Initial code to introduse the Axis2 
+ * 										  runtime to the framework for 168762
+ *******************************************************************************/
+package org.eclipse.jst.ws.internal.axis2.consumption.ui.preferences;
+
+import java.io.File;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jface.preference.PreferencePage;
+import org.eclipse.jst.ws.axis2.core.plugin.data.ServerModel;
+import org.eclipse.jst.ws.axis2.core.plugin.messages.Axis2CoreUIMessages;
+import org.eclipse.jst.ws.axis2.core.utils.Axis2CoreUtils;
+import org.eclipse.jst.ws.axis2.core.utils.RuntimePropertyUtils;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.DirectoryDialog;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.TabFolder;
+import org.eclipse.swt.widgets.TabItem;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPreferencePage;
+
+public class Axis2RuntimePreferencePage extends PreferencePage implements
+		IWorkbenchPreferencePage {
+
+	private Button browseButton; 
+	private Text axis2Path; 
+	private Label statusLabel;
+	@SuppressWarnings("unused")
+	private IStatus status = Status.OK_STATUS;
+	private boolean warExist = false;
+
+	  
+	protected Control createContents(Composite superparent) {
+		status = Status.OK_STATUS;
+		
+		final Composite  mainComp = new Composite( superparent, SWT.NONE );
+		
+		TabFolder axis2PreferenceTab = new TabFolder(mainComp, SWT.NONE);
+		TabItem runtimeInstalLocationItem = new TabItem(axis2PreferenceTab, SWT.NONE);
+		runtimeInstalLocationItem.setText(Axis2CoreUIMessages.AXIS2_RUNTIME);
+		
+		//---------------------------------------------------Axis2 Rintume Location Group------------------------------//
+		Group runtimeGroup = new Group(axis2PreferenceTab, SWT.NONE);
+		runtimeGroup.setText("Axis2 Rintume Location");
+		runtimeInstalLocationItem.setControl(runtimeGroup);
+		
+		Label label = new Label( runtimeGroup, SWT.NONE );
+		label.setText( Axis2CoreUIMessages.AXIS2_LOCATION );
+		label.setLocation(10,30);
+		label.setSize(100,20);
+		
+		axis2Path = new Text( runtimeGroup, SWT.BORDER );
+		axis2Path.setText(
+					(RuntimePropertyUtils.getServerPathFromPropertiesFile() == null) ? "" 
+					: RuntimePropertyUtils.getServerPathFromPropertiesFile()
+				);
+		axis2Path.setLocation(110,30);
+		axis2Path.setSize(400, 20);
+		axis2Path.addModifyListener( new ModifyListener(){
+			public void modifyText(ModifyEvent e){
+				ServerModel.setAxis2ServerPath( axis2Path.getText() );
+				warExist =runtimeExist(axis2Path.getText());
+				if (warExist) {
+					status = RuntimePropertyUtils.writeServerPathToPropertiesFile(
+																axis2Path.getText());
+				}
+			}
+		});
+		browseButton = new Button( runtimeGroup, SWT.NONE );
+		browseButton.setText(Axis2CoreUIMessages.LABEL_BROUSE);
+		browseButton.setLocation(520,30);
+		browseButton.setSize(70, 20);
+		browseButton.addSelectionListener( new SelectionAdapter()
+		{
+			public void widgetSelected(SelectionEvent e)
+			{
+				handleBrowse(mainComp.getShell());
+			}     
+		}); 
+	
+		if(axis2Path.getText().equals(Axis2CoreUIMessages.NULL)){
+			status = new Status( IStatus.ERROR, 
+					"id", 
+					0, 
+					Axis2CoreUIMessages.ERROR_INVALID_AXIS2_SERVER_LOCATION, 
+					null ); 
+		}
+		
+		
+		statusLabel = new Label( runtimeGroup, SWT.NONE );
+		statusLabel.setLocation(20,100);
+		statusLabel.setSize(560,40);
+		statusLabel.setAlignment(SWT.CENTER);
+		statusLabel.setText(
+				(axis2Path.getText().equals("") || !warExist) ?Axis2CoreUIMessages.LABEL_AXIS2_RUNTIME_LOAD_ERROR
+						: Axis2CoreUIMessages.LABEL_AXIS2_RUNTIME_LOAD
+		);
+		
+		warExist =runtimeExist(axis2Path.getText());
+		
+		TabItem codegenPreferencesItem = new TabItem(axis2PreferenceTab, SWT.NONE);
+		codegenPreferencesItem.setText(Axis2CoreUIMessages.AXIS2_PREFERENCES);
+		
+		//---------------------------------------------------Axis2 Runtime Preferences------------------------------//
+		
+		Group codegenGroup = new Group(axis2PreferenceTab, SWT.NONE);
+		codegenGroup.setText("Axis2 Runtime Preferences");
+		codegenPreferencesItem.setControl(codegenGroup);
+		
+		//Service Codegen Options
+		Label serviceCodegenLabel = new Label( codegenGroup, SWT.NONE );
+		serviceCodegenLabel.setText( Axis2CoreUIMessages.LABEL_WEB_SERVICE_CODEGEN);
+		serviceCodegenLabel.setLocation(10,30);
+		serviceCodegenLabel.setSize(200,20);
+		
+		//Data binding
+		Label databindingLabel = new Label( codegenGroup, SWT.NONE );
+		databindingLabel.setText( Axis2CoreUIMessages.LABEL_DATABINDING);
+		databindingLabel.setLocation(10,60);
+		databindingLabel.setSize(200,20);
+		
+		final Text databindingText = new Text( codegenGroup,SWT.BORDER );
+		databindingText.setText(Axis2CoreUIMessages.ADB);
+		databindingText.addModifyListener( new ModifyListener() {
+			public void modifyText(ModifyEvent e){
+				ServerModel.setAxis2ServerPath( databindingText.getText() );
+			}
+		});
+		databindingText.setLocation(220,60);
+		databindingText.setSize(100,20);
+		
+		// generate test case option
+		Button testCaseCheckBoxButton = new Button(codegenGroup, SWT.CHECK);
+		testCaseCheckBoxButton.setText(Axis2CoreUIMessages.LABEL_GENERATE_TESTCASE_CAPTION);
+		//model.setTestCaseCheck(false);
+		testCaseCheckBoxButton.addSelectionListener(new SelectionListener() {
+			public void widgetSelected(SelectionEvent e) {
+				//model.setTestCaseCheck(true);
+			}
+
+			public void widgetDefaultSelected(SelectionEvent e) {
+			}
+		});
+		testCaseCheckBoxButton.setLocation(10, 90);
+		testCaseCheckBoxButton.setSize(300, 15);
+
+		//model.setServerXMLCheck(true);
+
+		//the server side interface option
+		Button generateServerSideInterfaceCheckBoxButton = new Button(codegenGroup, SWT.CHECK);
+		generateServerSideInterfaceCheckBoxButton.setSelection(false);
+		generateServerSideInterfaceCheckBoxButton.setText(Axis2CoreUIMessages.LABEL_GENERATE_SERVERSIDE_INTERFACE);
+		//model.setGenerateAllCheck(false);
+		generateServerSideInterfaceCheckBoxButton.addSelectionListener(new SelectionListener() {
+			public void widgetSelected(SelectionEvent e) {
+				//model.setGenerateServerSideInterface(true);
+			}
+			public void widgetDefaultSelected(SelectionEvent e) {
+			}
+		});
+		generateServerSideInterfaceCheckBoxButton.setLocation(10, 120);
+		generateServerSideInterfaceCheckBoxButton.setSize(300, 15);
+
+		// generate all
+		Button generateAllCheckBoxButton = new Button(codegenGroup, SWT.CHECK);
+		generateAllCheckBoxButton.setSelection(false);
+		generateAllCheckBoxButton.setText(Axis2CoreUIMessages.LABEL_GENERATE_ALL);
+		generateAllCheckBoxButton.addSelectionListener(new SelectionListener() {
+			public void widgetSelected(SelectionEvent e) {
+				//model.setGenerateAllCheck(true);
+			}
+			public void widgetDefaultSelected(SelectionEvent e) {
+			}
+		});
+		generateAllCheckBoxButton.setLocation(10, 150);
+		generateAllCheckBoxButton.setSize(350, 15);
+		
+		///////////////////////////////////////////////////////////////////////////////////////////////////
+		
+		//seperator
+		Label seperatorLabel0 = new Label( codegenGroup, SWT.SEPARATOR|SWT.BORDER);
+		seperatorLabel0.setLocation(10,185);
+		seperatorLabel0.setSize(570,1);
+		
+		///Client Codegen Options
+		Label clientCodegenLabel = new Label( codegenGroup, SWT.NONE );
+		clientCodegenLabel.setText( Axis2CoreUIMessages.LABEL_WEB_SERVICE_CLIENT_CODEGEN);
+		clientCodegenLabel.setLocation(10,200);
+		clientCodegenLabel.setSize(200,20);
+		
+		//Client type label 
+		Label clientLabel = new Label(codegenGroup, SWT.HORIZONTAL | SWT.NULL);
+		clientLabel.setText(Axis2CoreUIMessages.LABEL_CLIENT_SIDE);
+		clientLabel.setLocation(10,240);
+		clientLabel.setSize(70,20); 
+		
+		//client side buttons
+		Button syncAndAsyncRadioButton = new Button(codegenGroup, SWT.RADIO);
+		syncAndAsyncRadioButton.setText(Axis2CoreUIMessages.LABEL_SYNC_AND_ASYNC);
+		syncAndAsyncRadioButton.setVisible(true);
+		syncAndAsyncRadioButton.setSelection(true);
+		syncAndAsyncRadioButton.addSelectionListener(new SelectionListener() {
+			public void widgetSelected(SelectionEvent e) {
+				//model.setSync(syncOnlyRadioButton.getSelection());
+				//model.setSync(asyncOnlyRadioButton.getSelection());
+			}
+			public void widgetDefaultSelected(SelectionEvent e) {
+			}
+		});
+		syncAndAsyncRadioButton.setLocation(80,240);
+		syncAndAsyncRadioButton.setSize(190,20); 
+		
+		Button syncOnlyRadioButton = new Button(codegenGroup, SWT.RADIO);
+		syncOnlyRadioButton.setText(Axis2CoreUIMessages.LABEL_SYNC);
+		syncOnlyRadioButton.setSelection(false);
+		syncOnlyRadioButton.addSelectionListener(new SelectionListener() {
+			public void widgetSelected(SelectionEvent e) {
+				//model.setSync(syncOnlyRadioButton.getSelection());
+			}
+			public void widgetDefaultSelected(SelectionEvent e) {
+			}
+		});
+		syncOnlyRadioButton.setLocation(280,240);
+		syncOnlyRadioButton.setSize(170,20); 
+
+		Button asyncOnlyRadioButton = new Button(codegenGroup, SWT.RADIO);
+		asyncOnlyRadioButton.setText(Axis2CoreUIMessages.LABEL_ASYNC);
+		asyncOnlyRadioButton.setSelection(false);
+		asyncOnlyRadioButton.addSelectionListener(new SelectionListener() {
+			public void widgetSelected(SelectionEvent e) {
+				//model.setSync(asyncOnlyRadioButton.getSelection());
+			}
+			public void widgetDefaultSelected(SelectionEvent e) {
+			}
+		});
+		asyncOnlyRadioButton.setLocation(460,240);
+		asyncOnlyRadioButton.setSize(170,20);
+		
+		//Data binding
+		Label clientDatabindingLabel = new Label( codegenGroup, SWT.NONE );
+		clientDatabindingLabel.setText( Axis2CoreUIMessages.LABEL_DATABINDING);
+		clientDatabindingLabel.setLocation(10,270);
+		clientDatabindingLabel.setSize(200,20);
+		
+		final Text databindingText1 = new Text( codegenGroup, SWT.BORDER );
+		databindingText1.setText(Axis2CoreUIMessages.ADB);
+		databindingText1.addModifyListener( new ModifyListener() {
+			public void modifyText(ModifyEvent e){
+				ServerModel.setAxis2ServerPath( databindingText1.getText() );
+			}
+		});
+		databindingText1.setLocation(220,270);
+		databindingText1.setSize(100,20);
+		
+		
+		// generate test case option
+		Button clientTestCaseCheckBoxButton = new Button(codegenGroup, SWT.CHECK);
+		clientTestCaseCheckBoxButton.setText(Axis2CoreUIMessages.LABEL_GENERATE_TESTCASE_CAPTION);
+		//model.setTestCaseCheck(false);
+		clientTestCaseCheckBoxButton.addSelectionListener(new SelectionListener() {
+			public void widgetSelected(SelectionEvent e) {
+				//model.setTestCaseCheck(true);
+			}
+
+			public void widgetDefaultSelected(SelectionEvent e) {
+			}
+		});
+		clientTestCaseCheckBoxButton.setLocation(10,300);
+		clientTestCaseCheckBoxButton.setSize(300, 15);
+
+		//model.setServerXMLCheck(true);
+
+		// generate all
+		Button clientGenerateAllCheckBoxButton = new Button(codegenGroup, SWT.CHECK);
+		clientGenerateAllCheckBoxButton.setSelection(false);
+		clientGenerateAllCheckBoxButton.setText(Axis2CoreUIMessages.LABEL_GENERATE_ALL);
+		clientGenerateAllCheckBoxButton.addSelectionListener(new SelectionListener() {
+			public void widgetSelected(SelectionEvent e) {
+				//model.setGenerateAllCheck(true);
+			}
+			public void widgetDefaultSelected(SelectionEvent e) {
+			}
+		});
+		clientGenerateAllCheckBoxButton.setLocation(10, 330);
+		clientGenerateAllCheckBoxButton.setSize(400, 15);
+		
+		///////////////////////////////////////////////////////////////////////////////////////////////////
+
+		//seperator
+		Label seperatorLabel1 = new Label( codegenGroup, SWT.SEPARATOR|SWT.BORDER);
+		seperatorLabel1.setLocation(10,365);
+		seperatorLabel1.setSize(570,1);
+		
+		///AAR Options
+		Label aarLabel = new Label( codegenGroup, SWT.NONE );
+		aarLabel.setText( Axis2CoreUIMessages.LABEL_WEB_SERVICE_AAR);
+		aarLabel.setLocation(10,380);
+		aarLabel.setSize(200,20);
+		
+		//aar extention 
+		Label aarExtentionLabel = new Label( codegenGroup, SWT.NONE );
+		aarExtentionLabel.setText( Axis2CoreUIMessages.LABEL_AAR_EXTENTION);
+		aarExtentionLabel.setLocation(10,420);
+		aarExtentionLabel.setSize(200,20);
+		
+		final Text aarExtentionText = new Text( codegenGroup, SWT.BORDER);
+		aarExtentionText.setText(Axis2CoreUIMessages.AAR);
+		aarExtentionText.addModifyListener( new ModifyListener() {
+			public void modifyText(ModifyEvent e){
+				ServerModel.setAxis2ServerPath( databindingText1.getText() );
+			}
+		});
+		aarExtentionText.setLocation(220,420);
+		aarExtentionText.setSize(100,20);
+		
+
+		axis2PreferenceTab.setSize(640, 500);
+		
+	    return mainComp;
+	}
+
+	public void init(IWorkbench workbench) {
+		// TODO Auto-generated method stub
+	}
+	
+	  
+	/**
+	 * Pops up the file browse dialog box
+	 */
+	private void handleBrowse(Shell parent) {
+		DirectoryDialog fileDialog = new DirectoryDialog(parent);
+		String fileName = fileDialog.open();
+		if (fileName != null) {
+			axis2Path.setText(fileName);
+			ServerModel.setAxis2ServerPath( axis2Path.getText() );
+		}
+	}
+	
+	private void statusUpdate(boolean status){
+		if (status) {
+			statusLabel.setText(Axis2CoreUIMessages.LABEL_AXIS2_RUNTIME_LOAD);
+			this.setErrorMessage(null);
+		} else {
+			statusLabel.setText(Axis2CoreUIMessages.LABEL_AXIS2_RUNTIME_LOAD_ERROR);
+			this.setErrorMessage(Axis2CoreUIMessages.LABEL_AXIS2_RUNTIME_LOAD_ERROR);
+		}
+		
+	}
+	
+	private boolean runtimeExist(String path){
+		File axis2HomeDir = new File(path);
+		if (axis2HomeDir.isDirectory()) {
+			String axis2DistPath = Axis2CoreUtils.addAnotherNodeToPath(
+													axis2HomeDir.getAbsolutePath(),
+													"dist");
+			if (new File(axis2DistPath).isDirectory()) {
+				String axis2WarPath = Axis2CoreUtils.addAnotherNodeToPath(
+						axis2DistPath,
+						"axis2.war");
+				if (new File(axis2WarPath).isFile()) {
+					statusUpdate(true);
+					return true;
+				} else {
+					statusUpdate(false);
+					return false;
+				}
+			} else {
+				statusUpdate(false);
+				return false;
+			}
+		}else{
+			statusUpdate(false);
+			return false;
+		}
+	}
+	
+}