1 package org.apache.maven.shared.utils.logging;
2
3 /*
4 * Licensed to the Apache Software Foundation (ASF) under one
5 * or more contributor license agreements. See the NOTICE file
6 * distributed with this work for additional information
7 * regarding copyright ownership. The ASF licenses this file
8 * to you under the Apache License, Version 2.0 (the
9 * "License"); you may not use this file except in compliance
10 * with the License. You may obtain a copy of the License at
11 *
12 * http://www.apache.org/licenses/LICENSE-2.0
13 *
14 * Unless required by applicable law or agreed to in writing,
15 * software distributed under the License is distributed on an
16 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17 * KIND, either express or implied. See the License for the
18 * specific language governing permissions and limitations
19 * under the License.
20 */
21
22 /**
23 * Message builder that supports configurable styling.
24 * @see MessageUtils
25 * @since 3.1.0
26 */
27 public interface MessageBuilder
28 {
29 /**
30 * Append message content in success style.
31 * By default, bold green
32 * @param message the message to append
33 * @return the current builder
34 */
35 MessageBuilder success( Object message );
36
37 /**
38 * Append message content in warning style.
39 * By default, bold yellow
40 * @param message the message to append
41 * @return the current builder
42 */
43 MessageBuilder warning( Object message );
44
45 /**
46 * Append message content in failure style.
47 * By default, bold red
48 * @param message the message to append
49 * @return the current builder
50 */
51 MessageBuilder failure( Object message );
52
53 /**
54 * Append message content in strong style.
55 * By default, bold
56 * @param message the message to append
57 * @return the current builder
58 */
59 MessageBuilder strong( Object message );
60
61 /**
62 * Append message content in mojo style.
63 * By default, green
64 * @param message the message to append
65 * @return the current builder
66 */
67 MessageBuilder mojo( Object message );
68
69 /**
70 * Append message content in project style.
71 * By default, cyan
72 * @param message the message to append
73 * @return the current builder
74 */
75 MessageBuilder project( Object message );
76
77 //
78 // message building methods modelled after Ansi methods
79 //
80 /**
81 * Append content to the message buffer.
82 * @param value the content to append
83 * @param offset the index of the first {@code char} to append
84 * @param len the number of {@code char}s to append
85 * @return the current builder
86 */
87 MessageBuilder a( char[] value, int offset, int len );
88
89 /**
90 * Append content to the message buffer.
91 * @param value the content to append
92 * @return the current builder
93 */
94 MessageBuilder a( char[] value );
95
96 /**
97 * Append content to the message buffer.
98 * @param value the content to append
99 * @param start the starting index of the subsequence to be appended
100 * @param end the end index of the subsequence to be appended
101 * @return the current builder
102 */
103 MessageBuilder a( CharSequence value, int start, int end );
104
105 /**
106 * Append content to the message buffer.
107 * @param value the content to append
108 * @return the current builder
109 */
110 MessageBuilder a( CharSequence value );
111
112 /**
113 * Append content to the message buffer.
114 * @param value the content to append
115 * @return the current builder
116 */
117 MessageBuilder a( Object value );
118
119 /**
120 * Append newline to the message buffer.
121 * @return the current builder
122 */
123 MessageBuilder newline();
124
125 /**
126 * Append formatted content to the buffer.
127 * @see String#format(String, Object...)
128 * @param pattern a <a href="../util/Formatter.html#syntax">format string</a>
129 * @param args arguments referenced by the format specifiers in the format string.
130 * @return the current builder
131 */
132 MessageBuilder format( String pattern, Object... args );
133 }