@Service @PerLookup public class CrDecorator implements CreationDecorator<SecureAdminInternalUser> { @Param(optional=false, primary=true) private String username; @Param(optional=false) private String passwordAlias; @Inject private SecureAdminHelper helper; @Override public void decorate(AdminCommandContext context, SecureAdminInternalUser instance) throws TransactionFailure, PropertyVetoException { try { helper.validateInternalUsernameAndPasswordAlias( username, passwordAlias); } catch (Exception ex) { throw new TransactionFailure("create", ex); } instance.setUsername(username); instance.setPasswordAlias(passwordAlias); } } }
@Service @PerLookup class DeleteDecorator implements DeletionDecorator<LbConfigs, LbConfig> { @Inject private Domain domain; @Override public void decorate(AdminCommandContext context, LbConfigs parent, LbConfig child) throws PropertyVetoException, TransactionFailure { Logger logger = LogDomains.getLogger(LbConfig.class, LogDomains.ADMIN_LOGGER); LocalStringManagerImpl localStrings = new LocalStringManagerImpl(LbConfig.class); String lbConfigName = child.getName(); LbConfig lbConfig = domain.getExtensionByType(LbConfigs.class).getLbConfig(lbConfigName); //Ensure there are no refs if ( (lbConfig.getClusterRefOrServerRef().size() != 0 ) ) { String msg = localStrings.getLocalString("LbConfigNotEmpty", lbConfigName); throw new TransactionFailure(msg); } logger.info(localStrings.getLocalString("http_lb_admin.LbConfigDeleted", lbConfigName)); } } }
@Service public class ElasticServiceResolver implements CrudResolver { @Param(name="name") String name; @Inject ElasticServices elasticServices; @Override @SuppressWarnings("unchecked") public <T extends ConfigBeanProxy> T resolve(AdminCommandContext context, Class<T> type) { for (ElasticServiceConfig elasticService : elasticServices.getElasticService()) { if (elasticService.getName().equals(name)) { return (T) elasticService; } } return null; } }
@Service(name = "list-nodes") @Scoped(PerLookup.class) @CommandLock(CommandLock.LockType.NONE) @I18n("list.nodes.command") public class ListNodesCommand implements AdminCommand{ private Nodes nodes; @Param(optional = true, defaultValue = "false", name="long", shortName="l") private boolean long_opt; @Param(optional = true) private boolean terse;
@Service @PerLookup class DeleteDecorator implements DeletionDecorator<LbConfigs, LbConfig> { @Inject private Domain domain; @Override public void decorate(AdminCommandContext context, LbConfigs parent, LbConfig child) throws PropertyVetoException, TransactionFailure { Logger logger = LogDomains.getLogger(LbConfig.class, LogDomains.ADMIN_LOGGER); LocalStringManagerImpl localStrings = new LocalStringManagerImpl(LbConfig.class); String lbConfigName = child.getName(); LbConfig lbConfig = domain.getExtensionByType(LbConfigs.class).getLbConfig(lbConfigName); //Ensure there are no refs if ( (lbConfig.getClusterRefOrServerRef().size() != 0 ) ) { String msg = localStrings.getLocalString("LbConfigNotEmpty", lbConfigName); throw new TransactionFailure(msg); } logger.info(localStrings.getLocalString("http_lb_admin.LbConfigDeleted", lbConfigName)); } } }
/** * Resolver based on type + name. * * @author Jerome Dochez */ @Service public class TypeAndNameResolver implements CrudResolver { @Param(primary = true) String name; @Inject ServiceLocator habitat; final protected static LocalStringManagerImpl localStrings = new LocalStringManagerImpl(GenericCrudCommand.class); @SuppressWarnings("unchecked") @Override public <T extends ConfigBeanProxy> T resolve(AdminCommandContext context, Class<T> type) { T proxy = (T) habitat.getService(type, name); return proxy; } public String name() { return name; } }
@Service(name = "list-nodes-config") @Scoped(PerLookup.class) @CommandLock(CommandLock.LockType.NONE) @I18n("list.nodes.config.command") public class ListNodesConfigCommand implements AdminCommand{ private Nodes nodes; @Param(optional = true, defaultValue = "false", name="long", shortName="l") private boolean long_opt; @Param(optional = true) private boolean terse;
@Service @PerLookup abstract class UninstallNodeBaseCommand extends NativeRemoteCommandsBase { @Param(name = "installdir", optional = true, defaultValue = "${com.sun.aas.productRoot}") private String installDir; @Param(optional = true, defaultValue = "false") private boolean force; @Inject private ServiceLocator habitat;
@Service(name="test-upgrade", metadata="mode=debug") @PerLookup public class V2ToV3ConfigUpgradeTester implements AdminCommand, AdminCommandSecurity.AccessCheckProvider { @Inject ServiceLocator habitat; @Inject V2ToV3ConfigUpgrade up; @Override public Collection<? extends AccessCheck> getAccessChecks() { final Collection<AccessCheck> accessChecks = new ArrayList<AccessCheck>(); for (JavaConfig jc : up.getJavaConfigs()) { accessChecks.add(new AccessCheck(jc, "update", true /* isFailureFatal */)); } return accessChecks; } @Override public void execute(AdminCommandContext context) { up.postConstruct(); String msg = "Testing upgrade!"; ActionReport report = context.getActionReport(); report.setActionExitCode(ExitCode.SUCCESS); report.setMessage(msg); } }