DescribeJndiBindingCommand extends GfshCommand { @CliCommand(value = DESCRIBE_JNDI_BINDING, help = DESCRIBE_JNDIBINDING__HELP) @CliMetaData @ResourceOperation(resource = ResourcePermission.Resource.CLUSTER, operation = ResourcePermission.Operation.READ) public ResultModel describeJndiBinding(@CliOption(key = "name", mandatory = true, help = "Name of the binding to describe") String bindingName) { ResultModel crm = new ResultModel(); TabularResultModel tabularData = crm.addTable(JNDI_PROPERTIES_SECTION); ConfigurationPersistenceService ccService = getConfigurationPersistenceService(); if (ccService != null) { CacheConfig cacheConfig = ccService.getCacheConfig("cluster"); if (cacheConfig == null) { return ResultModel.createError(String.format("JNDI binding : %s not found", bindingName)); } List<JndiBindingsType.JndiBinding> jndiBindings = cacheConfig.getJndiBindings(); if (jndiBindings.stream().noneMatch(b -> b.getJndiName().equals(bindingName) || b.getJndiName().equals("java:" + bindingName))) { return ResultModel.createError(String.format("JNDI binding : %s not found", bindingName)); } for (JndiBindingsType.JndiBinding binding : jndiBindings) { if (binding.getJndiName().equals(bindingName) || binding.getJndiName().equals("java:" + bindingName)) { addTableRow(tabularData, "type", binding.getType()); addTableRow(tabularData, "jndi-name", binding.getJndiName()); addTableRow(tabularData, "jdbc-driver-class", binding.getJdbcDriverClass()); addTableRow(tabularData, "user-name", binding.getUserName()); addTableRow(tabularData, "connection-url", binding.getConnectionUrl()); if (!"SimpleDataSource".equals(binding.getType())) { if ("ManagedDataSource".equals(binding.getType())) { addTableRow(tabularData, "managed-conn-factory-class", binding.getManagedConnFactoryClass()); } else if ("PooledDataSource".equals(binding.getType())) { addTableRow(tabularData, "conn-pooled-datasource-class", binding.getConnPooledDatasourceClass()); } else if ("XAPooledDataSource".equals(binding.getType())) { addTableRow(tabularData, "xa-datasource-class", binding.getXaDatasourceClass()); } addTableRow(tabularData, "init-pool-size", binding.getInitPoolSize()); addTableRow(tabularData, "max-pool-size", binding.getMaxPoolSize()); addTableRow(tabularData, "idle-timeout-seconds", binding.getIdleTimeoutSeconds()); addTableRow(tabularData, "blocking-timeout-seconds", binding.getBlockingTimeoutSeconds()); addTableRow(tabularData, "login-timeout-seconds", binding.getLoginTimeoutSeconds()); } for (JndiBindingsType.JndiBinding.ConfigProperty confProp : binding .getConfigProperties()) { addTableRow(tabularData, confProp.getName(), confProp.getValue()); } break; } } } return crm; }  @CliCommand(value = DESCRIBE_JNDI_BINDING, help = DESCRIBE_JNDIBINDING__HELP) @CliMetaData @ResourceOperation(resource = ResourcePermission.Resource.CLUSTER, operation = ResourcePermission.Operation.READ) ResultModel describeJndiBinding(@CliOption(key = "name", mandatory = true,
      help = "Name of the binding to describe") String bindingName); static final String JNDI_PROPERTIES_SECTION; }
@Test public void describeJndiBinding() { bindings.add(binding); gfsh.executeAndAssertThat(command, COMMAND + " --name=jndi-name").statusIsSuccess() .hasTableSection() .hasColumn("Value") .containsExactlyInAnyOrder("SIMPLE", "jndi-name", "org.postgresql.Driver", "MyUser", "jdbc:postgresql: }