/**
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
*
* Copyright (c) 2016 Payara Foundation and/or its affiliates.
* All rights reserved.
*
* The contents of this file are subject to the terms of the Common Development
* and Distribution License("CDDL") (collectively, the "License"). You
* may not use this file except in compliance with the License. You can
* obtain a copy of the License at
* https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
* or packager/legal/LICENSE.txt. See the License for the specific
* language governing permissions and limitations under the License.
*
* When distributing the software, include this License Header Notice in each
* file and include the License file at packager/legal/LICENSE.txt.
*/
package fish.payara.asadmin.recorder.admin;
import com.sun.enterprise.config.serverbeans.Config;
import com.sun.enterprise.config.serverbeans.Domain;
import com.sun.enterprise.util.ColumnFormatter;
import fish.payara.asadmin.recorder.AsadminRecorderConfiguration;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import javax.inject.Inject;
import org.glassfish.api.ActionReport;
import org.glassfish.api.I18n;
import org.glassfish.api.admin.AdminCommand;
import org.glassfish.api.admin.AdminCommandContext;
import org.glassfish.api.admin.CommandLock;
import org.glassfish.api.admin.ExecuteOn;
import org.glassfish.api.admin.RestEndpoint;
import org.glassfish.api.admin.RestEndpoints;
import org.glassfish.api.admin.RuntimeType;
import org.glassfish.config.support.CommandTarget;
import org.glassfish.config.support.TargetType;
import org.glassfish.hk2.api.PerLookup;
import org.glassfish.internal.api.Target;
import org.jvnet.hk2.annotations.Service;
/**
*
* @author Andrew Pielage
*/
@Service(name = "get-asadmin-recorder-configuration")
@PerLookup
@CommandLock(CommandLock.LockType.NONE)
@I18n("get.asadmin.recorder.configuration")
@ExecuteOn(value = {RuntimeType.DAS})
@TargetType(value = {CommandTarget.DAS})
@RestEndpoints({
@RestEndpoint(configBean = Domain.class,
opType = RestEndpoint.OpType.GET,
path = "get-asadmin-recorder-configuration",
description = "Gets the current configuration settings of the "
+ "Asadmin Recorder Service")
})
public class GetAsadminRecorderConfiguration implements AdminCommand
{
@Inject
private Target targetUtil;
private final String target = "server";
private final String[] headers = {"Enabled", "Filter Commands",
"Output Location", "Filtered Commands"};
@Override
public void execute(AdminCommandContext context)
{
Config config = targetUtil.getConfig(target);
if (config == null)
{
context.getActionReport().setMessage("No such config named: "
+ target);
context.getActionReport().setActionExitCode(ActionReport.ExitCode
.FAILURE);
return;
}
AsadminRecorderConfiguration asadminRecorderConfiguration =
config.getExtensionByType(AsadminRecorderConfiguration.class);
final ActionReport actionReport = context.getActionReport();
ColumnFormatter columnFormatter = new ColumnFormatter(headers);
Object values[] = {asadminRecorderConfiguration.isEnabled(),
asadminRecorderConfiguration.filterCommands(),
asadminRecorderConfiguration.getOutputLocation(),
asadminRecorderConfiguration.getFilteredCommands()};
columnFormatter.addRow(values);
Map<String, Object> map = new HashMap<String, Object>();
Properties extraProps = new Properties();
map.put("enabled", values[0]);
map.put("filterCommands", values[1]);
map.put("outputLocation", values[2]);
map.put("filteredCommands", values[3]);
extraProps.put("getAsadminRecorderConfiguration",map);
actionReport.setExtraProperties(extraProps);
actionReport.setMessage(columnFormatter.toString());
actionReport.setActionExitCode(ActionReport.ExitCode.SUCCESS);
}
}