Android Open Source - m2e-android Android Maven Launch Configuration Listener






From Project

Back to project page m2e-android.

License

The source code is released under:

Eclipse Public License - v 1.0 THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECI...

If you think the Android project m2e-android listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*******************************************************************************
 * Copyright (c) 2014 Ricardo Gladwell/*w  ww.  j  av a2 s  . c  o  m*/
 * 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 me.gladwell.eclipse.m2e.android;

import static org.eclipse.jdt.launching.IJavaLaunchConfigurationConstants.ATTR_CLASSPATH_PROVIDER;
import static org.eclipse.jdt.launching.IJavaLaunchConfigurationConstants.ATTR_PROJECT_NAME;

import java.util.ArrayList;
import java.util.List;

import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.resources.WorkspaceJob;
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.debug.core.DebugPlugin;
import org.eclipse.debug.core.ILaunchConfiguration;
import org.eclipse.debug.core.ILaunchConfigurationListener;
import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
import org.eclipse.debug.core.ILaunchManager;
import org.eclipse.m2e.core.internal.IMavenConstants;
import org.eclipse.m2e.core.project.IMavenProjectChangedListener;
import org.eclipse.m2e.core.project.MavenProjectChangedEvent;

import com.android.ide.eclipse.adt.AdtConstants;

