Skip to content

Commit 4f6f6b1

Browse files
committed
Just print the differences between messages_{LOCALE} properties and
print a warning message instead of build failure.
1 parent da382b8 commit 4f6f6b1

File tree

3 files changed

+73
-57
lines changed

3 files changed

+73
-57
lines changed

core/framework/src/main/java/org/phoebus/framework/nls/NLS.java

Lines changed: 62 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,14 +156,53 @@ public static List<String> checkMessageFilesDifferences(Class<?> clazz) {
156156
return checkMessageFilesDifferences(resource.getFile());
157157
}
158158

159+
/**
160+
* Use for unit test only
161+
* Check if all the existing messages_{LOCALE}.properties are synchronized on default messages.propertiesresource in the project
162+
*
163+
* @return the list of difference between the default resources , null or empty if it is synchronized
164+
*/
165+
public static List<String> checkAllMessageFilesDifferences(){
166+
List<String> differences = new ArrayList<>();
167+
URL resource = NLS.class.getResource("CheckMessagesFiles.txt");
168+
if (resource != null) {
169+
String filePath = resource.getFile();
170+
System.out.println(filePath);
171+
String[] split = filePath.split("/core/framework/");
172+
//First part is the parent folder
173+
String parentFolder = split != null && split.length > 0 ? split[0] : null;
174+
System.out.println("parentFolder=" + parentFolder);
175+
File parentFile = new File(parentFolder);
176+
List<File> fileList = listMessagesFiles(parentFile);
177+
178+
for (File file : fileList) {
179+
List<String> diff = NLS.checkMessageFilesDifferences(file.getAbsolutePath());
180+
if (diff != null && !diff.isEmpty()) {
181+
differences.addAll(diff);
182+
}
183+
}
184+
185+
if(differences.isEmpty()) {
186+
System.out.println("All the "+ MESSAGE+ "_{LOCALE}.properties files are syncronized ");
187+
}
188+
else {
189+
System.out.println("**There is " + differences.size() + " difference(s) found**");
190+
for (String dif : differences) {
191+
System.out.println(dif);
192+
}
193+
}
194+
}
195+
return differences;
196+
}
197+
159198
/**
160199
* Use for unit test only
161200
* Check if the existing messages_{LOCALE}.properties are synchronized on default messages.propertiesresource
162201
*
163202
* @param clazz Class relative to which message resources are located
164203
* @return the list of difference between the default ressources , null or empty if it is synchronized
165204
*/
166-
public static List<String> checkMessageFilesDifferences(String resourceFile) {
205+
private static List<String> checkMessageFilesDifferences(String resourceFile) {
167206
List<String> differences = new ArrayList<>();
168207
if (resourceFile != null) {
169208
try {
@@ -239,6 +278,28 @@ public boolean accept(File dir, String name) {
239278
return differences;
240279
}
241280

281+
private static List<File> listMessagesFiles(File folder) {
282+
String filename = MESSAGE + ".properties";
283+
List<File> fileList = new ArrayList<>();
284+
//Ignore target folder from build
285+
if(folder != null && folder.isDirectory()
286+
&& !folder.getAbsolutePath().contains("\\target\\")
287+
&& !folder.getAbsolutePath().contains("\\test\\")) {
288+
File[] listFiles = folder.listFiles();
289+
for(File file : listFiles) {
290+
if(file.isDirectory()) {
291+
List<File> list = listMessagesFiles(file);
292+
fileList.addAll(list);
293+
}
294+
else if (file.getName().equals(filename)){
295+
fileList.add(file);
296+
}
297+
}
298+
}
299+
return fileList;
300+
}
301+
302+
242303
/**
243304
* To get Locale from a countryCode
244305
*
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
This file is used by org.phoebus.framework.nls.NLS.java class to check the synchronization between messages_{LOCALE}.properties and messages.properties in the Phoebus project

core/framework/src/test/java/org/phoebus/framework/nls/NLSMessagesTest.java

Lines changed: 10 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,6 @@
1111
import org.junit.jupiter.api.BeforeAll;
1212
import org.junit.jupiter.api.Test;
1313

14-
import java.io.File;
15-
import java.net.URL;
16-
import java.util.ArrayList;
1714
import java.util.List;
1815
import java.util.Locale;
1916

@@ -33,15 +30,14 @@ public class NLSMessagesTest
3330
public static String HowAreYou;
3431
public static String MissingMessage;
3532
public static String AppVersion;
36-
private static final String FILENAME = NLS.MESSAGE + ".properties";
3733
private static Locale original;
3834

3935
// They are initialized from a "messages*.properties" file in the same package,
4036
// typically using 'static' code like this:
4137
//
4238
// static
4339
// {
44-
// NLS.initializeMessages(NLSMessagesTest.class);
40+
// NLS.initializeMessages(NLSMessagesTest.class);
4541
// }
4642
//
4743
// For the test, we call NLS.initializeMessages with various locates
@@ -102,70 +98,28 @@ public void testUpdateMessages() {
10298
List<String> difference = NLS.checkMessageFilesDifferences(NLSMessagesTest.class);
10399
System.out.println("**There is " + (difference != null ? difference.size() : 0) + " difference(s) found**");
104100
boolean appversionFound = false;
105-
if(difference != null && !difference.isEmpty()) {
106-
for(String dif : difference) {
101+
if (difference != null && !difference.isEmpty()) {
102+
for (String dif : difference) {
107103
System.out.println(dif);
108104
appversionFound = !appversionFound && dif.contains("AppVersion");
109105
}
110106
}
111-
107+
112108
assertThat("Env variable value is ignored", !appversionFound);
113109
assertThat("Differences between properties", difference.size() == 3);
114110
}
115-
111+
116112
@Test
117113
public void checkAllMessagesResources() {
118-
URL resource = NLSMessagesTest.class.getResource(FILENAME);
119-
if (resource != null) {
120-
String filePath = resource.getFile();
121-
System.out.println(filePath);
122-
String[] split = filePath.split("/core/framework/");
123-
//First part is the parent folder
124-
String parentFolder = split != null && split.length > 0 ? split[0] : null;
125-
System.out.println("parentFolder=" + parentFolder);
126-
File parentFile = new File(parentFolder);
127-
List<File> fileList = listMessagesFiles(parentFile);
128-
List<String> differences = new ArrayList<>();
129-
for (File file : fileList) {
130-
List<String> diff = NLS.checkMessageFilesDifferences(file.getAbsolutePath());
131-
if (diff != null && !diff.isEmpty()) {
132-
differences.addAll(diff);
133-
}
134-
}
135-
136-
System.out.println("**There is " + differences.size() + " difference(s) found**");
137-
for (String dif : differences) {
138-
System.out.println(dif);
139-
}
140-
assertThat("All resources are synchronize ", differences.isEmpty());
141-
142-
}
143-
}
144-
145-
private static List<File> listMessagesFiles(File folder) {
146-
List<File> fileList = new ArrayList<>();
147-
//Ignore target folder from build
148-
if(folder != null && folder.isDirectory()
149-
&& !folder.getAbsolutePath().contains("\\target\\")
150-
&& !folder.getAbsolutePath().contains("\\test\\")) {
151-
File[] listFiles = folder.listFiles();
152-
for(File file : listFiles) {
153-
if(file.isDirectory()) {
154-
List<File> list = listMessagesFiles(file);
155-
fileList.addAll(list);
156-
}
157-
else if (file.getName().equals(FILENAME)){
158-
fileList.add(file);
159-
}
160-
}
114+
List<String> differences = NLS.checkAllMessageFilesDifferences();
115+
if (differences != null && !differences.isEmpty()) {
116+
System.out.println("WARNING ! there is " + differences.size() + " difference(s) detected in Messages_{LOCAL}.properties files");
161117
}
162-
return fileList;
118+
//assertThat("All resources are synchronize ", differences.isEmpty());
163119
}
164-
165120

166121
@AfterAll
167-
public static void restoreLocale()
168-
{
122+
public static void restoreLocale() {
169123
Locale.setDefault(original);
170124
}
171125
}

0 commit comments

Comments
 (0)