]> git.argeo.org Git - lgpl/argeo-commons.git/blob - demo/plugins/org.argeo.demo.i18n.rcp/src/main/java/org/argeo/demo/i18n/specific/NLSHelperImpl.java
Improve JCR
[lgpl/argeo-commons.git] / demo / plugins / org.argeo.demo.i18n.rcp / src / main / java / org / argeo / demo / i18n / specific / NLSHelperImpl.java
1 package org.argeo.demo.i18n.specific;
2
3 import java.lang.reflect.Constructor;
4 import java.lang.reflect.Field;
5 import java.lang.reflect.Modifier;
6 import java.util.Locale;
7 import java.util.MissingResourceException;
8 import java.util.ResourceBundle;
9
10 import org.argeo.demo.i18n.NLSHelper;
11
12 public class NLSHelperImpl extends NLSHelper {
13
14 protected Object internalGetMessages(String bundleName, Class clazz) {
15
16 ClassLoader loader = clazz.getClassLoader();
17 // test
18 Locale currentLocale = new Locale("fr");
19 ResourceBundle bundle = ResourceBundle.getBundle(bundleName,
20 currentLocale, loader);
21 // test end
22 // ResourceBundle bundle = ResourceBundle.getBundle(bundleName,
23 // Locale.getDefault(), loader);
24 return internalGet(bundle, clazz);
25 }
26
27 private Object internalGet(ResourceBundle bundle, Class clazz) {
28
29 Object result;
30 try {
31 Constructor constructor = clazz.getDeclaredConstructor(null);
32 constructor.setAccessible(true);
33 result = constructor.newInstance(null);
34 } catch (final Exception ex) {
35 throw new IllegalStateException(ex.getMessage());
36 }
37 final Field[] fieldArray = clazz.getDeclaredFields();
38 for (int i = 0; i < fieldArray.length; i++) {
39 try {
40 int modifiers = fieldArray[i].getModifiers();
41 if (String.class.isAssignableFrom(fieldArray[i].getType())
42 && Modifier.isPublic(modifiers)
43 && !Modifier.isStatic(modifiers)) {
44 try {
45 String value = bundle
46 .getString(fieldArray[i].getName());
47 byte[] bytes = value.getBytes();
48 String forcedValue = new String(bytes, "UTF8");
49 if (value != null) {
50 fieldArray[i].setAccessible(true);
51 fieldArray[i].set(result, forcedValue);
52 }
53 } catch (final MissingResourceException mre) {
54 fieldArray[i].setAccessible(true);
55 fieldArray[i].set(result, "");
56 mre.printStackTrace();
57 }
58 }
59 } catch (final Exception ex) {
60 ex.printStackTrace();
61 }
62 }
63 return result;
64 }
65 }