• R/O
  • HTTP
  • SSH
  • HTTPS

Jindolf: 提交

Jindolfプロジェクトは、CGIゲーム「人狼BBS」を快適にプレイするための専用クライアントを製作するために発足したオープンソースプロジェクトです。


Commit MetaInfo

修订版040951920e972e5d37328e8e9c99e77c69c7467f (tree)
时间2020-07-10 03:41:03
作者Olyutorskii <olyutorskii@user...>
CommiterOlyutorskii

Log Message

modify envinfo.

更改概述

差异

--- a/src/main/java/jp/sfjp/jindolf/JindolfMain.java
+++ b/src/main/java/jp/sfjp/jindolf/JindolfMain.java
@@ -141,31 +141,31 @@ public final class JindolfMain {
141141
142142 return;
143143 }
144-
144+
145145 /**
146146 * 起動時の諸々の情報をログ出力する。
147- *
147+ *
148148 * @param optinfo コマンドラインオプション
149149 */
150150 private static void logBootInfo(OptionInfo optinfo){
151151 StringBuilder bootArgs = new StringBuilder();
152-
152+
153153 bootArgs.append("\n\n").append("起動時引数:\n");
154- optinfo.getInvokeArgList().forEach(arg ->
154+ optinfo.getInvokeArgList().forEach(arg ->
155155 bootArgs.append("\u0020\u0020").append(arg).append('\n')
156156 );
157157 bootArgs.append('\n');
158-
158+
159159 bootArgs.append(EnvInfo.getVMInfo());
160-
160+
161161 LOGGER.info(bootArgs.toString());
162162
163163 return;
164164 }
165-
165+
166166 /**
167167 * 起動時の諸々の情報をログ出力する。
168- *
168+ *
169169 * @param configStore 設定ディレクトリ情報
170170 */
171171 private static void logBootInfo(ConfigStore configStore){
@@ -176,7 +176,7 @@ public final class JindolfMain {
176176 }
177177 return;
178178 }
179-
179+
180180 /**
181181 * JindolfMain のスタートアップエントリ。
182182 * @param args コマンドライン引数
@@ -263,11 +263,11 @@ public final class JindolfMain {
263263
264264 logBootInfo();
265265 logBootInfo(optinfo);
266-
266+
267267 final AppSetting appSetting = new AppSetting(optinfo);
268268 ConfigStore configStore = appSetting.getConfigStore();
269269 logBootInfo(configStore);
270-
270+
271271 ConfigDirUi.prepareConfigDir(configStore);
272272 ConfigDirUi.tryLock(configStore);
273273 // ここから設定格納ディレクトリ解禁
@@ -294,7 +294,7 @@ public final class JindolfMain {
294294
295295 int exitCode = 0;
296296 try{
297- EventQueue.invokeAndWait(() ->
297+ EventQueue.invokeAndWait(() ->
298298 startGUI(appSetting)
299299 );
300300 }catch(InvocationTargetException | InterruptedException e){
--- a/src/main/java/jp/sfjp/jindolf/config/EnvInfo.java
+++ b/src/main/java/jp/sfjp/jindolf/config/EnvInfo.java
@@ -8,8 +8,10 @@
88 package jp.sfjp.jindolf.config;
99
1010 import java.io.File;
11-import java.text.NumberFormat;
12-import java.util.Set;
11+import java.text.MessageFormat;
12+import java.util.Arrays;
13+import java.util.Collections;
14+import java.util.List;
1315 import java.util.SortedMap;
1416 import java.util.TreeMap;
1517
@@ -32,36 +34,48 @@ public final class EnvInfo{
3234 /** 最大ヒープメモリ。 */
3335 public static final long MAX_MEMORY;
3436
35- private static final SortedMap<String, String> PROPERTY_MAP =
36- new TreeMap<>();
37-
38- private static final SortedMap<String, String> ENVIRONMENT_MAP =
39- new TreeMap<>();
40-
41- private static final String[] CLASSPATHS;
37+ private static final SortedMap<String, String> PROPERTY_MAP;
38+ private static final SortedMap<String, String> ENVIRONMENT_MAP;
39+
40+ private static final List<String> CLASSPATHS;
41+
42+ private static final String[] PROPNAMES = {
43+ "os.name",
44+ "os.version",
45+ "os.arch",
46+ "java.vendor",
47+ "java.version",
48+ "java.class.path",
49+ };
50+
51+ private static final String[] ENVNAMES = {
52+ "LANG",
53+ "DISPLAY",
54+ //"PATH",
55+ //"TEMP",
56+ //"USER",
57+ };
58+
59+ private static final String FORM_MEM =
60+ "最大ヒープメモリ量: {0,number} bytes\n";
61+ private static final String INDENT = "\u0020\u0020";
62+ private static final char NL = '\n';
4263
4364 static{
44- OS_NAME = getSecureProperty("os.name");
45- OS_VERSION = getSecureProperty("os.version");
46- OS_ARCH = getSecureProperty("os.arch");
47- JAVA_VENDOR = getSecureProperty("java.vendor");
48- JAVA_VERSION = getSecureProperty("java.version");
49-
50- getSecureEnvironment("LANG");
51- getSecureEnvironment("DISPLAY");
52-
5365 Runtime runtime = Runtime.getRuntime();
5466 MAX_MEMORY = runtime.maxMemory();
5567
56- String classpath = getSecureProperty("java.class.path");
57- String[] pathVec;
58- if(classpath != null){
59- pathVec = classpath.split(File.pathSeparator);
60- }else{
61- pathVec = new String[0];
62- }
63- CLASSPATHS = pathVec;
68+ ENVIRONMENT_MAP = buildEnvMap();
69+
70+ PROPERTY_MAP = buildPropMap();
71+ OS_NAME = PROPERTY_MAP.get("os.name");
72+ OS_VERSION = PROPERTY_MAP.get("os.version");
73+ OS_ARCH = PROPERTY_MAP.get("os.arch");
74+ JAVA_VENDOR = PROPERTY_MAP.get("java.vendor");
75+ JAVA_VERSION = PROPERTY_MAP.get("java.version");
6476
77+ String classpath = PROPERTY_MAP.get("java.class.path");
78+ CLASSPATHS = buildClassPathList(classpath);
6579 }
6680
6781
@@ -69,39 +83,78 @@ public final class EnvInfo{
6983 * 隠れコンストラクタ。
7084 */
7185 private EnvInfo(){
72- throw new AssertionError();
86+ assert false;
7387 }
7488
7589
7690 /**
77- * 可能ならシステムプロパティを読み込む。
78- * @param key キー
79- * @return プロパティ値。セキュリティ上読み込み禁止の場合はnull。
91+ * 主要環境変数マップを作成する。
92+ *
93+ * @return 主要環境変数マップ
8094 */
81- private static String getSecureProperty(String key){
82- String result;
83- try{
84- result = System.getProperty(key);
85- if(result != null) PROPERTY_MAP.put(key, result);
86- }catch(SecurityException e){
87- result = null;
95+ private static SortedMap<String, String> buildEnvMap(){
96+ SortedMap<String, String> envmap = new TreeMap<>();
97+
98+ for(String name : ENVNAMES){
99+ String val;
100+ try{
101+ val = System.getenv(name);
102+ }catch(SecurityException e){
103+ continue;
104+ }
105+ if(val == null) continue;
106+ envmap.put(name, val);
88107 }
108+
109+ SortedMap<String, String> result;
110+ result = Collections.unmodifiableSortedMap(envmap);
111+
89112 return result;
90113 }
91114
92115 /**
93- * 可能なら環境変数を読み込む。
94- * @param name 環境変数名
95- * @return 環境変数値。セキュリティ上読み込み禁止の場合はnull。
116+ * 主要システムプロパティ値マップを作成する。
117+ *
118+ * @return 主要システムプロパティ値マップ
96119 */
97- private static String getSecureEnvironment(String name){
98- String result;
99- try{
100- result = System.getenv(name);
101- if(result != null) ENVIRONMENT_MAP.put(name, result);
102- }catch(SecurityException e){
103- result = null;
120+ private static SortedMap<String, String> buildPropMap(){
121+ SortedMap<String, String> propmap = new TreeMap<>();
122+
123+ for(String name : PROPNAMES){
124+ String val;
125+ try{
126+ val = System.getProperty(name);
127+ }catch(SecurityException e){
128+ continue;
129+ }
130+ if(val == null) continue;
131+ propmap.put(name, val);
104132 }
133+
134+ SortedMap<String, String> result;
135+ result = Collections.unmodifiableSortedMap(propmap);
136+
137+ return result;
138+ }
139+
140+ /**
141+ * クラスパスリストを作成する。
142+ *
143+ * @param 連結クラスパス値
144+ * @return クラスパスリスト
145+ */
146+ private static List<String> buildClassPathList(String classpath){
147+ String[] pathArray;
148+ if(classpath != null){
149+ pathArray = classpath.split(File.pathSeparator);
150+ }else{
151+ pathArray = new String[0];
152+ }
153+
154+ List result;
155+ result = Arrays.asList(pathArray);
156+ result = Collections.unmodifiableList(result);
157+
105158 return result;
106159 }
107160
@@ -111,44 +164,74 @@ public final class EnvInfo{
111164 */
112165 public static String getVMInfo(){
113166 StringBuilder result = new StringBuilder();
114- NumberFormat nform = NumberFormat.getNumberInstance();
115167
116- result.append("最大ヒープメモリ量: ")
117- .append(nform.format(MAX_MEMORY))
118- .append(" bytes\n");
168+ String memform = MessageFormat.format(FORM_MEM, MAX_MEMORY);
169+ result.append(memform).append(NL);
170+
171+ result.append(getSysPropInfo()).append(NL);
172+ result.append(getEnvInfo()).append(NL);
173+ result.append(getClassPathInfo()).append(NL);
119174
120- result.append("\n");
175+ return result.toString();
176+ }
121177
178+ /**
179+ * システムプロパティ要覧を返す。
180+ *
181+ * <p>java.class.pathの値は除く。
182+ *
183+ * @return システムプロパティ要覧
184+ */
185+ private static CharSequence getSysPropInfo(){
186+ StringBuilder result = new StringBuilder();
122187 result.append("主要システムプロパティ:\n");
123- Set<String> propKeys = PROPERTY_MAP.keySet();
124- for(String propKey : propKeys){
125- if(propKey.equals("java.class.path")) continue;
126- String value = PROPERTY_MAP.get(propKey);
127- result.append(" ");
128- result.append(propKey).append("=").append(value).append("\n");
129- }
130188
131- result.append("\n");
189+ PROPERTY_MAP.entrySet().stream()
190+ .filter(entry -> ! entry.getKey().equals("java.class.path"))
191+ .forEachOrdered(entry -> {
192+ result.append(INDENT);
193+ result.append(entry.getKey());
194+ result.append("=");
195+ result.append(entry.getValue());
196+ result.append(NL);
197+ });
132198
133- result.append("主要環境変数:\n");
134- Set<String> envKeys = ENVIRONMENT_MAP.keySet();
135- for(String envKey : envKeys){
136- String value = ENVIRONMENT_MAP.get(envKey);
137- result.append(" ");
138- result.append(envKey).append("=").append(value).append("\n");
139- }
199+ return result;
200+ }
140201
141- result.append("\n");
202+ /**
203+ * 環境変数要覧を返す。
204+ *
205+ * @return 環境変数要覧
206+ */
207+ private static CharSequence getEnvInfo(){
208+ StringBuilder result = new StringBuilder("主要環境変数:\n");
209+
210+ ENVIRONMENT_MAP.entrySet().stream()
211+ .forEachOrdered(entry -> {
212+ result.append(INDENT);
213+ result.append(entry.getKey());
214+ result.append('=');
215+ result.append(entry.getValue());
216+ result.append(NL);
217+ });
142218
143- result.append("クラスパス:\n");
144- for(String path : CLASSPATHS){
145- result.append(" ");
146- result.append(path).append("\n");
147- }
219+ return result;
220+ }
148221
149- result.append("\n");
222+ /**
223+ * クラスパス情報要覧を返す。
224+ *
225+ * @return クラスパス情報要覧
226+ */
227+ private static CharSequence getClassPathInfo(){
228+ StringBuilder result = new StringBuilder("クラスパス:\n");
150229
151- return result.toString();
230+ CLASSPATHS.stream().forEachOrdered(path -> {
231+ result.append(INDENT).append(path).append(NL);
232+ });
233+
234+ return result;
152235 }
153236
154237 }
Show on old repository browser