1
1
package org .code13k .zeroproxy .app ;
2
2
3
3
import org .apache .commons .lang3 .StringUtils ;
4
- import org .code13k .zeroproxy .lib .Util ;
5
4
import org .slf4j .Logger ;
6
5
import org .slf4j .LoggerFactory ;
7
6
7
+ import java .io .IOException ;
8
+ import java .io .InputStream ;
8
9
import java .net .InetAddress ;
10
+ import java .net .URL ;
11
+ import java .util .Enumeration ;
12
+ import java .util .HashMap ;
13
+ import java .util .Map ;
14
+ import java .util .jar .Attributes ;
15
+ import java .util .jar .JarFile ;
16
+ import java .util .jar .Manifest ;
9
17
10
18
public class Env {
11
19
// Logger
@@ -14,7 +22,6 @@ public class Env {
14
22
// Data
15
23
private String mHostname = "" ;
16
24
private String mIP = "" ;
17
- private int mProcessorCount = 0 ;
18
25
private String mVersionString = "" ;
19
26
private String mJarFilename = "" ;
20
27
@@ -56,30 +63,15 @@ public void init() {
56
63
mLogger .error ("Failed to get IP" , e );
57
64
}
58
65
59
- // Processor Count
60
- try {
61
- mProcessorCount = Runtime .getRuntime ().availableProcessors ();
62
- } catch (Exception e ) {
63
- mLogger .error ("Filed to get processor count" , e );
64
- }
65
-
66
66
// Version
67
67
try {
68
- mVersionString = Util . getApplicationVersion ();
68
+ mVersionString = parseApplicationVersion ();
69
69
} catch (Exception e ) {
70
70
mLogger .error ("Failed to get version" , e );
71
71
}
72
72
73
73
// Jar File Name
74
- String javaClassPath = System .getProperty ("java.class.path" );
75
- String jarFilename = "" ;
76
- if (StringUtils .isBlank (javaClassPath ) == false ) {
77
- String [] temp = StringUtils .split (javaClassPath , "/" );
78
- if (temp .length > 0 ) {
79
- jarFilename = temp [temp .length - 1 ];
80
- }
81
- }
82
- mJarFilename = jarFilename ;
74
+ mJarFilename = parseJarFilename ();
83
75
84
76
// End
85
77
logging ();
@@ -89,35 +81,31 @@ public void init() {
89
81
* Logging
90
82
*/
91
83
public void logging () {
92
- // Begin
84
+ Map < String , Object > values = values ();
93
85
mLogger .info ("------------------------------------------------------------------------" );
94
86
mLogger .info ("Application Environments" );
95
87
mLogger .info ("------------------------------------------------------------------------" );
96
-
97
- // Hostname
98
- mLogger .info ("Hostname = " + mHostname );
99
-
100
- // IP
101
- mLogger .info ("IP = " + mIP );
102
-
103
- // Processor Count
104
- mLogger .info ("Processor count = " + mProcessorCount );
105
-
106
- // Version
107
- mLogger .info ("Version = " + mVersionString );
108
-
109
- // Jar File Name
110
- mLogger .info ("Jar filename = " + mJarFilename );
111
-
112
- // End
88
+ values .forEach ((k , v ) -> mLogger .info (k + " = " + v ));
113
89
mLogger .info ("------------------------------------------------------------------------" );
114
90
}
115
91
116
92
/**
117
- * String of app version
93
+ * Get all values
118
94
*/
119
- public String getVersionString () {
120
- return mVersionString ;
95
+ public Map <String , Object > values () {
96
+ HashMap <String , Object > result = new HashMap <>();
97
+
98
+ result .put ("hostname" , getHostname ());
99
+ result .put ("ip" , getIP ());
100
+ result .put ("cpuProcessorCount" , getProcessorCount ());
101
+ result .put ("applicationVersion" , getVersionString ());
102
+ result .put ("jarFile" , getJarFilename ());
103
+ result .put ("javaVersion" , getJavaVersion ());
104
+ result .put ("javaVendor" , getJavaVendor ());
105
+ result .put ("osVersion" , getOsVersion ());
106
+ result .put ("osName" , getOsName ());
107
+
108
+ return result ;
121
109
}
122
110
123
111
/**
@@ -138,13 +126,92 @@ public String getIP() {
138
126
* Processor count of server
139
127
*/
140
128
public int getProcessorCount () {
141
- return mProcessorCount ;
129
+ return Runtime .getRuntime ().availableProcessors ();
130
+ }
131
+
132
+ /**
133
+ * String of app version
134
+ */
135
+ public String getVersionString () {
136
+ return mVersionString ;
142
137
}
143
138
144
139
/**
145
140
* Filename of Jar
146
141
*/
147
- public String getJarFilename (){
142
+ public String getJarFilename () {
148
143
return mJarFilename ;
149
144
}
145
+
146
+ /**
147
+ * Get java version
148
+ */
149
+ public String getJavaVersion () {
150
+ return System .getProperty ("java.version" );
151
+ }
152
+
153
+ /**
154
+ * Get java vendor
155
+ */
156
+ public String getJavaVendor () {
157
+ return System .getProperty ("java.vendor" );
158
+ }
159
+
160
+ /**
161
+ * Get OS name
162
+ */
163
+ public String getOsName () {
164
+ return System .getProperty ("os.name" );
165
+ }
166
+
167
+ /**
168
+ * Get OS version
169
+ */
170
+ public String getOsVersion () {
171
+ return System .getProperty ("os.version" );
172
+ }
173
+
174
+ /**
175
+ * Get app version from manifest info
176
+ */
177
+ private String parseApplicationVersion () {
178
+ Enumeration resourceEnum ;
179
+ try {
180
+ resourceEnum = Thread .currentThread ().getContextClassLoader ().getResources (JarFile .MANIFEST_NAME );
181
+ while (resourceEnum .hasMoreElements ()) {
182
+ try {
183
+ URL url = (URL ) resourceEnum .nextElement ();
184
+ InputStream is = url .openStream ();
185
+ if (is != null ) {
186
+ Manifest manifest = new Manifest (is );
187
+ Attributes attr = manifest .getMainAttributes ();
188
+ String version = attr .getValue ("Implementation-Version" );
189
+ if (version != null ) {
190
+ return version ;
191
+ }
192
+ }
193
+ } catch (Exception e ) {
194
+ // Nothing
195
+ }
196
+ }
197
+ } catch (IOException e1 ) {
198
+ // Nothing
199
+ }
200
+ return null ;
201
+ }
202
+
203
+ /**
204
+ * Get jar file name from system property
205
+ */
206
+ private String parseJarFilename () {
207
+ String javaClassPath = System .getProperty ("java.class.path" );
208
+ String jarFilename = "" ;
209
+ if (StringUtils .isBlank (javaClassPath ) == false ) {
210
+ String [] temp = StringUtils .split (javaClassPath , "/" );
211
+ if (temp .length > 0 ) {
212
+ jarFilename = temp [temp .length - 1 ];
213
+ }
214
+ }
215
+ return jarFilename ;
216
+ }
150
217
}
0 commit comments