use of com.sun.enterprise.config.serverbeans.Config in project Payara by payara.
the class SetEnvironmentWarningConfigurationCommand method execute.
@Override
public void execute(AdminCommandContext acc) {
Config config = targetUtil.getConfig(target);
ActionReport actionReport = acc.getActionReport();
EnvironmentWarningConfiguration environmentWarningConfiguration = config.getExtensionByType(EnvironmentWarningConfiguration.class);
if (environmentWarningConfiguration != null) {
try {
ConfigSupport.apply(new SingleConfigCode<EnvironmentWarningConfiguration>() {
@Override
public Object run(EnvironmentWarningConfiguration config) throws PropertyVetoException {
if (enabled != null) {
config.setEnabled(enabled);
}
if (message != null) {
config.setMessage(message);
}
if (backgroundColour != null) {
if (backgroundColour.matches("^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$")) {
config.setBackgroundColour(backgroundColour);
} else {
throw new PropertyVetoException("Invalid data for background colour, must be a hex value.", new PropertyChangeEvent(config, "backgroundColour", config.getBackgroundColour(), backgroundColour));
}
}
if (textColour != null) {
if (textColour.matches("^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$")) {
config.setTextColour(textColour);
} else {
throw new PropertyVetoException("Invalid data for text colour, must be a hex value.", new PropertyChangeEvent(config, "textColour", config.getTextColour(), textColour));
}
}
return null;
}
}, environmentWarningConfiguration);
} catch (TransactionFailure ex) {
// Set failure
actionReport.failure(Logger.getLogger(SetEnvironmentWarningConfigurationCommand.class.getName()), "Failed to update configuration", ex);
}
}
}
use of com.sun.enterprise.config.serverbeans.Config in project Payara by payara.
the class GetMonitoringConfiguration method execute.
/**
* Method that is invoked when the asadmin command is performed.
* Pretty prints the Monitoring Service Configuration values.
* @param context
*/
@Override
public void execute(AdminCommandContext context) {
Config config = targetUtil.getConfig(target);
if (config == null) {
context.getActionReport().setMessage("No such config name: " + targetUtil);
context.getActionReport().setActionExitCode(ActionReport.ExitCode.FAILURE);
return;
}
ActionReport actionReport = context.getActionReport();
ActionReport notifiersReport = actionReport.addSubActionsReport();
ActionReport attributeReport = actionReport.addSubActionsReport();
ColumnFormatter attributeColumnFormatter = new ColumnFormatter(ATTRIBUTE_HEADERS);
ColumnFormatter notifiersColumnFormatter = new ColumnFormatter(NOTIFIER_HEADERS);
MonitoringServiceConfiguration monitoringConfig = config.getExtensionByType(MonitoringServiceConfiguration.class);
List<ServiceHandle<BaseNotifierService>> allNotifierServiceHandles = habitat.getAllServiceHandles(BaseNotifierService.class);
actionReport.appendMessage("Monitoring Service Configuration is enabled? " + prettyBool(Boolean.valueOf(monitoringConfig.getEnabled())) + "\n");
actionReport.appendMessage("Monitoring Service Configuration has AMX enabled? " + prettyBool(Boolean.valueOf(monitoringConfig.getAmx())) + "\n");
actionReport.appendMessage("Monitoring Service Configuration log frequency? " + monitoringConfig.getLogFrequency() + " " + monitoringConfig.getLogFrequencyUnit());
actionReport.appendMessage(StringUtils.EOL);
Map<String, Object> map = new HashMap<>();
Properties extraProps = new Properties();
map.put("enabled", monitoringConfig.getEnabled());
map.put("amx", monitoringConfig.getAmx());
map.put("logfrequency", monitoringConfig.getLogFrequency());
map.put("logfrequencyunit", monitoringConfig.getLogFrequencyUnit());
extraProps.put("jmxmonitoringConfiguration", map);
List<Map<String, String>> monitoredAttributes = new ArrayList<>();
for (MonitoredAttribute monitoredBean : monitoringConfig.getMonitoredAttributes()) {
Object[] values = new Object[3];
values[0] = monitoredBean.getObjectName();
values[1] = monitoredBean.getAttributeName();
values[2] = monitoredBean.getDescription();
Map<String, String> monitoredAttribute = new HashMap<>();
monitoredAttribute.put(monitoredBean.getObjectName(), monitoredBean.getAttributeName());
monitoredAttributes.add(monitoredAttribute);
attributeColumnFormatter.addRow(values);
}
// Cannot change key in line below - required for admingui propertyDescTable.inc
extraProps.put("monitored-beans", monitoredAttributes);
actionReport.setExtraProperties(extraProps);
if (!monitoringConfig.getNotifierList().isEmpty()) {
List<Class<Notifier>> notifierClassList = Lists.transform(monitoringConfig.getNotifierList(), new Function<Notifier, Class<Notifier>>() {
@Override
public Class<Notifier> apply(Notifier input) {
return resolveNotifierClass(input);
}
});
Properties notifierProps = new Properties();
for (ServiceHandle<BaseNotifierService> serviceHandle : allNotifierServiceHandles) {
Notifier notifier = monitoringConfig.getNotifierByType(serviceHandle.getService().getNotifierType());
if (notifier != null) {
ConfigView view = ConfigSupport.getImpl(notifier);
NotifierConfigurationType annotation = view.getProxyType().getAnnotation(NotifierConfigurationType.class);
if (notifierClassList.contains(view.<Notifier>getProxyType())) {
Object[] values = new Object[2];
values[0] = annotation.type();
values[1] = notifier.getEnabled();
notifiersColumnFormatter.addRow(values);
Map<String, Object> mapNotifiers = new HashMap<>(2);
mapNotifiers.put("notifierName", values[0]);
mapNotifiers.put("notifierEnabled", values[1]);
notifierProps.put("notifierList" + annotation.type(), mapNotifiers);
}
}
actionReport.getExtraProperties().putAll(notifierProps);
}
}
notifiersReport.setMessage(notifiersColumnFormatter.toString());
notifiersReport.appendMessage(StringUtils.EOL);
attributeReport.setMessage(attributeColumnFormatter.toString());
attributeReport.appendMessage(StringUtils.EOL);
actionReport.setActionExitCode(ActionReport.ExitCode.SUCCESS);
}
use of com.sun.enterprise.config.serverbeans.Config in project Payara by payara.
the class BaseMonitoringNotifierConfigurer method execute.
@Override
public void execute(AdminCommandContext context) {
final ActionReport actionReport = context.getActionReport();
Properties extraProperties = actionReport.getExtraProperties();
if (extraProperties == null) {
extraProperties = new Properties();
actionReport.setExtraProperties(extraProperties);
}
Config config = targetUtil.getConfig(target);
final MonitoringServiceConfiguration configuration = config.getExtensionByType(MonitoringServiceConfiguration.class);
ParameterizedType genericSuperclass = (ParameterizedType) getClass().getGenericSuperclass();
notifierClass = (Class<C>) genericSuperclass.getActualTypeArguments()[0];
C c = configuration.getNotifierByType(notifierClass);
try {
if (c == null) {
ConfigSupport.apply(new SingleConfigCode<MonitoringServiceConfiguration>() {
@Override
public Object run(final MonitoringServiceConfiguration configurationProxy) throws PropertyVetoException, TransactionFailure {
C c = configurationProxy.createChild(notifierClass);
applyValues(c);
configurationProxy.getNotifierList().add(c);
actionReport.setActionExitCode(ActionReport.ExitCode.SUCCESS);
return configurationProxy;
}
}, configuration);
} else {
ConfigSupport.apply(new SingleConfigCode<C>() {
@Override
public Object run(C cProxy) throws PropertyVetoException, TransactionFailure {
applyValues(cProxy);
actionReport.setActionExitCode(ActionReport.ExitCode.SUCCESS);
return cProxy;
}
}, c);
}
if (dynamic) {
if (server.isDas()) {
if (targetUtil.getConfig(target).isDas()) {
configureDynamically();
}
} else {
configureDynamically();
}
}
} catch (TransactionFailure ex) {
logger.log(Level.WARNING, "Exception during command ", ex);
actionReport.setMessage(ex.getCause().getMessage());
actionReport.setActionExitCode(ActionReport.ExitCode.FAILURE);
}
}
use of com.sun.enterprise.config.serverbeans.Config in project Payara by payara.
the class TestHipchatNotifier method execute.
@Override
public void execute(AdminCommandContext context) {
ActionReport actionReport = context.getActionReport();
Config config = targetUtil.getConfig(target);
if (config == null) {
context.getActionReport().setMessage("No such config named: " + target);
context.getActionReport().setActionExitCode(ActionReport.ExitCode.FAILURE);
return;
}
HipchatNotifierConfiguration hipchatConfig = config.getExtensionByType(HipchatNotifierConfiguration.class);
if (roomName == null) {
roomName = hipchatConfig.getRoomName();
}
if (token == null) {
token = hipchatConfig.getToken();
}
// prepare hipchat message
HipchatNotificationEvent event = factory.buildNotificationEvent(SUBJECT, MESSAGE);
HipchatMessageQueue queue = new HipchatMessageQueue();
queue.addMessage(new HipchatMessage(event, event.getSubject(), event.getMessage()));
HipchatNotifierConfigurationExecutionOptions options = new HipchatNotifierConfigurationExecutionOptions();
options.setRoomName(roomName);
options.setToken(token);
HipchatNotificationRunnable notifierRun = new HipchatNotificationRunnable(queue, options);
// set up logger to store result
Logger logger = Logger.getLogger(HipchatNotificationRunnable.class.getCanonicalName());
BlockingQueueHandler bqh = new BlockingQueueHandler(10);
bqh.setLevel(Level.FINE);
Level oldLevel = logger.getLevel();
logger.setLevel(Level.FINE);
logger.addHandler(bqh);
// send message, this occurs in its own thread
Thread notifierThread = new Thread(notifierRun, "test-hipchat-notifier-thread");
notifierThread.start();
try {
notifierThread.join();
} catch (InterruptedException ex) {
Logger.getLogger(TestHipchatNotifier.class.getName()).log(Level.SEVERE, null, ex);
} finally {
logger.setLevel(oldLevel);
}
LogRecord message = bqh.poll();
logger.removeHandler(bqh);
if (message == null) {
// something's gone wrong
Logger.getLogger(TestHipchatNotifier.class.getName()).log(Level.SEVERE, "Failed to send HipChat message");
actionReport.setMessage("Failed to send HipChat message");
actionReport.setActionExitCode(ActionReport.ExitCode.FAILURE);
} else {
actionReport.setMessage(message.getMessage());
if (message.getLevel() == Level.FINE) {
actionReport.setActionExitCode(ActionReport.ExitCode.SUCCESS);
} else {
actionReport.setActionExitCode(ActionReport.ExitCode.FAILURE);
}
}
}
use of com.sun.enterprise.config.serverbeans.Config in project Payara by payara.
the class TestNewRelicNotifier method execute.
@Override
public void execute(AdminCommandContext context) {
ActionReport actionReport = context.getActionReport();
Config config = targetUtil.getConfig(target);
if (config == null) {
context.getActionReport().setMessage("No such config named: " + target);
context.getActionReport().setActionExitCode(ActionReport.ExitCode.FAILURE);
return;
}
NewRelicNotifierConfiguration newRelicConfig = config.getExtensionByType(NewRelicNotifierConfiguration.class);
if (key == null) {
key = newRelicConfig.getKey();
}
if (accountId == null) {
accountId = newRelicConfig.getAccountId();
}
// prepare NewRelic message
NewRelicNotificationEvent event = factory.buildNotificationEvent(SUBJECT, MESSAGE);
event.setEventType(SUBJECT);
NewRelicEventMessageQueue queue = new NewRelicEventMessageQueue();
queue.addMessage(new NewRelicEventMessage(event, event.getSubject(), event.getMessage()));
NewRelicNotifierConfigurationExecutionOptions options = new NewRelicNotifierConfigurationExecutionOptions();
options.setKey(key);
options.setAccountId(accountId);
NewRelicNotificationRunnable notifierRun = new NewRelicNotificationRunnable(queue, options);
// set up logger to store result
Logger logger = Logger.getLogger(NewRelicNotificationRunnable.class.getCanonicalName());
BlockingQueueHandler bqh = new BlockingQueueHandler();
bqh.setLevel(Level.FINE);
Level oldLevel = logger.getLevel();
logger.setLevel(Level.FINE);
logger.addHandler(bqh);
// send message, this occurs in its own thread
Thread notifierThread = new Thread(notifierRun, "test-newrelic-notifier-thread");
notifierThread.start();
try {
notifierThread.join();
} catch (InterruptedException ex) {
Logger.getLogger(TestNewRelicNotifier.class.getName()).log(Level.SEVERE, null, ex);
} finally {
logger.setLevel(oldLevel);
}
LogRecord message = bqh.poll();
logger.removeHandler(bqh);
if (message == null) {
// something's gone wrong
Logger.getLogger(TestNewRelicNotifier.class.getName()).log(Level.SEVERE, "Failed to send New Relic message");
actionReport.setMessage("Failed to send New Relic message");
actionReport.setActionExitCode(ActionReport.ExitCode.FAILURE);
} else {
actionReport.setMessage(message.getMessage());
if (message.getLevel() == Level.FINE) {
actionReport.setActionExitCode(ActionReport.ExitCode.SUCCESS);
} else {
actionReport.setActionExitCode(ActionReport.ExitCode.FAILURE);
}
}
}
Aggregations