Skip to content

Commit

Permalink
Fixup mojohaus#337 Get rid of org.apache.maven.plugin.logging.Log in
Browse files Browse the repository at this point in the history
LicenseMojoUtils
  • Loading branch information
ppalaga committed Jun 22, 2019
1 parent 5fb1c23 commit 9c53509
Show file tree
Hide file tree
Showing 5 changed files with 115 additions and 167 deletions.
Expand Up @@ -776,7 +776,7 @@ else if ( licenseMergesUrl != null )
}

resolvedOverrideUrl = LicenseMojoUtils.prepareThirdPartyOverrideUrl( resolvedOverrideUrl, overrideFile,
overrideUrl, project.getBasedir(), getLog() );
overrideUrl, project.getBasedir() );
}

void consolidate() throws IOException, ArtifactNotFoundException, ArtifactResolutionException, MojoFailureException,
Expand Down
Expand Up @@ -410,7 +410,7 @@ protected void executeReport( Locale locale )
throws MavenReportException
{
resolvedOverrideUrl = LicenseMojoUtils.prepareThirdPartyOverrideUrl( resolvedOverrideUrl, overrideFile,
overrideUrl, project.getBasedir(), getLog() );
overrideUrl, project.getBasedir() );

Collection<ThirdPartyDetails> details;

Expand Down
101 changes: 89 additions & 12 deletions src/main/java/org/codehaus/mojo/license/LicenseMojoUtils.java
Expand Up @@ -26,8 +26,9 @@
import java.nio.file.Files;
import java.nio.file.Path;

import org.apache.maven.plugin.logging.Log;
import org.codehaus.mojo.license.utils.UrlRequester;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
* Utility methods common to various mojos.
Expand All @@ -36,8 +37,11 @@
*/
public final class LicenseMojoUtils
{
private static final LoggerFacade LOG = new Slf4jLoggerFacade( LoggerFactory.getLogger( LicenseMojoUtils.class ) );

/** A special singleton to pass the information that the URL was not set. */
static final String NO_URL = "file:///inexistent";

static final String DEFAULT_OVERRIDE_THIRD_PARTY = "src/license/override-THIRD-PARTY.properties";

/**
Expand Down Expand Up @@ -66,8 +70,24 @@ public static boolean isValid( String url )
* @param basedir {@code basedir} to resolve {@value #DEFAULT_OVERRIDE_THIRD_PARTY} against
* @return a valid URL or {@link #NO_URL}, never {@code null}
*/
public static String prepareThirdPartyOverrideUrl( final String resolvedUrl, final File deprecatedFile,
final String url, File basedir )
{
return prepareThirdPartyOverrideUrl( resolvedUrl, deprecatedFile, url, basedir, LOG );
}

/**
* An overload with explicit {@code log} param for testing purposes.
*
* @param resolvedUrl returns this one if it is not {@code null} and not equal to {@link #NO_URL}
* @param deprecatedFile the deprecated mojo parameter
* @param url the newer variant of the mojo parameter
* @param basedir {@code basedir} to resolve {@value #DEFAULT_OVERRIDE_THIRD_PARTY} against
* @param log the log to write to
* @return a valid URL or {@link #NO_URL}, never {@code null}
*/
static String prepareThirdPartyOverrideUrl( final String resolvedUrl, final File deprecatedFile, final String url,
File basedir, Log log )
File basedir, LoggerFacade log )
{
if ( deprecatedFile != null )
{
Expand All @@ -77,7 +97,7 @@ static String prepareThirdPartyOverrideUrl( final String resolvedUrl, final File
}

private static String prepareUrl( final String resolvedUrl, final File deprecatedFile, final String url,
File basedir, String defaultFilePath, Log log )
File basedir, String defaultFilePath, LoggerFacade log )
{
if ( resolvedUrl != null && !NO_URL.equals( resolvedUrl ) )
{
Expand All @@ -94,27 +114,27 @@ private static String prepareUrl( final String resolvedUrl, final File deprecate
if ( deprecatedFile.exists() )
{
String result = deprecatedFile.toURI().toString();
log.debug( "Loading overrides from file " + result );
log.debug( "Loading overrides from file {}", result );
return result;
}
else
{
log.warn( "overrideFile [" + deprecatedFile.getAbsolutePath() + "] was configured but doesn't exist" );
log.warn( "overrideFile [{}] was configured but doesn't exist", deprecatedFile.getAbsolutePath() );
}
}

if ( url != null )
{
if ( UrlRequester.isStringUrl( url ) )
{
log.debug( "Loading overrides from URL " + url );
log.debug( "Loading overrides from URL {}", url );
return url;
}
else
{
log.warn( "Unsupported or invalid URL [" + url + "] found in overrideUrl; "
+ "supported are 'classpath:' URLs and anything your JVM supports "
+ "(file:, http: and https: should always work)" );
log.warn( "Unsupported or invalid URL [{}] found in overrideUrl; "
+ "supported are 'classpath:' URLs and anything your JVM supports "
+ "(file:, http: and https: should always work)", url );
}
}

Expand All @@ -124,13 +144,70 @@ private static String prepareUrl( final String resolvedUrl, final File deprecate
if ( Files.exists( defaultPath ) )
{
String result = defaultPath.toUri().toString();
log.debug( "Loading overrides from file " + result );
log.debug( "Loading overrides from file {}", result );
return result;
}

log.debug( "No (valid) URL and no file [" + defaultPath.toAbsolutePath()
+ "] found; not loading any overrides" );
log.debug( "No (valid) URL and no file [{}] found; not loading any overrides", defaultPath.toAbsolutePath() );
return NO_URL;
}

/**
* A {@link LoggerFacade} implementation backed by a SLF4J {@link Logger}.
*/
static class Slf4jLoggerFacade
implements LoggerFacade
{

private final Logger delegate;

public Slf4jLoggerFacade( Logger delegate )
{
super();
this.delegate = delegate;
}

@Override
public void warn( String message )
{
delegate.warn( message );
}

@Override
public void warn( String template, Object param )
{
delegate.warn( template, param );
}

@Override
public void debug( String template, Object param )
{
delegate.debug( template, param );
}

}

/**
* A simplified facade of {@link Logger} to be able to implement a test logger easily.
*/
interface LoggerFacade
{

/**
* @see Logger#warn(String)
*/
void warn( String message );

/**
* @see Logger#warn(String, Object)
*/
void warn( String template, Object param );

/**
* @see Logger#debug(String, Object)
*/
void debug( String template, Object param );

}

}
Expand Up @@ -86,7 +86,7 @@ public void testPrepareThirdPartyOverrideUrlNonExistingDeprecatedFile()
+ "valid=false\n"
+ "WARN 'overrideFile' mojo parameter is deprecated. Use 'overrideUrl' instead.\n"
+ "WARN overrideFile [.../foo] was configured but doesn't exist\n"
+ "DEBUG No (valid) URL and no file [.../override-THIRD-PARTY.properties] found; not loading any overrides"
+ "DEBUG No (valid) URL and no file [.../override-THIRD-PARTY.properties] found; not loading any overrides\n"
, actual );
}

