Package org.jboss.errai.forge.facet.plugin

Source Code of org.jboss.errai.forge.facet.plugin.CleanPluginFacet

/**
* JBoss, Home of Professional Open Source
* Copyright 2014, Red Hat, Inc. and/or its affiliates, and individual
* contributors by the @authors tag. See the copyright.txt in the
* distribution for a full listing of individual contributors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jboss.errai.forge.facet.plugin;

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

import org.jboss.errai.forge.config.ProjectConfig;
import org.jboss.errai.forge.config.ProjectProperty;
import org.jboss.errai.forge.constant.ArtifactVault.DependencyArtifact;
import org.jboss.errai.forge.facet.base.CoreBuildFacet;
import org.jboss.forge.addon.dependencies.builder.DependencyBuilder;
import org.jboss.forge.addon.facets.constraints.FacetConstraint;
import org.jboss.forge.addon.maven.plugins.ConfigurationElement;
import org.jboss.forge.addon.maven.plugins.ConfigurationElementBuilder;
import org.jboss.forge.addon.maven.plugins.Execution;
import org.jboss.forge.addon.maven.plugins.PluginElement;

/**
* This facet configures the maven-clean-plugin in the build section of the
* projects pom file.
*
* @author Max Barkley <mbarkley@redhat.com>
*/
@FacetConstraint({ CoreBuildFacet.class })
public class CleanPluginFacet extends AbstractPluginFacet {

  private static final String WAR_SRC_PLACEHOLDER = "${warSrc}";

  public CleanPluginFacet() {
    pluginArtifact = DependencyArtifact.Clean;
    dependencies = new ArrayList<DependencyBuilder>(0);
    executions = new ArrayList<Execution>(0);

    configurations = Arrays.asList(new ConfigurationElement[] {
        ConfigurationElementBuilder.create().setName("filesets").addChild(
                ConfigurationElementBuilder.create().setName("fileset")
                        .addChild(ConfigurationElementBuilder.create().setName("directory").setText("${basedir}"))
                        .addChild(ConfigurationElementBuilder.create().setName("includes")
                                .addChild(ConfigurationElementBuilder.create().setName("include")
                                        .setText(WAR_SRC_PLACEHOLDER + "/WEB-INF/deploy/"))
                                .addChild(ConfigurationElementBuilder.create().setName("include")
                                        .setText(WAR_SRC_PLACEHOLDER + "/WEB-INF/lib/"))
                                .addChild(ConfigurationElementBuilder.create().setName("include")
                                        .setText(WAR_SRC_PLACEHOLDER + "/WEB-INF/classes/"))
                                .addChild(ConfigurationElementBuilder.create().setName("include")
                                        .setText("**/gwt-unitCache/**"))
                                .addChild(ConfigurationElementBuilder.create().setName("include")
                                        .setText(".errai/"))
                        )
                )
    });
  }

  @Override
  protected void init() {
    final String moduleName = getProject().getFacet(ProjectConfig.class).getProjectProperty(
            ProjectProperty.MODULE_NAME,
            String.class);

    addGwtModuleInclude(moduleName);
    convertWarSrcPlaceholder(WarPluginFacet.getWarSourceDirectory(getProject()));
  }

  private void addGwtModuleInclude(final String moduleName) {
    ((ConfigurationElementBuilder) configurations.iterator().next().getChildByName("includes"))
            .addChild(ConfigurationElementBuilder.create().setName("include")
                    .setText(WAR_SRC_PLACEHOLDER + "/" + moduleName + "/"));
  }

  private void convertWarSrcPlaceholder(final String warSrcDirectory) {
    final List<PluginElement> includes = configurations.iterator().next().getChildByName("includes").getChildren();
    for (final PluginElement include : includes) {
      final ConfigurationElementBuilder includeAsBuilder = (ConfigurationElementBuilder) include;
      includeAsBuilder.setText(includeAsBuilder.getText().replace(WAR_SRC_PLACEHOLDER, warSrcDirectory));
    }
  }
}
TOP

Related Classes of org.jboss.errai.forge.facet.plugin.CleanPluginFacet

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.