use of org.apache.sling.provisioning.model.Model in project sling by apache.
the class ProjectHelper method getRawModel.
/**
* Get the raw model from the project
* @param project The maven projet
* @return The raw local model
* @throws MojoExecutionException If reading fails
*/
public static Model getRawModel(final MavenProject project) throws MojoExecutionException {
Model result = (Model) project.getContextValue(RAW_MODEL_CACHE);
if (result == null) {
try {
final String text = (String) project.getContextValue(RAW_MODEL_TXT);
if (text == null) {
throw new MojoExecutionException("No provisioning model found in project.");
}
final StringReader r = new StringReader(text);
result = ModelReader.read(r, project.getId());
project.setContextValue(RAW_MODEL_CACHE, result);
} catch (final IOException ioe) {
throw new MojoExecutionException(ioe.getMessage(), ioe);
}
}
return result;
}
use of org.apache.sling.provisioning.model.Model in project sling by apache.
the class RepositoryMojo method execute.
@Override
public void execute() throws MojoExecutionException, MojoFailureException {
final File artifactDir = new File(this.project.getBuild().getDirectory(), DIR_NAME);
this.getLog().info("Creating repository in '" + artifactDir.getPath() + "'...");
// artifacts
final Model model = ProjectHelper.getEffectiveModel(this.project, getResolverOptions());
for (final Feature feature : model.getFeatures()) {
for (final RunMode runMode : feature.getRunModes()) {
for (final ArtifactGroup group : runMode.getArtifactGroups()) {
for (final org.apache.sling.provisioning.model.Artifact artifact : group) {
copyArtifactToRepository(artifact, artifactDir);
}
}
}
}
// base artifact - only if launchpad feature is available
if (model.getFeature(ModelConstants.FEATURE_LAUNCHPAD) != null) {
try {
final org.apache.sling.provisioning.model.Artifact baseArtifact = ModelUtils.findBaseArtifact(model);
final org.apache.sling.provisioning.model.Artifact appArtifact = new org.apache.sling.provisioning.model.Artifact(baseArtifact.getGroupId(), baseArtifact.getArtifactId(), baseArtifact.getVersion(), BuildConstants.CLASSIFIER_APP, BuildConstants.TYPE_JAR);
copyArtifactToRepository(appArtifact, artifactDir);
} catch (final MavenExecutionException mee) {
throw new MojoExecutionException(mee.getMessage(), mee.getCause());
}
}
// models
Model rawModel = ProjectHelper.getRawModel(this.project);
if (usePomVariables) {
rawModel = ModelUtility.applyVariables(rawModel, new PomVariableResolver(project));
}
if (usePomDependencies) {
rawModel = ModelUtility.applyArtifactVersions(rawModel, new PomArtifactVersionResolver(project, allowUnresolvedPomDependencies));
}
final String classifier = (project.getPackaging().equals(BuildConstants.PACKAGING_PARTIAL_SYSTEM) ? null : BuildConstants.PACKAGING_PARTIAL_SYSTEM);
final org.apache.sling.provisioning.model.Artifact rawModelArtifact = new org.apache.sling.provisioning.model.Artifact(this.project.getGroupId(), this.project.getArtifactId(), this.project.getVersion(), classifier, BuildConstants.TYPE_TXT);
final File rawModelFile = getRepositoryFile(artifactDir, rawModelArtifact);
Writer writer = null;
try {
writer = new FileWriter(rawModelFile);
ModelWriter.write(writer, rawModel);
} catch (IOException e) {
throw new MojoExecutionException("Unable to write model to " + rawModelFile, e);
} finally {
IOUtils.closeQuietly(writer);
}
// and write model to target
writer = null;
try {
writer = new FileWriter(new File(this.project.getBuild().getDirectory(), repositoryModelName));
ModelWriter.write(writer, rawModel);
} catch (IOException e) {
throw new MojoExecutionException("Unable to write model to " + rawModelFile, e);
} finally {
IOUtils.closeQuietly(writer);
}
for (final Map.Entry<String, String> entry : ProjectHelper.getDependencyModel(this.project).entrySet()) {
final org.apache.sling.provisioning.model.Artifact modelDepArtifact = org.apache.sling.provisioning.model.Artifact.fromMvnUrl(entry.getKey());
final String modelClassifier = (modelDepArtifact.getType().equals(BuildConstants.PACKAGING_SLINGSTART) ? BuildConstants.PACKAGING_PARTIAL_SYSTEM : modelDepArtifact.getClassifier());
final org.apache.sling.provisioning.model.Artifact modelArtifact = new org.apache.sling.provisioning.model.Artifact(modelDepArtifact.getGroupId(), modelDepArtifact.getArtifactId(), modelDepArtifact.getVersion(), modelClassifier, BuildConstants.TYPE_TXT);
final File modelFile = getRepositoryFile(artifactDir, modelArtifact);
Writer modelWriter = null;
try {
modelWriter = new FileWriter(modelFile);
modelWriter.write(entry.getValue());
} catch (IOException e) {
throw new MojoExecutionException("Unable to write model to " + modelFile, e);
} finally {
IOUtils.closeQuietly(modelWriter);
}
}
}
use of org.apache.sling.provisioning.model.Model in project sling by apache.
the class ModelPreprocessor method processSlingstartDependencies.
private Model processSlingstartDependencies(final Environment env, final ProjectInfo info, final Dependency dep, final Model rawModel) throws MavenExecutionException {
env.logger.debug("Processing dependency " + dep);
// we have to create an effective model to add the dependencies
final Model effectiveModel = ModelUtility.getEffectiveModel(rawModel, new ResolverOptions());
final List<Model> dependencies = searchSlingstartDependencies(env, info, rawModel, effectiveModel);
Model mergingModel = new Model();
for (final Model d : dependencies) {
this.mergeModels(mergingModel, d);
}
this.mergeModels(mergingModel, rawModel);
final Map<Traceable, String> errors = ModelUtility.validate(ModelUtility.getEffectiveModel(mergingModel, new ResolverOptions()));
if (errors != null) {
throw new MavenExecutionException("Unable to create model file for " + dep + " : " + errors, (File) null);
}
return mergingModel;
}
use of org.apache.sling.provisioning.model.Model in project sling by apache.
the class PreparePackageMojo method execute.
@Override
public void execute() throws MojoExecutionException, MojoFailureException {
final Model model = ProjectHelper.getEffectiveModel(this.project, getResolverOptions());
execute(model);
}
use of org.apache.sling.provisioning.model.Model in project sling by apache.
the class RepoinitTextProvider method extractFromModel.
private String extractFromModel(String sourceInfo, String rawText, String modelSection) throws IOException {
final StringReader reader = new StringReader(rawText);
final Model model = ModelReader.read(reader, sourceInfo);
final StringBuilder sb = new StringBuilder();
if (modelSection == null) {
throw new IllegalStateException("Model section name is null, cannot read model");
}
for (final Feature feature : model.getFeatures()) {
for (final Section section : feature.getAdditionalSections(modelSection)) {
sb.append("# ").append(modelSection).append(" from ").append(feature.getName()).append("\n");
sb.append("# ").append(section.getComment()).append("\n");
sb.append(section.getContents()).append("\n");
}
}
return sb.toString();
}
Aggregations