/******************************************************************************* * Copyright (c) 2012-2016 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.maven.server.projecttype.handler; import org.eclipse.che.api.core.ConflictException; import org.eclipse.che.api.core.ForbiddenException; import org.eclipse.che.api.core.ServerException; import org.eclipse.che.api.core.model.workspace.ProjectConfig; import org.eclipse.che.api.project.server.FolderEntry; import org.eclipse.che.api.project.server.VirtualFileEntry; import org.eclipse.che.api.project.server.handlers.RemoveModuleHandler; import org.eclipse.che.ide.extension.maven.shared.MavenAttributes; import org.eclipse.che.ide.maven.tools.Model; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.IOException; /** * A handler for handling the removal of a maven module. * * @author Roman Nikitenko */ public class RemoveMavenModuleHandler implements RemoveModuleHandler { private final static Logger logger = LoggerFactory.getLogger(RemoveMavenModuleHandler.class); @Override public String getProjectType() { return MavenAttributes.MAVEN_ID; } @Override public void onRemoveModule(FolderEntry parentFolder, ProjectConfig moduleConfig) throws ForbiddenException, ConflictException, ServerException { if (!MavenAttributes.MAVEN_ID.equals(moduleConfig.getType())) { logger.warn("Module isn't Maven module"); throw new IllegalArgumentException("Module isn't Maven module"); } VirtualFileEntry pom = parentFolder.getChild("pom.xml"); if (pom == null) { return; } try { Model model = Model.readFrom(pom.getVirtualFile()); String moduleName = moduleConfig.getName(); if (model.getModules().contains(moduleName)) { model.removeModule(moduleName); model.writeTo(pom.getVirtualFile()); } } catch (IOException e) { throw new ServerException(e); } } }