All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.gradle.plugins.ide.eclipse.model.EclipseWtpFacet Maven / Gradle / Ivy

There is a newer version: 8.11.1
Show newest version
/*
 * Copyright 2011 the original author or authors.
 *
 * 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.gradle.plugins.ide.eclipse.model;

import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
import groovy.lang.Closure;
import org.gradle.plugins.ide.api.XmlFileContentMerger;
import org.gradle.util.ConfigureUtil;

import java.util.Collections;
import java.util.List;
import java.util.Map;

/**
 * Enables fine-tuning wtp facet details of the Eclipse plugin
 * 

* Advanced configuration closures beforeMerged and whenMerged receive {@link WtpFacet} object as parameter. * *

 * apply plugin: 'war' //or 'ear' or 'java'
 * apply plugin: 'eclipse-wtp'
 *
 * eclipse {
 *   wtp {
 *     facet {
 *       //you can add some extra wtp facets; mandatory keys: 'name', 'version':
 *       facet name: 'someCoolFacet', version: '1.3'
 *
 *       file {
 *         //if you want to mess with the resulting XML in whatever way you fancy
 *         withXml {
 *           def node = it.asNode()
 *           node.appendNode('xml', 'is what I love')
 *         }
 *
 *         //beforeMerged and whenMerged closures are the highest voodoo for the tricky edge cases.
 *         //the type passed to the closures is {@link WtpFacet}
 *
 *         //closure executed after wtp facet file content is loaded from existing file
 *         //but before gradle build information is merged
 *         beforeMerged { wtpFacet ->
 *           //tinker with {@link WtpFacet} here
 *         }
 *
 *         //closure executed after wtp facet file content is loaded from existing file
 *         //and after gradle build information is merged
 *         whenMerged { wtpFacet ->
 *           //you can tinker with the {@link WtpFacet} here
 *         }
 *       }
 *     }
 *   }
 * }
 *
 * 
*/ public class EclipseWtpFacet { private final XmlFileContentMerger file; private List facets = Lists.newArrayList(); public EclipseWtpFacet(XmlFileContentMerger file) { this.file = file; } /** * See {@link #file(Closure) } */ public XmlFileContentMerger getFile() { return file; } /** * Enables advanced configuration like tinkering with the output XML * or affecting the way existing wtp facet file content is merged with gradle build information *

* The object passed to whenMerged{} and beforeMerged{} closures is of type {@link WtpFacet} *

* * For example see docs for {@link EclipseWtpFacet} */ public void file(Closure closure) { ConfigureUtil.configure(closure, file); } /** * The facets to be added as elements. *

* For examples see docs for {@link EclipseWtpFacet} */ public List getFacets() { return facets; } public void setFacets(List facets) { this.facets = facets; } /** * Adds a facet. *

* For examples see docs for {@link EclipseWtpFacet} * * @param args A map that must contain a 'name' and 'version' key with corresponding values. */ public void facet(Map args) { facets = Lists.newArrayList(Iterables.concat( getFacets(), Collections.singleton(ConfigureUtil.configureByMap(args, new Facet())) )); } public void mergeXmlFacet(WtpFacet xmlFacet) { file.getBeforeMerged().execute(xmlFacet); xmlFacet.configure(getFacets()); file.getWhenMerged().execute(xmlFacet); } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy