ServerPropsHandler.java
5.36 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
/*
* Decompiled with CFR 0_118.
*
* Could not load the following classes:
* com.scene7.is.cache.clustering.impl.ClusterNetwork
* com.scene7.is.cache.server.access.CacheServerAccessBean
* com.scene7.is.mbeans.catalog.client.CatalogServerMBean
* com.scene7.is.mbeans.ps.ImageServerConnectionMBean
* com.scene7.is.provider.CacheSpec
* com.scene7.is.provider.DebugInfoEnum
* com.scene7.is.provider.RequestContext
* com.scene7.is.sleng.ImageAccessException
* com.scene7.is.sleng.ImageServer
* com.scene7.is.util.Statistics
*/
package com.scene7.is.ps.provider;
import com.scene7.is.cache.clustering.impl.ClusterNetwork;
import com.scene7.is.cache.server.access.CacheServerAccessBean;
import com.scene7.is.mbeans.catalog.client.CatalogServerMBean;
import com.scene7.is.mbeans.ps.ImageServerConnectionMBean;
import com.scene7.is.provider.CacheSpec;
import com.scene7.is.provider.DebugInfoEnum;
import com.scene7.is.provider.RequestContext;
import com.scene7.is.ps.provider.ModifierSet;
import com.scene7.is.ps.provider.PropertiesHandler;
import com.scene7.is.ps.provider.Request;
import com.scene7.is.ps.provider.ResponseStatistics;
import com.scene7.is.ps.provider.defs.ModifierEnum;
import com.scene7.is.sleng.ImageAccessException;
import com.scene7.is.sleng.ImageServer;
import com.scene7.is.util.Statistics;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
public abstract class ServerPropsHandler
extends PropertiesHandler {
private static final Logger LOGGER = Logger.getLogger(ServerPropsHandler.class.getName());
private final ImageServerConnectionMBean isConnection;
private final ImageServer server;
private final CatalogServerMBean catalogServer;
private final CacheServerAccessBean cacheServerAccess;
private final ClusterNetwork cluster;
private final Map<String, Object> localProps = new HashMap<String, Object>();
public abstract RequestContext getRequestContext();
public ServerPropsHandler(ImageServer server, Statistics stats, ImageServerConnectionMBean isConnection, CatalogServerMBean catalogServer, CacheServerAccessBean cacheServerAccess, ClusterNetwork cluster) {
this.server = server;
this.isConnection = isConnection;
this.catalogServer = catalogServer;
this.cacheServerAccess = cacheServerAccess;
this.cluster = cluster;
this.localProps.put("copyright", "Copyright (c) 2001-2014 Adobe Systems Incorporated. All rights reserved.");
this.localProps.put("server.buildDate", stats.getBuildDate());
this.localProps.put("server.buildNumber", stats.getBuildNumber());
this.localProps.put("server.revision", stats.getRevision());
this.localProps.put("server.version", stats.getVersion());
this.localProps.put("protocol.version", "2.3");
this.useClientCache(false);
}
private Map<String, Object> stripOutSensitiveInfo(Map<String, Object> props, boolean showSensitive) {
if (showSensitive) {
return props;
}
HashMap<String, Object> secureProps = new HashMap<String, Object>();
for (Map.Entry<String, Object> pairs : props.entrySet()) {
if (!pairs.getKey().startsWith("#") && !pairs.getKey().equals("copyright")) continue;
secureProps.put(pairs.getKey(), pairs.getValue());
}
return secureProps;
}
@Override
protected Map<String, Object> getProperties(Request request) {
boolean isDebugServerProps = request.getDebugInfo() == DebugInfoEnum.SERVER_PROPS;
RequestContext context = this.getRequestContext();
context.setIsInternalRequest(true);
request.getGlobalAttributes().set(ModifierEnum.CACHE, CacheSpec.OFF);
HashMap<String, Object> props = new HashMap<String, Object>();
props.putAll(this.stripOutSensitiveInfo(this.localProps, isDebugServerProps));
if (isDebugServerProps) {
long startupTime = ResponseStatistics.getStartupTime();
props.put("server.startTime", new Date(startupTime).toString());
props.put("server.activeImageServerRequests", this.isConnection.getActiveConnections());
Integer tmp = this.isConnection.getLocalOverlap();
props.put("server.totalImageServerRequests", tmp.toString());
props.put("server.usingCatalogServer", this.catalogServer.getServiceUrls().isEmpty() ? "false" : "true");
props.put("server.usingCacheServer", this.cacheServerAccess.getServers().isEmpty() ? "false" : "true");
props.put("server.usingCacheClustering", this.cluster.getHosts().isEmpty() ? "false" : "true");
this.getImageServerProperties(props);
}
return props;
}
private void getImageServerProperties(Map<String, Object> props) {
try {
Properties src = this.server.getServerProps();
props.put("imageServer.version", String.valueOf(src.getProperty("version")));
props.put("imageServer.buildDate", String.valueOf(src.getProperty("buildDate")));
props.put("imageServer.startTime", String.valueOf(src.getProperty("startTime")));
}
catch (ImageAccessException e) {
LOGGER.log(Level.SEVERE, e.getMessage(), (Throwable)e);
props.put("warning", "Image server is unavailable");
}
}
}