Package org.pdtextensions.server.internal.lhttpd

Source Code of org.pdtextensions.server.internal.lhttpd.LHttpdServerRuntime

/*******************************************************************************
* Copyright (c) 2012 The PDT Extension Group (https://github.com/pdt-eg)
* 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
******************************************************************************/
package org.pdtextensions.server.internal.lhttpd;

import java.io.File;

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.Platform;
import org.eclipse.core.runtime.Status;
import org.eclipse.wst.server.core.IRuntimeType;
import org.eclipse.wst.server.core.model.RuntimeDelegate;
import org.pdtextensions.server.IPEXInstallableRuntime;
import org.pdtextensions.server.PEXServerPlugin;
import org.pdtextensions.server.lhttpd.ILHttpdLocationConfig;
import org.pdtextensions.server.lhttpd.ILHttpdPortConfig;
import org.pdtextensions.server.lhttpd.ILHttpdRuntime;
import org.pdtextensions.server.lhttpd.ILHttpdRuntimeWorkingCopy;

/**
* The local httpd runtime delegate
*
* @author mepeisen
*/
public class LHttpdServerRuntime extends RuntimeDelegate implements ILHttpdRuntime, ILHttpdRuntimeWorkingCopy {
 
  private static final String[] HTTPD_EXECUTABLES = new String[] {
    // classic executable
    "httpd.exe", "bin/httpd.exe", "apache2ctl", "bin/apache2ctl", "apache2", "bin/apache2", "httpd", "bin/httpd"  //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$//$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$
    ,
    // xampp directory layout
    "apache/bin/httpd.exe", "apache/bin/apache2ctl", "apache/bin/apache2", "apache/bin/httpd" //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
  };

  @Override
  public void setDefaults(IProgressMonitor monitor) {
    IRuntimeType type = getRuntimeWorkingCopy().getRuntimeType();
    getRuntimeWorkingCopy().setLocation(new Path(PEXServerPlugin.getPreference("location" + type.getId()))); //$NON-NLS-1$
  }

  /**
   * Searches and returns the exeuctable
   * @return
   */
  protected File getExecutable() {
    final IPath location = getRuntime().getLocation();
    final File locationPath = location.toFile();
    for (final String ex : HTTPD_EXECUTABLES) {
      final File exe = new File(locationPath, ex);
      if (exe.isFile() && exe.exists()) {
        return exe;
      }
    }
    return null;
  }
 
  protected IStatus verifyLocation() {
    if (getExecutable() == null) {
      return new Status(IStatus.ERROR, PEXServerPlugin.PLUGIN_ID, Messages.LHttpdServerRuntime_HttpdExecutableNotFound);
    }
    return Status.OK_STATUS;
  }

  @Override
  public IStatus validate() {
    IStatus status = super.validate();
    if (!status.isOK())
      return status;
   
    status = verifyLocation();
    if (!status.isOK())
      return status;
   
    return Status.OK_STATUS;
  }

  @Override
  public IPEXInstallableRuntime getInstallableRuntime() {
    if (Platform.OS_WIN32.equals(Platform.getOS())) {
      return new Win32Installable();
    }
    if (Platform.OS_LINUX.equals(Platform.getOS())) {
      return new LinuxInstallable();
    }
    return null;
  }

  @Override
  public ILHttpdPortConfig[] getPortConfigurations() {
    // TODO Auto-generated method stub
    return null;
  }

  @Override
  public String getHttpdConf() {
    // TODO Auto-generated method stub
    return null;
  }

  @Override
  public String getHttpdConf(int flags) {
    // TODO Auto-generated method stub
    return null;
  }

  @Override
  public String getDefaultHtdocs() {
    // TODO Auto-generated method stub
    return null;
  }

  @Override
  public ILHttpdLocationConfig[] getLocationConfigs() {
    // TODO Auto-generated method stub
    return null;
  }

  @Override
  public String getAllowOverride() {
    // TODO Auto-generated method stub
    return null;
  }

 
 
}
TOP

Related Classes of org.pdtextensions.server.internal.lhttpd.LHttpdServerRuntime

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.