001/* 002 * The contents of this file are subject to the terms of the Common Development and 003 * Distribution License (the License). You may not use this file except in compliance with the 004 * License. 005 * 006 * You can obtain a copy of the License at legal/CDDLv1.0.txt. See the License for the 007 * specific language governing permission and limitations under the License. 008 * 009 * When distributing Covered Software, include this CDDL Header Notice in each file and include 010 * the License file at legal/CDDLv1.0.txt. If applicable, add the following below the CDDL 011 * Header, with the fields enclosed by brackets [] replaced by your own identifying 012 * information: "Portions Copyright [year] [name of copyright owner]". 013 * 014 * Copyright 2008 Sun Microsystems, Inc. 015 */ 016package org.forgerock.opendj.server.config.meta; 017 018 019 020import java.net.InetAddress; 021import java.util.Collection; 022import java.util.SortedSet; 023import org.forgerock.opendj.config.AdministratorAction; 024import org.forgerock.opendj.config.AggregationPropertyDefinition; 025import org.forgerock.opendj.config.AliasDefaultBehaviorProvider; 026import org.forgerock.opendj.config.BooleanPropertyDefinition; 027import org.forgerock.opendj.config.ClassPropertyDefinition; 028import org.forgerock.opendj.config.client.ConcurrentModificationException; 029import org.forgerock.opendj.config.client.ManagedObject; 030import org.forgerock.opendj.config.client.MissingMandatoryPropertiesException; 031import org.forgerock.opendj.config.client.OperationRejectedException; 032import org.forgerock.opendj.config.conditions.Conditions; 033import org.forgerock.opendj.config.DefaultBehaviorProvider; 034import org.forgerock.opendj.config.DefinedDefaultBehaviorProvider; 035import org.forgerock.opendj.config.GenericConstraint; 036import org.forgerock.opendj.config.IntegerPropertyDefinition; 037import org.forgerock.opendj.config.IPAddressMaskPropertyDefinition; 038import org.forgerock.opendj.config.IPAddressPropertyDefinition; 039import org.forgerock.opendj.config.ManagedObjectAlreadyExistsException; 040import org.forgerock.opendj.config.ManagedObjectDefinition; 041import org.forgerock.opendj.config.PropertyOption; 042import org.forgerock.opendj.config.PropertyProvider; 043import org.forgerock.opendj.config.server.ConfigurationChangeListener; 044import org.forgerock.opendj.config.server.ServerManagedObject; 045import org.forgerock.opendj.config.StringPropertyDefinition; 046import org.forgerock.opendj.config.Tag; 047import org.forgerock.opendj.config.UndefinedDefaultBehaviorProvider; 048import org.forgerock.opendj.ldap.AddressMask; 049import org.forgerock.opendj.ldap.DN; 050import org.forgerock.opendj.ldap.LdapException; 051import org.forgerock.opendj.server.config.client.JMXConnectionHandlerCfgClient; 052import org.forgerock.opendj.server.config.client.KeyManagerProviderCfgClient; 053import org.forgerock.opendj.server.config.server.ConnectionHandlerCfg; 054import org.forgerock.opendj.server.config.server.JMXConnectionHandlerCfg; 055import org.forgerock.opendj.server.config.server.KeyManagerProviderCfg; 056 057 058 059/** 060 * An interface for querying the JMX Connection Handler managed object 061 * definition meta information. 062 * <p> 063 * The JMX Connection Handler is used to interact with clients using 064 * the Java Management Extensions (JMX) protocol. 065 */ 066public final class JMXConnectionHandlerCfgDefn extends ManagedObjectDefinition<JMXConnectionHandlerCfgClient, JMXConnectionHandlerCfg> { 067 068 /** The singleton configuration definition instance. */ 069 private static final JMXConnectionHandlerCfgDefn INSTANCE = new JMXConnectionHandlerCfgDefn(); 070 071 072 073 /** The "java-class" property definition. */ 074 private static final ClassPropertyDefinition PD_JAVA_CLASS; 075 076 077 078 /** The "key-manager-provider" property definition. */ 079 private static final AggregationPropertyDefinition<KeyManagerProviderCfgClient, KeyManagerProviderCfg> PD_KEY_MANAGER_PROVIDER; 080 081 082 083 /** The "listen-address" property definition. */ 084 private static final IPAddressPropertyDefinition PD_LISTEN_ADDRESS; 085 086 087 088 /** The "listen-port" property definition. */ 089 private static final IntegerPropertyDefinition PD_LISTEN_PORT; 090 091 092 093 /** The "rmi-port" property definition. */ 094 private static final IntegerPropertyDefinition PD_RMI_PORT; 095 096 097 098 /** The "ssl-cert-nickname" property definition. */ 099 private static final StringPropertyDefinition PD_SSL_CERT_NICKNAME; 100 101 102 103 /** The "use-ssl" property definition. */ 104 private static final BooleanPropertyDefinition PD_USE_SSL; 105 106 107 108 /** Build the "java-class" property definition. */ 109 static { 110 ClassPropertyDefinition.Builder builder = ClassPropertyDefinition.createBuilder(INSTANCE, "java-class"); 111 builder.setOption(PropertyOption.MANDATORY); 112 builder.setOption(PropertyOption.ADVANCED); 113 builder.setAdministratorAction(new AdministratorAction(AdministratorAction.Type.COMPONENT_RESTART, INSTANCE, "java-class")); 114 DefaultBehaviorProvider<String> provider = new DefinedDefaultBehaviorProvider<String>("org.opends.server.protocols.jmx.JmxConnectionHandler"); 115 builder.setDefaultBehaviorProvider(provider); 116 builder.addInstanceOf("org.opends.server.api.ConnectionHandler"); 117 PD_JAVA_CLASS = builder.getInstance(); 118 INSTANCE.registerPropertyDefinition(PD_JAVA_CLASS); 119 } 120 121 122 123 /** Build the "key-manager-provider" property definition. */ 124 static { 125 AggregationPropertyDefinition.Builder<KeyManagerProviderCfgClient, KeyManagerProviderCfg> builder = AggregationPropertyDefinition.createBuilder(INSTANCE, "key-manager-provider"); 126 builder.setAdministratorAction(new AdministratorAction(AdministratorAction.Type.NONE, INSTANCE, "key-manager-provider")); 127 builder.setDefaultBehaviorProvider(new UndefinedDefaultBehaviorProvider<String>()); 128 builder.setParentPath("/"); 129 builder.setRelationDefinition("key-manager-provider"); 130 builder.setTargetNeedsEnablingCondition(Conditions.and(Conditions.contains("enabled", "true"), Conditions.contains("use-ssl", "true"))); 131 builder.setTargetIsEnabledCondition(Conditions.contains("enabled", "true")); 132 PD_KEY_MANAGER_PROVIDER = builder.getInstance(); 133 INSTANCE.registerPropertyDefinition(PD_KEY_MANAGER_PROVIDER); 134 INSTANCE.registerConstraint(PD_KEY_MANAGER_PROVIDER.getSourceConstraint()); 135 } 136 137 138 139 /** Build the "listen-address" property definition. */ 140 static { 141 IPAddressPropertyDefinition.Builder builder = IPAddressPropertyDefinition.createBuilder(INSTANCE, "listen-address"); 142 builder.setAdministratorAction(new AdministratorAction(AdministratorAction.Type.SERVER_RESTART, INSTANCE, "listen-address")); 143 DefaultBehaviorProvider<InetAddress> provider = new DefinedDefaultBehaviorProvider<InetAddress>("0.0.0.0"); 144 builder.setDefaultBehaviorProvider(provider); 145 PD_LISTEN_ADDRESS = builder.getInstance(); 146 INSTANCE.registerPropertyDefinition(PD_LISTEN_ADDRESS); 147 } 148 149 150 151 /** Build the "listen-port" property definition. */ 152 static { 153 IntegerPropertyDefinition.Builder builder = IntegerPropertyDefinition.createBuilder(INSTANCE, "listen-port"); 154 builder.setOption(PropertyOption.MANDATORY); 155 builder.setAdministratorAction(new AdministratorAction(AdministratorAction.Type.COMPONENT_RESTART, INSTANCE, "listen-port")); 156 builder.setDefaultBehaviorProvider(new UndefinedDefaultBehaviorProvider<Integer>()); 157 builder.setUpperLimit(65535); 158 builder.setLowerLimit(1); 159 PD_LISTEN_PORT = builder.getInstance(); 160 INSTANCE.registerPropertyDefinition(PD_LISTEN_PORT); 161 } 162 163 164 165 /** Build the "rmi-port" property definition. */ 166 static { 167 IntegerPropertyDefinition.Builder builder = IntegerPropertyDefinition.createBuilder(INSTANCE, "rmi-port"); 168 builder.setAdministratorAction(new AdministratorAction(AdministratorAction.Type.COMPONENT_RESTART, INSTANCE, "rmi-port")); 169 DefaultBehaviorProvider<Integer> provider = new DefinedDefaultBehaviorProvider<Integer>("0"); 170 builder.setDefaultBehaviorProvider(provider); 171 builder.setUpperLimit(65535); 172 builder.setLowerLimit(0); 173 PD_RMI_PORT = builder.getInstance(); 174 INSTANCE.registerPropertyDefinition(PD_RMI_PORT); 175 } 176 177 178 179 /** Build the "ssl-cert-nickname" property definition. */ 180 static { 181 StringPropertyDefinition.Builder builder = StringPropertyDefinition.createBuilder(INSTANCE, "ssl-cert-nickname"); 182 builder.setOption(PropertyOption.MULTI_VALUED); 183 builder.setAdministratorAction(new AdministratorAction(AdministratorAction.Type.COMPONENT_RESTART, INSTANCE, "ssl-cert-nickname")); 184 builder.setDefaultBehaviorProvider(new AliasDefaultBehaviorProvider<String>(INSTANCE, "ssl-cert-nickname")); 185 PD_SSL_CERT_NICKNAME = builder.getInstance(); 186 INSTANCE.registerPropertyDefinition(PD_SSL_CERT_NICKNAME); 187 } 188 189 190 191 /** Build the "use-ssl" property definition. */ 192 static { 193 BooleanPropertyDefinition.Builder builder = BooleanPropertyDefinition.createBuilder(INSTANCE, "use-ssl"); 194 builder.setAdministratorAction(new AdministratorAction(AdministratorAction.Type.COMPONENT_RESTART, INSTANCE, "use-ssl")); 195 DefaultBehaviorProvider<Boolean> provider = new DefinedDefaultBehaviorProvider<Boolean>("false"); 196 builder.setDefaultBehaviorProvider(provider); 197 PD_USE_SSL = builder.getInstance(); 198 INSTANCE.registerPropertyDefinition(PD_USE_SSL); 199 } 200 201 202 203 // Register the tags associated with this managed object definition. 204 static { 205 INSTANCE.registerTag(Tag.valueOf("core-server")); 206 } 207 208 209 210 // Register the constraints associated with this managed object definition. 211 static { 212 INSTANCE.registerConstraint(new GenericConstraint(INSTANCE, 1, Conditions.implies(Conditions.contains("enabled", "true"), Conditions.implies(Conditions.contains("use-ssl", "true"), Conditions.isPresent("key-manager-provider"))))); 213 } 214 215 216 217 /** 218 * Get the JMX Connection Handler configuration definition 219 * singleton. 220 * 221 * @return Returns the JMX Connection Handler configuration 222 * definition singleton. 223 */ 224 public static JMXConnectionHandlerCfgDefn getInstance() { 225 return INSTANCE; 226 } 227 228 229 230 /** 231 * Private constructor. 232 */ 233 private JMXConnectionHandlerCfgDefn() { 234 super("jmx-connection-handler", ConnectionHandlerCfgDefn.getInstance()); 235 } 236 237 238 239 /** {@inheritDoc} */ 240 public JMXConnectionHandlerCfgClient createClientConfiguration( 241 ManagedObject<? extends JMXConnectionHandlerCfgClient> impl) { 242 return new JMXConnectionHandlerCfgClientImpl(impl); 243 } 244 245 246 247 /** {@inheritDoc} */ 248 public JMXConnectionHandlerCfg createServerConfiguration( 249 ServerManagedObject<? extends JMXConnectionHandlerCfg> impl) { 250 return new JMXConnectionHandlerCfgServerImpl(impl); 251 } 252 253 254 255 /** {@inheritDoc} */ 256 public Class<JMXConnectionHandlerCfg> getServerConfigurationClass() { 257 return JMXConnectionHandlerCfg.class; 258 } 259 260 261 262 /** 263 * Get the "allowed-client" property definition. 264 * <p> 265 * Specifies a set of host names or address masks that determine the 266 * clients that are allowed to establish connections to this JMX 267 * Connection Handler. 268 * <p> 269 * Valid values include a host name, a fully qualified domain name, 270 * a domain name, an IP address, or a subnetwork with subnetwork 271 * mask. 272 * 273 * @return Returns the "allowed-client" property definition. 274 */ 275 public IPAddressMaskPropertyDefinition getAllowedClientPropertyDefinition() { 276 return ConnectionHandlerCfgDefn.getInstance().getAllowedClientPropertyDefinition(); 277 } 278 279 280 281 /** 282 * Get the "denied-client" property definition. 283 * <p> 284 * Specifies a set of host names or address masks that determine the 285 * clients that are not allowed to establish connections to this JMX 286 * Connection Handler. 287 * <p> 288 * Valid values include a host name, a fully qualified domain name, 289 * a domain name, an IP address, or a subnetwork with subnetwork 290 * mask. If both allowed and denied client masks are defined and a 291 * client connection matches one or more masks in both lists, then 292 * the connection is denied. If only a denied list is specified, then 293 * any client not matching a mask in that list is allowed. 294 * 295 * @return Returns the "denied-client" property definition. 296 */ 297 public IPAddressMaskPropertyDefinition getDeniedClientPropertyDefinition() { 298 return ConnectionHandlerCfgDefn.getInstance().getDeniedClientPropertyDefinition(); 299 } 300 301 302 303 /** 304 * Get the "enabled" property definition. 305 * <p> 306 * Indicates whether the JMX Connection Handler is enabled. 307 * 308 * @return Returns the "enabled" property definition. 309 */ 310 public BooleanPropertyDefinition getEnabledPropertyDefinition() { 311 return ConnectionHandlerCfgDefn.getInstance().getEnabledPropertyDefinition(); 312 } 313 314 315 316 /** 317 * Get the "java-class" property definition. 318 * <p> 319 * Specifies the fully-qualified name of the Java class that 320 * provides the JMX Connection Handler implementation. 321 * 322 * @return Returns the "java-class" property definition. 323 */ 324 public ClassPropertyDefinition getJavaClassPropertyDefinition() { 325 return PD_JAVA_CLASS; 326 } 327 328 329 330 /** 331 * Get the "key-manager-provider" property definition. 332 * <p> 333 * Specifies the name of the key manager that should be used with 334 * this JMX Connection Handler . 335 * 336 * @return Returns the "key-manager-provider" property definition. 337 */ 338 public AggregationPropertyDefinition<KeyManagerProviderCfgClient, KeyManagerProviderCfg> getKeyManagerProviderPropertyDefinition() { 339 return PD_KEY_MANAGER_PROVIDER; 340 } 341 342 343 344 /** 345 * Get the "listen-address" property definition. 346 * <p> 347 * Specifies the address on which this JMX Connection Handler should 348 * listen for connections from JMX clients. 349 * <p> 350 * If no value is provided, then the JMX Connection Handler listens 351 * on all interfaces. 352 * 353 * @return Returns the "listen-address" property definition. 354 */ 355 public IPAddressPropertyDefinition getListenAddressPropertyDefinition() { 356 return PD_LISTEN_ADDRESS; 357 } 358 359 360 361 /** 362 * Get the "listen-port" property definition. 363 * <p> 364 * Specifies the port number on which the JMX Connection Handler 365 * will listen for connections from clients. 366 * <p> 367 * Only a single port number may be provided. 368 * 369 * @return Returns the "listen-port" property definition. 370 */ 371 public IntegerPropertyDefinition getListenPortPropertyDefinition() { 372 return PD_LISTEN_PORT; 373 } 374 375 376 377 /** 378 * Get the "rmi-port" property definition. 379 * <p> 380 * Specifies the port number on which the JMX RMI service will 381 * listen for connections from clients. A value of 0 indicates the 382 * service to choose a port of its own. 383 * <p> 384 * If the value provided is different than 0, the value will be used 385 * as the RMI port. Otherwise, the RMI service will choose a port of 386 * its own. 387 * 388 * @return Returns the "rmi-port" property definition. 389 */ 390 public IntegerPropertyDefinition getRmiPortPropertyDefinition() { 391 return PD_RMI_PORT; 392 } 393 394 395 396 /** 397 * Get the "ssl-cert-nickname" property definition. 398 * <p> 399 * Specifies the nicknames (also called the aliases) of the 400 * certificates that the JMX Connection Handler should use when 401 * performing SSL communication. The property can be used multiple 402 * times (referencing different nicknames) when an RSA, a DSA, and an 403 * ECC based server certificate is used in parallel. 404 * <p> 405 * This is only applicable when the JMX Connection Handler is 406 * configured to use SSL. 407 * 408 * @return Returns the "ssl-cert-nickname" property definition. 409 */ 410 public StringPropertyDefinition getSSLCertNicknamePropertyDefinition() { 411 return PD_SSL_CERT_NICKNAME; 412 } 413 414 415 416 /** 417 * Get the "use-ssl" property definition. 418 * <p> 419 * Indicates whether the JMX Connection Handler should use SSL. 420 * <p> 421 * If enabled, the JMX Connection Handler will use SSL to encrypt 422 * communication with the clients. 423 * 424 * @return Returns the "use-ssl" property definition. 425 */ 426 public BooleanPropertyDefinition getUseSSLPropertyDefinition() { 427 return PD_USE_SSL; 428 } 429 430 431 432 /** 433 * Managed object client implementation. 434 */ 435 private static class JMXConnectionHandlerCfgClientImpl implements 436 JMXConnectionHandlerCfgClient { 437 438 /** Private implementation. */ 439 private ManagedObject<? extends JMXConnectionHandlerCfgClient> impl; 440 441 442 443 /** Private constructor. */ 444 private JMXConnectionHandlerCfgClientImpl( 445 ManagedObject<? extends JMXConnectionHandlerCfgClient> impl) { 446 this.impl = impl; 447 } 448 449 450 451 /** {@inheritDoc} */ 452 public SortedSet<AddressMask> getAllowedClient() { 453 return impl.getPropertyValues(INSTANCE.getAllowedClientPropertyDefinition()); 454 } 455 456 457 458 /** {@inheritDoc} */ 459 public void setAllowedClient(Collection<AddressMask> values) { 460 impl.setPropertyValues(INSTANCE.getAllowedClientPropertyDefinition(), values); 461 } 462 463 464 465 /** {@inheritDoc} */ 466 public SortedSet<AddressMask> getDeniedClient() { 467 return impl.getPropertyValues(INSTANCE.getDeniedClientPropertyDefinition()); 468 } 469 470 471 472 /** {@inheritDoc} */ 473 public void setDeniedClient(Collection<AddressMask> values) { 474 impl.setPropertyValues(INSTANCE.getDeniedClientPropertyDefinition(), values); 475 } 476 477 478 479 /** {@inheritDoc} */ 480 public Boolean isEnabled() { 481 return impl.getPropertyValue(INSTANCE.getEnabledPropertyDefinition()); 482 } 483 484 485 486 /** {@inheritDoc} */ 487 public void setEnabled(boolean value) { 488 impl.setPropertyValue(INSTANCE.getEnabledPropertyDefinition(), value); 489 } 490 491 492 493 /** {@inheritDoc} */ 494 public String getJavaClass() { 495 return impl.getPropertyValue(INSTANCE.getJavaClassPropertyDefinition()); 496 } 497 498 499 500 /** {@inheritDoc} */ 501 public void setJavaClass(String value) { 502 impl.setPropertyValue(INSTANCE.getJavaClassPropertyDefinition(), value); 503 } 504 505 506 507 /** {@inheritDoc} */ 508 public String getKeyManagerProvider() { 509 return impl.getPropertyValue(INSTANCE.getKeyManagerProviderPropertyDefinition()); 510 } 511 512 513 514 /** {@inheritDoc} */ 515 public void setKeyManagerProvider(String value) { 516 impl.setPropertyValue(INSTANCE.getKeyManagerProviderPropertyDefinition(), value); 517 } 518 519 520 521 /** {@inheritDoc} */ 522 public InetAddress getListenAddress() { 523 return impl.getPropertyValue(INSTANCE.getListenAddressPropertyDefinition()); 524 } 525 526 527 528 /** {@inheritDoc} */ 529 public void setListenAddress(InetAddress value) { 530 impl.setPropertyValue(INSTANCE.getListenAddressPropertyDefinition(), value); 531 } 532 533 534 535 /** {@inheritDoc} */ 536 public Integer getListenPort() { 537 return impl.getPropertyValue(INSTANCE.getListenPortPropertyDefinition()); 538 } 539 540 541 542 /** {@inheritDoc} */ 543 public void setListenPort(int value) { 544 impl.setPropertyValue(INSTANCE.getListenPortPropertyDefinition(), value); 545 } 546 547 548 549 /** {@inheritDoc} */ 550 public int getRmiPort() { 551 return impl.getPropertyValue(INSTANCE.getRmiPortPropertyDefinition()); 552 } 553 554 555 556 /** {@inheritDoc} */ 557 public void setRmiPort(Integer value) { 558 impl.setPropertyValue(INSTANCE.getRmiPortPropertyDefinition(), value); 559 } 560 561 562 563 /** {@inheritDoc} */ 564 public SortedSet<String> getSSLCertNickname() { 565 return impl.getPropertyValues(INSTANCE.getSSLCertNicknamePropertyDefinition()); 566 } 567 568 569 570 /** {@inheritDoc} */ 571 public void setSSLCertNickname(Collection<String> values) { 572 impl.setPropertyValues(INSTANCE.getSSLCertNicknamePropertyDefinition(), values); 573 } 574 575 576 577 /** {@inheritDoc} */ 578 public boolean isUseSSL() { 579 return impl.getPropertyValue(INSTANCE.getUseSSLPropertyDefinition()); 580 } 581 582 583 584 /** {@inheritDoc} */ 585 public void setUseSSL(Boolean value) { 586 impl.setPropertyValue(INSTANCE.getUseSSLPropertyDefinition(), value); 587 } 588 589 590 591 /** {@inheritDoc} */ 592 public ManagedObjectDefinition<? extends JMXConnectionHandlerCfgClient, ? extends JMXConnectionHandlerCfg> definition() { 593 return INSTANCE; 594 } 595 596 597 598 /** {@inheritDoc} */ 599 public PropertyProvider properties() { 600 return impl; 601 } 602 603 604 605 /** {@inheritDoc} */ 606 public void commit() throws ManagedObjectAlreadyExistsException, 607 MissingMandatoryPropertiesException, ConcurrentModificationException, 608 OperationRejectedException, LdapException { 609 impl.commit(); 610 } 611 612 613 614 /** {@inheritDoc} */ 615 public String toString() { 616 return impl.toString(); 617 } 618 } 619 620 621 622 /** 623 * Managed object server implementation. 624 */ 625 private static class JMXConnectionHandlerCfgServerImpl implements 626 JMXConnectionHandlerCfg { 627 628 /** Private implementation. */ 629 private ServerManagedObject<? extends JMXConnectionHandlerCfg> impl; 630 631 /** The value of the "allowed-client" property. */ 632 private final SortedSet<AddressMask> pAllowedClient; 633 634 /** The value of the "denied-client" property. */ 635 private final SortedSet<AddressMask> pDeniedClient; 636 637 /** The value of the "enabled" property. */ 638 private final boolean pEnabled; 639 640 /** The value of the "java-class" property. */ 641 private final String pJavaClass; 642 643 /** The value of the "key-manager-provider" property. */ 644 private final String pKeyManagerProvider; 645 646 /** The value of the "listen-address" property. */ 647 private final InetAddress pListenAddress; 648 649 /** The value of the "listen-port" property. */ 650 private final int pListenPort; 651 652 /** The value of the "rmi-port" property. */ 653 private final int pRmiPort; 654 655 /** The value of the "ssl-cert-nickname" property. */ 656 private final SortedSet<String> pSSLCertNickname; 657 658 /** The value of the "use-ssl" property. */ 659 private final boolean pUseSSL; 660 661 662 663 /** Private constructor. */ 664 private JMXConnectionHandlerCfgServerImpl(ServerManagedObject<? extends JMXConnectionHandlerCfg> impl) { 665 this.impl = impl; 666 this.pAllowedClient = impl.getPropertyValues(INSTANCE.getAllowedClientPropertyDefinition()); 667 this.pDeniedClient = impl.getPropertyValues(INSTANCE.getDeniedClientPropertyDefinition()); 668 this.pEnabled = impl.getPropertyValue(INSTANCE.getEnabledPropertyDefinition()); 669 this.pJavaClass = impl.getPropertyValue(INSTANCE.getJavaClassPropertyDefinition()); 670 this.pKeyManagerProvider = impl.getPropertyValue(INSTANCE.getKeyManagerProviderPropertyDefinition()); 671 this.pListenAddress = impl.getPropertyValue(INSTANCE.getListenAddressPropertyDefinition()); 672 this.pListenPort = impl.getPropertyValue(INSTANCE.getListenPortPropertyDefinition()); 673 this.pRmiPort = impl.getPropertyValue(INSTANCE.getRmiPortPropertyDefinition()); 674 this.pSSLCertNickname = impl.getPropertyValues(INSTANCE.getSSLCertNicknamePropertyDefinition()); 675 this.pUseSSL = impl.getPropertyValue(INSTANCE.getUseSSLPropertyDefinition()); 676 } 677 678 679 680 /** {@inheritDoc} */ 681 public void addJMXChangeListener( 682 ConfigurationChangeListener<JMXConnectionHandlerCfg> listener) { 683 impl.registerChangeListener(listener); 684 } 685 686 687 688 /** {@inheritDoc} */ 689 public void removeJMXChangeListener( 690 ConfigurationChangeListener<JMXConnectionHandlerCfg> listener) { 691 impl.deregisterChangeListener(listener); 692 } 693 /** {@inheritDoc} */ 694 public void addChangeListener( 695 ConfigurationChangeListener<ConnectionHandlerCfg> listener) { 696 impl.registerChangeListener(listener); 697 } 698 699 700 701 /** {@inheritDoc} */ 702 public void removeChangeListener( 703 ConfigurationChangeListener<ConnectionHandlerCfg> listener) { 704 impl.deregisterChangeListener(listener); 705 } 706 707 708 709 /** {@inheritDoc} */ 710 public SortedSet<AddressMask> getAllowedClient() { 711 return pAllowedClient; 712 } 713 714 715 716 /** {@inheritDoc} */ 717 public SortedSet<AddressMask> getDeniedClient() { 718 return pDeniedClient; 719 } 720 721 722 723 /** {@inheritDoc} */ 724 public boolean isEnabled() { 725 return pEnabled; 726 } 727 728 729 730 /** {@inheritDoc} */ 731 public String getJavaClass() { 732 return pJavaClass; 733 } 734 735 736 737 /** {@inheritDoc} */ 738 public String getKeyManagerProvider() { 739 return pKeyManagerProvider; 740 } 741 742 743 744 /** 745 * {@inheritDoc} 746 */ 747 public DN getKeyManagerProviderDN() { 748 String value = getKeyManagerProvider(); 749 if (value == null) return null; 750 return INSTANCE.getKeyManagerProviderPropertyDefinition().getChildDN(value); 751 } 752 753 754 755 /** {@inheritDoc} */ 756 public InetAddress getListenAddress() { 757 return pListenAddress; 758 } 759 760 761 762 /** {@inheritDoc} */ 763 public int getListenPort() { 764 return pListenPort; 765 } 766 767 768 769 /** {@inheritDoc} */ 770 public int getRmiPort() { 771 return pRmiPort; 772 } 773 774 775 776 /** {@inheritDoc} */ 777 public SortedSet<String> getSSLCertNickname() { 778 return pSSLCertNickname; 779 } 780 781 782 783 /** {@inheritDoc} */ 784 public boolean isUseSSL() { 785 return pUseSSL; 786 } 787 788 789 790 /** {@inheritDoc} */ 791 public Class<? extends JMXConnectionHandlerCfg> configurationClass() { 792 return JMXConnectionHandlerCfg.class; 793 } 794 795 796 797 /** {@inheritDoc} */ 798 public DN dn() { 799 return impl.getDN(); 800 } 801 802 803 804 /** {@inheritDoc} */ 805 public String toString() { 806 return impl.toString(); 807 } 808 } 809}