public class AndroidMavenLaunchConfigurationListener implements ILaunchConfigurationListener,
        IMavenProjectChangedListener {

    private static final String ANDROID_TEST_CLASSPATH_PROVIDER = "me.gladwell.m2e.android.classpathProvider";

    public void launchConfigurationAdded(ILaunchConfiguration configuration) {
        updateLaunchConfiguration(configuration);
    }

    public void launchConfigurationChanged(ILaunchConfiguration configuration) {
        updateLaunchConfiguration(configuration);
    }

    public void launchConfigurationRemoved(ILaunchConfiguration configuration) {
    }

    private void updateLaunchConfiguration(ILaunchConfiguration configuration) {
        try {
            String projectName = configuration.getAttribute(ATTR_PROJECT_NAME, (String) null);
            IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName);

            if (!configuration.getAttributes().containsValue(ANDROID_TEST_CLASSPATH_PROVIDER)
                    && configuration.getType().getIdentifier().equals("org.eclipse.jdt.junit.launchconfig")
                    && project.hasNature(AdtConstants.NATURE_DEFAULT) && project.hasNature(IMavenConstants.NATURE_ID)) {
                final ILaunchConfigurationWorkingCopy workingCopy = configuration.getWorkingCopy();
                workingCopy.setAttribute(ATTR_CLASSPATH_PROVIDER, ANDROID_TEST_CLASSPATH_PROVIDER);
                new WorkspaceJob("Update launch configuration") {
                    @Override
                    public IStatus runInWorkspace(IProgressMonitor monitor) throws CoreException {
                        workingCopy.doSave();
                        return Status.OK_STATUS;
                    }
                }.schedule();
            }
        } catch (CoreException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    public void mavenProjectChanged(MavenProjectChangedEvent[] events, IProgressMonitor monitor) {
        for (MavenProjectChangedEvent event : events) {
            try {
                switch (event.getKind()) {
                case MavenProjectChangedEvent.KIND_ADDED:
                    updateLaunchConfiguration(event.getMavenProject().getProject());
                    break;
                default:
                    break;
                }
            } catch (Exception e) {
            }
        }
    }

    private void updateLaunchConfiguration(IProject project) throws CoreException {
        for (ILaunchConfiguration config : getLaunchConfiguration(project)) {
            updateLaunchConfiguration(config);
        }
    }

    private List<ILaunchConfiguration> getLaunchConfiguration(IProject project) throws CoreException {
        List<ILaunchConfiguration> result = new ArrayList<ILaunchConfiguration>();
        ILaunchManager launchManager = DebugPlugin.getDefault().getLaunchManager();
        ILaunchConfiguration[] configurations = launchManager.getLaunchConfigurations();
        for (ILaunchConfiguration config : configurations) {
            String projectName = config.getAttribute(ATTR_PROJECT_NAME, (String) null);
            if (project.getName().equals(projectName)) {
                result.add(config);
            }
        }
        return result;
    }

}




Java Source Code List

.App1.java
.App2.java
com.example.android.HelloAndroidActivity.java
de.akquinet.android.archetypes.HelloAndroidActivity.java
de.akquinet.android.archetypes.HelloAndroidActivity.java
de.akquinet.android.archetypes.HelloAndroidActivity.java
me.gladwell.eclipse.m2e.android.AndroidMavenException.java
me.gladwell.eclipse.m2e.android.AndroidMavenLaunchConfigurationListener.java
me.gladwell.eclipse.m2e.android.AndroidMavenPlugin.java
me.gladwell.eclipse.m2e.android.AndroidMavenProjectConfigurator.java
me.gladwell.eclipse.m2e.android.JUnitClasspathProvider.java
me.gladwell.eclipse.m2e.android.Log.java
me.gladwell.eclipse.m2e.android.Maven.java
me.gladwell.eclipse.m2e.android.NonRuntimeDependenciesContainerInitializer.java
me.gladwell.eclipse.m2e.android.PluginModule.java
me.gladwell.eclipse.m2e.android.configuration.ClasspathLoaderDecorator.java
me.gladwell.eclipse.m2e.android.configuration.ClasspathLoader.java
me.gladwell.eclipse.m2e.android.configuration.ClasspathPersister.java
me.gladwell.eclipse.m2e.android.configuration.Classpaths.java
me.gladwell.eclipse.m2e.android.configuration.ConfigurationModule.java
me.gladwell.eclipse.m2e.android.configuration.DependencyNotFoundInWorkspace.java
me.gladwell.eclipse.m2e.android.configuration.NonRuntimeDependenciesClasspathContainer.java
me.gladwell.eclipse.m2e.android.configuration.ObjectSerializationClasspathPersister.java
me.gladwell.eclipse.m2e.android.configuration.ProjectConfigurationError.java
me.gladwell.eclipse.m2e.android.configuration.ProjectConfigurationException.java
me.gladwell.eclipse.m2e.android.configuration.PrunePlatformProvidedDependenciesClasspathLoader.java
me.gladwell.eclipse.m2e.android.configuration.PrunePlatformProvidedDependencies.java
me.gladwell.eclipse.m2e.android.configuration.classpath.AddGenFolderClasspathConfigurer.java
me.gladwell.eclipse.m2e.android.configuration.classpath.AddNonRuntimeClasspathContainerConfigurer.java
me.gladwell.eclipse.m2e.android.configuration.classpath.ClasspathConfigurer.java
me.gladwell.eclipse.m2e.android.configuration.classpath.ClasspathModule.java
me.gladwell.eclipse.m2e.android.configuration.classpath.IgnoreOptionalWarningsConfigurer.java
me.gladwell.eclipse.m2e.android.configuration.classpath.MarkAndroidClasspathContainerNotExportedConfigurer.java
me.gladwell.eclipse.m2e.android.configuration.classpath.MarkMavenClasspathContianerExportedConfigurer.java
me.gladwell.eclipse.m2e.android.configuration.classpath.ModifySourceFolderOutputClasspathConfigurer.java
me.gladwell.eclipse.m2e.android.configuration.classpath.Paths.java
me.gladwell.eclipse.m2e.android.configuration.classpath.PersistNonRuntimeClasspathConfigurer.java
me.gladwell.eclipse.m2e.android.configuration.classpath.RawClasspathConfigurer.java
me.gladwell.eclipse.m2e.android.configuration.classpath.RemoveJREClasspathContainerConfigurer.java
me.gladwell.eclipse.m2e.android.configuration.classpath.RemoveNonRuntimeDependenciesConfigurer.java
me.gladwell.eclipse.m2e.android.configuration.classpath.RemoveNonRuntimeProjectsConfigurer.java
me.gladwell.eclipse.m2e.android.configuration.workspace.AddAndroidNatureWorkspaceConfigurer.java
me.gladwell.eclipse.m2e.android.configuration.workspace.ConvertLibraryWorkspaceConfigurer.java
me.gladwell.eclipse.m2e.android.configuration.workspace.FixerWorkspaceConfigurer.java
me.gladwell.eclipse.m2e.android.configuration.workspace.LibraryDependenciesWorkspaceConfigurer.java
me.gladwell.eclipse.m2e.android.configuration.workspace.LinkAndroidManifestConfigurer.java
me.gladwell.eclipse.m2e.android.configuration.workspace.LinkAssetsFolderConfigurer.java
me.gladwell.eclipse.m2e.android.configuration.workspace.LinkResourceDirectoryConfigurer.java
me.gladwell.eclipse.m2e.android.configuration.workspace.OrderBuildersWorkspaceConfigurer.java
me.gladwell.eclipse.m2e.android.configuration.workspace.WorkspaceConfigurer.java
me.gladwell.eclipse.m2e.android.configuration.workspace.WorkspaceModule.java
me.gladwell.eclipse.m2e.android.project.AdtEclipseAndroidProject.java
me.gladwell.eclipse.m2e.android.project.AdtEclipseAndroidWorkspace.java
me.gladwell.eclipse.m2e.android.project.AndroidProjectFactory.java
me.gladwell.eclipse.m2e.android.project.AndroidWorkspace.java
me.gladwell.eclipse.m2e.android.project.Classpath.java
me.gladwell.eclipse.m2e.android.project.Dependency.java
me.gladwell.eclipse.m2e.android.project.EclipseAndroidProjectFactory.java
me.gladwell.eclipse.m2e.android.project.EclipseAndroidProject.java
me.gladwell.eclipse.m2e.android.project.EclipseSourceEntry.java
me.gladwell.eclipse.m2e.android.project.JaywayMavenAndroidProject.java
me.gladwell.eclipse.m2e.android.project.MavenAndroidProjectFactory.java
me.gladwell.eclipse.m2e.android.project.MavenAndroidProject.java
me.gladwell.eclipse.m2e.android.project.MavenDependency.java
me.gladwell.eclipse.m2e.android.project.MavenEclipseClasspath.java
me.gladwell.eclipse.m2e.android.project.MavenToEclipseAndroidProjectConverter.java
me.gladwell.eclipse.m2e.android.project.ProjectModule.java
me.gladwell.eclipse.m2e.android.project.SourceEntry.java
me.gladwell.eclipse.m2e.android.resolve.HardCodedDependency.java
me.gladwell.eclipse.m2e.android.resolve.HardCodedLibraryResolver.java
me.gladwell.eclipse.m2e.android.resolve.LibraryResolver.java
me.gladwell.eclipse.m2e.android.resolve.ResolutionModule.java
me.gladwell.eclipse.m2e.inject.GuiceExtensionFactory.java
your.company.HelloAndroidActivity.java
your.company.HelloAndroidActivity.java
your.company.HelloAndroidActivity.java
your.company.HelloAndroidActivity.java
your.company.HelloAndroidActivity.java
your.company.HelloAndroidActivity.java
your.company.HelloAndroidActivity.java
your.company.HelloAndroidActivity.java
your.company.Library.java
your.company.Library.java