// Path: me.gladwell.eclipse.m2e.android/src/main/java/me/gladwell/eclipse/m2e/android/configuration/DependencyNotFoundInWorkspace.java
// public class DependencyNotFoundInWorkspace extends ProjectConfigurationError {
// 
//     private static final long serialVersionUID = -3959048624226951719L;
// 
//     public DependencyNotFoundInWorkspace(Dependency dependency) {
//         super("dependency=[" + dependency + "] not found in workspace");
//     }
// 
//     @Override
//     public String getType() {
//         return AndroidMavenPlugin.APKLIB_ERROR_TYPE;
//     }
// 
// }
// 
// Path: me.gladwell.eclipse.m2e.android/src/main/java/me/gladwell/eclipse/m2e/android/configuration/classpath/RawClasspathConfigurer.java
// public interface RawClasspathConfigurer {
// 
//     public void configure(MavenAndroidProject mavenProject, IDEAndroidProject eclipseProject, IClasspathDescriptor classpath);
// 
// }
// 
// Path: me.gladwell.eclipse.m2e.android/src/main/java/me/gladwell/eclipse/m2e/android/project/IDEAndroidProject.java
// public interface IDEAndroidProject {
// 
//     public boolean isAndroidProject();
// 
//     public boolean isLibrary();
// 
//     public IProject getProject();
// 
//     public void setAndroidProject(boolean androidProject);
// 
//     public void setLibrary(boolean isLibrary);
// 
//     public void setLibraryDependencies(List<IDEAndroidProject> dependencies);
// 
//     public void fixProject();
// 
//     public boolean isMavenised();
// 
//     public IFile getPom();
// 
//     public void setAssetsDirectory(File file);
//  
//     public void setResourceFolder(File resourceDirectory);
//     
//     public void setAndroidManifest(File androidManifestFile);
// 
//     public Classpath getClasspath();
//     
//     public boolean shouldResolveWorkspaceProjects();
// 
//     public String getPath();
// 
//     public void orderBuilders();
// 
// }
// 
// Path: me.gladwell.eclipse.m2e.android/src/main/java/me/gladwell/eclipse/m2e/android/project/IDEAndroidProjectFactory.java
// public interface IDEAndroidProjectFactory extends AndroidProjectFactory<IDEAndroidProject, IProject> {
// 
//     public IDEAndroidProject createAndroidProject(IProject target);
// 
//     public IDEAndroidProject createAndroidProject(IProject target, IClasspathDescriptor classpath);
// 
// }
// 
// Path: me.gladwell.eclipse.m2e.android/src/main/java/me/gladwell/eclipse/m2e/android/project/MavenAndroidProject.java
// public interface MavenAndroidProject {
// 
//     public String getName();
// 
//     public String getGroup();
// 
//     public String getVersion();
// 
//     public boolean isAndroidProject();
// 
//     public boolean isLibrary();
// 
//     public List<Dependency> getNonRuntimeDependencies();
// 
//     public List<Dependency> getLibraryDependencies();
// 
//     public File getAssetsDirectory();
// 
//     public File getResourceFolder();
// 
//     public File getAndroidManifestFile();
//     
//     public File getDestinationManifestFile();
// 
//     public List<String> getPlatformProvidedDependencies();
// 
//     public List<String> getSourcePaths();
//     
//     public String getOutputDirectory();
// 
//     public boolean isIgnoreOptionalWarningsInGenFolder();
// 
//     public List<String> getTestSourcePaths();
// 
//     public List<String> getResourcePaths();
// 
//     public List<String> getTestResourcePaths();
// 
// }


