/*
* JBoss, Home of Professional Open Source
* Copyright 2012, Red Hat Middleware LLC, and individual contributors
* by the @authors tag. See the copyright.txt in the distribution for a
* full listing of individual contributors.
*
* 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.jboss.shrinkwrap.resolver.api.maven.pom;
import java.io.File;
import java.net.URL;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
import org.apache.maven.model.Model;
import org.jboss.shrinkwrap.resolver.api.maven.PackagingType;
import org.jboss.shrinkwrap.resolver.api.maven.coordinate.MavenDependency;
/**
* Representation of a parsed Project Object Model file
*
* @author <a href="mailto:kpiwko@redhat.com">Karel Piwko</a>
*
*/
public interface ParsedPomFile {
/**
* GroupId of the project
*
* @return GroupId of the project
*/
String getGroupId();
/**
* ArtifactId of the project
*
* @return ArtifactId of the project
*/
String getArtifactId();
/**
* Version of the project
*
* @return Version of the project
*/
String getVersion();
/**
* Name of the project
*
* @return Name of the project
*/
String getName();
/**
* Model representation
*
* @return Model representation
*/
Model getModel();
/**
* Returns organization name
*
* @return Organization name
*/
String getOrganizationName();
/**
* Returns organization url
*
* @return Organization url
* @throws IllegalStateException if organization URL in PMO file does not represent a valid URL
*/
URL getOrganizationUrl() throws IllegalStateException;
/**
* Final name of the project packaged as a JAR, WAR or EAR; by default it is {@code artifactId + "." + packagingType}
*
* @return Final name of the project packaged as a JAR, WAR or EAR
*/
String getFinalName();
/**
* Packaging type of the project
*
* @return Packaging type of the project
*/
PackagingType getPackagingType();
/**
* Returns a base directory of the project. Might be {@code null}.
*
* @return A base directory of the project.
*/
File getBaseDirectory();
/**
* Returns a directory where project sources are stored. Might be {@code null}.t
*
* @return A directory where project sources are stored.
*/
File getSourceDirectory();
/**
* Returns a directory where project build output is stored. Might be {@code null}.
*
* @return A directory where project build output is stored.
*/
File getBuildOutputDirectory();
/**
* Returns a directory where project test sources are stored. Might be {@code null}.
*
* @return A directory where project test sources are stored.
*/
File getTestSourceDirectory();
/**
* Returns a directory where project test output is stored. Might be {@code null}.
*
* @return A directory where project test output is stored.
*/
File getTestOutputDirectory();
/**
* Returns dependencies of the Project Object Model
*
* @return Dependencies of the Project Object Model
*/
Set<MavenDependency> getDependencies();
/**
* Returns dependency management of the Project Object Model
*
* @return Dependency management of the Project Object Model
*/
Set<MavenDependency> getDependencyManagement();
/**
* Returns a list of defined resources for current project.
*
* @return A list of defined resources for current project.
*/
List<Resource> getResources();
/**
* Returns a list of defined test resources for current project.
*
* @return A list of defined test resources for current project.
*/
List<Resource> getTestResources();
/**
* Returns interpolated properties defined in the current project
*
* @return Interpolated properties defined in the current project
*/
Properties getProperties();
/**
* Returns a plugin configuration in from of a map. Never returns {@code null}
*
* @param pluginKey a combination of groupId:artifactId
* @return A plugin configuration in from of a map. Never returns {@code null}
*/
// TODO figure out if that's really the best possible API
Map<String, Object> getPluginConfiguration(String pluginKey);
}