[ https://issues.apache.org/jira/browse/MNG-7486?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17543553#comment-17543553 ]
ASF GitHub Bot commented on MNG-7486: ------------------------------------- gnodet commented on code in PR #746: URL: https://github.com/apache/maven/pull/746#discussion_r884189390 ########## maven-core/src/main/java/org/apache/maven/internal/MultilineMessageHelper.java: ########## @@ -0,0 +1,91 @@ +package org.apache.maven.internal; + +/* + * 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.List; + +/** + * Helper class to format multiline messages to the console + */ +public class MultilineMessageHelper +{ + + private static final int DEFAULT_MAX_SIZE = 65; + private static final char BOX_CHAR = '*'; + + public static String separatorLine() + { + StringBuilder sb = new StringBuilder( DEFAULT_MAX_SIZE ); + repeat( sb, '*', DEFAULT_MAX_SIZE ); + return sb.toString(); + } + + public static List<String> format( String... lines ) + { + int size = DEFAULT_MAX_SIZE; + int rem = size - 4; // 4 chars = 2 box_char + 2 spaces + List<String> result = new ArrayList<>(); + StringBuilder sb = new StringBuilder( size ); + // first line + sb.setLength( 0 ); + repeat( sb, BOX_CHAR, size ); + result.add( sb.toString() ); + // lines + for ( String line : lines ) + { + sb.setLength( 0 ); + String[] words = line.split( " " ); + for ( String word : words ) + { + if ( sb.length() >= rem - word.length() - ( sb.length() > 0 ? 1 : 0 ) ) Review Comment: I don't think so. We loop over words and each one is appended, eventually starting a new line if the current line does not have enough space. > Create a multiline message helper for boxed log messages > -------------------------------------------------------- > > Key: MNG-7486 > URL: https://issues.apache.org/jira/browse/MNG-7486 > Project: Maven > Issue Type: New Feature > Reporter: Michael Osipov > Assignee: Guillaume Nodet > Priority: Major > Fix For: 3.8.6, 3.9.0, 4.0.0-alpha-1, 4.0.0 > > > Simplify the way how boxed messages, e.g., for non-threadsafe plugins is > created. -- This message was sent by Atlassian Jira (v8.20.7#820007)