in jkstatus/src/share/org/apache/jk/status/JkStatusTask.java [170:363]
public void execute() throws BuildException {
if (url == null) {
throw new BuildException("Must specify an 'url'");
}
boolean isWorkerOnly = worker != null && !"".equals(worker);
boolean isLoadbalancerOnly = loadbalancer != null
&& !"".equals(loadbalancer);
StringBuffer error = new StringBuffer();
try {
JkStatusAccessor accessor = new JkStatusAccessor();
JkStatus status = accessor.status(url, username, password);
if (status.result != null && !"OK".equals(status.result.type) ) {
if (getErrorProperty() != null) {
getProject().setNewProperty(errorProperty, status.result.message);
}
if (isFailOnError()) {
throw new BuildException(status.result.message);
} else {
handleErrorOutput(status.result.message);
return;
}
}
if (!isWorkerOnly && !isLoadbalancerOnly) {
JkServer server = status.getServer();
JkSoftware software = status.getSoftware();
JkResult result = status.getResult();
if (resultproperty != null) {
createProperty(server, "server", "name");
createProperty(server, "server", "port");
createProperty(software, "web_server");
createProperty(software, "jk_version");
createProperty(result, "result", "type");
createProperty(result, "result", "message");
}
if (isEcho()) {
handleOutput("server name=" + server.getName() + ":"
+ server.getPort() + " - " + software.getWeb_server() + " - " + software.getJk_version());
}
}
List balancers = status.getBalancers();
for (Iterator iter = balancers.iterator(); iter.hasNext();) {
JkBalancer balancer = (JkBalancer) iter.next();
String balancerIndex = null;
if (isLoadbalancerOnly) {
if (loadbalancer.equals(balancer.getName())) {
if (resultproperty != null) {
setPropertyBalancerOnly(balancer);
}
echoBalancer(balancer);
return;
}
} else {
if (!isWorkerOnly) {
if (resultproperty != null) {
if ( balancer.getId() >= 0)
balancerIndex = Integer.toString(balancer.getId());
else
balancerIndex = balancer.getName() ;
setPropertyBalancer(balancer,balancerIndex);
}
echoBalancer(balancer);
}
List members = balancer.getBalancerMembers();
for (Iterator iterator = members.iterator(); iterator
.hasNext();) {
JkBalancerMember member = (JkBalancerMember) iterator
.next();
if (isWorkerOnly) {
if (worker.equals(member.getName())) {
if (resultproperty != null) {
setPropertyWorkerOnly(balancer, member);
}
echoWorker(member);
return;
}
} else {
if (resultproperty != null) {
setPropertyWorker(null, member);
}
echoWorker(member);
if (member.getStatus() != null && !"OK".equals(member.getStatus())) {
error.append(" worker name=" + member.getName()
+ " status=" + member.getStatus()
+ " host=" + member.getAddress());
}
if (member.getState() != null &&
!("OK".equals(member.getState()) ||
"N/A".equals(member.getState()) ||
"OK/IDLE".equals(member.getState())) ){
error.append(" worker name=" + member.getName()
+ " state=" + member.getState()
+ " host=" + member.getAddress());
}
}
}
if (!isWorkerOnly) {
if (resultproperty != null && members.size() > 0) {
getProject().setNewProperty(
resultproperty + "."
+ balancer.getName() + ".length",
Integer.toString(members.size()));
}
List mappings = balancer.getBalancerMappings();
int j = 0;
String mapIndex ;
if( balancerIndex != null )
mapIndex = balancerIndex + ".map" ;
else
mapIndex = "map" ;
for (Iterator iterator = mappings.iterator(); iterator
.hasNext(); j++) {
JkBalancerMapping mapping = (JkBalancerMapping) iterator
.next();
if (resultproperty != null) {
String stringIndex2 ;
if( mapping.getId() >= 0) {
stringIndex2 = Integer.toString(mapping.getId()) ;
} else {
stringIndex2 = Integer.toString(j);
}
createProperty(mapping, mapIndex,
stringIndex2, "type");
createProperty(mapping, mapIndex,
stringIndex2, "uri");
createProperty(mapping, mapIndex,
stringIndex2, "context");
createProperty(mapping, mapIndex,
stringIndex2, "source");
}
if (isEcho()) {
String mappingOut ;
if(mapping.source != null) {
mappingOut =
"balancer name="
+ balancer.getName() + " mappingtype="
+ mapping.getType() + " uri="
+ mapping.getUri() + " source="
+ mapping.getSource() ;
} else {
mappingOut = "balancer name="
+ balancer.getName() + " mappingtype="
+ mapping.getType() + " uri="
+ mapping.getUri() + " context="
+ mapping.getContext() ;
}
handleOutput(mappingOut);
}
}
if (resultproperty != null && mappings.size() > 0) {
getProject().setNewProperty(
resultproperty + "."
+ mapIndex + ".length",
Integer.toString(mappings.size()));
}
}
}
}
if (!isWorkerOnly && !isLoadbalancerOnly) {
if (resultproperty != null && balancers.size() > 0) {
getProject().setNewProperty(
resultproperty + ".length",
Integer.toString(balancers.size()));
}
}
} catch (Throwable t) {
error.append(t.getMessage());
if (getErrorProperty() != null) {
getProject().setNewProperty(errorProperty, error.toString());
}
if (isFailOnError()) {
throw new BuildException(t);
} else {
handleErrorOutput(t.getMessage());
return;
}
}
if (error.length() != 0) {
if (getErrorProperty() != null) {
getProject().setNewProperty(errorProperty, error.toString());
}
if (isFailOnError()) {
// exception should be thrown only if failOnError == true
// or error line will be logged twice
throw new BuildException(error.toString());
}
}
}