blob: af876b4d5a1a3a2da14971f22466a40bc161006a [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2010-2014 SAP AG 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:
* SAP AG - initial API and implementation
*******************************************************************************/
package org.eclipse.skalli.model.ext.maven.internal;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.eclipse.skalli.commons.CollectionUtils;
import org.eclipse.skalli.model.Severity;
import org.eclipse.skalli.model.ext.maven.MavenProjectExt;
import org.eclipse.skalli.services.extension.DataMigration;
import org.eclipse.skalli.services.extension.ExtensionService;
import org.eclipse.skalli.services.extension.ExtensionServiceBase;
import org.eclipse.skalli.services.extension.PropertyValidator;
import org.eclipse.skalli.services.extension.rest.RestConverter;
import org.eclipse.skalli.services.extension.validators.HostReachableValidator;
import org.eclipse.skalli.services.extension.validators.URLValidator;
import org.osgi.service.component.ComponentContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class ExtensionServiceMaven
extends ExtensionServiceBase<MavenProjectExt>
implements ExtensionService<MavenProjectExt>
{
private static final Logger LOG = LoggerFactory.getLogger(ExtensionServiceMaven.class);
private static final String CAPTION = "Maven";
private static final String DESCRIPTION = "Information related to a Maven project like the group id.";
private static final Map<String, String> CAPTIONS = CollectionUtils.addAll(ExtensionServiceBase.CAPTIONS,
new String[][] {
{ MavenProjectExt.PROPERTY_GROUPID, "GroupId" },
{ MavenProjectExt.PROPERTY_REACTOR_POM, "Reactor POM Path" },
{ MavenProjectExt.PROPERTY_SITE_URL, "Maven Site" } });
private static final Map<String, String> DESCRIPTIONS = CollectionUtils
.addAll(ExtensionServiceBase.DESCRIPTIONS,
new String[][] {
{ MavenProjectExt.PROPERTY_GROUPID, "Group Identifier of this project" },
{ MavenProjectExt.PROPERTY_REACTOR_POM,
"Path of the project's reactor 'pom.xml' relative to the project's root source code location" },
{ MavenProjectExt.PROPERTY_SITE_URL, "Browsable link to the Maven Site of this project" } });
@Override
public Class<MavenProjectExt> getExtensionClass() {
return MavenProjectExt.class;
}
@Override
public MavenProjectExt newExtension() {
return new MavenProjectExt();
}
protected void activate(ComponentContext context) {
LOG.info("activated model extension: " + getShortName()); //$NON-NLS-1$
}
protected void deactivate(ComponentContext context) {
LOG.info("deactivated model extension: " + getShortName()); //$NON-NLS-1$
}
@Override
public Set<DataMigration> getMigrations() {
Set<DataMigration> migrations = new HashSet<DataMigration>();
migrations.add(new DataMigration1());
migrations.add(new DataMigration2());
return migrations;
}
@Override
public String getShortName() {
return "maven"; //$NON-NLS-1$
}
@Override
public String getCaption() {
return CAPTION;
}
@Override
public String getDescription() {
return DESCRIPTION;
}
@Deprecated
@Override
public RestConverter<?> getRestConverter(String host) {
return new MavenConverter(host);
}
@Override
public RestConverter<MavenProjectExt> getRestConverter() {
return new MavenConverter();
}
@Override
public String getModelVersion() {
return MavenProjectExt.MODEL_VERSION;
}
@Override
public String getNamespace() {
return MavenProjectExt.NAMESPACE;
}
@Override
public String getXsdFileName() {
return "model-maven.xsd"; //$NON-NLS-1$
}
@Override
public String getCaption(String propertyName) {
return CAPTIONS.get(propertyName);
}
@Override
public String getDescription(String propertyName) {
return DESCRIPTIONS.get(propertyName);
}
@Override
public List<PropertyValidator> getPropertyValidators(String propertyName, String caption) {
List<PropertyValidator> validators = new ArrayList<PropertyValidator>();
if (MavenProjectExt.PROPERTY_GROUPID.equals(propertyName)) {
validators.add(new MavenIdValidator(Severity.ERROR, getExtensionClass(), propertyName, caption));
}
else if (MavenProjectExt.PROPERTY_REACTOR_POM.equals(propertyName)) {
validators.add(new RelativePomPathValidator(Severity.ERROR, caption));
}
else if (MavenProjectExt.PROPERTY_SITE_URL.equals(propertyName)) {
validators.add(new URLValidator(Severity.FATAL, getExtensionClass(), propertyName, caption));
validators.add(new HostReachableValidator(getExtensionClass(), propertyName));
}
return validators;
}
}