kwin commented on code in PR #216: URL: https://github.com/apache/maven-enforcer/pull/216#discussion_r1060575511
########## enforcer-api/src/main/java/org/apache/maven/enforcer/rule/api/AbstractEnforcerRule.java: ########## @@ -0,0 +1,89 @@ +/* + * 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. + */ +package org.apache.maven.enforcer.rule.api; + +/** + * Entry point for custom {@code Enforcer Rule}. + * + * @author Slawomir Jaranowski + * @since 3.2.0 + */ +public abstract class AbstractEnforcerRule implements EnforcerRuleBase { + + /** + * EnforcerLogger instance + */ + private EnforcerLogger log; + + /** + * Enforcer Rule execution level + */ + private EnforcerLevel level = EnforcerLevel.ERROR; + + /** + * Used by {@code EnforcerMojo} to inject logger instance + * + * @param log an {@link EnforcerLogger} instance + */ + public void setLog(EnforcerLogger log) { + this.log = log; + } + + /** + * Provide an {@link EnforcerLogger} instance for Rule + * + * @return an {@link EnforcerLogger} instance + */ + public EnforcerLogger getLog() { + return log; + } + + /** + * Current Enforcer execution level + * + * @return an Enforcer execution level + */ + public EnforcerLevel getLevel() { + return level; + } + + /** + * If the rule is to be cached during session scope, whole executing of Maven build, + * this id is used as part of the key. + * <p> + * Rule of the same class and the same cache id will be executed once. + * + * @return id to be used by the Enforcer to determine uniqueness of cache results. + * Return {@code null} disable cache of rule executing. + */ + public String getCacheId() { + return null; + } + + /** + * This is the interface into the rule. This method should throw an exception + * containing a reason message if the rule fails the check. The plugin will + * then decide based on the fail flag and rule level if it should stop or just log the + * message as a warning. + * + * @throws EnforcerRuleException the enforcer rule exception + * @throws EnforcerRuleError in order to brake a build immediately + */ + public abstract void execute() throws EnforcerRuleException; Review Comment: The point is: MavenProject or RepositorySystemSession are imho no plexus/Sisu components so I am wondering why they are available at all… -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: issues-unsubscr...@maven.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org