hdt-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From rsha...@apache.org
Subject [1/8] HDT-32: Merge the code base of Hadoop-Eclipse project into HDT. Contributed by Srimanth Gunturi
Date Thu, 25 Jul 2013 04:29:17 GMT
Updated Branches:
  refs/heads/hadoop-eclipse-merge [created] 63bec2607


http://git-wip-us.apache.org/repos/asf/incubator-hdt/blob/63bec260/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/hdfs/HDFSPropertySection.java
----------------------------------------------------------------------
diff --git a/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/hdfs/HDFSPropertySection.java b/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/hdfs/HDFSPropertySection.java
new file mode 100644
index 0000000..26b2567
--- /dev/null
+++ b/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/hdfs/HDFSPropertySection.java
@@ -0,0 +1,182 @@
+package org.apache.hdt.ui.internal.hdfs;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.hdt.core.internal.hdfs.HDFSFileStore;
+import org.apache.hdt.core.internal.hdfs.HDFSFileSystem;
+import org.apache.log4j.Logger;
+import org.eclipse.core.filesystem.EFS;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.swt.custom.StackLayout;
+import org.eclipse.swt.events.ControlAdapter;
+import org.eclipse.swt.events.ControlEvent;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.layout.FormAttachment;
+import org.eclipse.swt.layout.FormData;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.views.properties.IPropertySheetEntry;
+import org.eclipse.ui.views.properties.PropertySheetPage;
+import org.eclipse.ui.views.properties.PropertySheetSorter;
+import org.eclipse.ui.views.properties.tabbed.AbstractPropertySection;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;
+
+public class HDFSPropertySection extends AbstractPropertySection {
+
+	private static final Logger logger = Logger.getLogger(HDFSPropertySection.class);
+
+	private static class HDFSPropertySheetPage extends PropertySheetPage {
+		public HDFSPropertySheetPage() {
+			final List<String> namesList = new ArrayList<String>();
+			namesList.add("User");
+			namesList.add("Group");
+			namesList.add("Is downloaded");
+			namesList.add("Effective Permissions");
+			namesList.add("User Permissions");
+			namesList.add("Group Permissions");
+			namesList.add("Other Permissions");
+			setSorter(new PropertySheetSorter() {
+				@Override
+				public int compare(IPropertySheetEntry entryA, IPropertySheetEntry entryB) {
+					int indexA = namesList.indexOf(entryA.getCategory());
+					int indexB = namesList.indexOf(entryB.getCategory());
+					return indexA - indexB;
+				}
+				@Override
+				public int compareCategories(String categoryA, String categoryB) {
+					int indexA = namesList.indexOf(categoryA);
+					int indexB = namesList.indexOf(categoryB);
+					return indexA - indexB;
+				}
+			});
+		}
+	}
+
+	private Composite topComposite;
+	private Composite nonHDFSComposite;
+	private StackLayout stackLayout;
+	private Composite hdfsResourceTopComposite;
+	private HDFSFileStore store;
+	private Composite hdfsResourceComposite;
+	private Composite hdfsPropertiesComposite;
+	private PropertySheetPage propertySheetPage;
+
+	public HDFSPropertySection() {
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.ui.views.properties.tabbed.AbstractPropertySection#createControls
+	 * (org.eclipse.swt.widgets.Composite,
+	 * org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage)
+	 */
+	@Override
+	public void createControls(Composite parent, TabbedPropertySheetPage page) {
+		topComposite = page.getWidgetFactory().createComposite(parent);
+		stackLayout = new StackLayout();
+		topComposite.setLayout(stackLayout);
+		// no HDFS
+		nonHDFSComposite = page.getWidgetFactory().createComposite(topComposite);
+		nonHDFSComposite.setLayout(new GridLayout());
+		page.getWidgetFactory().createLabel(nonHDFSComposite, "Selection is not a HDFS resource").setLayoutData(new GridData());
+		// Project
+		hdfsResourceTopComposite = page.getWidgetFactory().createComposite(topComposite);
+		final GridLayout hdfsResourceLayout = new GridLayout(2, false);
+		hdfsResourceLayout.marginLeft = hdfsResourceLayout.marginBottom = hdfsResourceLayout.marginWidth = hdfsResourceLayout.marginHeight = hdfsResourceLayout.marginTop = hdfsResourceLayout.marginRight = 0;
+		hdfsResourceTopComposite.setLayout(hdfsResourceLayout);
+		hdfsResourceComposite = page.getWidgetFactory().createComposite(hdfsResourceTopComposite);
+		GridData gd = new GridData(GridData.FILL_VERTICAL | GridData.GRAB_VERTICAL);
+		gd.widthHint = 0; // TODO increase width when graphs available.
+		hdfsResourceComposite.setLayoutData(gd);
+		hdfsPropertiesComposite = page.getWidgetFactory().createComposite(hdfsResourceTopComposite);
+		hdfsPropertiesComposite.setLayoutData(new GridData(GridData.FILL_BOTH));
+		hdfsPropertiesComposite.setLayout(new FillLayout());
+		createPropertiesPage(hdfsPropertiesComposite, page);
+	}
+
+	/**
+	 * @param hdfsPropertiesComposite2
+	 * @param page
+	 */
+	private void createPropertiesPage(Composite parent, final TabbedPropertySheetPage atabbedPropertySheetPage) {
+		super.createControls(parent, atabbedPropertySheetPage);
+		Composite composite = getWidgetFactory().createFlatFormComposite(parent);
+		propertySheetPage = new HDFSPropertySheetPage();
+		propertySheetPage.createControl(composite);
+		FormData data = new FormData();
+		data.left = new FormAttachment(0, 0);
+		data.right = new FormAttachment(100, 0);
+		data.top = new FormAttachment(0, 0);
+		data.bottom = new FormAttachment(100, 0);
+		propertySheetPage.getControl().setLayoutData(data);
+		propertySheetPage.getControl().addControlListener(new ControlAdapter() {
+			public void controlResized(ControlEvent e) {
+				atabbedPropertySheetPage.resizeScrolledComposite();
+			}
+		});
+		propertySheetPage.selectionChanged(getPart(), getSelection());
+	}
+
+	@Override
+	public void setInput(IWorkbenchPart part, ISelection selection) {
+		this.store = null;
+		Composite c = nonHDFSComposite;
+		if (!selection.isEmpty()) {
+			Object firstElement = ((IStructuredSelection) selection).getFirstElement();
+			if (firstElement instanceof IResource) {
+				IResource resource = (IResource) firstElement;
+				try {
+					if (resource.getLocationURI() != null && HDFSFileSystem.SCHEME.equals(resource.getLocationURI().getScheme())) {
+						c = hdfsResourceTopComposite;
+						store = (HDFSFileStore) EFS.getStore(resource.getLocationURI());
+					}
+				} catch (CoreException e) {
+					logger.warn(e.getMessage(), e);
+				}
+			}
+		}
+		selection = new StructuredSelection(this.store);
+		if (this.propertySheetPage != null)
+			this.propertySheetPage.selectionChanged(part, selection);
+		super.setInput(part, selection);
+		stackLayout.topControl = c;
+		topComposite.layout();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.ui.views.properties.tabbed.AbstractPropertySection#dispose()
+	 */
+	@Override
+	public void dispose() {
+		super.dispose();
+		if (this.propertySheetPage != null) {
+			this.propertySheetPage.dispose();
+			this.propertySheetPage = null;
+		}
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.ui.views.properties.tabbed.AbstractPropertySection#refresh()
+	 */
+	@Override
+	public void refresh() {
+		super.refresh();
+		if (this.propertySheetPage != null)
+			this.propertySheetPage.refresh();
+	}
+}

http://git-wip-us.apache.org/repos/asf/incubator-hdt/blob/63bec260/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/hdfs/NewHDFSServerAction.java
----------------------------------------------------------------------
diff --git a/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/hdfs/NewHDFSServerAction.java b/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/hdfs/NewHDFSServerAction.java
new file mode 100644
index 0000000..327acce
--- /dev/null
+++ b/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/hdfs/NewHDFSServerAction.java
@@ -0,0 +1,62 @@
+package org.apache.hdt.ui.internal.hdfs;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.IWorkbenchWindowActionDelegate;
+
+public class NewHDFSServerAction extends Action implements IWorkbenchWindowActionDelegate {
+
+	private Shell shell;
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.ui.IActionDelegate#run(org.eclipse.jface.action.IAction)
+	 */
+	@Override
+	public void run(IAction action) {
+		NewHDFSWizard wizard = new NewHDFSWizard();
+		WizardDialog dialog = new WizardDialog(shell, wizard);
+		dialog.open();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.ui.IActionDelegate#selectionChanged(org.eclipse.jface.action
+	 * .IAction, org.eclipse.jface.viewers.ISelection)
+	 */
+	@Override
+	public void selectionChanged(IAction action, ISelection selection) {
+		// TODO Auto-generated method stub
+
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.ui.IWorkbenchWindowActionDelegate#dispose()
+	 */
+	@Override
+	public void dispose() {
+		// TODO Auto-generated method stub
+
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.ui.IWorkbenchWindowActionDelegate#init(org.eclipse.ui.
+	 * IWorkbenchWindow)
+	 */
+	@Override
+	public void init(IWorkbenchWindow window) {
+		shell = window.getShell();
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-hdt/blob/63bec260/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/hdfs/NewHDFSServerWizardPage.java
----------------------------------------------------------------------
diff --git a/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/hdfs/NewHDFSServerWizardPage.java b/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/hdfs/NewHDFSServerWizardPage.java
new file mode 100644
index 0000000..f5eca4d
--- /dev/null
+++ b/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/hdfs/NewHDFSServerWizardPage.java
@@ -0,0 +1,242 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hdt.ui.internal.hdfs;
+
+import java.io.IOException;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.StringTokenizer;
+
+import org.apache.hdt.core.hdfs.HDFSClient;
+import org.apache.hdt.core.internal.hdfs.HDFSManager;
+import org.apache.hdt.ui.Activator;
+import org.apache.log4j.Logger;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.jface.wizard.WizardPage;
+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.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+
+public class NewHDFSServerWizardPage extends WizardPage {
+
+	private static final Logger logger = Logger.getLogger(NewHDFSServerWizardPage.class);
+	private Combo serverCombo;
+	private Text serverNameText;
+
+	private String hdfsServerLocation = null;
+	private String hdfsServerName = null;
+	private boolean overrideDefaultSecurity = false;
+	private String userId = null;
+	private List<String> groupIds = new ArrayList<String>();
+
+	protected NewHDFSServerWizardPage() {
+		super("HDFS Server Location");
+		setTitle("HDFS Server Location");
+		setDescription("Enter the name and location of the HDFS server");
+	}
+
+	@Override
+	public void createControl(Composite parent) {
+		Composite c = new Composite(parent, SWT.NONE);
+		final GridLayout layout = new GridLayout(2, false);
+		layout.marginLeft = 5;
+		layout.marginRight = 20;
+		c.setLayout(layout);
+
+		// Add Name
+		Label nameLabel = new Label(c, SWT.NONE);
+		nameLabel.setText("Name:");
+		serverNameText = new Text(c, SWT.BORDER | SWT.SINGLE);
+		serverNameText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+		serverNameText.addModifyListener(new ModifyListener() {
+			@Override
+			public void modifyText(ModifyEvent e) {
+				String nameText = serverNameText.getText();
+				if (nameText != null && nameText.trim().length() > 0) {
+					setHdfsServerName(nameText);
+				} else {
+					setHdfsServerName(null);
+				}
+				NewHDFSServerWizardPage.this.validate();
+			}
+		});
+
+		// Add Combo
+		Label comboLabel = new Label(c, SWT.NONE);
+		comboLabel.setText("URL:");
+		serverCombo = new Combo(c, SWT.BORDER);
+		serverCombo.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+		serverCombo.addModifyListener(new ModifyListener() {
+			@Override
+			public void modifyText(ModifyEvent e) {
+				String urlText = serverCombo.getText();
+				if (urlText != null && urlText.trim().length() > 0) {
+					try {
+						new URI(urlText);
+						setHdfsServerLocation(urlText);
+					} catch (URISyntaxException e1) {
+						setHdfsServerLocation(null);
+					}
+				}
+				NewHDFSServerWizardPage.this.validate();
+			}
+		});
+
+		// Add example
+		new Label(c, SWT.NONE);
+		Label exampleLabel = new Label(c, SWT.NONE);
+		exampleLabel.setText("Example: hdfs://hdfs.server.hostname:8020");
+		exampleLabel.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_DARK_GRAY));
+		// Security
+		Group securityGroup = new Group(c, SWT.SHADOW_ETCHED_IN);
+		GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.horizontalSpan = 2;
+		securityGroup.setLayoutData(gd);
+		securityGroup.setText("Security");
+		securityGroup.setLayout(new GridLayout(2, false));
+		// Override security checkbox
+		List<String> userAndGroupIds = getUserAndGroupIds();
+		final Button overrideSecurityCheckbox = new Button(securityGroup, SWT.CHECK);
+		gd = new GridData();
+		gd.horizontalSpan = 2;
+		overrideSecurityCheckbox.setText("Override default security");
+		overrideSecurityCheckbox.setLayoutData(gd);
+		overrideSecurityCheckbox.setSelection(overrideDefaultSecurity);
+		// User ID
+		new Label(securityGroup, SWT.NONE).setText("User ID:");
+		final Text userIdText = new Text(securityGroup, SWT.BORDER | SWT.SINGLE);
+		userIdText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+		userIdText.setEnabled(overrideDefaultSecurity);
+		userIdText.addModifyListener(new ModifyListener() {
+			@Override
+			public void modifyText(ModifyEvent e) {
+				userId = userIdText.getText();
+				if (userId != null && userId.trim().length() < 1)
+					userId = null;
+				validate();
+			}
+		});
+		if (userAndGroupIds != null && userAndGroupIds.size() > 0)
+			userIdText.setText(userAndGroupIds.get(0));
+		// Group IDs
+		Label groupIdsLabel = new Label(securityGroup, SWT.NONE);
+		groupIdsLabel.setText("Group IDs:");
+		groupIdsLabel.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING));
+		final org.eclipse.swt.widgets.List groupsList = new org.eclipse.swt.widgets.List(securityGroup, SWT.BORDER);
+		groupsList.setLayoutData(new GridData(GridData.FILL_BOTH));
+		groupsList.setEnabled(overrideDefaultSecurity);
+		if (userAndGroupIds != null && userAndGroupIds.size() > 1)
+			for (String groupId : userAndGroupIds.subList(1, userAndGroupIds.size()))
+				groupsList.add(groupId);
+		overrideSecurityCheckbox.addSelectionListener(new SelectionAdapter() {
+			@Override
+			public void widgetSelected(SelectionEvent e) {
+				overrideDefaultSecurity = overrideSecurityCheckbox.getSelection();
+				if (overrideDefaultSecurity) {
+					userId = userIdText.getText();
+					String[] gids = groupsList.getItems();
+					if (gids != null) {
+						for (String gid : gids) {
+							groupIds.add(gid);
+						}
+					}
+				} else {
+					userId = null;
+					groupIds.clear();
+				}
+				userIdText.setEnabled(overrideDefaultSecurity);
+				// We do not support selection/add/remove of groups
+				// groupsList.setEnabled(overrideDefaultSecurity);
+			}
+		});
+
+		// Populate
+		String currentUrls = Activator.getDefault().getPreferenceStore().getString(Activator.PREFERENCE_HDFS_URLS);
+		StringTokenizer st = new StringTokenizer(currentUrls, "\r\n", false);
+		while (st.hasMoreTokens()) {
+			serverCombo.add(st.nextToken());
+		}
+		setPageComplete(false);
+		this.setControl(c);
+	}
+
+	private List<String> getUserAndGroupIds() {
+		List<String> list = new ArrayList<String>();
+		try {
+			HDFSClient client = HDFSManager.INSTANCE.getClient(hdfsServerLocation);
+			List<String> defaultUserAndGroupIds = client.getDefaultUserAndGroupIds();
+			if (defaultUserAndGroupIds != null)
+				list.addAll(defaultUserAndGroupIds);
+		} catch (CoreException e) {
+			logger.warn("Unable to determine default user and groups", e);
+		} catch (IOException e) {
+			logger.warn("Unable to determine default user and groups", e);
+		} catch (InterruptedException e) {
+			logger.warn("Unable to determine default user and groups", e);
+		}
+		return list;
+	}
+
+	/**
+	 * 
+	 */
+	protected void validate() {
+		setPageComplete(getHdfsServerName() != null && getHdfsServerLocation() != null && (!overrideDefaultSecurity || userId != null));
+	}
+
+	public String getHdfsServerLocation() {
+		return hdfsServerLocation;
+	}
+
+	public void setHdfsServerLocation(String ambariServerUrl) {
+		this.hdfsServerLocation = ambariServerUrl;
+	}
+
+	public void setHdfsServerName(String hdfsServerName) {
+		this.hdfsServerName = hdfsServerName;
+	}
+
+	public String getHdfsServerName() {
+		return hdfsServerName;
+	}
+
+	public boolean isOverrideDefaultSecurity() {
+		return overrideDefaultSecurity;
+	}
+
+	public String getUserId() {
+		return userId;
+	}
+
+	public List<String> getGroupIds() {
+		return groupIds;
+	}
+}

http://git-wip-us.apache.org/repos/asf/incubator-hdt/blob/63bec260/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/hdfs/NewHDFSWizard.java
----------------------------------------------------------------------
diff --git a/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/hdfs/NewHDFSWizard.java b/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/hdfs/NewHDFSWizard.java
new file mode 100644
index 0000000..545ea3a
--- /dev/null
+++ b/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/hdfs/NewHDFSWizard.java
@@ -0,0 +1,96 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hdt.ui.internal.hdfs;
+
+import java.net.URI;
+import java.net.URISyntaxException;
+
+import org.apache.hdt.core.internal.hdfs.HDFSManager;
+import org.apache.hdt.ui.Activator;
+import org.apache.log4j.Logger;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.ui.INewWizard;
+import org.eclipse.ui.IWorkbench;
+
+public class NewHDFSWizard extends Wizard implements INewWizard {
+
+	private static Logger logger = Logger.getLogger(NewHDFSWizard.class);
+	private NewHDFSServerWizardPage serverLocationWizardPage = null;
+
+	public NewHDFSWizard() {
+		// TODO Auto-generated constructor stub
+	}
+
+	@Override
+	public void init(IWorkbench workbench, IStructuredSelection selection) {
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.jface.wizard.Wizard#addPages()
+	 */
+	@Override
+	public void addPages() {
+		super.addPages();
+		if (serverLocationWizardPage == null) {
+			serverLocationWizardPage = new NewHDFSServerWizardPage();
+		}
+		addPage(serverLocationWizardPage);
+	}
+
+	@Override
+	public boolean performFinish() {
+		if (serverLocationWizardPage != null) {
+			String ambariUrl = serverLocationWizardPage.getHdfsServerLocation();
+			if (ambariUrl != null) {
+				IPreferenceStore ps = Activator.getDefault().getPreferenceStore();
+				String currentUrls = ps.getString(Activator.PREFERENCE_HDFS_URLS);
+				if (currentUrls.indexOf(ambariUrl + "\r\n") < 0) {
+					currentUrls = ambariUrl + "\r\n" + currentUrls;
+					ps.setValue(Activator.PREFERENCE_HDFS_URLS, currentUrls);
+				}
+
+				Job j = new Job("Creating HDFS project [" + serverLocationWizardPage.getHdfsServerName() + "]") {
+					protected org.eclipse.core.runtime.IStatus run(org.eclipse.core.runtime.IProgressMonitor monitor) {
+						try {
+							HDFSManager.INSTANCE.createServer(serverLocationWizardPage.getHdfsServerName(), new URI(serverLocationWizardPage
+									.getHdfsServerLocation()), serverLocationWizardPage.isOverrideDefaultSecurity() ? serverLocationWizardPage.getUserId()
+									: null, serverLocationWizardPage.isOverrideDefaultSecurity() ? serverLocationWizardPage.getGroupIds() : null);
+						} catch (CoreException e) {
+							logger.warn(e.getMessage(), e);
+							return e.getStatus();
+						} catch (URISyntaxException e) {
+							logger.warn(e.getMessage(), e);
+						}
+						return Status.OK_STATUS;
+					};
+				};
+				j.schedule();
+				return true;
+			}
+		}
+		return false;
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-hdt/blob/63bec260/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/hdfs/PropertyTypeMapper.java
----------------------------------------------------------------------
diff --git a/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/hdfs/PropertyTypeMapper.java b/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/hdfs/PropertyTypeMapper.java
new file mode 100644
index 0000000..6263b7a
--- /dev/null
+++ b/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/hdfs/PropertyTypeMapper.java
@@ -0,0 +1,29 @@
+package org.apache.hdt.ui.internal.hdfs;
+
+import org.apache.hdt.core.internal.hdfs.HDFSFileSystem;
+import org.apache.log4j.Logger;
+import org.eclipse.core.filesystem.EFS;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.ui.views.properties.tabbed.ITypeMapper;
+
+public class PropertyTypeMapper implements ITypeMapper {
+	private static final Logger logger = Logger.getLogger(PropertyTypeMapper.class);
+
+	@Override
+	public Class mapType(Object object) {
+		if (object instanceof IResource) {
+			IResource resource = (IResource) object;
+			if(HDFSFileSystem.SCHEME.equals(resource.getLocationURI().getScheme())){
+				// This is a HDFS resource - only show the HDFS tab
+				try {
+					return EFS.getStore(resource.getLocationURI()).getClass();
+				} catch (CoreException e) {
+					logger.warn(e.getMessage(), e);
+				}
+			}
+		}
+		return object.getClass();
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-hdt/blob/63bec260/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/hdfs/ReconnectAction.java
----------------------------------------------------------------------
diff --git a/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/hdfs/ReconnectAction.java b/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/hdfs/ReconnectAction.java
new file mode 100644
index 0000000..947637c
--- /dev/null
+++ b/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/hdfs/ReconnectAction.java
@@ -0,0 +1,88 @@
+package org.apache.hdt.ui.internal.hdfs;
+
+import java.util.Iterator;
+
+import org.apache.hdt.core.internal.hdfs.HDFSManager;
+import org.apache.hdt.core.internal.model.HDFSServer;
+import org.apache.hdt.core.internal.model.ServerStatus;
+import org.apache.log4j.Logger;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.ui.IObjectActionDelegate;
+import org.eclipse.ui.IWorkbenchPart;
+
+public class ReconnectAction implements IObjectActionDelegate {
+
+	private final static Logger logger = Logger.getLogger(DownloadResourceAction.class);
+	private ISelection selection;
+	private IWorkbenchPart targetPart;
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.ui.IActionDelegate#run(org.eclipse.jface.action.IAction)
+	 */
+	@Override
+	public void run(IAction action) {
+		if (this.selection != null && !this.selection.isEmpty()) {
+			IStructuredSelection sSelection = (IStructuredSelection) this.selection;
+			@SuppressWarnings("rawtypes")
+			Iterator itr = sSelection.iterator();
+			while (itr.hasNext()) {
+				Object object = itr.next();
+				if (object instanceof IProject) {
+					IProject project = (IProject) object;
+					HDFSManager.reconnectProject(project);
+				}
+			}
+		}
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.ui.IActionDelegate#selectionChanged(org.eclipse.jface.action
+	 * .IAction, org.eclipse.jface.viewers.ISelection)
+	 */
+	@Override
+	public void selectionChanged(IAction action, ISelection selection) {
+		this.selection = selection;
+		boolean enabled = true;
+		if (this.selection != null && !this.selection.isEmpty()) {
+			IStructuredSelection sSelection = (IStructuredSelection) this.selection;
+			@SuppressWarnings("rawtypes")
+			Iterator itr = sSelection.iterator();
+			while (itr.hasNext()) {
+				Object object = itr.next();
+				if (object instanceof IProject) {
+					IProject r = (IProject) object;
+					try {
+						HDFSServer server = HDFSManager.INSTANCE.getServer(r.getLocationURI().toString());
+						enabled = server == null ? false : server.getStatusCode() == ServerStatus.DISCONNECTED_VALUE;
+					} catch (Throwable t) {
+						enabled = false;
+					}
+				} else
+					enabled = false;
+			}
+		} else
+			enabled = false;
+		action.setEnabled(enabled);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.ui.IObjectActionDelegate#setActivePart(org.eclipse.jface.
+	 * action.IAction, org.eclipse.ui.IWorkbenchPart)
+	 */
+	@Override
+	public void setActivePart(IAction action, IWorkbenchPart targetPart) {
+		this.targetPart = targetPart;
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-hdt/blob/63bec260/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/hdfs/UploadResourceAction.java
----------------------------------------------------------------------
diff --git a/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/hdfs/UploadResourceAction.java b/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/hdfs/UploadResourceAction.java
new file mode 100644
index 0000000..b788063
--- /dev/null
+++ b/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/hdfs/UploadResourceAction.java
@@ -0,0 +1,123 @@
+package org.apache.hdt.ui.internal.hdfs;
+
+import java.util.Iterator;
+
+import org.apache.hdt.core.hdfs.ResourceInformation.Permissions;
+import org.apache.hdt.core.internal.hdfs.HDFSFileStore;
+import org.apache.hdt.core.internal.hdfs.UploadFileJob;
+import org.apache.log4j.Logger;
+import org.eclipse.core.filesystem.EFS;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.ui.IObjectActionDelegate;
+import org.eclipse.ui.IWorkbenchPart;
+
+public class UploadResourceAction implements IObjectActionDelegate {
+
+	private final static Logger logger = Logger.getLogger(UploadResourceAction.class);
+	private ISelection selection;
+	private IWorkbenchPart targetPart;
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.ui.IActionDelegate#run(org.eclipse.jface.action.IAction)
+	 */
+	@Override
+	public void run(IAction action) {
+		if (this.selection != null && !this.selection.isEmpty()) {
+			IStructuredSelection sSelection = (IStructuredSelection) this.selection;
+			@SuppressWarnings("rawtypes")
+			Iterator itr = sSelection.iterator();
+			while (itr.hasNext()) {
+				Object object = itr.next();
+				if (object instanceof IResource) {
+					IResource r = (IResource) object;
+					uploadResource(r);
+				}
+			}
+		}
+	}
+
+	/**
+	 * @param r
+	 */
+	private void uploadResource(IResource r) {
+		try {
+			switch (r.getType()) {
+			case IResource.FILE:
+				UploadFileJob ufj = new UploadFileJob(r);
+				ufj.schedule();
+				break;
+			case IResource.FOLDER:
+				IFolder folder = (IFolder) r;
+				IResource[] members = folder.members();
+				if (members != null) {
+					for (int mc = 0; mc < members.length; mc++) {
+						uploadResource(members[mc]);
+					}
+				}
+			}
+		} catch (CoreException e) {
+			MessageDialog.openError(targetPart.getSite().getShell(), "Upload HDFS Resources", "Error uploading resource to " + r.getLocationURI() + ": "
+					+ e.getMessage());
+			logger.warn(e.getMessage(), e);
+		}
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.ui.IActionDelegate#selectionChanged(org.eclipse.jface.action
+	 * .IAction, org.eclipse.jface.viewers.ISelection)
+	 */
+	@Override
+	public void selectionChanged(IAction action, ISelection selection) {
+		this.selection = selection;
+		boolean enabled = true;
+		if (this.selection != null && !this.selection.isEmpty()) {
+			IStructuredSelection sSelection = (IStructuredSelection) this.selection;
+			@SuppressWarnings("rawtypes")
+			Iterator itr = sSelection.iterator();
+			while (itr.hasNext()) {
+				Object object = itr.next();
+				if (object instanceof IResource) {
+					IResource r = (IResource) object;
+					try {
+						HDFSFileStore store = (HDFSFileStore) EFS.getStore(r.getLocationURI());
+						Permissions effectivePermissions = store.getEffectivePermissions();
+						if (enabled && effectivePermissions != null && !effectivePermissions.write)
+							enabled = false;
+						if (enabled)
+							enabled = store.isLocalFile();
+					} catch (Throwable t) {
+						enabled = false;
+					}
+				} else
+					enabled = false;
+			}
+		} else
+			enabled = false;
+		action.setEnabled(enabled);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.ui.IObjectActionDelegate#setActivePart(org.eclipse.jface.
+	 * action.IAction, org.eclipse.ui.IWorkbenchPart)
+	 */
+	@Override
+	public void setActivePart(IAction action, IWorkbenchPart targetPart) {
+		this.targetPart = targetPart;
+
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-hdt/blob/63bec260/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/zookeeper/DeleteAction.java
----------------------------------------------------------------------
diff --git a/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/zookeeper/DeleteAction.java b/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/zookeeper/DeleteAction.java
new file mode 100644
index 0000000..02897e0
--- /dev/null
+++ b/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/zookeeper/DeleteAction.java
@@ -0,0 +1,119 @@
+package org.apache.hdt.ui.internal.zookeeper;
+
+import java.io.IOException;
+import java.util.Iterator;
+
+import org.apache.hdt.core.internal.model.ZNode;
+import org.apache.hdt.core.internal.model.ZooKeeperServer;
+import org.apache.hdt.core.internal.zookeeper.ZooKeeperManager;
+import org.apache.hdt.core.zookeeper.ZooKeeperClient;
+import org.apache.log4j.Logger;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.ui.IObjectActionDelegate;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.navigator.resources.ProjectExplorer;
+
+public class DeleteAction implements IObjectActionDelegate {
+
+	private final static Logger logger = Logger.getLogger(DeleteAction.class);
+	private ISelection selection;
+	private IWorkbenchPart targetPart;
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.ui.IActionDelegate#run(org.eclipse.jface.action.IAction)
+	 */
+	@Override
+	public void run(IAction action) {
+		if (this.selection != null && !this.selection.isEmpty()) {
+			IStructuredSelection sSelection = (IStructuredSelection) this.selection;
+			@SuppressWarnings("rawtypes")
+			Iterator itr = sSelection.iterator();
+			while (itr.hasNext()) {
+				Object object = itr.next();
+				if (object instanceof ZooKeeperServer) {
+					ZooKeeperServer r = (ZooKeeperServer) object;
+					if (logger.isDebugEnabled())
+						logger.debug("Deleting: " + r);
+					try {
+						ZooKeeperManager.INSTANCE.disconnect(r);
+					} finally {
+						try {
+							ZooKeeperManager.INSTANCE.delete(r);
+						} catch (CoreException e) {
+							logger.error(e.getMessage());
+						}
+					}
+					if (logger.isDebugEnabled())
+						logger.debug("Deleted: " + r);
+					if (targetPart instanceof ProjectExplorer) {
+						ProjectExplorer pe = (ProjectExplorer) targetPart;
+						pe.getCommonViewer().refresh();
+					}
+				} else if (object instanceof ZNode) {
+					ZNode zkn = (ZNode) object;
+					if (logger.isDebugEnabled())
+						logger.debug("Deleting: " + zkn);
+					try {
+						ZooKeeperClient client = ZooKeeperManager.INSTANCE.getClient(zkn.getServer());
+						client.delete(zkn);
+					} catch (CoreException e) {
+						logger.error(e.getMessage(), e);
+					} catch (IOException e) {
+						logger.error(e.getMessage(), e);
+					} catch (InterruptedException e) {
+						logger.error(e.getMessage(), e);
+					}
+				}
+			}
+		}
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.ui.IActionDelegate#selectionChanged(org.eclipse.jface.action
+	 * .IAction, org.eclipse.jface.viewers.ISelection)
+	 */
+	@Override
+	public void selectionChanged(IAction action, ISelection selection) {
+		this.selection = selection;
+		boolean enabled = true;
+		if (this.selection != null && !this.selection.isEmpty()) {
+			IStructuredSelection sSelection = (IStructuredSelection) this.selection;
+			@SuppressWarnings("rawtypes")
+			Iterator itr = sSelection.iterator();
+			while (itr.hasNext()) {
+				Object object = itr.next();
+				enabled = false;
+				if (object instanceof ZooKeeperServer) {
+					ZooKeeperServer server = (ZooKeeperServer) object;
+					enabled = server != null;
+				} else if (object instanceof ZNode) {
+					ZNode zkn = (ZNode) object;
+					enabled = zkn != null;
+				}
+			}
+		} else
+			enabled = false;
+		action.setEnabled(enabled);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.ui.IObjectActionDelegate#setActivePart(org.eclipse.jface.
+	 * action.IAction, org.eclipse.ui.IWorkbenchPart)
+	 */
+	@Override
+	public void setActivePart(IAction action, IWorkbenchPart targetPart) {
+		this.targetPart = targetPart;
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-hdt/blob/63bec260/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/zookeeper/DisconnectAction.java
----------------------------------------------------------------------
diff --git a/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/zookeeper/DisconnectAction.java b/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/zookeeper/DisconnectAction.java
new file mode 100644
index 0000000..c77bf16
--- /dev/null
+++ b/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/zookeeper/DisconnectAction.java
@@ -0,0 +1,95 @@
+package org.apache.hdt.ui.internal.zookeeper;
+
+import java.util.Iterator;
+
+import org.apache.hdt.core.internal.model.ServerStatus;
+import org.apache.hdt.core.internal.model.ZooKeeperServer;
+import org.apache.hdt.core.internal.zookeeper.ZooKeeperManager;
+import org.apache.log4j.Logger;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.ui.IObjectActionDelegate;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.navigator.resources.ProjectExplorer;
+
+public class DisconnectAction implements IObjectActionDelegate {
+
+	private final static Logger logger = Logger.getLogger(DisconnectAction.class);
+	private ISelection selection;
+	private IWorkbenchPart targetPart;
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.ui.IActionDelegate#run(org.eclipse.jface.action.IAction)
+	 */
+	@Override
+	public void run(IAction action) {
+		if (this.selection != null && !this.selection.isEmpty()) {
+			IStructuredSelection sSelection = (IStructuredSelection) this.selection;
+			@SuppressWarnings("rawtypes")
+			Iterator itr = sSelection.iterator();
+			while (itr.hasNext()) {
+				Object object = itr.next();
+				if (object instanceof ZooKeeperServer) {
+					ZooKeeperServer r = (ZooKeeperServer) object;
+					if(logger.isDebugEnabled())
+						logger.debug("Disconnecting: "+r);
+					ZooKeeperManager.INSTANCE.disconnect(r);
+					if(logger.isDebugEnabled())
+						logger.debug("Disconnected: "+r);
+					if (targetPart instanceof ProjectExplorer) {
+						ProjectExplorer pe = (ProjectExplorer) targetPart;
+						pe.getCommonViewer().refresh(r, true);
+					}
+				}
+			}
+		}
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.ui.IActionDelegate#selectionChanged(org.eclipse.jface.action
+	 * .IAction, org.eclipse.jface.viewers.ISelection)
+	 */
+	@Override
+	public void selectionChanged(IAction action, ISelection selection) {
+		this.selection = selection;
+		boolean enabled = true;
+		if (this.selection != null && !this.selection.isEmpty()) {
+			IStructuredSelection sSelection = (IStructuredSelection) this.selection;
+			@SuppressWarnings("rawtypes")
+			Iterator itr = sSelection.iterator();
+			while (itr.hasNext()) {
+				Object object = itr.next();
+				if (object instanceof ZooKeeperServer) {
+					ZooKeeperServer server = (ZooKeeperServer) object;
+					try {
+						enabled = server == null ? false : server.getStatusCode() != ServerStatus.DISCONNECTED_VALUE;
+					} catch (Throwable t) {
+						enabled = false;
+					}
+				} else
+					enabled = false;
+			}
+		} else
+			enabled = false;
+		action.setEnabled(enabled);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.ui.IObjectActionDelegate#setActivePart(org.eclipse.jface.
+	 * action.IAction, org.eclipse.ui.IWorkbenchPart)
+	 */
+	@Override
+	public void setActivePart(IAction action, IWorkbenchPart targetPart) {
+		this.targetPart = targetPart;
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-hdt/blob/63bec260/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/zookeeper/NewZooKeeperServerAction.java
----------------------------------------------------------------------
diff --git a/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/zookeeper/NewZooKeeperServerAction.java b/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/zookeeper/NewZooKeeperServerAction.java
new file mode 100644
index 0000000..66e9ed3
--- /dev/null
+++ b/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/zookeeper/NewZooKeeperServerAction.java
@@ -0,0 +1,62 @@
+package org.apache.hdt.ui.internal.zookeeper;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.IWorkbenchWindowActionDelegate;
+
+public class NewZooKeeperServerAction extends Action implements IWorkbenchWindowActionDelegate {
+
+	private Shell shell;
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.ui.IActionDelegate#run(org.eclipse.jface.action.IAction)
+	 */
+	@Override
+	public void run(IAction action) {
+		NewZooKeeperWizard wizard = new NewZooKeeperWizard();
+		WizardDialog dialog = new WizardDialog(shell, wizard);
+		dialog.open();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.ui.IActionDelegate#selectionChanged(org.eclipse.jface.action
+	 * .IAction, org.eclipse.jface.viewers.ISelection)
+	 */
+	@Override
+	public void selectionChanged(IAction action, ISelection selection) {
+		// TODO Auto-generated method stub
+
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.ui.IWorkbenchWindowActionDelegate#dispose()
+	 */
+	@Override
+	public void dispose() {
+		// TODO Auto-generated method stub
+
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.ui.IWorkbenchWindowActionDelegate#init(org.eclipse.ui.
+	 * IWorkbenchWindow)
+	 */
+	@Override
+	public void init(IWorkbenchWindow window) {
+		shell = window.getShell();
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-hdt/blob/63bec260/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/zookeeper/NewZooKeeperServerWizardPage.java
----------------------------------------------------------------------
diff --git a/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/zookeeper/NewZooKeeperServerWizardPage.java b/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/zookeeper/NewZooKeeperServerWizardPage.java
new file mode 100644
index 0000000..f7a5bf5
--- /dev/null
+++ b/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/zookeeper/NewZooKeeperServerWizardPage.java
@@ -0,0 +1,129 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hdt.ui.internal.zookeeper;
+
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.StringTokenizer;
+
+import org.apache.hdt.ui.Activator;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+
+public class NewZooKeeperServerWizardPage extends WizardPage {
+
+	//private static final Logger logger = Logger.getLogger(NewZooKeeperServerWizardPage.class);
+	private Combo serverCombo;
+	private Text serverNameText;
+
+	private String zkServerLocation = null;
+	private String zkServerName = null;
+	protected NewZooKeeperServerWizardPage() {
+		super("ZooKeeper Server Location");
+		setTitle("ZooKeeper Server Location");
+		setDescription("Enter the name and location of the ZooKeeper server");
+	}
+
+	@Override
+	public void createControl(Composite parent) {
+		Composite c = new Composite(parent, SWT.NONE);
+		final GridLayout layout = new GridLayout(2, false);
+		layout.marginLeft = 5;
+		layout.marginRight = 20;
+		c.setLayout(layout);
+
+		// Add Name
+		Label nameLabel = new Label(c, SWT.NONE);
+		nameLabel.setText("Name:");
+		serverNameText = new Text(c, SWT.BORDER | SWT.SINGLE);
+		serverNameText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+		serverNameText.addModifyListener(new ModifyListener() {
+			@Override
+			public void modifyText(ModifyEvent e) {
+				String nameText = serverNameText.getText();
+				if (nameText != null && nameText.trim().length() > 0) {
+					setZkServerName(nameText);
+				} else {
+					setZkServerName(null);
+				}
+				NewZooKeeperServerWizardPage.this.validate();
+			}
+		});
+
+		// Add Combo
+		Label comboLabel = new Label(c, SWT.NONE);
+		comboLabel.setText("Location:");
+		serverCombo = new Combo(c, SWT.BORDER);
+		serverCombo.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+		serverCombo.addModifyListener(new ModifyListener() {
+			@Override
+			public void modifyText(ModifyEvent e) {
+				String urlText = serverCombo.getText();
+				setZkServerLocation(urlText.trim());
+				NewZooKeeperServerWizardPage.this.validate();
+			}
+		});
+
+		// Add example
+		new Label(c, SWT.NONE);
+		Label exampleLabel = new Label(c, SWT.NONE);
+		exampleLabel.setText("Example: zookeeper.server.hostname:2181, zookeeper.server.hostname:2181/path");
+		exampleLabel.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_DARK_GRAY));
+
+		// Populate
+		String currentUrls = Activator.getDefault().getPreferenceStore().getString(Activator.PREFERENCE_ZOOKEEPER_URLS);
+		StringTokenizer st = new StringTokenizer(currentUrls, "\r\n", false);
+		while (st.hasMoreTokens()) {
+			serverCombo.add(st.nextToken());
+		}
+		setPageComplete(false);
+		this.setControl(c);
+	}
+
+	/**
+	 * 
+	 */
+	protected void validate() {
+		setPageComplete(getZkServerName() != null && getZkServerLocation() != null);
+	}
+
+	public String getZkServerLocation() {
+		return zkServerLocation;
+	}
+
+	public void setZkServerLocation(String ambariServerUrl) {
+		this.zkServerLocation = ambariServerUrl;
+	}
+
+	public void setZkServerName(String hdfsServerName) {
+		this.zkServerName = hdfsServerName;
+	}
+
+	public String getZkServerName() {
+		return zkServerName;
+	}
+}

http://git-wip-us.apache.org/repos/asf/incubator-hdt/blob/63bec260/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/zookeeper/NewZooKeeperWizard.java
----------------------------------------------------------------------
diff --git a/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/zookeeper/NewZooKeeperWizard.java b/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/zookeeper/NewZooKeeperWizard.java
new file mode 100644
index 0000000..405773a
--- /dev/null
+++ b/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/zookeeper/NewZooKeeperWizard.java
@@ -0,0 +1,81 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hdt.ui.internal.zookeeper;
+
+import org.apache.hdt.core.internal.zookeeper.ZooKeeperManager;
+import org.apache.hdt.ui.Activator;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.ui.INewWizard;
+import org.eclipse.ui.IWorkbench;
+
+public class NewZooKeeperWizard extends Wizard implements INewWizard {
+
+	//private static Logger logger = Logger.getLogger(NewZooKeeperWizard.class);
+	private NewZooKeeperServerWizardPage serverLocationWizardPage = null;
+
+	public NewZooKeeperWizard() {
+	}
+
+	@Override
+	public void init(IWorkbench workbench, IStructuredSelection selection) {
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.jface.wizard.Wizard#addPages()
+	 */
+	@Override
+	public void addPages() {
+		super.addPages();
+		if (serverLocationWizardPage == null) {
+			serverLocationWizardPage = new NewZooKeeperServerWizardPage();
+		}
+		addPage(serverLocationWizardPage);
+	}
+
+	@Override
+	public boolean performFinish() {
+		if (serverLocationWizardPage != null) {
+			String ambariUrl = serverLocationWizardPage.getZkServerLocation();
+			if (ambariUrl != null) {
+				IPreferenceStore ps = Activator.getDefault().getPreferenceStore();
+				String currentUrls = ps.getString(Activator.PREFERENCE_ZOOKEEPER_URLS);
+				if (currentUrls.indexOf(ambariUrl + "\r\n") < 0) {
+					currentUrls = ambariUrl + "\r\n" + currentUrls;
+					ps.setValue(Activator.PREFERENCE_ZOOKEEPER_URLS, currentUrls);
+				}
+
+				Job j = new Job("Creating ZooKeeper project [" + serverLocationWizardPage.getZkServerName() + "]") {
+					protected org.eclipse.core.runtime.IStatus run(org.eclipse.core.runtime.IProgressMonitor monitor) {
+						ZooKeeperManager.INSTANCE.createServer(serverLocationWizardPage.getZkServerName(), serverLocationWizardPage.getZkServerLocation());
+						return Status.OK_STATUS;
+					};
+				};
+				j.schedule();
+				return true;
+			}
+		}
+		return false;
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-hdt/blob/63bec260/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/zookeeper/OpenAction.java
----------------------------------------------------------------------
diff --git a/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/zookeeper/OpenAction.java b/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/zookeeper/OpenAction.java
new file mode 100644
index 0000000..18538f7
--- /dev/null
+++ b/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/zookeeper/OpenAction.java
@@ -0,0 +1,102 @@
+package org.apache.hdt.ui.internal.zookeeper;
+
+import java.io.IOException;
+import java.util.Iterator;
+
+import org.apache.hdt.core.internal.model.ZNode;
+import org.apache.hdt.core.internal.zookeeper.ZooKeeperManager;
+import org.apache.hdt.core.zookeeper.ZooKeeperClient;
+import org.apache.log4j.Logger;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.ui.IEditorDescriptor;
+import org.eclipse.ui.IObjectActionDelegate;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.PlatformUI;
+
+public class OpenAction implements IObjectActionDelegate {
+
+	private final static Logger logger = Logger.getLogger(OpenAction.class);
+	private ISelection selection;
+	private IWorkbenchPart targetPart;
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.ui.IActionDelegate#run(org.eclipse.jface.action.IAction)
+	 */
+	@Override
+	public void run(IAction action) {
+		if (this.selection != null && !this.selection.isEmpty()) {
+			IStructuredSelection sSelection = (IStructuredSelection) this.selection;
+			@SuppressWarnings("rawtypes")
+			Iterator itr = sSelection.iterator();
+			while (itr.hasNext()) {
+				Object object = itr.next();
+				if (object instanceof ZNode) {
+					ZNode zkn = (ZNode) object;
+					if (logger.isDebugEnabled())
+						logger.debug("Opening: " + zkn);
+					try {
+						ZooKeeperClient client = ZooKeeperManager.INSTANCE.getClient(zkn.getServer());
+						byte[] open = client.open(zkn);
+						IWorkbenchPage activePage = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
+						IEditorDescriptor defaultEditor = PlatformUI.getWorkbench().getEditorRegistry().getDefaultEditor(zkn.getNodeName());
+						activePage.openEditor(new ZooKeeperNodeEditorInput(zkn, open), defaultEditor == null ? "org.eclipse.ui.DefaultTextEditor"
+								: defaultEditor.getId(), true);
+					} catch (CoreException e) {
+						logger.error(e.getMessage(), e);
+					} catch (IOException e) {
+						logger.error(e.getMessage(), e);
+					} catch (InterruptedException e) {
+						logger.error(e.getMessage(), e);
+					}
+				}
+			}
+		}
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.ui.IActionDelegate#selectionChanged(org.eclipse.jface.action
+	 * .IAction, org.eclipse.jface.viewers.ISelection)
+	 */
+	@Override
+	public void selectionChanged(IAction action, ISelection selection) {
+		this.selection = selection;
+		boolean enabled = true;
+		if (this.selection != null && !this.selection.isEmpty()) {
+			IStructuredSelection sSelection = (IStructuredSelection) this.selection;
+			@SuppressWarnings("rawtypes")
+			Iterator itr = sSelection.iterator();
+			while (itr.hasNext()) {
+				Object object = itr.next();
+				enabled = false;
+				if (object instanceof ZNode) {
+					ZNode zkn = (ZNode) object;
+					enabled = zkn != null;
+				}
+			}
+		} else
+			enabled = false;
+		action.setEnabled(enabled);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.ui.IObjectActionDelegate#setActivePart(org.eclipse.jface.
+	 * action.IAction, org.eclipse.ui.IWorkbenchPart)
+	 */
+	@Override
+	public void setActivePart(IAction action, IWorkbenchPart targetPart) {
+		this.targetPart = targetPart;
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-hdt/blob/63bec260/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/zookeeper/ReconnectAction.java
----------------------------------------------------------------------
diff --git a/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/zookeeper/ReconnectAction.java b/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/zookeeper/ReconnectAction.java
new file mode 100644
index 0000000..0cd4607
--- /dev/null
+++ b/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/zookeeper/ReconnectAction.java
@@ -0,0 +1,95 @@
+package org.apache.hdt.ui.internal.zookeeper;
+
+import java.util.Iterator;
+
+import org.apache.hdt.core.internal.model.ServerStatus;
+import org.apache.hdt.core.internal.model.ZooKeeperServer;
+import org.apache.hdt.core.internal.zookeeper.ZooKeeperManager;
+import org.apache.log4j.Logger;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.ui.IObjectActionDelegate;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.navigator.resources.ProjectExplorer;
+
+public class ReconnectAction implements IObjectActionDelegate {
+
+	private final static Logger logger = Logger.getLogger(ReconnectAction.class);
+	private ISelection selection;
+	private IWorkbenchPart targetPart;
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.ui.IActionDelegate#run(org.eclipse.jface.action.IAction)
+	 */
+	@Override
+	public void run(IAction action) {
+		if (this.selection != null && !this.selection.isEmpty()) {
+			IStructuredSelection sSelection = (IStructuredSelection) this.selection;
+			@SuppressWarnings("rawtypes")
+			Iterator itr = sSelection.iterator();
+			while (itr.hasNext()) {
+				Object object = itr.next();
+				if (object instanceof ZooKeeperServer) {
+					ZooKeeperServer r = (ZooKeeperServer) object;
+					if(logger.isDebugEnabled())
+						logger.debug("Reconnecting: "+r);
+					ZooKeeperManager.INSTANCE.reconnect(r);
+					if(logger.isDebugEnabled())
+						logger.debug("Reconnected: "+r);
+					if (targetPart instanceof ProjectExplorer) {
+						ProjectExplorer pe = (ProjectExplorer) targetPart;
+						pe.getCommonViewer().refresh(r, true);
+					}
+				}
+			}
+		}
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.ui.IActionDelegate#selectionChanged(org.eclipse.jface.action
+	 * .IAction, org.eclipse.jface.viewers.ISelection)
+	 */
+	@Override
+	public void selectionChanged(IAction action, ISelection selection) {
+		this.selection = selection;
+		boolean enabled = true;
+		if (this.selection != null && !this.selection.isEmpty()) {
+			IStructuredSelection sSelection = (IStructuredSelection) this.selection;
+			@SuppressWarnings("rawtypes")
+			Iterator itr = sSelection.iterator();
+			while (itr.hasNext()) {
+				Object object = itr.next();
+				if (object instanceof ZooKeeperServer) {
+					ZooKeeperServer server = (ZooKeeperServer) object;
+					try {
+						enabled = server == null ? false : server.getStatusCode() == ServerStatus.DISCONNECTED_VALUE;
+					} catch (Throwable t) {
+						enabled = false;
+					}
+				} else
+					enabled = false;
+			}
+		} else
+			enabled = false;
+		action.setEnabled(enabled);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.ui.IObjectActionDelegate#setActivePart(org.eclipse.jface.
+	 * action.IAction, org.eclipse.ui.IWorkbenchPart)
+	 */
+	@Override
+	public void setActivePart(IAction action, IWorkbenchPart targetPart) {
+		this.targetPart = targetPart;
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-hdt/blob/63bec260/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/zookeeper/RefreshAction.java
----------------------------------------------------------------------
diff --git a/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/zookeeper/RefreshAction.java b/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/zookeeper/RefreshAction.java
new file mode 100644
index 0000000..d4e16d1
--- /dev/null
+++ b/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/zookeeper/RefreshAction.java
@@ -0,0 +1,85 @@
+package org.apache.hdt.ui.internal.zookeeper;
+
+import java.util.Iterator;
+
+import org.apache.hdt.core.internal.model.ServerStatus;
+import org.apache.hdt.core.internal.model.ZNode;
+import org.apache.hdt.core.internal.model.ZooKeeperServer;
+import org.apache.log4j.Logger;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.ui.IObjectActionDelegate;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.navigator.resources.ProjectExplorer;
+
+public class RefreshAction implements IObjectActionDelegate {
+
+	private final static Logger logger = Logger.getLogger(RefreshAction.class);
+	private ISelection selection;
+	private IWorkbenchPart targetPart;
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.ui.IActionDelegate#run(org.eclipse.jface.action.IAction)
+	 */
+	@Override
+	public void run(IAction action) {
+		if (this.selection != null && !this.selection.isEmpty()) {
+			IStructuredSelection sSelection = (IStructuredSelection) this.selection;
+			if (targetPart instanceof ProjectExplorer) {
+				ProjectExplorer pe = (ProjectExplorer) targetPart;
+				@SuppressWarnings("rawtypes")
+				Iterator itr = sSelection.iterator();
+				while (itr.hasNext()) {
+					Object object = itr.next();
+					if (logger.isDebugEnabled())
+						logger.debug("Refreshing: " + object);
+					pe.getCommonViewer().refresh(object, true);
+				}
+			}
+		}
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.ui.IActionDelegate#selectionChanged(org.eclipse.jface.action
+	 * .IAction, org.eclipse.jface.viewers.ISelection)
+	 */
+	@Override
+	public void selectionChanged(IAction action, ISelection selection) {
+		this.selection = selection;
+		boolean enabled = true;
+		if (this.selection != null && !this.selection.isEmpty()) {
+			IStructuredSelection sSelection = (IStructuredSelection) this.selection;
+			@SuppressWarnings("rawtypes")
+			Iterator itr = sSelection.iterator();
+			while (itr.hasNext()) {
+				Object object = itr.next();
+				if (object instanceof ZooKeeperServer) {
+					ZooKeeperServer zks = (ZooKeeperServer) object;
+					enabled = zks.getStatusCode() == ServerStatus.CONNECTED_VALUE;
+				} else
+					enabled = object instanceof ZNode;
+			}
+		} else
+			enabled = false;
+		action.setEnabled(enabled);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.ui.IObjectActionDelegate#setActivePart(org.eclipse.jface.
+	 * action.IAction, org.eclipse.ui.IWorkbenchPart)
+	 */
+	@Override
+	public void setActivePart(IAction action, IWorkbenchPart targetPart) {
+		this.targetPart = targetPart;
+	}
+
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-hdt/blob/63bec260/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/zookeeper/ZNodePropertySource.java
----------------------------------------------------------------------
diff --git a/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/zookeeper/ZNodePropertySource.java b/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/zookeeper/ZNodePropertySource.java
new file mode 100644
index 0000000..4c7e549
--- /dev/null
+++ b/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/zookeeper/ZNodePropertySource.java
@@ -0,0 +1,226 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hdt.ui.internal.zookeeper;
+
+import java.text.DateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+import org.apache.hdt.core.internal.model.ZNode;
+import org.apache.hdt.ui.Activator;
+import org.eclipse.ui.views.properties.IPropertyDescriptor;
+import org.eclipse.ui.views.properties.IPropertySource;
+import org.eclipse.ui.views.properties.PropertyDescriptor;
+
+/**
+ * @author Srimanth Gunturi
+ * 
+ */
+public class ZNodePropertySource implements IPropertySource {
+
+	/**
+	 * 
+	 */
+	private static final String PROP_DATA_SIZE = Activator.PLUGIN_ID + ".znode.dsize";
+	/**
+	 * 
+	 */
+	private static final String PROP_CHILD_COUNT = Activator.PLUGIN_ID + ".znode.ccount";
+	/**
+	 * 
+	 */
+	private static final String PROP_TIME_REFRESH = Activator.PLUGIN_ID + ".znode.rtime";
+	/**
+	 * 
+	 */
+	private static final String PROP_TIME_MODIFICATION = Activator.PLUGIN_ID + ".znode.mtime";
+	/**
+	 * 
+	 */
+	private static final String PROP_TIME_CREATION = Activator.PLUGIN_ID + ".znode.ctime";
+	/**
+	 * 
+	 */
+	private static final String PROP_ID_MODIFICATION = Activator.PLUGIN_ID + ".znode.mxid";
+	/**
+	 * 
+	 */
+	private static final String PROP_ID_CREATION = Activator.PLUGIN_ID + ".znode.cxid";
+	/**
+	 * 
+	 */
+	private static final String PROP_VERSION_ACL = Activator.PLUGIN_ID + ".znode.aversion";
+	/**
+	 * 
+	 */
+	private static final String PROP_VERSION_CHILDREN = Activator.PLUGIN_ID + ".znode.cversion";
+	/**
+	 * 
+	 */
+	private static final String PROP_VERSION = Activator.PLUGIN_ID + ".znode.version";
+	/**
+	 * 
+	 */
+	private static final String PROP_EPHERMERAL = Activator.PLUGIN_ID + ".znode.ephermeral";
+	/**
+	 * 
+	 */
+	private static final String PROP_EPHERMERAL_SESSION_ID = Activator.PLUGIN_ID + ".znode.ephermeral.sessionid";
+	/**
+	 * 
+	 */
+	private static final String PROP_PATH = Activator.PLUGIN_ID + ".znode.path";
+
+	private final ZNode zNode;
+
+	/**
+	 * @param zNode
+	 */
+	public ZNodePropertySource(ZNode zNode) {
+		this.zNode = zNode;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.ui.views.properties.IPropertySource#getEditableValue()
+	 */
+	@Override
+	public Object getEditableValue() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.ui.views.properties.IPropertySource#getPropertyDescriptors()
+	 */
+	@Override
+	public IPropertyDescriptor[] getPropertyDescriptors() {
+		if (zNode != null) {
+			List<IPropertyDescriptor> props = new ArrayList<IPropertyDescriptor>();
+			props.add(new PropertyDescriptor(PROP_PATH, "Path"));
+			// Versions
+			props.add(new PropertyDescriptor(PROP_VERSION, "Version (Node)"));
+			props.add(new PropertyDescriptor(PROP_VERSION_CHILDREN, "Version (Children)"));
+			props.add(new PropertyDescriptor(PROP_VERSION_ACL, "Version (ACL)"));
+			// IDs
+			props.add(new PropertyDescriptor(PROP_ID_CREATION, "ID (Creation)"));
+			props.add(new PropertyDescriptor(PROP_ID_MODIFICATION, "ID (Modification)"));
+			// Time
+			props.add(new PropertyDescriptor(PROP_TIME_CREATION, "Created"));
+			props.add(new PropertyDescriptor(PROP_TIME_MODIFICATION, "Modified"));
+			props.add(new PropertyDescriptor(PROP_TIME_REFRESH, "Refreshed"));
+			// Misc
+			props.add(new PropertyDescriptor(PROP_CHILD_COUNT, "Children Count"));
+			props.add(new PropertyDescriptor(PROP_DATA_SIZE, "Data size"));
+			props.add(new PropertyDescriptor(PROP_EPHERMERAL, "Is Ephermeral Node"));
+			if (zNode.isEphermeral())
+				props.add(new PropertyDescriptor(PROP_EPHERMERAL_SESSION_ID, "Ephermeral Session Id"));
+			return props.toArray(new IPropertyDescriptor[props.size()]);
+		}
+		return new IPropertyDescriptor[0];
+	}
+
+	protected String getTimeDisplay(long time) {
+		if (time > 0)
+			return DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG).format(new Date(time));
+		return null;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.ui.views.properties.IPropertySource#getPropertyValue(java
+	 * .lang.Object)
+	 */
+	@Override
+	public Object getPropertyValue(Object id) {
+		if (PROP_PATH.equals(id))
+			return zNode.getPath();
+		if (PROP_CHILD_COUNT.equals(id))
+			return zNode.getChildrenCount();
+		if (PROP_DATA_SIZE.equals(id))
+			return zNode.getDataLength();
+		if (PROP_TIME_CREATION.equals(id))
+			return getTimeDisplay(zNode.getCreationTime());
+		if (PROP_TIME_MODIFICATION.equals(id))
+			return getTimeDisplay(zNode.getModifiedTime());
+		if (PROP_TIME_REFRESH.equals(id))
+			return getTimeDisplay(zNode.getLastRefresh());
+		if (PROP_ID_CREATION.equals(id))
+			return zNode.getCreationId();
+		if (PROP_ID_MODIFICATION.equals(id))
+			return zNode.getModifiedId();
+		if (PROP_VERSION.equals(id))
+			return zNode.getVersion();
+		if (PROP_VERSION_ACL.equals(id))
+			return zNode.getAclVersion();
+		if (PROP_VERSION_CHILDREN.equals(id))
+			return zNode.getChildrenVersion();
+		if (PROP_EPHERMERAL.equals(id))
+			return zNode.isEphermeral();
+		if (PROP_EPHERMERAL_SESSION_ID.equals(id))
+			return zNode.getEphermalOwnerSessionId();
+		return null;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.ui.views.properties.IPropertySource#isPropertySet(java.lang
+	 * .Object)
+	 */
+	@Override
+	public boolean isPropertySet(Object id) {
+		// TODO Auto-generated method stub
+		return false;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.ui.views.properties.IPropertySource#resetPropertyValue(java
+	 * .lang.Object)
+	 */
+	@Override
+	public void resetPropertyValue(Object id) {
+		// TODO Auto-generated method stub
+
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.ui.views.properties.IPropertySource#setPropertyValue(java
+	 * .lang.Object, java.lang.Object)
+	 */
+	@Override
+	public void setPropertyValue(Object id, Object value) {
+		// TODO Auto-generated method stub
+
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-hdt/blob/63bec260/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/zookeeper/ZooKeeperCommonContentProvider.java
----------------------------------------------------------------------
diff --git a/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/zookeeper/ZooKeeperCommonContentProvider.java b/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/zookeeper/ZooKeeperCommonContentProvider.java
new file mode 100644
index 0000000..77c1c20
--- /dev/null
+++ b/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/zookeeper/ZooKeeperCommonContentProvider.java
@@ -0,0 +1,187 @@
+package org.apache.hdt.ui.internal.zookeeper;
+
+import java.io.IOException;
+import java.util.List;
+
+import org.apache.hdt.core.internal.HadoopManager;
+import org.apache.hdt.core.internal.model.HadoopPackage;
+import org.apache.hdt.core.internal.model.Servers;
+import org.apache.hdt.core.internal.model.ZNode;
+import org.apache.hdt.core.internal.model.ZooKeeperServer;
+import org.apache.hdt.core.internal.zookeeper.ZooKeeperManager;
+import org.apache.hdt.core.zookeeper.ZooKeeperClient;
+import org.apache.log4j.Logger;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.util.EContentAdapter;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.IMemento;
+import org.eclipse.ui.IViewPart;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.navigator.CommonNavigator;
+import org.eclipse.ui.navigator.CommonViewer;
+import org.eclipse.ui.navigator.ICommonContentExtensionSite;
+import org.eclipse.ui.navigator.ICommonContentProvider;
+import org.eclipse.ui.navigator.INavigatorContentService;
+
+public class ZooKeeperCommonContentProvider implements ICommonContentProvider {
+
+	private static final Logger logger = Logger.getLogger(ZooKeeperCommonContentProvider.class);
+	private EContentAdapter serversListener;
+	private String viewerId;
+	private Display display;
+
+	@Override
+	public void dispose() {
+		if (serversListener != null) {
+			HadoopManager.INSTANCE.getServers().eAdapters().remove(serversListener);
+			serversListener = null;
+		}
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.ui.navigator.ICommonContentProvider#init(org.eclipse.ui.navigator
+	 * .ICommonContentExtensionSite)
+	 */
+	@Override
+	public void init(ICommonContentExtensionSite aConfig) {
+		INavigatorContentService cs = aConfig.getService();
+		viewerId = cs.getViewerId();
+		this.display = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell().getDisplay();
+		hookRefreshResources();
+	}
+
+	@Override
+	public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+	}
+
+	@Override
+	public Object[] getElements(Object inputElement) {
+		return ZooKeeperManager.INSTANCE.getServers().toArray();
+	}
+
+	@Override
+	public Object[] getChildren(Object parentElement) {
+		if (parentElement instanceof ZNode) {
+			ZNode zkn = (ZNode) parentElement;
+			try {
+				ZooKeeperClient client = ZooKeeperManager.INSTANCE.getClient(zkn.getServer());
+				List<ZNode> zkChildren = client.getChildren(zkn);
+				return zkChildren.toArray();
+			} catch (CoreException e) {
+				logger.error("Error getting children of node", e);
+			} catch (IOException e) {
+				logger.error("Error getting children of node", e);
+			} catch (InterruptedException e) {
+				logger.error("Error getting children of node", e);
+			}
+		}
+		return null;
+	}
+
+	@Override
+	public Object getParent(Object element) {
+		if (element instanceof ZNode) {
+			ZNode zkn = (ZNode) element;
+			return zkn.getParent();
+		}
+		return null;
+	}
+
+	@Override
+	public boolean hasChildren(Object element) {
+		if (element instanceof ZooKeeperServer)
+			return true;
+		if (element instanceof ZNode)
+			return true;
+		return false;
+	}
+
+	protected void hookRefreshResources() {
+		serversListener = new EContentAdapter() {
+			public boolean isAdapterForType(Object type) {
+				return HadoopPackage.eINSTANCE.getZooKeeperServer().isInstance(type) || HadoopPackage.eINSTANCE.getZNode().isInstance(type);
+			}
+
+			public void notifyChanged(final org.eclipse.emf.common.notify.Notification notification) {
+				super.notifyChanged(notification);
+				if (logger.isDebugEnabled())
+					logger.debug(notification);
+				if (notification.getNotifier() instanceof Servers) {
+					if (notification.getEventType() == Notification.ADD || notification.getEventType() == Notification.REMOVE) {
+						display.asyncExec(new Runnable() {
+							@Override
+							public void run() {
+								CommonViewer viewer = null;
+								try {
+									IViewPart view = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().showView(viewerId);
+									if (view instanceof CommonNavigator) {
+										CommonNavigator navigator = (CommonNavigator) view;
+										viewer = navigator.getCommonViewer();
+									}
+								} catch (PartInitException e) {
+								}
+
+								if (viewer != null) {
+									viewer.refresh(true);
+								}
+							}
+						});
+					}
+				} else if (notification.getNotifier() instanceof ZooKeeperServer) {
+					int featureID = notification.getFeatureID(ZooKeeperServer.class);
+					if (featureID == HadoopPackage.ZOO_KEEPER_SERVER__STATUS_CODE) {
+						if (notification.getEventType() == Notification.SET) {
+							display.asyncExec(new Runnable() {
+								@Override
+								public void run() {
+									CommonViewer viewer = null;
+									try {
+										IViewPart view = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().showView(viewerId);
+										if (view instanceof CommonNavigator) {
+											CommonNavigator navigator = (CommonNavigator) view;
+											viewer = navigator.getCommonViewer();
+										}
+									} catch (PartInitException e) {
+									}
+
+									if (viewer != null) {
+										viewer.refresh(notification.getNotifier(), true);
+									}
+								}
+							});
+						}
+					}
+				}
+			}
+		};
+		HadoopManager.INSTANCE.getServers().eAdapters().add(serversListener);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.ui.navigator.IMementoAware#restoreState(org.eclipse.ui.IMemento
+	 * )
+	 */
+	@Override
+	public void restoreState(IMemento aMemento) {
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.ui.navigator.IMementoAware#saveState(org.eclipse.ui.IMemento)
+	 */
+	@Override
+	public void saveState(IMemento aMemento) {
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-hdt/blob/63bec260/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/zookeeper/ZooKeeperLabelProvider.java
----------------------------------------------------------------------
diff --git a/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/zookeeper/ZooKeeperLabelProvider.java b/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/zookeeper/ZooKeeperLabelProvider.java
new file mode 100644
index 0000000..4ee04ea
--- /dev/null
+++ b/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/zookeeper/ZooKeeperLabelProvider.java
@@ -0,0 +1,87 @@
+package org.apache.hdt.ui.internal.zookeeper;
+
+import org.apache.hdt.core.internal.model.ZNode;
+import org.apache.hdt.core.internal.model.ZooKeeperServer;
+import org.apache.hdt.ui.Activator;
+import org.eclipse.jface.viewers.ILabelProviderListener;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.ui.IMemento;
+import org.eclipse.ui.navigator.ICommonContentExtensionSite;
+import org.eclipse.ui.navigator.ICommonLabelProvider;
+
+public class ZooKeeperLabelProvider implements ICommonLabelProvider {
+
+	@Override
+	public void addListener(ILabelProviderListener listener) {
+	}
+
+	@Override
+	public void dispose() {
+	}
+
+	@Override
+	public boolean isLabelProperty(Object element, String property) {
+		return false;
+	}
+
+	@Override
+	public void removeListener(ILabelProviderListener listener) {
+	}
+
+	@Override
+	public Image getImage(Object element) {
+		if (element instanceof ZooKeeperServer)
+			return Activator.IMAGE_ZOOKEEPER;
+		if (element instanceof ZNode)
+			return Activator.IMAGE_ZOOKEEPER_NODE;
+		return null;
+	}
+
+	@Override
+	public String getText(Object element) {
+		if (element instanceof ZooKeeperServer) {
+			ZooKeeperServer zks = (ZooKeeperServer) element;
+			return zks.getName();
+		}
+		if (element instanceof ZNode)
+			return ((ZNode) element).getNodeName();
+		return null;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.ui.navigator.IMementoAware#restoreState(org.eclipse.ui.IMemento)
+	 */
+	@Override
+	public void restoreState(IMemento aMemento) {
+		// TODO Auto-generated method stub
+		
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.ui.navigator.IMementoAware#saveState(org.eclipse.ui.IMemento)
+	 */
+	@Override
+	public void saveState(IMemento aMemento) {
+		// TODO Auto-generated method stub
+		
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.ui.navigator.IDescriptionProvider#getDescription(java.lang.Object)
+	 */
+	@Override
+	public String getDescription(Object anElement) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.ui.navigator.ICommonLabelProvider#init(org.eclipse.ui.navigator.ICommonContentExtensionSite)
+	 */
+	@Override
+	public void init(ICommonContentExtensionSite aConfig) {
+		// TODO Auto-generated method stub
+		
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-hdt/blob/63bec260/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/zookeeper/ZooKeeperLightweightLabelDecorator.java
----------------------------------------------------------------------
diff --git a/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/zookeeper/ZooKeeperLightweightLabelDecorator.java b/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/zookeeper/ZooKeeperLightweightLabelDecorator.java
new file mode 100644
index 0000000..a067c10
--- /dev/null
+++ b/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/zookeeper/ZooKeeperLightweightLabelDecorator.java
@@ -0,0 +1,67 @@
+package org.apache.hdt.ui.internal.zookeeper;
+
+import org.apache.hdt.core.internal.model.ServerStatus;
+import org.apache.hdt.core.internal.model.ZNode;
+import org.apache.hdt.core.internal.model.ZooKeeperServer;
+import org.apache.hdt.ui.Activator;
+import org.eclipse.jface.viewers.IDecoration;
+import org.eclipse.jface.viewers.ILabelProviderListener;
+import org.eclipse.jface.viewers.ILightweightLabelDecorator;
+
+public class ZooKeeperLightweightLabelDecorator implements ILightweightLabelDecorator {
+
+	@Override
+	public void addListener(ILabelProviderListener listener) {
+		// TODO Auto-generated method stub
+
+	}
+
+	@Override
+	public void dispose() {
+		// TODO Auto-generated method stub
+
+	}
+
+	@Override
+	public boolean isLabelProperty(Object element, String property) {
+		// TODO Auto-generated method stub
+		return false;
+	}
+
+	@Override
+	public void removeListener(ILabelProviderListener listener) {
+		// TODO Auto-generated method stub
+
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.jface.viewers.ILightweightLabelDecorator#decorate(java.lang
+	 * .Object, org.eclipse.jface.viewers.IDecoration)
+	 */
+	@Override
+	public void decorate(Object element, IDecoration decoration) {
+		if (element instanceof ZooKeeperServer) {
+			ZooKeeperServer zks = (ZooKeeperServer) element;
+
+			// Image decorations
+			if (zks.getStatusCode() == ServerStatus.DISCONNECTED_VALUE)
+				decoration.addOverlay(org.apache.hdt.ui.Activator.IMAGE_OFFLINE_OVR);
+			else
+				decoration.addOverlay(org.apache.hdt.ui.Activator.IMAGE_ONLINE_OVR);
+
+			// Text decorations
+			decoration.addSuffix("  " + zks.getUri());
+		} else if (element instanceof ZNode) {
+			ZNode zkn = (ZNode) element;
+			if (zkn.getVersion() > -1) {
+				decoration.addSuffix("  [v=" + zkn.getVersion() + "]");
+			}
+			if (zkn.isEphermeral())
+				decoration.addOverlay(Activator.IMAGE_ZOOKEEPER_EPHERMERAL, IDecoration.BOTTOM_RIGHT);
+		}
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-hdt/blob/63bec260/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/zookeeper/ZooKeeperNodeEditorInput.java
----------------------------------------------------------------------
diff --git a/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/zookeeper/ZooKeeperNodeEditorInput.java b/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/zookeeper/ZooKeeperNodeEditorInput.java
new file mode 100644
index 0000000..ddacaab
--- /dev/null
+++ b/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/zookeeper/ZooKeeperNodeEditorInput.java
@@ -0,0 +1,126 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hdt.ui.internal.zookeeper;
+
+import org.apache.hdt.core.internal.model.ZNode;
+import org.apache.hdt.ui.Activator;
+import org.eclipse.core.resources.IStorage;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.ui.IPersistableElement;
+import org.eclipse.ui.IStorageEditorInput;
+
+/**
+ * @author Srimanth Gunturi
+ * 
+ */
+public class ZooKeeperNodeEditorInput implements IStorageEditorInput {
+
+	private final byte[] nodeData;
+	private final ZNode node;
+
+	/**
+	 * 
+	 */
+	public ZooKeeperNodeEditorInput(ZNode node, byte[] nodeData) {
+		this.node = node;
+		this.nodeData = nodeData;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.ui.IEditorInput#exists()
+	 */
+	@Override
+	public boolean exists() {
+		// TODO
+		return true;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.ui.IEditorInput#getImageDescriptor()
+	 */
+	@Override
+	public ImageDescriptor getImageDescriptor() {
+		return Activator.IMAGE_HADOOP;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.ui.IEditorInput#getName()
+	 */
+	@Override
+	public String getName() {
+		return getNode().getNodeName();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.ui.IEditorInput#getPersistable()
+	 */
+	@Override
+	public IPersistableElement getPersistable() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.ui.IEditorInput#getToolTipText()
+	 */
+	@Override
+	public String getToolTipText() {
+		return getNode().getPath();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)
+	 */
+	@Override
+	public Object getAdapter(Class adapter) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.ui.IStorageEditorInput#getStorage()
+	 */
+	@Override
+	public IStorage getStorage() throws CoreException {
+		return new ZooKeeperNodeStorage(this);
+	}
+
+	public byte[] getNodeData() {
+		return nodeData;
+	}
+
+	public ZNode getNode() {
+		return node;
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-hdt/blob/63bec260/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/zookeeper/ZooKeeperNodeStorage.java
----------------------------------------------------------------------
diff --git a/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/zookeeper/ZooKeeperNodeStorage.java b/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/zookeeper/ZooKeeperNodeStorage.java
new file mode 100644
index 0000000..0861a3a
--- /dev/null
+++ b/org.apache.hdt.ui/src/org/apache/hdt/ui/internal/zookeeper/ZooKeeperNodeStorage.java
@@ -0,0 +1,94 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hdt.ui.internal.zookeeper;
+
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+
+import org.eclipse.core.resources.IStorage;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
+
+/**
+ * @author Srimanth Gunturi
+ * 
+ */
+public class ZooKeeperNodeStorage implements IStorage {
+
+	private final ZooKeeperNodeEditorInput editorInput;
+
+	/**
+	 * 
+	 */
+	public ZooKeeperNodeStorage(ZooKeeperNodeEditorInput editorInput) {
+		this.editorInput = editorInput;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)
+	 */
+	@Override
+	public Object getAdapter(Class adapter) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.core.resources.IStorage#getContents()
+	 */
+	@Override
+	public InputStream getContents() throws CoreException {
+		return new ByteArrayInputStream(editorInput.getNodeData());
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.core.resources.IStorage#getFullPath()
+	 */
+	@Override
+	public IPath getFullPath() {
+		return new Path(editorInput.getNode().getPath());
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.core.resources.IStorage#getName()
+	 */
+	@Override
+	public String getName() {
+		return editorInput.getName();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.core.resources.IStorage#isReadOnly()
+	 */
+	@Override
+	public boolean isReadOnly() {
+		return false;
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-hdt/blob/63bec260/org.apache.hdt.updateSite/.project
----------------------------------------------------------------------
diff --git a/org.apache.hdt.updateSite/.project b/org.apache.hdt.updateSite/.project
new file mode 100644
index 0000000..aed0b59
--- /dev/null
+++ b/org.apache.hdt.updateSite/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.apache.hdt.updateSite</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.UpdateSiteBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.UpdateSiteNature</nature>
+	</natures>
+</projectDescription>

http://git-wip-us.apache.org/repos/asf/incubator-hdt/blob/63bec260/org.apache.hdt.updateSite/site.xml
----------------------------------------------------------------------
diff --git a/org.apache.hdt.updateSite/site.xml b/org.apache.hdt.updateSite/site.xml
new file mode 100644
index 0000000..10bbb8b
--- /dev/null
+++ b/org.apache.hdt.updateSite/site.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<site>
+   <feature url="features/org.apache.hadoop.eclipse.feature_1.0.0.201306090223.jar" id="org.apache.hadoop.eclipse.feature" version="1.0.0.201306090223">
+      <category name="org.apache.hadoop.eclipse"/>
+   </feature>
+   <category-def name="org.apache.hadoop.eclipse" label="Apache Hadoop Eclipse"/>
+</site>


Mime
View raw message