This is an automated email from the ASF dual-hosted git repository. elharo pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/maven-file-management.git
The following commit(s) were added to refs/heads/master by this push: new ec6af7e Remove dependency on maven-shared-io (#7) ec6af7e is described below commit ec6af7e277c2f568aabc67e8ea354492d0b546a1 Author: Elliotte Rusty Harold <elh...@users.noreply.github.com> AuthorDate: Tue Jul 7 15:45:09 2020 -0400 Remove dependency on maven-shared-io (#7) * remove dependency on maven-shared-io --- .gitignore | 1 + pom.xml | 5 - .../shared/model/fileset/util/FileSetManager.java | 21 +- .../shared/model/fileset/util/MessageHolder.java | 236 +++++++++++++++++++++ .../shared/model/fileset/util/MessageLevels.java | 93 ++++++++ .../shared/model/fileset/util/MessageSink.java | 35 +++ .../shared/model/fileset/util/MojoLogSink.java | 60 ++++++ .../model/fileset/util/PlexusLoggerSink.java | 63 ++++++ 8 files changed, 496 insertions(+), 18 deletions(-) diff --git a/.gitignore b/.gitignore index 8e6c938..1054878 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,4 @@ out/ /bootstrap /dependencies.xml .java-version +.checkstyle diff --git a/pom.xml b/pom.xml index 5abeb80..419d662 100644 --- a/pom.xml +++ b/pom.xml @@ -72,11 +72,6 @@ <artifactId>maven-plugin-api</artifactId> <version>${mavenVersion}</version> </dependency> - <dependency> - <groupId>org.apache.maven.shared</groupId> - <artifactId>maven-shared-io</artifactId> - <version>3.0.0</version> - </dependency> <dependency> <groupId>org.apache.maven.shared</groupId> diff --git a/src/main/java/org/apache/maven/shared/model/fileset/util/FileSetManager.java b/src/main/java/org/apache/maven/shared/model/fileset/util/FileSetManager.java index 3631e7f..311dcf9 100644 --- a/src/main/java/org/apache/maven/shared/model/fileset/util/FileSetManager.java +++ b/src/main/java/org/apache/maven/shared/model/fileset/util/FileSetManager.java @@ -33,11 +33,6 @@ import java.util.Map; import java.util.Set; import org.apache.maven.plugin.logging.Log; -import org.apache.maven.shared.io.logging.DefaultMessageHolder; -import org.apache.maven.shared.io.logging.MessageHolder; -import org.apache.maven.shared.io.logging.MessageLevels; -import org.apache.maven.shared.io.logging.MojoLogSink; -import org.apache.maven.shared.io.logging.PlexusLoggerSink; import org.apache.maven.shared.model.fileset.FileSet; import org.apache.maven.shared.model.fileset.mappers.FileNameMapper; import org.apache.maven.shared.model.fileset.mappers.MapperException; @@ -68,20 +63,20 @@ public class FileSetManager /** * Create a new manager instance with the supplied log instance and flag for whether to output verbose messages. * - * @param log The mojo log instance - * @param verbose Whether to output verbose messages + * @param log the mojo log instance + * @param verbose whether to output verbose messages */ public FileSetManager( Log log, boolean verbose ) { if ( verbose ) { this.messages = - new DefaultMessageHolder( MessageLevels.LEVEL_DEBUG, MessageLevels.LEVEL_INFO, new MojoLogSink( log ) ); + new MessageHolder( MessageLevels.LEVEL_DEBUG, MessageLevels.LEVEL_INFO, new MojoLogSink( log ) ); } else { this.messages = - new DefaultMessageHolder( MessageLevels.LEVEL_INFO, MessageLevels.LEVEL_INFO, new MojoLogSink( log ) ); + new MessageHolder( MessageLevels.LEVEL_INFO, MessageLevels.LEVEL_INFO, new MojoLogSink( log ) ); } this.verbose = verbose; @@ -95,7 +90,7 @@ public class FileSetManager public FileSetManager( Log log ) { this.messages = - new DefaultMessageHolder( MessageLevels.LEVEL_INFO, MessageLevels.LEVEL_INFO, new MojoLogSink( log ) ); + new MessageHolder( MessageLevels.LEVEL_INFO, MessageLevels.LEVEL_INFO, new MojoLogSink( log ) ); this.verbose = false; } @@ -109,12 +104,12 @@ public class FileSetManager { if ( verbose ) { - this.messages = new DefaultMessageHolder( MessageLevels.LEVEL_DEBUG, MessageLevels.LEVEL_INFO, + this.messages = new MessageHolder( MessageLevels.LEVEL_DEBUG, MessageLevels.LEVEL_INFO, new PlexusLoggerSink( log ) ); } else { - this.messages = new DefaultMessageHolder( MessageLevels.LEVEL_INFO, MessageLevels.LEVEL_INFO, + this.messages = new MessageHolder( MessageLevels.LEVEL_INFO, MessageLevels.LEVEL_INFO, new PlexusLoggerSink( log ) ); } @@ -129,7 +124,7 @@ public class FileSetManager public FileSetManager( Logger log ) { this.messages = - new DefaultMessageHolder( MessageLevels.LEVEL_INFO, MessageLevels.LEVEL_INFO, new PlexusLoggerSink( log ) ); + new MessageHolder( MessageLevels.LEVEL_INFO, MessageLevels.LEVEL_INFO, new PlexusLoggerSink( log ) ); this.verbose = false; } diff --git a/src/main/java/org/apache/maven/shared/model/fileset/util/MessageHolder.java b/src/main/java/org/apache/maven/shared/model/fileset/util/MessageHolder.java new file mode 100644 index 0000000..81f4814 --- /dev/null +++ b/src/main/java/org/apache/maven/shared/model/fileset/util/MessageHolder.java @@ -0,0 +1,236 @@ +package org.apache.maven.shared.model.fileset.util; + +/* + * 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.PrintWriter; +import java.io.StringWriter; +import java.util.ArrayList; +import java.util.List; + +class MessageHolder +{ + + private List<Message> messages = new ArrayList<Message>(); + + private Message currentMessage; + + private int defaultMessageLevel = MessageLevels.LEVEL_INFO; + + private boolean[] messageLevelStates; + + private MessageSink onDemandSink; + + MessageHolder( int maxMessageLevel, int defaultMessageLevel, MessageSink onDemandSink ) + { + this.defaultMessageLevel = defaultMessageLevel; + this.onDemandSink = onDemandSink; + this.messageLevelStates = MessageLevels.getLevelStates( maxMessageLevel ); + } + + private MessageHolder addMessage( int level, CharSequence messagePart ) + { + newMessage( level ); + append( messagePart.toString() ); + + return this; + } + + private MessageHolder addMessage( int level, Throwable error ) + { + newMessage( level ); + append( error ); + + return this; + } + + private MessageHolder append( CharSequence messagePart ) + { + if ( currentMessage == null ) + { + newMessage(); + } + + currentMessage.append( messagePart.toString() ); + + return this; + } + + private MessageHolder append( Throwable error ) + { + if ( currentMessage == null ) + { + newMessage(); + } + + currentMessage.setError( error ); + + return this; + } + + MessageHolder newMessage() + { + newMessage( defaultMessageLevel ); + + return this; + } + + private void newMessage( int messageLevel ) + { + if ( onDemandSink != null && currentMessage != null ) + { + renderTo( currentMessage, onDemandSink ); + } + + currentMessage = new Message( messageLevel, onDemandSink ); + messages.add( currentMessage ); + } + + private static final class Message + { + private StringBuffer message = new StringBuffer(); + + private Throwable error; + + private final int messageLevel; + + private final MessageSink onDemandSink; + + Message( int messageLevel, MessageSink onDemandSink ) + { + this.messageLevel = messageLevel; + + this.onDemandSink = onDemandSink; + } + + Message setError( Throwable pError ) + { + this.error = pError; + return this; + } + + Message append( CharSequence pMessage ) + { + this.message.append( pMessage.toString() ); + return this; + } + + private int getMessageLevel() + { + return messageLevel; + } + + private CharSequence render() + { + StringBuffer buffer = new StringBuffer(); + + if ( onDemandSink == null ) + { + buffer.append( '[' ).append( MessageLevels.getLevelLabel( messageLevel ) ).append( "] " ); + } + if ( message != null && message.length() > 0 ) + { + buffer.append( message ); + + if ( error != null ) + { + buffer.append( '\n' ); + } + } + + if ( error != null ) + { + buffer.append( "Error:\n" ); + + StringWriter sw = new StringWriter(); + PrintWriter pw = new PrintWriter( sw ); + error.printStackTrace( pw ); + + buffer.append( sw.toString() ); + } + + return buffer; + } + } + + MessageHolder addDebugMessage( CharSequence messagePart ) + { + return addMessage( MessageLevels.LEVEL_DEBUG, messagePart ); + } + + MessageHolder addInfoMessage( CharSequence messagePart ) + { + return addMessage( MessageLevels.LEVEL_INFO, messagePart ); + } + + MessageHolder addWarningMessage( Throwable error ) + { + return addMessage( MessageLevels.LEVEL_WARNING, error ); + } + + MessageHolder addWarningMessage( CharSequence messagePart ) + { + return addMessage( MessageLevels.LEVEL_WARNING, messagePart ); + } + + boolean isDebugEnabled() + { + return messageLevelStates[MessageLevels.LEVEL_DEBUG]; + } + + boolean isWarningEnabled() + { + return messageLevelStates[MessageLevels.LEVEL_WARNING]; + } + + void flush() + { + if ( onDemandSink != null && currentMessage != null ) + { + renderTo( currentMessage, onDemandSink ); + currentMessage = null; + } + } + + private void renderTo( Message message, MessageSink sink ) + { + switch ( message.getMessageLevel() ) + { + case ( MessageLevels.LEVEL_SEVERE ): + sink.severe( message.render().toString() ); + break; + + case ( MessageLevels.LEVEL_ERROR ): + sink.error( message.render().toString() ); + break; + + case ( MessageLevels.LEVEL_WARNING ): + sink.warning( message.render().toString() ); + break; + + case ( MessageLevels.LEVEL_INFO ): + sink.info( message.render().toString() ); + break; + + default: + sink.debug( message.render().toString() ); + } + } + +} diff --git a/src/main/java/org/apache/maven/shared/model/fileset/util/MessageLevels.java b/src/main/java/org/apache/maven/shared/model/fileset/util/MessageLevels.java new file mode 100644 index 0000000..af28dc1 --- /dev/null +++ b/src/main/java/org/apache/maven/shared/model/fileset/util/MessageLevels.java @@ -0,0 +1,93 @@ +package org.apache.maven.shared.model.fileset.util; + +/* + * 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.Arrays; +import java.util.Collections; +import java.util.List; + + +final class MessageLevels +{ + + static final int LEVEL_DEBUG = 0; + static final int LEVEL_INFO = 1; + static final int LEVEL_WARNING = 2; + static final int LEVEL_ERROR = 3; + static final int LEVEL_SEVERE = 4; + static final int LEVEL_DISABLED = 5; + + private static final List<String> LEVEL_NAMES; + + static + { + List<String> names = new ArrayList<String>(); + names.add( "DEBUG" ); + names.add( "INFO" ); + names.add( "WARN" ); + names.add( "ERROR" ); + names.add( "SEVERE" ); + + LEVEL_NAMES = Collections.unmodifiableList( names ); + } + + private MessageLevels() + { + } + + /** + * @param maxMessageLevel for which level + * @return level states + */ + static boolean[] getLevelStates( int maxMessageLevel ) + { + boolean[] states = new boolean[5]; + + Arrays.fill( states, false ); + + switch ( maxMessageLevel ) + { + case ( LEVEL_DEBUG ): + states[LEVEL_DEBUG] = true; + case ( LEVEL_INFO ): + states[LEVEL_INFO] = true; + case ( LEVEL_WARNING ): + states[LEVEL_WARNING] = true; + case ( LEVEL_ERROR ): + states[LEVEL_ERROR] = true; + case ( LEVEL_SEVERE ): + states[LEVEL_SEVERE] = true; + default: + } + + return states; + } + + static String getLevelLabel( int messageLevel ) + { + if ( messageLevel > -1 && LEVEL_NAMES.size() > messageLevel ) + { + return (String) LEVEL_NAMES.get( messageLevel ); + } + + throw new IllegalArgumentException( "Invalid message level: " + messageLevel ); + } +} diff --git a/src/main/java/org/apache/maven/shared/model/fileset/util/MessageSink.java b/src/main/java/org/apache/maven/shared/model/fileset/util/MessageSink.java new file mode 100644 index 0000000..843931a --- /dev/null +++ b/src/main/java/org/apache/maven/shared/model/fileset/util/MessageSink.java @@ -0,0 +1,35 @@ +package org.apache.maven.shared.model.fileset.util; + +/* + * 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. + */ + +interface MessageSink +{ + + void debug( String message ); + + void info( String message ); + + void warning( String message ); + + void error( String message ); + + void severe( String message ); + +} diff --git a/src/main/java/org/apache/maven/shared/model/fileset/util/MojoLogSink.java b/src/main/java/org/apache/maven/shared/model/fileset/util/MojoLogSink.java new file mode 100644 index 0000000..71fea4a --- /dev/null +++ b/src/main/java/org/apache/maven/shared/model/fileset/util/MojoLogSink.java @@ -0,0 +1,60 @@ +package org.apache.maven.shared.model.fileset.util; + +/* + * 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 org.apache.maven.plugin.logging.Log; + +class MojoLogSink + implements MessageSink +{ + + private final Log logger; + + MojoLogSink( Log logger ) + { + this.logger = logger; + } + + public void debug( String message ) + { + logger.debug( message ); + } + + public void error( String message ) + { + logger.error( message ); + } + + public void info( String message ) + { + logger.info( message ); + } + + public void severe( String message ) + { + logger.error( message ); + } + + public void warning( String message ) + { + logger.warn( message ); + } + +} diff --git a/src/main/java/org/apache/maven/shared/model/fileset/util/PlexusLoggerSink.java b/src/main/java/org/apache/maven/shared/model/fileset/util/PlexusLoggerSink.java new file mode 100644 index 0000000..88e3d6f --- /dev/null +++ b/src/main/java/org/apache/maven/shared/model/fileset/util/PlexusLoggerSink.java @@ -0,0 +1,63 @@ +package org.apache.maven.shared.model.fileset.util; + +/* + * 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 org.codehaus.plexus.logging.Logger; + +/** + * The plexus logger sink implementation. + */ +class PlexusLoggerSink + implements MessageSink +{ + + private final Logger logger; + + PlexusLoggerSink( Logger logger ) + { + this.logger = logger; + } + + public void debug( String message ) + { + logger.debug( message ); + } + + public void error( String message ) + { + logger.error( message ); + } + + public void info( String message ) + { + logger.info( message ); + } + + public void severe( String message ) + { + logger.fatalError( message ); + } + + public void warning( String message ) + { + logger.warn( message ); + } + +}