/* * Copyright 2006-2014 smartics, Kronseder & Reiner GmbH * * 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 com.redhat.rcm.maven.plugin.buildmetadata; import java.io.File; import java.util.ArrayList; import java.util.List; import org.apache.maven.model.Build; import org.apache.maven.project.MavenProject; /** * Maps project types to property files. * * @author <a href="mailto:robert.reiner@smartics.de">Robert Reiner</a> */ final class PropertyOutputFileMapper { // ********************************* Fields ********************************* // --- constants ------------------------------------------------------------ // --- members -------------------------------------------------------------- /** * The Maven project. */ private final MavenProject project; /** * The mapping property. */ private List<FileMapping> propertyOutputFileMapping; /** * The name of the file to create the path for. */ private final String fileName; // ****************************** Initializer ******************************* // ****************************** Constructors ****************************** PropertyOutputFileMapper(final MavenProject project, final List<FileMapping> propertyOutputFileMapping, final String fileName) { this.project = project; this.propertyOutputFileMapping = propertyOutputFileMapping; this.fileName = fileName; } // ****************************** Inner Classes ***************************** // ********************************* Methods ******************************** // --- init ----------------------------------------------------------------- // --- get&set -------------------------------------------------------------- // --- business ------------------------------------------------------------- List<FileMapping> initOutputFileMapping() { if (propertyOutputFileMapping == null) { propertyOutputFileMapping = new ArrayList<FileMapping>(10); final Build build = project.getBuild(); final String classesDir = build.getOutputDirectory(); final File jarFile = new File(classesDir, "META-INF/" + fileName); final File targetDir = new File(build.getDirectory()); final String finalName = build.getFinalName(); final File deploymentUnitFile = new File(targetDir, finalName + "/META-INF/" + fileName); propertyOutputFileMapping.add(new FileMapping("pom", new File(targetDir, fileName))); // NOPMD propertyOutputFileMapping.add(new FileMapping("war", deploymentUnitFile)); propertyOutputFileMapping.add(new FileMapping("ear", deploymentUnitFile)); propertyOutputFileMapping.add(new FileMapping("sar", deploymentUnitFile)); propertyOutputFileMapping.add(new FileMapping("rar", deploymentUnitFile)); propertyOutputFileMapping.add(new FileMapping("par", deploymentUnitFile)); propertyOutputFileMapping.add(new FileMapping("jar", jarFile)); propertyOutputFileMapping.add(new FileMapping("bundle", jarFile)); propertyOutputFileMapping.add(new FileMapping("ejb", jarFile)); propertyOutputFileMapping.add(new FileMapping("maven-plugin", jarFile)); propertyOutputFileMapping.add(new FileMapping("atlassian-plugin", jarFile)); propertyOutputFileMapping .add(new FileMapping("maven-archetype", jarFile)); propertyOutputFileMapping.add(new FileMapping("eclipse-plugin", new File( targetDir, fileName))); propertyOutputFileMapping.add(new FileMapping("eclipse-feature", new File(targetDir, fileName))); propertyOutputFileMapping.add(new FileMapping("eclipse-repository", new File(targetDir, fileName))); propertyOutputFileMapping.add(new FileMapping("eclipse-update-site", new File(targetDir, fileName))); propertyOutputFileMapping.add(new FileMapping("targetplatform", new File( targetDir, fileName))); return propertyOutputFileMapping; } return propertyOutputFileMapping; } /** * Returns the output location for the build meta data properties. * * @return the output location for the build meta data properties. */ File getPropertiesOutputFile(final boolean activatePropertyOutputFileMapping, final File propertiesOutputFile) { if (activatePropertyOutputFileMapping) { final String packaging = project.getPackaging(); for (final FileMapping mapping : propertyOutputFileMapping) { if (packaging.equals(mapping.getPackaging())) { return mapping.getOutputFile(); } } } return propertiesOutputFile; } // --- object basics -------------------------------------------------------- }