Expand All @@ -99,7 +99,7 @@ public void testPrepareThirdPartyOverrideUrlDeprecatedFile()
"resolved=file:/.../overrides.properties\n"
+ "valid=true\n"
+ "WARN 'overrideFile' mojo parameter is deprecated. Use 'overrideUrl' instead.\n"
+ "DEBUG Loading overrides from file file:/.../overrides.properties"
+ "DEBUG Loading overrides from file file:/.../overrides.properties\n"
, actual );
}

Expand All @@ -110,7 +110,7 @@ public void testPrepareThirdPartyOverrideClasspathResource()
String actual = LicenseMojoUtils.prepareThirdPartyOverrideUrl( resolvedUrl, deprecatedFile, url, basedir, log );
assertEquals( url, actual );
assertTrue( LicenseMojoUtils.isValid(actual) );
assertEquals( "DEBUG Loading overrides from URL classpath:overrides.properties", log.dump() );
assertEquals( "DEBUG Loading overrides from URL classpath:overrides.properties\n", log.dump() );
}

@Test
Expand All @@ -122,7 +122,7 @@ public void testPrepareThirdPartyOverrideInvalidUrl()
"resolved=file:///inexistent\n"
+ "valid=false\n"
+ "WARN Unsupported or invalid URL [foo://localhost/bar] found in overrideUrl; supported are 'classpath:' URLs and anything your JVM supports (file:, http: and https: should always work)\n"
+ "DEBUG No (valid) URL and no file [.../override-THIRD-PARTY.properties] found; not loading any overrides"
+ "DEBUG No (valid) URL and no file [.../override-THIRD-PARTY.properties] found; not loading any overrides\n"
, actual );
}

Expand All @@ -136,7 +136,7 @@ public void testPrepareThirdPartyOverridePreventReinit()
assertEquals(
"resolved=classpath:overrides.properties\n"
+ "valid=true\n"
+ "WARN 'overrideFile' mojo parameter is deprecated. Use 'overrideUrl' instead."
+ "WARN 'overrideFile' mojo parameter is deprecated. Use 'overrideUrl' instead.\n"
, actual );
}

Expand Down

0 comments on commit 9c53509

Please sign in to comment.