/*******************************************************************************
 * Copyright (c) 2020 RBEI and others.
 *
 * This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v. 2.0
 * which accompanies this distribution, and is available at
 * https://www.eclipse.org/legal/epl-2.0/
 *
 * SPDX-License-Identifier: EPL-2.0
 *
 * Contributors:
 *		Adhith Gopal - Initial contribution and API
 *******************************************************************************/
package org.eclipse.blockchain.ui.server;

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.wst.server.core.IModule;
import org.eclipse.wst.server.core.model.ServerDelegate;

/**
 * This is just a proto-type class and not constructed fully.
 */
public class GethServer extends ServerDelegate {

	/**
	 * {@inheritDoc}
	 */
	@Override
	public IStatus canModifyModules(final IModule[] add,
			final IModule[] remove) {
		// TODO Auto-generated method stub
		return new Status(IStatus.ERROR, "", "No Modifications");
	}

	/**
	 * {@inheritDoc}
	 */
	@Override
	public IModule[] getChildModules(final IModule[] module) {
		// TODO Auto-generated method stub
		return null;
	}

	/**
	 * {@inheritDoc}
	 */
	@Override
	public IModule[] getRootModules(final IModule module) throws CoreException {
		// TODO Auto-generated method stub
		return null;
	}

	/**
	 * {@inheritDoc}
	 */
	@Override
	public void modifyModules(final IModule[] add, final IModule[] remove,
			final IProgressMonitor monitor) throws CoreException {
		// TODO Auto-generated method stub

	}

}