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

org.apache.maven.toolchain.v4.MavenToolchainsTransformer Maven / Gradle / Ivy

// =================== DO NOT EDIT THIS FILE ====================
//  Generated by Modello Velocity from transformer.vm
//  template, any modifications will be overwritten.
// ==============================================================
package org.apache.maven.toolchain.v4;

import java.io.ObjectStreamException;
import java.util.AbstractList;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Objects;
import java.util.function.BinaryOperator;
import java.util.function.Function;
import java.util.function.Supplier;
import java.util.stream.Collectors;

import org.apache.maven.api.annotations.Generated;
import org.apache.maven.api.xml.XmlNode;
import org.apache.maven.api.toolchain.TrackableBase;
import org.apache.maven.api.toolchain.PersistedToolchains;
import org.apache.maven.api.toolchain.ToolchainModel;
import org.apache.maven.api.toolchain.InputLocation;
import org.apache.maven.api.toolchain.InputSource;
import org.apache.maven.internal.xml.XmlNodeImpl;

@Generated
public class MavenToolchainsTransformer {

    private final Function transformer;

    public MavenToolchainsTransformer(Function transformer) {
        this.transformer = transformer;
    }

    /**
     * Transforms the given model
     */
    public PersistedToolchains visit(PersistedToolchains target) {
        Objects.requireNonNull(target, "target cannot be null");
        return transformPersistedToolchains(target);
    }

    /**
     * The transformation function.
     */
    protected String transform(String value) {
        return transformer.apply(value);
    }

    protected TrackableBase transformTrackableBase(TrackableBase target) {
        if (target == null) {
            return null;
        }
        Supplier creator = () -> TrackableBase.newBuilder(target);
        TrackableBase.Builder builder = null;
        return builder != null ? builder.build() : target;
    }


    protected PersistedToolchains transformPersistedToolchains(PersistedToolchains target) {
        if (target == null) {
            return null;
        }
        Supplier creator = () -> PersistedToolchains.newBuilder(target);
        PersistedToolchains.Builder builder = null;
        builder = (PersistedToolchains.Builder) transformPersistedToolchains_Toolchains(creator, builder, target);
        return builder != null ? builder.build() : target;
    }

    protected PersistedToolchains.Builder transformPersistedToolchains_Toolchains(Supplier creator, PersistedToolchains.Builder builder, PersistedToolchains target) {
        List oldVal = target.getToolchains();
        List newVal = transform(oldVal, this::transformToolchainModel);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).toolchains(newVal) : builder;
    }

    protected ToolchainModel transformToolchainModel(ToolchainModel target) {
        if (target == null) {
            return null;
        }
        Supplier creator = () -> ToolchainModel.newBuilder(target);
        ToolchainModel.Builder builder = null;
        builder = (ToolchainModel.Builder) transformToolchainModel_Type(creator, builder, target);
        builder = (ToolchainModel.Builder) transformToolchainModel_Provides(creator, builder, target);
        builder = (ToolchainModel.Builder) transformToolchainModel_Configuration(creator, builder, target);
        return builder != null ? builder.build() : target;
    }

    protected ToolchainModel.Builder transformToolchainModel_Type(Supplier creator, ToolchainModel.Builder builder, ToolchainModel target) {
        String oldVal = target.getType();
        String newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).type(newVal) : builder;
    }
    protected ToolchainModel.Builder transformToolchainModel_Provides(Supplier creator, ToolchainModel.Builder builder, ToolchainModel target) {
        Map props = target.getProvides();
        Map newProps = null;
        for (Map.Entry entry : props.entrySet()) {
            String newVal = transform(entry.getValue());
            if (newVal != null && newVal != entry.getValue()) {
                if (newProps == null) {
                    newProps = new HashMap<>();
                    newProps.putAll(props);
                    builder = builder != null ? builder : creator.get();
                    builder.provides(newProps);
                }
                newProps.put(entry.getKey(), newVal);
            }
        }
        return builder;
    }
    protected ToolchainModel.Builder transformToolchainModel_Configuration(Supplier creator, ToolchainModel.Builder builder, ToolchainModel target) {
        XmlNode oldVal = target.getConfiguration();
        XmlNode newVal = transform(oldVal);
        return newVal != oldVal ? (builder != null ? builder : creator.get()).configuration(newVal) : builder;
    }

    protected  List transform(List list, Function transformer) {
        List newList = list;
        for (int i = 0; i < list.size(); i++) {
            T oldVal = list.get(i);
            T newVal = transformer.apply(oldVal);
            if (newVal != oldVal) {
                if (newList == list) {
                    newList = new ArrayList<>(list);
                }
                newList.set(i, newVal);
            }
        }
        return newList;
    }

    protected  Map transform(Map map, Function transformer) {
        Map newMap = map;
        for (String key : map.keySet()) {
            T oldVal = map.get(key);
            T newVal = transformer.apply(oldVal);
            if (newVal != oldVal) {
                if (newMap == map) {
                    newMap = new HashMap<>(map);
                }
                newMap.put(key, newVal);
            }
        }
        return newMap;
    }

    protected XmlNode transform(XmlNode node) {
        if (node != null) {
            String oldValue = node.getValue();
            String newValue = transform(oldValue);
            Map oldAttrs = node.getAttributes();
            Map newAttrs = transform(oldAttrs, this::transform);
            List oldChildren = node.getChildren();
            List newChildren = transform(oldChildren, this::transform);
            if (oldValue != newValue || oldAttrs != newAttrs || oldChildren != newChildren) {
                return new XmlNodeImpl(node.getPrefix(), node.getNamespaceUri(), node.getName(),
                        newValue, newAttrs, newChildren, node.getInputLocation());
            }
        }
        return node;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy