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