/* * Copyright 2017 Nokia Solutions and Networks * Licensed under the Apache License, Version 2.0, * see license.txt file for details. */ package org.robotframework.ide.eclipse.main.plugin.launch.remote; import org.eclipse.core.runtime.CoreException; import org.eclipse.debug.core.DebugPlugin; import org.eclipse.debug.core.ILaunchConfiguration; import org.eclipse.debug.core.ILaunchConfigurationType; import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy; import org.eclipse.debug.core.ILaunchManager; class RemoteRobotLaunchConfigurationFinder { static ILaunchConfigurationWorkingCopy findSameAs(final ILaunchConfiguration configuration) throws CoreException { final ILaunchManager launchManager = DebugPlugin.getDefault().getLaunchManager(); final ILaunchConfigurationType launchConfigurationType = launchManager .getLaunchConfigurationType(RemoteRobotLaunchConfiguration.TYPE_ID); final ILaunchConfiguration[] launchConfigs = launchManager.getLaunchConfigurations(launchConfigurationType); for (final ILaunchConfiguration config : launchConfigs) { if (contentEquals(configuration, config)) { return asWorkingCopy(config); } } return null; } private static ILaunchConfigurationWorkingCopy asWorkingCopy(final ILaunchConfiguration configuration) throws CoreException { return configuration.isWorkingCopy() ? (ILaunchConfigurationWorkingCopy) configuration : configuration.getWorkingCopy(); } private static boolean contentEquals(final ILaunchConfiguration config1, final ILaunchConfiguration config2) throws CoreException { final RemoteRobotLaunchConfiguration rConfig1 = new RemoteRobotLaunchConfiguration(config1); final RemoteRobotLaunchConfiguration rConfig2 = new RemoteRobotLaunchConfiguration(config2); return rConfig1.getProjectName().equals(rConfig2.getProjectName()) && rConfig1.getAgentConnectionHost().equals(rConfig2.getAgentConnectionHost()) && rConfig1.getAgentConnectionPort() == rConfig2.getAgentConnectionPort() && rConfig1.getAgentConnectionTimeout() == rConfig2.getAgentConnectionTimeout(); } }