/******************************************************************************* * Copyright (c) 2012-2015 Codenvy, S.A. * 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 * * Contributors: * Codenvy, S.A. - initial API and implementation *******************************************************************************/ package org.eclipse.che.ide.extension.ant.server.project.type; import org.eclipse.che.api.core.ForbiddenException; import org.eclipse.che.api.core.ServerException; import org.eclipse.che.api.project.server.FolderEntry; import org.eclipse.che.api.project.server.InvalidValueException; import org.eclipse.che.api.project.server.Project; import org.eclipse.che.api.project.server.ProjectConfig; import org.eclipse.che.api.project.server.ProjectManager; import org.eclipse.che.api.project.server.ProjectTypeConstraintException; import org.eclipse.che.api.project.server.ProjectTypeResolver; import org.eclipse.che.api.project.server.ValueStorageException; import org.eclipse.che.api.project.server.type.ProjectType; import org.eclipse.che.api.project.shared.Builders; import org.eclipse.che.ide.extension.ant.shared.AntAttributes; import com.google.inject.Inject; import com.google.inject.Singleton; /** @author Vladyslav Zhukovskii */ @Singleton public class AntProjectTypeResolver implements ProjectTypeResolver { @Inject private ProjectManager projectManager; /** {@inheritDoc} */ @Override public boolean resolve(FolderEntry folderEntry) throws ServerException, ValueStorageException, InvalidValueException { try { if (!folderEntry.isProjectFolder()) { ProjectType projectType = projectManager.getProjectTypeRegistry().getProjectType(AntAttributes.ANT_ID); if (projectType == null) { return false; } if (folderEntry.getChild(AntAttributes.BUILD_FILE) == null) { return false; } Project project = new Project(folderEntry, projectManager); project.updateConfig(createProjectConfig(projectType)); return true; } return false;//project configure in initial source } catch (ForbiddenException | ProjectTypeConstraintException e) { throw new ServerException("An error occurred when trying to resolve ant project.", e); } } /** Create new {@link org.eclipse.che.api.project.shared.Builders} description for resolved project. */ private ProjectConfig createProjectConfig(ProjectType projectType) { Builders builders = new Builders(); builders.setDefault("ant"); return new ProjectConfig("Ant project type", projectType.getId(), null, null, new Builders(projectType.getDefaultBuilder()), null); } }