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.opends.server.admin.std.meta; 017 018 019 020import java.util.Collection; 021import java.util.SortedSet; 022import org.forgerock.opendj.ldap.DN; 023import org.opends.server.admin.AdministratorAction; 024import org.opends.server.admin.BooleanPropertyDefinition; 025import org.opends.server.admin.ClassPropertyDefinition; 026import org.opends.server.admin.client.AuthorizationException; 027import org.opends.server.admin.client.CommunicationException; 028import org.opends.server.admin.client.ConcurrentModificationException; 029import org.opends.server.admin.client.ManagedObject; 030import org.opends.server.admin.client.MissingMandatoryPropertiesException; 031import org.opends.server.admin.client.OperationRejectedException; 032import org.opends.server.admin.DefaultBehaviorProvider; 033import org.opends.server.admin.DefinedDefaultBehaviorProvider; 034import org.opends.server.admin.DurationPropertyDefinition; 035import org.opends.server.admin.EnumPropertyDefinition; 036import org.opends.server.admin.ManagedObjectAlreadyExistsException; 037import org.opends.server.admin.ManagedObjectDefinition; 038import org.opends.server.admin.PropertyOption; 039import org.opends.server.admin.PropertyProvider; 040import org.opends.server.admin.server.ConfigurationChangeListener; 041import org.opends.server.admin.server.ServerManagedObject; 042import org.opends.server.admin.std.client.ProfilerPluginCfgClient; 043import org.opends.server.admin.std.meta.PluginCfgDefn.PluginType; 044import org.opends.server.admin.std.server.PluginCfg; 045import org.opends.server.admin.std.server.ProfilerPluginCfg; 046import org.opends.server.admin.StringPropertyDefinition; 047import org.opends.server.admin.Tag; 048import org.opends.server.admin.UndefinedDefaultBehaviorProvider; 049 050 051 052/** 053 * An interface for querying the Profiler Plugin managed object 054 * definition meta information. 055 * <p> 056 * The Profiler plug-in captures profiling information about 057 * operations performed inside the JVM while the OpenDJ directory 058 * server is running. 059 */ 060public final class ProfilerPluginCfgDefn extends ManagedObjectDefinition<ProfilerPluginCfgClient, ProfilerPluginCfg> { 061 062 // The singleton configuration definition instance. 063 private static final ProfilerPluginCfgDefn INSTANCE = new ProfilerPluginCfgDefn(); 064 065 066 067 /** 068 * Defines the set of permissable values for the "profile-action" property. 069 * <p> 070 * Specifies the action that should be taken by the profiler. 071 * <p> 072 * A value of "start" causes the profiler thread to start collecting 073 * data if it is not already active. A value of "stop" causes the 074 * profiler thread to stop collecting data and write it to disk, and 075 * a value of "cancel" causes the profiler thread to stop collecting 076 * data and discard anything that has been captured. These operations 077 * occur immediately. 078 */ 079 public static enum ProfileAction { 080 081 /** 082 * Stop collecting profile data and discard what has been 083 * captured. 084 */ 085 CANCEL("cancel"), 086 087 088 089 /** 090 * Do not take any action. 091 */ 092 NONE("none"), 093 094 095 096 /** 097 * Start collecting profile data. 098 */ 099 START("start"), 100 101 102 103 /** 104 * Stop collecting profile data and write what has been captured 105 * to a file in the profile directory. 106 */ 107 STOP("stop"); 108 109 110 111 // String representation of the value. 112 private final String name; 113 114 115 116 // Private constructor. 117 private ProfileAction(String name) { this.name = name; } 118 119 120 121 /** 122 * {@inheritDoc} 123 */ 124 public String toString() { return name; } 125 126 } 127 128 129 130 // The "enable-profiling-on-startup" property definition. 131 private static final BooleanPropertyDefinition PD_ENABLE_PROFILING_ON_STARTUP; 132 133 134 135 // The "invoke-for-internal-operations" property definition. 136 private static final BooleanPropertyDefinition PD_INVOKE_FOR_INTERNAL_OPERATIONS; 137 138 139 140 // The "java-class" property definition. 141 private static final ClassPropertyDefinition PD_JAVA_CLASS; 142 143 144 145 // The "plugin-type" property definition. 146 private static final EnumPropertyDefinition<PluginType> PD_PLUGIN_TYPE; 147 148 149 150 // The "profile-action" property definition. 151 private static final EnumPropertyDefinition<ProfileAction> PD_PROFILE_ACTION; 152 153 154 155 // The "profile-directory" property definition. 156 private static final StringPropertyDefinition PD_PROFILE_DIRECTORY; 157 158 159 160 // The "profile-sample-interval" property definition. 161 private static final DurationPropertyDefinition PD_PROFILE_SAMPLE_INTERVAL; 162 163 164 165 // Build the "enable-profiling-on-startup" property definition. 166 static { 167 BooleanPropertyDefinition.Builder builder = BooleanPropertyDefinition.createBuilder(INSTANCE, "enable-profiling-on-startup"); 168 builder.setOption(PropertyOption.MANDATORY); 169 builder.setAdministratorAction(new AdministratorAction(AdministratorAction.Type.NONE, INSTANCE, "enable-profiling-on-startup")); 170 builder.setDefaultBehaviorProvider(new UndefinedDefaultBehaviorProvider<Boolean>()); 171 PD_ENABLE_PROFILING_ON_STARTUP = builder.getInstance(); 172 INSTANCE.registerPropertyDefinition(PD_ENABLE_PROFILING_ON_STARTUP); 173 } 174 175 176 177 // Build the "invoke-for-internal-operations" property definition. 178 static { 179 BooleanPropertyDefinition.Builder builder = BooleanPropertyDefinition.createBuilder(INSTANCE, "invoke-for-internal-operations"); 180 builder.setOption(PropertyOption.ADVANCED); 181 builder.setAdministratorAction(new AdministratorAction(AdministratorAction.Type.NONE, INSTANCE, "invoke-for-internal-operations")); 182 DefaultBehaviorProvider<Boolean> provider = new DefinedDefaultBehaviorProvider<Boolean>("false"); 183 builder.setDefaultBehaviorProvider(provider); 184 PD_INVOKE_FOR_INTERNAL_OPERATIONS = builder.getInstance(); 185 INSTANCE.registerPropertyDefinition(PD_INVOKE_FOR_INTERNAL_OPERATIONS); 186 } 187 188 189 190 // Build the "java-class" property definition. 191 static { 192 ClassPropertyDefinition.Builder builder = ClassPropertyDefinition.createBuilder(INSTANCE, "java-class"); 193 builder.setOption(PropertyOption.MANDATORY); 194 builder.setOption(PropertyOption.ADVANCED); 195 builder.setAdministratorAction(new AdministratorAction(AdministratorAction.Type.NONE, INSTANCE, "java-class")); 196 DefaultBehaviorProvider<String> provider = new DefinedDefaultBehaviorProvider<String>("org.opends.server.plugins.profiler.ProfilerPlugin"); 197 builder.setDefaultBehaviorProvider(provider); 198 builder.addInstanceOf("org.opends.server.api.plugin.DirectoryServerPlugin"); 199 PD_JAVA_CLASS = builder.getInstance(); 200 INSTANCE.registerPropertyDefinition(PD_JAVA_CLASS); 201 } 202 203 204 205 // Build the "plugin-type" property definition. 206 static { 207 EnumPropertyDefinition.Builder<PluginType> builder = EnumPropertyDefinition.createBuilder(INSTANCE, "plugin-type"); 208 builder.setOption(PropertyOption.MULTI_VALUED); 209 builder.setOption(PropertyOption.MANDATORY); 210 builder.setOption(PropertyOption.ADVANCED); 211 builder.setAdministratorAction(new AdministratorAction(AdministratorAction.Type.COMPONENT_RESTART, INSTANCE, "plugin-type")); 212 DefaultBehaviorProvider<PluginType> provider = new DefinedDefaultBehaviorProvider<PluginType>("startup"); 213 builder.setDefaultBehaviorProvider(provider); 214 builder.setEnumClass(PluginType.class); 215 PD_PLUGIN_TYPE = builder.getInstance(); 216 INSTANCE.registerPropertyDefinition(PD_PLUGIN_TYPE); 217 } 218 219 220 221 // Build the "profile-action" property definition. 222 static { 223 EnumPropertyDefinition.Builder<ProfileAction> builder = EnumPropertyDefinition.createBuilder(INSTANCE, "profile-action"); 224 builder.setAdministratorAction(new AdministratorAction(AdministratorAction.Type.NONE, INSTANCE, "profile-action")); 225 DefaultBehaviorProvider<ProfileAction> provider = new DefinedDefaultBehaviorProvider<ProfileAction>("none"); 226 builder.setDefaultBehaviorProvider(provider); 227 builder.setEnumClass(ProfileAction.class); 228 PD_PROFILE_ACTION = builder.getInstance(); 229 INSTANCE.registerPropertyDefinition(PD_PROFILE_ACTION); 230 } 231 232 233 234 // Build the "profile-directory" property definition. 235 static { 236 StringPropertyDefinition.Builder builder = StringPropertyDefinition.createBuilder(INSTANCE, "profile-directory"); 237 builder.setOption(PropertyOption.MANDATORY); 238 builder.setAdministratorAction(new AdministratorAction(AdministratorAction.Type.NONE, INSTANCE, "profile-directory")); 239 builder.setDefaultBehaviorProvider(new UndefinedDefaultBehaviorProvider<String>()); 240 builder.setPattern(".*", "DIR"); 241 PD_PROFILE_DIRECTORY = builder.getInstance(); 242 INSTANCE.registerPropertyDefinition(PD_PROFILE_DIRECTORY); 243 } 244 245 246 247 // Build the "profile-sample-interval" property definition. 248 static { 249 DurationPropertyDefinition.Builder builder = DurationPropertyDefinition.createBuilder(INSTANCE, "profile-sample-interval"); 250 builder.setOption(PropertyOption.MANDATORY); 251 builder.setAdministratorAction(new AdministratorAction(AdministratorAction.Type.NONE, INSTANCE, "profile-sample-interval")); 252 builder.setDefaultBehaviorProvider(new UndefinedDefaultBehaviorProvider<Long>()); 253 builder.setBaseUnit("ms"); 254 builder.setUpperLimit("2147483647"); 255 builder.setLowerLimit("1"); 256 PD_PROFILE_SAMPLE_INTERVAL = builder.getInstance(); 257 INSTANCE.registerPropertyDefinition(PD_PROFILE_SAMPLE_INTERVAL); 258 } 259 260 261 262 // Register the tags associated with this managed object definition. 263 static { 264 INSTANCE.registerTag(Tag.valueOf("core-server")); 265 } 266 267 268 269 /** 270 * Get the Profiler Plugin configuration definition singleton. 271 * 272 * @return Returns the Profiler Plugin configuration definition 273 * singleton. 274 */ 275 public static ProfilerPluginCfgDefn getInstance() { 276 return INSTANCE; 277 } 278 279 280 281 /** 282 * Private constructor. 283 */ 284 private ProfilerPluginCfgDefn() { 285 super("profiler-plugin", PluginCfgDefn.getInstance()); 286 } 287 288 289 290 /** 291 * {@inheritDoc} 292 */ 293 public ProfilerPluginCfgClient createClientConfiguration( 294 ManagedObject<? extends ProfilerPluginCfgClient> impl) { 295 return new ProfilerPluginCfgClientImpl(impl); 296 } 297 298 299 300 /** 301 * {@inheritDoc} 302 */ 303 public ProfilerPluginCfg createServerConfiguration( 304 ServerManagedObject<? extends ProfilerPluginCfg> impl) { 305 return new ProfilerPluginCfgServerImpl(impl); 306 } 307 308 309 310 /** 311 * {@inheritDoc} 312 */ 313 public Class<ProfilerPluginCfg> getServerConfigurationClass() { 314 return ProfilerPluginCfg.class; 315 } 316 317 318 319 /** 320 * Get the "enabled" property definition. 321 * <p> 322 * Indicates whether the plug-in is enabled for use. 323 * 324 * @return Returns the "enabled" property definition. 325 */ 326 public BooleanPropertyDefinition getEnabledPropertyDefinition() { 327 return PluginCfgDefn.getInstance().getEnabledPropertyDefinition(); 328 } 329 330 331 332 /** 333 * Get the "enable-profiling-on-startup" property definition. 334 * <p> 335 * Indicates whether the profiler plug-in is to start collecting 336 * data automatically when the directory server is started. 337 * <p> 338 * This property is read only when the server is started, and any 339 * changes take effect on the next restart. This property is 340 * typically set to "false" unless startup profiling is required, 341 * because otherwise the volume of data that can be collected can 342 * cause the server to run out of memory if it is not turned off in a 343 * timely manner. 344 * 345 * @return Returns the "enable-profiling-on-startup" property definition. 346 */ 347 public BooleanPropertyDefinition getEnableProfilingOnStartupPropertyDefinition() { 348 return PD_ENABLE_PROFILING_ON_STARTUP; 349 } 350 351 352 353 /** 354 * Get the "invoke-for-internal-operations" property definition. 355 * <p> 356 * Indicates whether the plug-in should be invoked for internal 357 * operations. 358 * <p> 359 * Any plug-in that can be invoked for internal operations must 360 * ensure that it does not create any new internal operatons that can 361 * cause the same plug-in to be re-invoked. 362 * 363 * @return Returns the "invoke-for-internal-operations" property definition. 364 */ 365 public BooleanPropertyDefinition getInvokeForInternalOperationsPropertyDefinition() { 366 return PD_INVOKE_FOR_INTERNAL_OPERATIONS; 367 } 368 369 370 371 /** 372 * Get the "java-class" property definition. 373 * <p> 374 * Specifies the fully-qualified name of the Java class that 375 * provides the plug-in implementation. 376 * 377 * @return Returns the "java-class" property definition. 378 */ 379 public ClassPropertyDefinition getJavaClassPropertyDefinition() { 380 return PD_JAVA_CLASS; 381 } 382 383 384 385 /** 386 * Get the "plugin-type" property definition. 387 * <p> 388 * Specifies the set of plug-in types for the plug-in, which 389 * specifies the times at which the plug-in is invoked. 390 * 391 * @return Returns the "plugin-type" property definition. 392 */ 393 public EnumPropertyDefinition<PluginType> getPluginTypePropertyDefinition() { 394 return PD_PLUGIN_TYPE; 395 } 396 397 398 399 /** 400 * Get the "profile-action" property definition. 401 * <p> 402 * Specifies the action that should be taken by the profiler. 403 * <p> 404 * A value of "start" causes the profiler thread to start collecting 405 * data if it is not already active. A value of "stop" causes the 406 * profiler thread to stop collecting data and write it to disk, and 407 * a value of "cancel" causes the profiler thread to stop collecting 408 * data and discard anything that has been captured. These operations 409 * occur immediately. 410 * 411 * @return Returns the "profile-action" property definition. 412 */ 413 public EnumPropertyDefinition<ProfileAction> getProfileActionPropertyDefinition() { 414 return PD_PROFILE_ACTION; 415 } 416 417 418 419 /** 420 * Get the "profile-directory" property definition. 421 * <p> 422 * Specifies the path to the directory where profile information is 423 * to be written. This path may be either an absolute path or a path 424 * that is relative to the root of the OpenDJ directory server 425 * instance. 426 * <p> 427 * The directory must exist and the directory server must have 428 * permission to create new files in it. 429 * 430 * @return Returns the "profile-directory" property definition. 431 */ 432 public StringPropertyDefinition getProfileDirectoryPropertyDefinition() { 433 return PD_PROFILE_DIRECTORY; 434 } 435 436 437 438 /** 439 * Get the "profile-sample-interval" property definition. 440 * <p> 441 * Specifies the sample interval in milliseconds to be used when 442 * capturing profiling information in the server. 443 * <p> 444 * When capturing data, the profiler thread sleeps for this length 445 * of time between calls to obtain traces for all threads running in 446 * the JVM. 447 * 448 * @return Returns the "profile-sample-interval" property definition. 449 */ 450 public DurationPropertyDefinition getProfileSampleIntervalPropertyDefinition() { 451 return PD_PROFILE_SAMPLE_INTERVAL; 452 } 453 454 455 456 /** 457 * Managed object client implementation. 458 */ 459 private static class ProfilerPluginCfgClientImpl implements 460 ProfilerPluginCfgClient { 461 462 // Private implementation. 463 private ManagedObject<? extends ProfilerPluginCfgClient> impl; 464 465 466 467 // Private constructor. 468 private ProfilerPluginCfgClientImpl( 469 ManagedObject<? extends ProfilerPluginCfgClient> impl) { 470 this.impl = impl; 471 } 472 473 474 475 /** 476 * {@inheritDoc} 477 */ 478 public Boolean isEnabled() { 479 return impl.getPropertyValue(INSTANCE.getEnabledPropertyDefinition()); 480 } 481 482 483 484 /** 485 * {@inheritDoc} 486 */ 487 public void setEnabled(boolean value) { 488 impl.setPropertyValue(INSTANCE.getEnabledPropertyDefinition(), value); 489 } 490 491 492 493 /** 494 * {@inheritDoc} 495 */ 496 public Boolean isEnableProfilingOnStartup() { 497 return impl.getPropertyValue(INSTANCE.getEnableProfilingOnStartupPropertyDefinition()); 498 } 499 500 501 502 /** 503 * {@inheritDoc} 504 */ 505 public void setEnableProfilingOnStartup(boolean value) { 506 impl.setPropertyValue(INSTANCE.getEnableProfilingOnStartupPropertyDefinition(), value); 507 } 508 509 510 511 /** 512 * {@inheritDoc} 513 */ 514 public boolean isInvokeForInternalOperations() { 515 return impl.getPropertyValue(INSTANCE.getInvokeForInternalOperationsPropertyDefinition()); 516 } 517 518 519 520 /** 521 * {@inheritDoc} 522 */ 523 public void setInvokeForInternalOperations(Boolean value) { 524 impl.setPropertyValue(INSTANCE.getInvokeForInternalOperationsPropertyDefinition(), value); 525 } 526 527 528 529 /** 530 * {@inheritDoc} 531 */ 532 public String getJavaClass() { 533 return impl.getPropertyValue(INSTANCE.getJavaClassPropertyDefinition()); 534 } 535 536 537 538 /** 539 * {@inheritDoc} 540 */ 541 public void setJavaClass(String value) { 542 impl.setPropertyValue(INSTANCE.getJavaClassPropertyDefinition(), value); 543 } 544 545 546 547 /** 548 * {@inheritDoc} 549 */ 550 public SortedSet<PluginType> getPluginType() { 551 return impl.getPropertyValues(INSTANCE.getPluginTypePropertyDefinition()); 552 } 553 554 555 556 /** 557 * {@inheritDoc} 558 */ 559 public void setPluginType(Collection<PluginType> values) { 560 impl.setPropertyValues(INSTANCE.getPluginTypePropertyDefinition(), values); 561 } 562 563 564 565 /** 566 * {@inheritDoc} 567 */ 568 public ProfileAction getProfileAction() { 569 return impl.getPropertyValue(INSTANCE.getProfileActionPropertyDefinition()); 570 } 571 572 573 574 /** 575 * {@inheritDoc} 576 */ 577 public void setProfileAction(ProfileAction value) { 578 impl.setPropertyValue(INSTANCE.getProfileActionPropertyDefinition(), value); 579 } 580 581 582 583 /** 584 * {@inheritDoc} 585 */ 586 public String getProfileDirectory() { 587 return impl.getPropertyValue(INSTANCE.getProfileDirectoryPropertyDefinition()); 588 } 589 590 591 592 /** 593 * {@inheritDoc} 594 */ 595 public void setProfileDirectory(String value) { 596 impl.setPropertyValue(INSTANCE.getProfileDirectoryPropertyDefinition(), value); 597 } 598 599 600 601 /** 602 * {@inheritDoc} 603 */ 604 public Long getProfileSampleInterval() { 605 return impl.getPropertyValue(INSTANCE.getProfileSampleIntervalPropertyDefinition()); 606 } 607 608 609 610 /** 611 * {@inheritDoc} 612 */ 613 public void setProfileSampleInterval(long value) { 614 impl.setPropertyValue(INSTANCE.getProfileSampleIntervalPropertyDefinition(), value); 615 } 616 617 618 619 /** 620 * {@inheritDoc} 621 */ 622 public ManagedObjectDefinition<? extends ProfilerPluginCfgClient, ? extends ProfilerPluginCfg> definition() { 623 return INSTANCE; 624 } 625 626 627 628 /** 629 * {@inheritDoc} 630 */ 631 public PropertyProvider properties() { 632 return impl; 633 } 634 635 636 637 /** 638 * {@inheritDoc} 639 */ 640 public void commit() throws ManagedObjectAlreadyExistsException, 641 MissingMandatoryPropertiesException, ConcurrentModificationException, 642 OperationRejectedException, AuthorizationException, 643 CommunicationException { 644 impl.commit(); 645 } 646 647 648 649 /** {@inheritDoc} */ 650 public String toString() { 651 return impl.toString(); 652 } 653 } 654 655 656 657 /** 658 * Managed object server implementation. 659 */ 660 private static class ProfilerPluginCfgServerImpl implements 661 ProfilerPluginCfg { 662 663 // Private implementation. 664 private ServerManagedObject<? extends ProfilerPluginCfg> impl; 665 666 // The value of the "enabled" property. 667 private final boolean pEnabled; 668 669 // The value of the "enable-profiling-on-startup" property. 670 private final boolean pEnableProfilingOnStartup; 671 672 // The value of the "invoke-for-internal-operations" property. 673 private final boolean pInvokeForInternalOperations; 674 675 // The value of the "java-class" property. 676 private final String pJavaClass; 677 678 // The value of the "plugin-type" property. 679 private final SortedSet<PluginType> pPluginType; 680 681 // The value of the "profile-action" property. 682 private final ProfileAction pProfileAction; 683 684 // The value of the "profile-directory" property. 685 private final String pProfileDirectory; 686 687 // The value of the "profile-sample-interval" property. 688 private final long pProfileSampleInterval; 689 690 691 692 // Private constructor. 693 private ProfilerPluginCfgServerImpl(ServerManagedObject<? extends ProfilerPluginCfg> impl) { 694 this.impl = impl; 695 this.pEnabled = impl.getPropertyValue(INSTANCE.getEnabledPropertyDefinition()); 696 this.pEnableProfilingOnStartup = impl.getPropertyValue(INSTANCE.getEnableProfilingOnStartupPropertyDefinition()); 697 this.pInvokeForInternalOperations = impl.getPropertyValue(INSTANCE.getInvokeForInternalOperationsPropertyDefinition()); 698 this.pJavaClass = impl.getPropertyValue(INSTANCE.getJavaClassPropertyDefinition()); 699 this.pPluginType = impl.getPropertyValues(INSTANCE.getPluginTypePropertyDefinition()); 700 this.pProfileAction = impl.getPropertyValue(INSTANCE.getProfileActionPropertyDefinition()); 701 this.pProfileDirectory = impl.getPropertyValue(INSTANCE.getProfileDirectoryPropertyDefinition()); 702 this.pProfileSampleInterval = impl.getPropertyValue(INSTANCE.getProfileSampleIntervalPropertyDefinition()); 703 } 704 705 706 707 /** 708 * {@inheritDoc} 709 */ 710 public void addProfilerChangeListener( 711 ConfigurationChangeListener<ProfilerPluginCfg> listener) { 712 impl.registerChangeListener(listener); 713 } 714 715 716 717 /** 718 * {@inheritDoc} 719 */ 720 public void removeProfilerChangeListener( 721 ConfigurationChangeListener<ProfilerPluginCfg> listener) { 722 impl.deregisterChangeListener(listener); 723 } 724 /** 725 * {@inheritDoc} 726 */ 727 public void addChangeListener( 728 ConfigurationChangeListener<PluginCfg> listener) { 729 impl.registerChangeListener(listener); 730 } 731 732 733 734 /** 735 * {@inheritDoc} 736 */ 737 public void removeChangeListener( 738 ConfigurationChangeListener<PluginCfg> listener) { 739 impl.deregisterChangeListener(listener); 740 } 741 742 743 744 /** 745 * {@inheritDoc} 746 */ 747 public boolean isEnabled() { 748 return pEnabled; 749 } 750 751 752 753 /** 754 * {@inheritDoc} 755 */ 756 public boolean isEnableProfilingOnStartup() { 757 return pEnableProfilingOnStartup; 758 } 759 760 761 762 /** 763 * {@inheritDoc} 764 */ 765 public boolean isInvokeForInternalOperations() { 766 return pInvokeForInternalOperations; 767 } 768 769 770 771 /** 772 * {@inheritDoc} 773 */ 774 public String getJavaClass() { 775 return pJavaClass; 776 } 777 778 779 780 /** 781 * {@inheritDoc} 782 */ 783 public SortedSet<PluginType> getPluginType() { 784 return pPluginType; 785 } 786 787 788 789 /** 790 * {@inheritDoc} 791 */ 792 public ProfileAction getProfileAction() { 793 return pProfileAction; 794 } 795 796 797 798 /** 799 * {@inheritDoc} 800 */ 801 public String getProfileDirectory() { 802 return pProfileDirectory; 803 } 804 805 806 807 /** 808 * {@inheritDoc} 809 */ 810 public long getProfileSampleInterval() { 811 return pProfileSampleInterval; 812 } 813 814 815 816 /** 817 * {@inheritDoc} 818 */ 819 public Class<? extends ProfilerPluginCfg> configurationClass() { 820 return ProfilerPluginCfg.class; 821 } 822 823 824 825 /** 826 * {@inheritDoc} 827 */ 828 public DN dn() { 829 return impl.getDN(); 830 } 831 832 833 834 /** {@inheritDoc} */ 835 public String toString() { 836 return impl.toString(); 837 } 838 } 839}