Package com.dubture.symfony.debug.util

Source Code of com.dubture.symfony.debug.util.ServerUtils

/*******************************************************************************
* This file is part of the Symfony eclipse plugin.
*
* (c) Robert Gruendler <r.gruendler@gmail.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
******************************************************************************/
package com.dubture.symfony.debug.util;

import org.eclipse.core.runtime.CoreException;
import org.eclipse.debug.core.ILaunchConfiguration;
import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
import org.eclipse.dltk.core.IScriptProject;
import org.eclipse.php.internal.server.core.Server;
import org.eclipse.php.internal.server.core.manager.ServersManager;

import com.dubture.symfony.core.log.Logger;
import com.dubture.symfony.core.model.AppKernel;
import com.dubture.symfony.core.util.RoutingUtil;
import com.dubture.symfony.debug.server.SymfonyServer;
import com.dubture.symfony.index.model.Route;

/**
*
*
*
* @author Robert Gruendler <r.gruendler@gmail.com>
*
*/
@SuppressWarnings("restriction")
public class ServerUtils {
 
  /**
   * Returns the baseURL for a specific configuration + project combination
   *
   * @param configuration
   * @param project
   * @return
   * @throws CoreException
   */
  public static String getBaseUrl(ILaunchConfiguration configuration, IScriptProject project, AppKernel kernel)
      throws CoreException {
   
    ILaunchConfigurationWorkingCopy wc = configuration.getWorkingCopy();   
    Server server = ServersManager.getServer(configuration.getAttribute(
        Server.NAME, ""));
   
    if (kernel == null)
      return null;
   
   
    String env = kernel.getEnvironment();
    wc.setAttribute(SymfonyServer.ENVIRONMENT, env);
    wc.doSave();
   
    boolean isVhost = isVirtualHost(server, kernel);

    String base = "";
   
    if (isVhost) {
      base = String.format("%s/%s", server.getBaseURL(), kernel.getScript());
    } else {
      base = String.format("%s/%s/%s", server.getBaseURL(), project.getElementName(), kernel.getPath());     
    }
   
    return base;
   
  }
 
  /**
   * Tries to evaluate if the Server is a virtual host.
   *
   *
   * @param server
   * @param kernel
   * @return
   */
  public static boolean isVirtualHost(Server server, AppKernel kernel) {
   
    return server.getDocumentRoot().endsWith(kernel.getRawPath().removeLastSegments(1).toString());   
   
  }
 
  /**
   *
   * Inject a valid routing URL into the launchconfiguration
   *
   *
   * @param configuration
   */
  public static void injectRoutingURL(ILaunchConfiguration configuration, AppKernel kernel, IScriptProject project, Route route) {
   
    try {
     
      ILaunchConfigurationWorkingCopy wc = configuration.getWorkingCopy();     
      String url = constructURL(configuration, project, route, kernel);
     
      if (url != null) {
       
        wc.setAttribute(Server.BASE_URL, url);
        wc.doSave();         
      }
    } catch (Exception e) {
      Logger.logException(e);
    }
  }
 
 
  public static String constructURL(ILaunchConfiguration configuration, IScriptProject project, Route route, AppKernel kernel) {
   

    String base = null;
    try {
      
      base = ServerUtils.getBaseUrl(configuration, project, kernel);
     
    } catch (CoreException e) {
      Logger.logException(e);
    }
   
    if (base == null)
      return null;
   
    return RoutingUtil.getURL(base, route, project);   
   
  }
}
TOP

Related Classes of com.dubture.symfony.debug.util.ServerUtils

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.