You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by be...@apache.org on 2009/08/03 15:16:41 UTC
svn commit: r800353 - in /maven/components/trunk:
maven-core/src/main/java/org/apache/maven/model/plugin/
maven-model-builder/src/main/java/org/apache/maven/model/building/
maven-model-builder/src/main/java/org/apache/maven/model/plugin/
Author: bentmann
Date: Mon Aug 3 13:16:41 2009
New Revision: 800353
URL: http://svn.apache.org/viewvc?rev=800353&view=rev
Log:
o Extended lifecycle injector to collect model problems
Added:
maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuildingProblems.java (with props)
maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelBuildingProblems.java (with props)
maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelProblemUtils.java (with props)
Modified:
maven/components/trunk/maven-core/src/main/java/org/apache/maven/model/plugin/DefaultLifecycleBindingsInjector.java
maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/plugin/LifecycleBindingsInjector.java
Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/model/plugin/DefaultLifecycleBindingsInjector.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/model/plugin/DefaultLifecycleBindingsInjector.java?rev=800353&r1=800352&r2=800353&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/model/plugin/DefaultLifecycleBindingsInjector.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/model/plugin/DefaultLifecycleBindingsInjector.java Mon Aug 3 13:16:41 2009
@@ -32,6 +32,9 @@
import org.apache.maven.model.Model;
import org.apache.maven.model.Plugin;
import org.apache.maven.model.PluginContainer;
+import org.apache.maven.model.building.ModelBuildingProblems;
+import org.apache.maven.model.building.ModelProblem;
+import org.apache.maven.model.building.ModelProblemUtils;
import org.apache.maven.model.merge.MavenModelMerger;
import org.codehaus.plexus.component.annotations.Component;
import org.codehaus.plexus.component.annotations.Requirement;
@@ -51,15 +54,19 @@
@Requirement
private LifecycleExecutor lifecycle;
- public void injectLifecycleBindings( Model model )
+ public void injectLifecycleBindings( Model model, ModelBuildingProblems problems )
{
String packaging = model.getPackaging();
Collection<Plugin> defaultPlugins = lifecycle.getPluginsBoundByDefaultToAllLifecycles( packaging );
- // TODO: A bad packaging is a model error, we need to report this as such!
-
- if ( defaultPlugins != null && !defaultPlugins.isEmpty() )
+ if ( defaultPlugins == null )
+ {
+ String source = ModelProblemUtils.toSourceHint( model );
+ problems.add( new ModelProblem( "Invalid POM " + source + ": Unknown packaging: " + packaging,
+ ModelProblem.Severity.ERROR, source ) );
+ }
+ else if ( !defaultPlugins.isEmpty() )
{
Model lifecycleModel = new Model();
lifecycleModel.setBuild( new Build() );
Modified: maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java?rev=800353&r1=800352&r2=800353&view=diff
==============================================================================
--- maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java (original)
+++ maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java Mon Aug 3 13:16:41 2009
@@ -115,13 +115,13 @@
{
DefaultModelBuildingResult result = new DefaultModelBuildingResult();
- List<ModelProblem> problems = new ArrayList<ModelProblem>();
+ DefaultModelBuildingProblems problems = new DefaultModelBuildingProblems( null );
ProfileActivationContext profileActivationContext = getProfileActivationContext( request );
List<Profile> activeExternalProfiles = getActiveExternalProfiles( request, profileActivationContext, problems );
- Model inputModel = readModel( request.getModelSource(), request.getPomFile(), request, problems );
+ Model inputModel = readModel( request.getModelSource(), request.getPomFile(), request, problems.getProblems() );
ModelData resultData = new ModelData( inputModel );
@@ -156,7 +156,7 @@
configureResolver( request.getModelResolver(), tmpModel, problems );
- currentData = readParent( tmpModel, request, problems );
+ currentData = readParent( tmpModel, request, problems.getProblems() );
}
ModelData superData = new ModelData( getSuperModel() );
@@ -175,7 +175,7 @@
resultData.setArtifactId( resultModel.getArtifactId() );
resultData.setVersion( resultModel.getVersion() );
- result.setProblems( problems );
+ result.setProblems( problems.getProblems() );
result.setEffectiveModel( resultModel );
@@ -203,7 +203,7 @@
{
Model resultModel = result.getEffectiveModel();
- List<ModelProblem> problems = result.getProblems();
+ DefaultModelBuildingProblems problems = new DefaultModelBuildingProblems( result.getProblems() );
modelPathTranslator.alignToBaseDirectory( resultModel, resultModel.getProjectDirectory(), request );
@@ -213,7 +213,7 @@
if ( request.isProcessPlugins() )
{
- lifecycleBindingsInjector.injectLifecycleBindings( resultModel );
+ lifecycleBindingsInjector.injectLifecycleBindings( resultModel, problems );
}
pluginManagementInjector.injectManagement( resultModel, request );
@@ -230,11 +230,11 @@
}
ModelValidationResult validationResult = modelValidator.validateEffectiveModel( resultModel, request );
- addProblems( resultModel, validationResult, problems );
+ addProblems( resultModel, validationResult, problems.getProblems() );
- if ( hasErrors( problems ) )
+ if ( hasErrors( problems.getProblems() ) )
{
- throw new ModelBuildingException( problems );
+ throw new ModelBuildingException( problems.getProblems() );
}
return result;
@@ -308,7 +308,7 @@
{
if ( !result.getWarnings().isEmpty() || !result.getErrors().isEmpty() )
{
- String source = toSourceHint( model );
+ String source = ModelProblemUtils.toSourceHint( model );
for ( String message : result.getWarnings() )
{
@@ -338,7 +338,7 @@
}
private List<Profile> getActiveExternalProfiles( ModelBuildingRequest request, ProfileActivationContext context,
- List<ModelProblem> problems )
+ ModelBuildingProblems problems )
{
ProfileSelectionResult result = profileSelector.getActiveProfiles( request.getProfiles(), context );
@@ -352,21 +352,23 @@
}
private List<Profile> getActivePomProfiles( Model model, ProfileActivationContext context,
- List<ModelProblem> problems )
+ ModelBuildingProblems problems )
{
ProfileSelectionResult result = profileSelector.getActiveProfiles( model.getProfiles(), context );
for ( ProfileActivationException e : result.getActivationExceptions() )
{
- problems.add( new ModelProblem( "Invalid activation condition for project profile "
- + e.getProfile().getId() + " in POM " + toSourceHint( model ) + ": " + e.getMessage(),
- ModelProblem.Severity.ERROR, toSourceHint( model ), e ) );
+ problems.add( new ModelProblem(
+ "Invalid activation condition for project profile "
+ + e.getProfile().getId() + " in POM "
+ + ModelProblemUtils.toSourceHint( model ) + ": " + e.getMessage(),
+ ModelProblem.Severity.ERROR, ModelProblemUtils.toSourceHint( model ), e ) );
}
return result.getActiveProfiles();
}
- private void configureResolver( ModelResolver modelResolver, Model model, List<ModelProblem> problems )
+ private void configureResolver( ModelResolver modelResolver, Model model, ModelBuildingProblems problems )
{
if ( modelResolver == null )
{
@@ -385,8 +387,8 @@
catch ( InvalidRepositoryException e )
{
problems.add( new ModelProblem( "Invalid repository " + repository.getId() + " in POM "
- + toSourceHint( model ) + ": " + e.getMessage(), ModelProblem.Severity.ERROR,
- toSourceHint( model ), e ) );
+ + ModelProblemUtils.toSourceHint( model ) + ": " + e.getMessage(), ModelProblem.Severity.ERROR,
+ ModelProblemUtils.toSourceHint( model ), e ) );
}
}
}
@@ -401,7 +403,7 @@
}
}
- private Model interpolateModel( Model model, ModelBuildingRequest request, List<ModelProblem> problems )
+ private Model interpolateModel( Model model, ModelBuildingRequest request, ModelBuildingProblems problems )
{
try
{
@@ -411,8 +413,8 @@
}
catch ( ModelInterpolationException e )
{
- problems.add( new ModelProblem( "Invalid expression in POM " + toSourceHint( model ) + ": "
- + e.getMessage(), ModelProblem.Severity.ERROR, toSourceHint( model ), e ) );
+ problems.add( new ModelProblem( "Invalid expression in POM " + ModelProblemUtils.toSourceHint( model )
+ + ": " + e.getMessage(), ModelProblem.Severity.ERROR, ModelProblemUtils.toSourceHint( model ), e ) );
return model;
}
@@ -552,7 +554,8 @@
if ( modelResolver == null )
{
throw new IllegalArgumentException( "no model resolver provided, cannot resolve parent POM "
- + toId( groupId, artifactId, version ) + " for POM " + toSourceHint( childModel ) );
+ + ModelProblemUtils.toId( groupId, artifactId, version ) + " for POM "
+ + ModelProblemUtils.toSourceHint( childModel ) );
}
ModelSource modelSource;
@@ -562,9 +565,10 @@
}
catch ( UnresolvableModelException e )
{
- problems.add( new ModelProblem( "Non-resolvable parent POM " + toId( groupId, artifactId, version )
- + " for POM " + toSourceHint( childModel ) + ": " + e.getMessage(), ModelProblem.Severity.FATAL,
- toSourceHint( childModel ), e ) );
+ problems.add( new ModelProblem( "Non-resolvable parent POM "
+ + ModelProblemUtils.toId( groupId, artifactId, version ) + " for POM "
+ + ModelProblemUtils.toSourceHint( childModel ) + ": " + e.getMessage(), ModelProblem.Severity.FATAL,
+ ModelProblemUtils.toSourceHint( childModel ), e ) );
throw new ModelBuildingException( problems );
}
@@ -581,7 +585,7 @@
return ModelUtils.cloneModel( superPomProvider.getSuperModel( "4.0.0" ) );
}
- private void importDependencyManagement( Model model, ModelBuildingRequest request, List<ModelProblem> problems )
+ private void importDependencyManagement( Model model, ModelBuildingRequest request, ModelBuildingProblems problems )
{
DependencyManagement depMngt = model.getDependencyManagement();
@@ -619,7 +623,8 @@
if ( modelResolver == null )
{
throw new IllegalArgumentException( "no model resolver provided, cannot resolve import POM "
- + toId( groupId, artifactId, version ) + " for POM " + toSourceHint( model ) );
+ + ModelProblemUtils.toId( groupId, artifactId, version ) + " for POM "
+ + ModelProblemUtils.toSourceHint( model ) );
}
ModelSource importSource;
@@ -629,9 +634,10 @@
}
catch ( UnresolvableModelException e )
{
- problems.add( new ModelProblem( "Non-resolvable import POM " + toId( groupId, artifactId, version )
- + " for POM " + toSourceHint( model ) + ": " + e.getMessage(), ModelProblem.Severity.ERROR,
- toSourceHint( model ), e ) );
+ problems.add( new ModelProblem( "Non-resolvable import POM "
+ + ModelProblemUtils.toId( groupId, artifactId, version ) + " for POM "
+ + ModelProblemUtils.toSourceHint( model ) + ": " + e.getMessage(), ModelProblem.Severity.ERROR,
+ ModelProblemUtils.toSourceHint( model ), e ) );
continue;
}
@@ -703,7 +709,7 @@
return null;
}
- private void fireBuildExtensionsAssembled( Model model, ModelBuildingRequest request, List<ModelProblem> problems )
+ private void fireBuildExtensionsAssembled( Model model, ModelBuildingRequest request, ModelBuildingProblems problems )
throws ModelBuildingException
{
if ( request.getModelBuildingListeners().isEmpty() )
@@ -722,56 +728,9 @@
catch ( Exception e )
{
problems.add( new ModelProblem( "Invalid build extensions: " + e.getMessage(),
- ModelProblem.Severity.ERROR, toSourceHint( model ), e ) );
+ ModelProblem.Severity.ERROR, ModelProblemUtils.toSourceHint( model ), e ) );
}
}
}
- private String toSourceHint( Model model )
- {
- StringBuilder buffer = new StringBuilder( 192 );
-
- buffer.append( toId( model ) );
-
- File pomFile = model.getPomFile();
- if ( pomFile != null )
- {
- buffer.append( " (" ).append( pomFile ).append( ")" );
- }
-
- return buffer.toString();
- }
-
- private String toId( Model model )
- {
- String groupId = model.getGroupId();
- if ( groupId == null && model.getParent() != null )
- {
- groupId = model.getParent().getGroupId();
- }
-
- String artifactId = model.getArtifactId();
-
- String version = model.getVersion();
- if ( version == null && model.getParent() != null )
- {
- version = model.getParent().getVersion();
- }
-
- return toId( groupId, artifactId, version );
- }
-
- private String toId( String groupId, String artifactId, String version )
- {
- StringBuilder buffer = new StringBuilder( 96 );
-
- buffer.append( ( groupId != null ) ? groupId : "[unknown-group-id]" );
- buffer.append( ':' );
- buffer.append( ( artifactId != null ) ? artifactId : "[unknown-artifact-id]" );
- buffer.append( ':' );
- buffer.append( ( version != null ) ? version : "[unknown-version]" );
-
- return buffer.toString();
- }
-
}
Added: maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuildingProblems.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuildingProblems.java?rev=800353&view=auto
==============================================================================
--- maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuildingProblems.java (added)
+++ maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuildingProblems.java Mon Aug 3 13:16:41 2009
@@ -0,0 +1,70 @@
+package org.apache.maven.model.building;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * Collects the problems that were encountered during model building.
+ *
+ * @author Benjamin Bentmann
+ */
+class DefaultModelBuildingProblems
+ implements ModelBuildingProblems
+{
+
+ private List<ModelProblem> problems;
+
+ public DefaultModelBuildingProblems( List<ModelProblem> problems )
+ {
+ this.problems = ( problems != null ) ? problems : new ArrayList<ModelProblem>();
+ }
+
+ public List<ModelProblem> getProblems()
+ {
+ return problems;
+ }
+
+ public void add( ModelProblem problem )
+ {
+ if ( problem == null )
+ {
+ throw new IllegalArgumentException( "model problem missing" );
+ }
+
+ problems.add( problem );
+ }
+
+ public void addAll( Collection<ModelProblem> problems )
+ {
+ if ( problems == null )
+ {
+ throw new IllegalArgumentException( "model problems missing" );
+ }
+
+ for ( ModelProblem problem : problems )
+ {
+ add( problem );
+ }
+ }
+
+}
Propchange: maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuildingProblems.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuildingProblems.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Added: maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelBuildingProblems.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelBuildingProblems.java?rev=800353&view=auto
==============================================================================
--- maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelBuildingProblems.java (added)
+++ maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelBuildingProblems.java Mon Aug 3 13:16:41 2009
@@ -0,0 +1,46 @@
+package org.apache.maven.model.building;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+
+import java.util.Collection;
+
+/**
+ * Collects the problems that are encountered during model building.
+ *
+ * @author Benjamin Bentmann
+ */
+public interface ModelBuildingProblems
+{
+
+ /**
+ * Adds the specified problem.
+ *
+ * @param problem The problem to add, must not be {@code null}.
+ */
+ void add( ModelProblem problem );
+
+ /**
+ * Adds the specified problems.
+ *
+ * @param problems The problems to add, must not be {@code null} nor contain {@code null} elements.
+ */
+ void addAll( Collection<ModelProblem> problems );
+
+}
Propchange: maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelBuildingProblems.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelBuildingProblems.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Added: maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelProblemUtils.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelProblemUtils.java?rev=800353&view=auto
==============================================================================
--- maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelProblemUtils.java (added)
+++ maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelProblemUtils.java Mon Aug 3 13:16:41 2009
@@ -0,0 +1,95 @@
+package org.apache.maven.model.building;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+
+import java.io.File;
+
+import org.apache.maven.model.Model;
+
+/**
+ * Assists in the creation of model problems.
+ *
+ * @author Benjamin Bentmann
+ */
+public class ModelProblemUtils
+{
+
+ /**
+ * Creates a user-friendly source hint for the specified model.
+ *
+ * @param model The model to create a source hint for, must not be {@code null}.
+ * @return The user-friendly source hint, never {@code null}.
+ */
+ public static String toSourceHint( Model model )
+ {
+ StringBuilder buffer = new StringBuilder( 192 );
+
+ buffer.append( toId( model ) );
+
+ File pomFile = model.getPomFile();
+ if ( pomFile != null )
+ {
+ buffer.append( " (" ).append( pomFile ).append( ")" );
+ }
+
+ return buffer.toString();
+ }
+
+ private static String toId( Model model )
+ {
+ String groupId = model.getGroupId();
+ if ( groupId == null && model.getParent() != null )
+ {
+ groupId = model.getParent().getGroupId();
+ }
+
+ String artifactId = model.getArtifactId();
+
+ String version = model.getVersion();
+ if ( version == null && model.getParent() != null )
+ {
+ version = model.getParent().getVersion();
+ }
+
+ return toId( groupId, artifactId, version );
+ }
+
+ /**
+ * Creates a user-friendly artifact id from the specified coordinates.
+ *
+ * @param groupId The group id, may be {@code null}.
+ * @param artifactId The artifact id, may be {@code null}.
+ * @param version The version, may be {@code null}.
+ * @return The user-friendly artifact id, never {@code null}.
+ */
+ public static String toId( String groupId, String artifactId, String version )
+ {
+ StringBuilder buffer = new StringBuilder( 96 );
+
+ buffer.append( ( groupId != null && groupId.length() > 0 ) ? groupId : "[unknown-group-id]" );
+ buffer.append( ':' );
+ buffer.append( ( artifactId != null && artifactId.length() > 0 ) ? artifactId : "[unknown-artifact-id]" );
+ buffer.append( ':' );
+ buffer.append( ( version != null && version.length() > 0 ) ? version : "[unknown-version]" );
+
+ return buffer.toString();
+ }
+
+}
Propchange: maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelProblemUtils.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelProblemUtils.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Modified: maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/plugin/LifecycleBindingsInjector.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/plugin/LifecycleBindingsInjector.java?rev=800353&r1=800352&r2=800353&view=diff
==============================================================================
--- maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/plugin/LifecycleBindingsInjector.java (original)
+++ maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/plugin/LifecycleBindingsInjector.java Mon Aug 3 13:16:41 2009
@@ -20,6 +20,7 @@
*/
import org.apache.maven.model.Model;
+import org.apache.maven.model.building.ModelBuildingProblems;
/**
* Handles injection of plugin executions induced by the lifecycle bindings for a packaging.
@@ -34,7 +35,8 @@
*
* @param model The model into which to inject the default plugin executions for its packaging, must not be
* <code>null</code>.
+ * @param problems The container used to collect problems that were encountered, must not be {@code null}.
*/
- void injectLifecycleBindings( Model model );
+ void injectLifecycleBindings( Model model, ModelBuildingProblems problems );
}