import java.util.List;
import me.gladwell.eclipse.m2e.android.configuration.DependencyNotFoundInWorkspace;
import me.gladwell.eclipse.m2e.android.configuration.classpath.ClasspathConfigurer;
import me.gladwell.eclipse.m2e.android.configuration.classpath.RawClasspathConfigurer;
import me.gladwell.eclipse.m2e.android.configuration.workspace.WorkspaceConfigurer;
import me.gladwell.eclipse.m2e.android.project.AndroidProjectFactory;
import me.gladwell.eclipse.m2e.android.project.IDEAndroidProject;
import me.gladwell.eclipse.m2e.android.project.IDEAndroidProjectFactory;
import me.gladwell.eclipse.m2e.android.project.MavenAndroidProject;
import org.apache.maven.plugin.MojoExecution;
import org.apache.maven.project.MavenProject;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.Status;
import org.eclipse.m2e.core.lifecyclemapping.model.IPluginExecutionMetadata;
import org.eclipse.m2e.core.project.IMavenProjectFacade;
import org.eclipse.m2e.core.project.IMavenProjectRegistry;
import org.eclipse.m2e.core.project.configurator.AbstractBuildParticipant;
import org.eclipse.m2e.core.project.configurator.AbstractProjectConfigurator;
import org.eclipse.m2e.core.project.configurator.ProjectConfigurationRequest;
import org.eclipse.m2e.jdt.IClasspathDescriptor;
import org.eclipse.m2e.jdt.IJavaProjectConfigurator;
import org.osgi.framework.Bundle;
import org.osgi.framework.Version;
import com.google.inject.Inject;
import com.google.inject.Singleton;
/*******************************************************************************
 * Copyright (c) 2009 - 2015 Ricardo Gladwell, Hugo Josefson, Csaba Kozák
 * 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;





@Singleton
public class AndroidMavenProjectConfigurator extends AbstractProjectConfigurator implements IJavaProjectConfigurator {

    private static final Version M2E_VERSION_NEW_CONFIGURATOR_ORDER = new Version(1, 6, 0);
    
    @Inject private AbstractProjectConfigurator javaProjectConfigurator;

    @Inject private List<WorkspaceConfigurer> workspaceConfigurers;

// Path: me.gladwell.eclipse.m2e.android/src/main/java/me/gladwell/eclipse/m2e/android/configuration/DependencyNotFoundInWorkspace.java
// public class DependencyNotFoundInWorkspace extends ProjectConfigurationError {
// 
//     private static final long serialVersionUID = -3959048624226951719L;
// 
//     public DependencyNotFoundInWorkspace(Dependency dependency) {
//         super("dependency=[" + dependency + "] not found in workspace");
//     }
// 
//     @Override
//     public String getType() {
//         return AndroidMavenPlugin.APKLIB_ERROR_TYPE;
//     }
// 
// }
// 
// Path: me.gladwell.eclipse.m2e.android/src/main/java/me/gladwell/eclipse/m2e/android/configuration/classpath/RawClasspathConfigurer.java
// public interface RawClasspathConfigurer {
// 
//     public void configure(MavenAndroidProject mavenProject, IDEAndroidProject eclipseProject, IClasspathDescriptor classpath);
// 
// }
// 
// Path: me.gladwell.eclipse.m2e.android/src/main/java/me/gladwell/eclipse/m2e/android/project/IDEAndroidProject.java
// public interface IDEAndroidProject {
// 
//     public boolean isAndroidProject();
// 
//     public boolean isLibrary();
// 
//     public IProject getProject();
// 
//     public void setAndroidProject(boolean androidProject);
// 
//     public void setLibrary(boolean isLibrary);
// 
//     public void setLibraryDependencies(List<IDEAndroidProject> dependencies);
// 
//     public void fixProject();
// 
//     public boolean isMavenised();
// 
//     public IFile getPom();
// 
//     public void setAssetsDirectory(File file);
//  
//     public void setResourceFolder(File resourceDirectory);
//     
//     public void setAndroidManifest(File androidManifestFile);
// 
//     public Classpath getClasspath();
//     
//     public boolean shouldResolveWorkspaceProjects();
// 
//     public String getPath();
// 
//     public void orderBuilders();
// 
// }
// 
// Path: me.gladwell.eclipse.m2e.android/src/main/java/me/gladwell/eclipse/m2e/android/project/IDEAndroidProjectFactory.java
// public interface IDEAndroidProjectFactory extends AndroidProjectFactory<IDEAndroidProject, IProject> {
// 
//     public IDEAndroidProject createAndroidProject(IProject target);
// 
//     public IDEAndroidProject createAndroidProject(IProject target, IClasspathDescriptor classpath);
// 
// }
// 
// Path: me.gladwell.eclipse.m2e.android/src/main/java/me/gladwell/eclipse/m2e/android/project/MavenAndroidProject.java
// public interface MavenAndroidProject {
// 
//     public String getName();
// 
//     public String getGroup();
// 
//     public String getVersion();
// 
//     public boolean isAndroidProject();
// 
//     public boolean isLibrary();
// 
//     public List<Dependency> getNonRuntimeDependencies();
// 
//     public List<Dependency> getLibraryDependencies();
// 
//     public File getAssetsDirectory();
// 
//     public File getResourceFolder();
// 
//     public File getAndroidManifestFile();
//     
//     public File getDestinationManifestFile();
// 
//     public List<String> getPlatformProvidedDependencies();
// 
//     public List<String> getSourcePaths();
//     
//     public String getOutputDirectory();
// 
//     public boolean isIgnoreOptionalWarningsInGenFolder();
// 
//     public List<String> getTestSourcePaths();
// 
//     public List<String> getResourcePaths();
// 
//     public List<String> getTestResourcePaths();
// 
// }


// Path: me.gladwell.eclipse.m2e.android/src/main/java/me/gladwell/eclipse/m2e/android/AndroidMavenProjectConfigurator.java
import java.util.List;
import me.gladwell.eclipse.m2e.android.configuration.DependencyNotFoundInWorkspace;
import me.gladwell.eclipse.m2e.android.configuration.classpath.ClasspathConfigurer;
import me.gladwell.eclipse.m2e.android.configuration.classpath.RawClasspathConfigurer;
import me.gladwell.eclipse.m2e.android.configuration.workspace.WorkspaceConfigurer;
import me.gladwell.eclipse.m2e.android.project.AndroidProjectFactory;
import me.gladwell.eclipse.m2e.android.project.IDEAndroidProject;
import me.gladwell.eclipse.m2e.android.project.IDEAndroidProjectFactory;
import me.gladwell.eclipse.m2e.android.project.MavenAndroidProject;
import org.apache.maven.plugin.MojoExecution;
import org.apache.maven.project.MavenProject;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.Status;
import org.eclipse.m2e.core.lifecyclemapping.model.IPluginExecutionMetadata;
import org.eclipse.m2e.core.project.IMavenProjectFacade;
import org.eclipse.m2e.core.project.IMavenProjectRegistry;
import org.eclipse.m2e.core.project.configurator.AbstractBuildParticipant;
import org.eclipse.m2e.core.project.configurator.AbstractProjectConfigurator;
import org.eclipse.m2e.core.project.configurator.ProjectConfigurationRequest;
import org.eclipse.m2e.jdt.IClasspathDescriptor;
import org.eclipse.m2e.jdt.IJavaProjectConfigurator;
import org.osgi.framework.Bundle;
import org.osgi.framework.Version;
import com.google.inject.Inject;
import com.google.inject.Singleton;

/*******************************************************************************
 * Copyright (c) 2009 - 2015 Ricardo Gladwell, Hugo Josefson, Csaba Kozák
 * 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;





@Singleton
public class AndroidMavenProjectConfigurator extends AbstractProjectConfigurator implements IJavaProjectConfigurator {

    private static final Version M2E_VERSION_NEW_CONFIGURATOR_ORDER = new Version(1, 6, 0);
    
    @Inject private AbstractProjectConfigurator javaProjectConfigurator;

    @Inject private List<WorkspaceConfigurer> workspaceConfigurers;

    @Inject private List<RawClasspathConfigurer> rawClasspathConfigurers;