blob: ec8822ac1f2913712d80a66c0ee89469c0049957 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2019 Lablicate GmbH and others.
*
* 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:
* Christoph Läubrich - initial API and implementation
*******************************************************************************/
package org.eclipse.tycho.pomless;
import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
import org.apache.maven.model.Model;
import org.apache.maven.model.io.ModelParseException;
import org.codehaus.plexus.component.annotations.Component;
import org.sonatype.maven.polyglot.mapping.Mapping;
import org.w3c.dom.Element;
@Component(role = Mapping.class, hint = TychoTargetMapping.PACKAGING)
public class TychoTargetMapping extends AbstractXMLTychoMapping {
private static final String TARGET_EXTENSION = ".target";
public static final String PACKAGING = "eclipse-target-definition";
@Override
protected String getPackaging() {
return PACKAGING;
}
@Override
protected boolean isValidLocation(String location) {
return location.endsWith(TARGET_EXTENSION);
}
@Override
protected File getPrimaryArtifact(File dir) {
File file = new File(dir, dir.getName() + TARGET_EXTENSION);
if (file.exists()) {
return file;
}
File[] listFiles = dir.listFiles(new FileFilter() {
@Override
public boolean accept(File file) {
return file.isFile() && file.getName().endsWith(TARGET_EXTENSION);
}
});
if (listFiles != null && listFiles.length > 0) {
if (listFiles.length == 1) {
return listFiles[0];
} else {
throw new IllegalArgumentException("only one " + TARGET_EXTENSION
+ " file is allowed per target project, or target must be named like the folder (<foldername>"
+ TARGET_EXTENSION + ")");
}
}
return null;
}
@Override
protected void initModelFromXML(Model model, Element xml, File artifactFile)
throws ModelParseException, IOException {
String fileName = artifactFile.getName();
String artifactId = fileName.substring(0, fileName.length() - TARGET_EXTENSION.length());
model.setArtifactId(artifactId);
String name = getXMLAttributeValue(xml, "name");
if (name != null) {
model.setName(name);
} else {
model.setName(artifactId);
}
}
}